| PROCEDURE NSGA-II (, Number_of_Generations) |
| Initialize Population |
| Generate random population with size |
| Evaluate objective values |
| Assign rank (level) based on Pareto dominance |
| Generate Child Population with size |
| Perform Binary Tournament Selection |
| Perform Recombination and Mutation |
| FOR to Number_of_Generations DO |
| Assign |
| FOR each parent and child in DO |
| Assign rank (level) based on Pareto dominance |
| Loop (inside) by adding solutions to the |
| next generation starting from the first front |
| until individual found; determine crowding |
| distance between points of each front |
| End FOR |
| Select points (elitist) of the lower front (with lower rank) and are outside |
| a crowding distance |
| Replace by the individual found |
| Generate Child Population with size |
| Perform Binary Tournament Selection |
| Perform Recombination and Mutation |
| End FOR |
| End PROCEDURE |