4. Multi-objective optimization#

In this chapter, we’ll cover how to solve multi-objective optimization problem using scipy. As a reminder, nonlinear constrained optimization considers:

(4.1)#\[ \mathop {\min }\limits_x f_1\left( x \right), f_2\left( x \right) \]

with:

  • \(f_1\left(x\right)\) and \(f_2\left(x\right)\), the linear or nonlinear objective functions.

  • \(x\), the \(n\) design variables

  • Constraints and bounds as for single-objective optimization problems.

Model#

Three different ways of solving multi-objective optimization problems were introduced, which all effectively convert the problem to a single-objective optimization problem. All of this is assuming minimization problems:

  1. Weighted objective function: setting pre-determined weight on the two objectives. In general this requires the two objectives to have a comparable unit:

(4.2)#\[ \mathop {\min }\limits_x \left( {{\delta }_{1,\text{predefined}}} \cdot f_1\left( x \right) + \delta_{2\text{predefined}} \cdot f_2\left( x \right) \right)\]
  1. Goal attainment, minimizing the maximum difference with respect to two goal values for the objectives. Again, this requires the two objectives to have a comparable unit:

(4.3)#\[ \mathop {\min }\limits_x \left( \max \left( f_1\left( x \right) - f_{1,\text{goal}}, f_2 \left( x \right) - f_{2,\text{goal}} \right) \right)\]
  1. Pareto front: finding many possible optimal solution for a large set weights. It’s good practise to normalize the objective functions.

(4.4)#\[\begin{split}\begin{matrix} \underset{x}{\mathop{\min }}\,\left( {{\delta }_{i}}\cdot {{f}_{1,\text{normalized}}}\left( x \right)+{{\delta }_{j}}\cdot {{f}_{2,\text{normalized}}}\left( x \right) \right) \\ \text{with }0<{{\delta }_{i}}<1\text{ and }{{\delta }_{j}}=1-{{\delta }_{i}} \\ \end{matrix}\end{split}\]

All of these methods could also be applied to problems which include more than two goals.

Test yourself

Normalize objective functions#

Normalizing the objectives functions can be done by setting the domain of every goal \(f\) between \(0\) and \(1\) by finding (or estimating) the lower and upper bounds for these objective functions within the domain:

(4.5)#\[\begin{split}\begin{matrix} {{f}_{\text{normalized}}}\left( x \right)=\cfrac{f\left( x \right)-\underset{x}{\mathop{\min }}\,\left( f\left( x \right) \right)}{\underset{x}{\mathop{\max }}\,\left( f\left( x \right) \right)-\underset{x}{\mathop{\min }}\,\left( f\left( x \right) \right)} \\ \text{with }\underset{x}{\mathop{\min }}\,\left( f\left( x \right) \right),\underset{x}{\mathop{\max }}\,\left( f\left( x \right) \right)\text{ for }x_{i}^{l}\le {{x}_{i}}\le x_{i}^{u}\text{ with }i=1,n \\ \end{matrix}\end{split}\]
Test yourself

Method#

Because the models are all single-objective, we can use our earlier methods to solve these problems.

Questions, discussions and comments#