@minmax_optimizable¶
-
minmax_optimizable(optimizable)¶ -
A decorator to implement the min/max formulation for multiobjective optimization.
It allows to implement the optimization problem
(1)¶\[\begin{aligned} \min_{x\in \mathcal{X}} \max_{1\leqslant k \leqslant r}& \quad J_k(x)\\ \textrm{s.t.} & \left\{\begin{aligned} g_i(x)&=0, \text{ for all } 1\leqslant i\leqslant p,\\ h_j(x) &\leqslant 0, \text{ for all }1\leqslant j \leqslant q,\\ \end{aligned}\right. \end{aligned}\]by constructing the optimization problem equivalent to (1):
\[\begin{aligned} \min_{(x,m)\in \mathcal{X}\times \R} \quad m\\ \textrm{s.t.} & \left\{\begin{aligned} g_i(x)&=0, \text{ for all } 1\leqslant i\leqslant p,\\ h_j(x) &\leqslant 0, \text{ for all }1\leqslant j \leqslant q,\\ J_k(x) -m & \leqslant 0,\text{ for all }1\leqslant k\leqslant r. \end{aligned}\right. \end{aligned}\]The decorator can be used to implement the multiobjective optimization problem (1) by specifying a multivariate objective function in the definition of the
Optimizableobject as follows:pythonfrom nullspace_optimizer import EuclideanOptimizable, filtered_optimizable @minmax_optimizable class Problem(EuclideanOptimizable): def x0(self): #x0 #... def J(self, x): # multivariate objective function # return [J1, J2, J3, ..., Jr] def G(self, x): # equality constraints # return [G1,G2,...,Gp] def H(self, x): # inequality constraints # return [H1,H2,...,Hq] def dJ(self, x): # return Jacobian matrix of the multivariate objective # function # return (dJi/dxj)_{i,j} # etc...