(1) Begin |
(2) Set the selection probability of each crossover operator to be the same, that is, , |
where is the sum of all mutation operators. |
(3) Set the iteration counter and the . |
(4) Use the Diversification method to generate a population , evaluate each solution in and then set the best solution |
found so far to be the best one in . |
(5) while (the termination criterion is not reached) do |
(6) Use the Reference update method to update reference set . |
(7) Set , and . Set the solution set to be empty. |
(8) if () do |
(9) while () do // generate a new solution for each in |
(10) Set the successful count and failure count of the crossover operator to be zero. |
(11) (1) Mutation |
(12) Randomly select a mutation operator (namely ) using the Adaptive selection method. |
(13) Randomly select solutions from according to the requirement of mutation operator . |
(14) Perform mutation operator on the selected solutions to generate a new trial solution . |
(15) (2) Crossover |
(16) Apply crossover operation based on (5) to obtain new solution . |
(17) (3) Selection |
(18) Use (7) to select the new solution . If , set = ; otherwise, set = . |
(19) Add and of each crossover operator to the end of a list whose length is . If , |
then remove the first node of this list so that only a maximum of nodes are stored in list . |
(20) Update the selection probability of each operator according to the method described in Section 3.4. |
(21) Set . |
(22) end while |
(23) if (the best solution in is better than ) do |
(24) Update and set . |
(25) else do |
(26) Set . |
(27) end if |
(28) else do |
(29) Sort the solutions in the in the ascending order of the objective value, and then randomly reinitialize |
the latter half of solutions in . |
(30) Set . |
(31) end if |
(32) end while |
(33) Report the best solution . |
(34) End |