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.