Multiple objectives
To consider multiple objectives in an AMPL model,
either natively supported by the solver, or emulated, use
solver option obj:multi
.
Otherwise, only the 1st objective is considered
(or any objective specified by obj:no
.)
See the
Multi-objective AMPL Colab notebooks
for examples.
minimize total_cost {s in STORE}:
sum {j in FOOD} cost[s,j] * Buy[j];
minimize total_number: sum {j in FOOD} Buy[j];
Blended objectives
By default, all objectives are blended together
(summed up with the corresponding signs.)
Suffixes .objweight
can be used to change the individual weights
and objective senses, according to the option obj:multi:weight
.
Lexicographical objectives
To apply hierarchical optimization, use suffix .objpriority
,
as described in the obj:multi
option description.
maximize ReverseSeniority {e in 1..2, i in I: E[i]==e}:
sum {t in V[i]: Pr[i, t]==0}
S[i] * x[i, t]
suffix objpriority (2-e)*S_range + 1 + S[i] - min {j in I} S[j];
Suffixes .objabstol
and .objreltol
allow for objective degradation.
However their exact meaning can vary for a solver’s native multi-objective
mode (obj:multi=1
), in particular for LPs. Consult the solver documentation.