Multi-objective optimization using scipy

Multi-objective optimization using scipy#

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

(20)#\[ \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:

(21)#\[ \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:

(22)#\[ \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.

(23)#\[\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.

Exercise 34

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:

(24)#\[\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}\]

Note that here are various ways to normalize functions / data. This is just an example.

Exercise 35