| Input: PopM: The population in the main evolutionary pool |
| NM: The scale of population in the main evolutionary pool |
| PopS: The population in the secondary evolutionary pool |
| NS: The scale of population in the secondary evolutionary pool |
|
: The crossover probability in the main evolutionary pool |
| : The mutation probability in the main evolutionary pool |
| : The mutation probability for one single individual in the main evolutionary pool |
| : The crossover probability for one single individual in the main evolutionary pool |
| : The number of exchanged timeslots in the secondary evolutionary pool |
| : The mutation probability for one single individual in the secondary evolutionary Pool |
| IterMax: The maximum iteration number |
| Itermax: The maximum iteration number for the local search operators |
| Output: The best individual PopBest in the secondary evolutionary pool |
| Step 1. Initialization. Randomly create NM individuals in the main evolutionary pool according to what is described in |
| Part B, which is denoted as PopM. Meanwhile, and . |
| Step 2. Crossover. Randomly select individuals in the main evolutionary pool and perform crossover operation |
| described in Part 3.3. |
| Step 3. Mutate. Randomly select individuals in the main evolutionary pool and perform mutation operation PopM |
| described in Part 3.4. |
| Step 4. Local optimization. For each individual through crossover and mutation operation, the special local search operator is |
| performed according to what is described in Part 3.5. |
| Step 5. Selection. Select individuals from the main evolutionary pool to the secondary evolutionary pool. Once the individuals in |
| the main evolutionary pool satisfy all hard constraints, all feasible individuals are put into the secondary evolutionary pool. |
| Meanwhile, create some new individuals replacing those feasible ones in the population for the main evolutionary pool. |
| Step 6. Clone. Assume that the number of feasible individuals is NF. If , randomly select NS individuals from all feasible |
| individuals. Otherwise, each feasible individual obtained from the main evolutionary pool is copied according to the |
| following rules. The number of each feasible individual after clone is . And then combine original individuals in |
| the secondary evolutionary pool with the cloned individuals. Select the best NS individuals as the population in the |
| secondary evolutionary pool. |
| Step 7. Local optimization. After clone, the local search operator described in Part 3.6 is performed to make the feasible |
| individuals satisfy more and more soft constraints. |
| Step 8. Selection. Select potential individuals in the secondary evolutionary pool according to (4). Keep the best |
| individual in the current generation constant in the population in the secondary evolutionary pool. And then combine |
| other individuals in the original secondary evolutionary pool with the best individual to form the population in the |
| secondary evolutionary pool. |
| Step 9. , and go to Step 2. |
| Step 10. If Iter reaches IterMax output the best individual PopBest in the secondary evolutionary pool. |