| initialize solution (population_size) |
| solution divesificationGeneration(solution) |
| evaluate solution, evolution |
| solution improvement(solution) |
| solutionSet.add(solution) |
| while evolution < max_evolution
{
|
| // building and insertion of individuals RefSet1 and RefSet2 |
| referenceUpdate(true) |
| newsolution subsetGeneration |
| while newsolution > 0 { |
| // update archive and reference sets using RefSet1 and RefSet2 |
| referenceUpdate(false)
}
|
| if evolution < max_evolution { |
| solutionSet.clear |
| solution RefSet1 (ref_set1_size) |
| solution=improvement(solution) |
| evaluate solution, evolution ++ |
| solutionSet.add(solution) |
| RefSet1.clear |
| RefSet2.clear |
| // compute the crowding distance assignment of achieve |
| //individuals. Then, after sorting the archive, use them to |
| //create solutionSet with “insert” individuals |
| insert=populationSize/2 |
| if insert > (archiveSize), insert= archiveSize |
| if insert > (populationSize/2 size(solutionSet)), |
| insert=(populationSize/2 size(solutionSet)) |
| solutionSet.add (archive(insert)) |
| // complete randomly the remaining individuals of solutionSet |
| while size(solutionSet) < populationSize/2 { |
| solution=divesificationGeneration(solution) |
| evaluate solution, evolution |
| solution=improvement(solution) |
| solutionSet.add(solution) |