desdeo.optimization.OptimizationProblem¶
This module contains single objective optimization problems. Principally there are scalarization functions for converting multi-objective problems into single-objective functions.
-
class
desdeo.optimization.OptimizationProblem.
AchievementProblemBase
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.ScalarizedProblem
Solves problems of the form:
\[\begin{split}& \mbox{minimize}\ \ & \displaystyle{ \max_{i=1, \dots , k} \left\{\, \mu_i(\dots) \right\}} + \rho \sum_{i=1}^k \mu_i (\dots) \\ & \mbox{subject to}\ & {\bf{x}} \in S\end{split}\]This is an abstract base class. Implementors should override _ach, _augmentation and _set_scaling_weights.
-
__abstractmethods__
= frozenset({'_ach', '_augmentation', '_set_scaling_weights'})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
EpsilonConstraintProblem
(mo_problem, obj_bounds=None)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.OptimizationProblem
Epsilon constraint problem
\[\begin{split}& \mbox{minimize}\ \ & f_r({\bf{x}}) \\ & \mbox{subject to}\ & f_j({\bf{x}}) \le z _j, j = 1, \dots, k, j \neq r, \\ & {\bf{x}} \in S, \\\end{split}\]-
bounds
¶ Boundary value for the each of the objectives. The objective with boundary of None is to be minimized
- Type
List of numerical values
-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
MaxEpsilonConstraintProblem
(mo_problem, obj_bounds=None)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.EpsilonConstraintProblem
Epsilon constraint problem where the objective is to be maximized
\[\begin{split}& \mbox{maximize}\ \ & f_r({\bf{x}}) \\ & \mbox{subject to}\ &f_j({\bf{x}}) \le z _j, j = 1, \dots, k, j \neq r, \\ & {\bf{x}} \in S\end{split}\]This is a special case of using epsilon constraint, to be very clear when using maximized scalarizing function.
-
bounds
¶ Boundary value for the each of the objectives. The objective with boundary of None is to be minimized
- Type
List of numerical values
-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
NIMBUSAchievementProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.NadirStarStarScaleMixin
,desdeo.optimization.OptimizationProblem.SimpleAchievementProblem
Finds new solution by solving NIMBUS version of the achivement problem.
\[\begin{split}& \mbox{minimize }\ \ & \displaystyle{\max_{i=1, \dots , k}\left\lbrack\, \frac{f_i(\mathbf x) - \bar z_i}{z_i^{\mathrm{nad}}-z^{\star\star}_i}\, \right\rbrack} + \rho \sum_{i=1}^k \frac{f_i(\mathbf x) }{z_i^{\mathrm{nad}}-z^{\star\star}_i} \\ &\mbox{subject to }\ &\mathbf x \in S.\end{split}\]-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
NIMBUSGuessProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.SimpleAchievementProblem
Finds new solution by solving NIMBUS version of the GUESS method.
\[\begin{split}& \mbox{minimize }\ \ & \displaystyle{\max_{i \notin I^{\diamond}}} \left\lbrack \frac{f_i(\mathbf x) - z_i^{\mathrm{nad}}}{z_i^{\mathrm{nad}}- \bar z_i} \right\rbrack + \rho \sum_{i=1}^k \frac{f_i(\mathbf x)}{z_i^{\mathrm{nad}}-\bar z_i} \\ &\mbox{subject to }\ &\mathbf x \in S.\end{split}\]In this implementation \(z^\mathrm{nad}\) is eps larger than the true nadir to protect against the case where \(\bar z_i = z_i^{\mathrm{nad}}\) causing division by zero.
-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
NIMBUSProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.NadirStarStarScaleMixin
,desdeo.optimization.OptimizationProblem.SimpleAchievementProblem
Finds new solution by solving NIMBUS scalarizing function.
\[\begin{split}& \mbox{minimize }\ \ & \displaystyle{\max_{{i\in I^<}\atop{j \in I^{\le}}} \left [ \frac{f_i(\mathbf x) - z^{\star}_i} {z_i^{\mathrm{nad}}-z^{\star\star}_i}, \frac{f_j(\mathbf x) - \hat{z}_j }{z_j^{\mathrm{nad}}-z^{\star\star}_j} \right ] + \rho \sum_{i=1}^k \frac{f_i(\mathbf x)}{z_i^{\mathrm{nad}}-z^{\star\star}_i}} \\ & \mbox{subject to }\ &f_i(\mathbf x) \le f_i(\mathbf x^c) \ \mbox{ for all } \ \ i \in I^< \cup I^{\le} \cup I^=, \\ && f_i(\mathbf x) \le \varepsilon_i \ \mbox{ for all } \ i \in I^{\ge}, \\ && \mathbf x \in S\end{split}\]-
__abstractmethods__
= frozenset({})¶
-
__init__
(mo_problem, **kwargs)[source]¶ Initialize self. See help(type(self)) for accurate signature.
- Return type
None
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
NIMBUSStomProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.SimpleAchievementProblem
Finds new solution by solving NIMBUS version of the satisficing trade-off method (STOM).
\[\begin{split}& \mbox{minimize }\ \ & \displaystyle{ \max_{i=1, \dots , k} \left\lbrack\, \frac{f_i(\mathbf x) - z_i^{\star\star}}{\bar{z}_i - z_i^{\star\star}} \, \right\rbrack} + \rho \sum_{i=1}^k \frac{f_i(\mathbf x)}{\bar z_i - z_i^{\star\star}} \\ &\mbox{subject to }\ &\mathbf x \in S\end{split}\]-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
NadirStarStarScaleMixin
[source]¶ Bases:
object
This mixin implements _set_scaling_weights as:
\[\frac{1}{z_i^{\mathrm{nad}} - z_i^{\star\star}}\]-
__dict__
= mappingproxy({'__module__': 'desdeo.optimization.OptimizationProblem', '__doc__': '\n This mixin implements `_set_scaling_weights` as:\n\n .. math::\n\n \\frac{1}{z_i^{\\mathrm{nad}} - z_i^{\\star\\star}}\n\n ', '_set_scaling_weights': <function NadirStarStarScaleMixin._set_scaling_weights>, '__dict__': <attribute '__dict__' of 'NadirStarStarScaleMixin' objects>, '__weakref__': <attribute '__weakref__' of 'NadirStarStarScaleMixin' objects>})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
__weakref__
¶ list of weak references to the object (if defined)
-
-
class
desdeo.optimization.OptimizationProblem.
NautilusAchievementProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.NadirStarStarScaleMixin
,desdeo.optimization.OptimizationProblem.SimpleAchievementProblem
Solves problems of the form:
\[\begin{split}& \mbox{minimize}\ \ & \displaystyle{ \max_{i=1, \dots , k} \left\{\, \mu_i(f_i(\mathbf x) - q_i)\ \right\}} + \rho \sum_{i=1}^k \frac{f_i(\mathbf x) - q_i} {z_i^{\mathrm{nad}}-z^{\star\star}_i} \\ & \mbox{subject to}\ & {\bf{x}} \in S\end{split}\]-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
OptimizationProblem
(mo_problem)[source]¶ Bases:
abc.ABC
Single objective optimization problem
-
problem
¶ The multi-objective problem that the single-objective problem is posed in terms of
-
__abstractmethods__
= frozenset({'_evaluate'})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
evaluate
(objectives)[source]¶ Evaluate value of the objective function and possible additional constraints
- Parameters
objectives (list of objective values) –
- Return type
Tuple
[List
[float
],Optional
[ndarray
]]- Returns
objective (list of floats) – Objective function values corresponding to objectives
constraint (2-D matrix of floats) – Constraint function values corresponding to objectives per row. None if no constraints are added
-
-
class
desdeo.optimization.OptimizationProblem.
ScalarizedProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.OptimizationProblem
,abc.ABC
-
__abstractmethods__
= frozenset({'_evaluate', '_set_preferences'})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
evaluate
(objectives)[source]¶ Evaluate value of the objective function and possible additional constraints
- Parameters
objectives (list of objective values) –
- Return type
Tuple
[List
[float
],Optional
[ndarray
]]- Returns
objective (list of floats) – Objective function values corresponding to objectives
constraint (2-D matrix of floats) – Constraint function values corresponding to objectives per row. None if no constraints are added
-
-
class
desdeo.optimization.OptimizationProblem.
SelectedOptimizationProblem
(mo_problem, n)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.OptimizationProblem
Converts a multi-objective optimization problem to a single-objective one by selecting only a single objective.
-
__abstractmethods__
= frozenset({})¶
-
__init__
(mo_problem, n)[source]¶ - Parameters
n (
int
) – The index of the objective to be considered- Return type
None
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
class
desdeo.optimization.OptimizationProblem.
SimpleAchievementProblem
(mo_problem, **kwargs)[source]¶ Bases:
desdeo.optimization.OptimizationProblem.AchievementProblemBase
Solves a simple form of achievement scalarizing function
\[\begin{split}& \mbox{minimize}\ \ & \displaystyle{ \max_{i=1, \dots , k} \left\{\, \mu_i(f_i(\mathbf x) - q_i)\ \right\}} + \rho \sum_{i=1}^k \mu_i (f_i(\mathbf x)) \\ & \mbox{subject to}\ & {\bf{x}} \in S\end{split}\]If ach_pen=True is passed to the constructor, the full achivement function is used as the penatly, causing us to instead solve[WIERZBICKI1980]_
\[\begin{split}& \mbox{minimize}\ \ & \displaystyle{ \max_{i=1, \dots , k} \left\{\, \mu_i(f_i(\mathbf x) - q_i)\ \right\}} + \rho \sum_{i=1}^k \mu_i (f_i(\mathbf x)- q_i) \\ & \mbox{subject to}\ & {\bf{x}} \in S\end{split}\]This is an abstract base class. Implementors should override _get_rel and _set_scaling_weights.
References
[WIERZBICKI1980] A. P. Wierzbicki, The use of reference objectives in multiobjective optimization, in: G. Fandel, T. Gal (Eds.), Multiple Criteria Decision Making, Theory and Applications, Vol. 177 of Lecture Notes in Economics and Mathematical Systems, Springer, 1980, pp. 468-486.
-
__abstractmethods__
= frozenset({'_get_rel', '_set_scaling_weights'})¶
-
__module__
= 'desdeo.optimization.OptimizationProblem'¶
-
-
desdeo.optimization.OptimizationProblem.
v_ach
(f, w, r)¶
-
desdeo.optimization.OptimizationProblem.
v_pen
(f, w, r)¶