Step 1: Initialization. |
Set , . Initialize parameters including step size (), population size , maximum number of iterations |
and mutation probability. |
Step 2: Generate initial lane distribution schemes. |
Generate lane distribution schemes randomly, including the original lane distribution scheme. All the schemes are |
represented by , which is the change in the number of lanes in each pair of sections. |
Step 3: Find the feasible lane distribution schemes. |
For each lane distribution scheme: |
(3.1) Calculate the number of lanes on each link , , and its capacity ; |
(3.2) Run the lower programming model according to demand ; |
(3.3) If any solution exists, store the corresponding lane distribution scheme into the set of historical feasible schemes . |
Turn to Step 5. |
Step 4: Renew the schemes. |
If all schemes can’t find a feasible solution in the lower level model, they should be renewed according to following procedure: |
(4.1) Renew the update count of lane schemes, , and if , turn to Step 6; |
(4.2) If there are more than schemes in set , randomly pick schemes and do mutation processing by using local search |
algorithm, then obtain new schemes. |
(4.3) If there are less than schemes in set , suppose it is , do mutation processing by using local searching algorithm |
to all of these schemes. Besides, generate schemes at random. |
(4.4) Turn to Step 3. |
Step 5: Let , , and turn to Step 3. |
Step 6: Termination. |
Let . The algorithm ends. |