Multi-Objective Optimization#
In many practical optimization problems, several competing criteria must be balanced simultaneously. For example, maximizing product yield while minimizing buffer consumption, or maximizing purity while maximizing productivity. Because these objectives conflict, there is no single solution that optimizes all of them at once. Instead, the goal is to find the set of Pareto-optimal solutions: those where improving one objective necessarily worsens another.
A dominated solution is one for which there exists another solution that is at least as good on every objective and strictly better on at least one. The Pareto front is the set of all nondominated solutions.
For details on how to set up a multi-objective problem, see Objectives.
Multi-Criteria Decision Making (MCDM)#
After optimization, the Pareto front may contain many solutions. A decision maker must select one, and multi-criteria decision making (MCDM) methods provide systematic ways to do so.
Common approaches include weighted sum (assign importance weights to each objective and select the solution with the best composite score) and weighted product (multiplicative analog). These are simple to implement but require the decision maker to specify weights, which implicitly defines a trade-off ratio between objectives.
The choice of MCDM method depends on the problem and the decision maker’s preferences. The key requirement is that the method produces a consistent ranking that reflects the actual priorities of the application.
Meta Scores#
When many objectives are used, the Pareto front can grow large and become difficult to interpret. Meta scores provide a way to reduce the effective dimensionality of the Pareto front by aggregating related objectives into composite scores after the optimization has run.
A meta score function receives the Pareto-optimal individuals and computes a derived score, for example an overall process cost that combines yield, purity, and buffer consumption into a single economic metric. The optimizer then uses these meta scores to filter or re-rank the Pareto front, producing a smaller set of solutions for the decision maker.
Meta scores run through the same evaluation pipeline as objectives: parameter values are written into evaluation objects and the evaluator chain executes before the meta score function is called.
To add a meta score, use add_meta_score().
The function signature is the same as for objectives: it receives the evaluation result and returns one or more scalar values.
import numpy as np
def objective_yield(x):
return x[0]
def objective_purity(x):
return x[1]
optimization_problem.add_objective(objective_yield)
optimization_problem.add_objective(objective_purity)
def overall_cost(x):
return 0.7 * x[0] + 0.3 * x[1]
optimization_problem.add_meta_score(overall_cost)