Multi-Objective Optimization Concepts

Top  Previous  Next

Multi-objective optimization is suitable for problems that involve trade-offs between two or more conflicting objectives. Multi-objective optimization utilizes a genetic algorithm which starts from a randomly generated population of candidate solutions. Then, the algorithm slowly improves the population via pseudo-random mutation and combination of solutions. The best solution candidates are then selected for inclusion in the Pareto front.

 

The Pareto Front


Multi-objective optimization problems will not generate a single best solution, but rather an array of best solutions commonly called the Pareto front. The Pareto front is an array of solutions that are nondominated, meaning that no one solution is better in all objectives than any other solution.

 

In the image below, the Pareto front is depicted in red, showing the best solutions for an optimization problem that minimizes transit time and delta V. The solutions dominated by the Pareto front are depicted in grey.

 

Pareto front of an optimization problem that minimizes transit time and delta V 

Pareto front of an optimization problem that minimizes transit time and delta V

 

Hypervolume


The hypervolume is the N-dimensional volume of the Pareto front where N is equal to the number of objectives. It is common to use hypervolume to assess the quality of the solution space. The user can return the current Pareto front hypervolume via the MultiObjectiveOptimizer.ParetoFront.GetHypervolume() method.

 

The hypervolume increases as the multi-objective optimizer finds acceptable solutions, then the hypervolume levels off as the multi-objective optimizer stops finding better solutions. To ensure that the multi-objective optimizer is finding the best solutions, the user can switch the optimization engine being used. The SPEA and NSGA engines will advance the Pareto front in different ways and help the user determine when to stop the multi-objective optimizer (i.e., the multi-objective optimizer stops finding better solutions). Every time the user restarts the multi-objective optimizer, the hypervolume is zero. Then the MultiObjectiveOptimizer.Reset() method allows the Pareto front solutions to be loaded in as the initial population.

 

 

Hypervolume changes while advancing the pareto front and switching between multi-objective optimization engines

Hypervolume changes while advancing the pareto front and switching between multi-objective optimization engines

 

See Also


Using the Multi-Objective Optimizer

MulitObjectiveOptimizer Properties and Methods