Multi-objective Optimization
Multi-objective optimization
Multi-objective optimization deals with mathematical optimization problems involving more than one objective function that have to be optimized simultaneously. Optimal decisions need to take into account the presence of trade-offs between two or more conflicting objectives. For example, minimizing the travelling distance while minimizing the travelling time (which might conflict if the shortest route is not the fastest). AIMMS allows you to define multiple objectives for linear models only. Multi-objective optimization in AIMMS is currently only supported by CPLEX and Gurobi.
Blended or lexicographic objective
You can define a mixture of blended and lexicographic (or hierarchical) objectives. A blended objective consists of the linear combination of several objectives with given weights. A lexicographic objective assumes that the objectives can be ranked in order of importance. A solution is considered lexicographically better than another solution if it is better in the first objective where they differ (following the order). For a minimization problem, an optimal solution is one that is lexicographically minimal.
The procedure GMP::Column::SetAsMultiObjective
Currently, the only way to specify a multi-objective optimization model
is by using the GMP library. The procedure
GMP::Column::SetAsMultiObjective
can be used to mark a variable as
an objective used for multi-objective optimization. Typically, the
definition of such a variable defines the objective but the variable can
also be used in an equality constraint which then defines the objective.
Example
Consider the following declarations
Variable TotalDistance {
Definition : sum( (i,j), Distance(i,j) * X(i,j) );
}
Variable TotalTime {
Definition : sum( (i,j), TravelTime(i,j) * X(i,j) );
}
Here X(i,j)
is a (binary) variable indicating whether the road
between \(i\) and \(j\) is used. The variables TotalDistance
and TotalTime
can be specified as objectives in a multi-objective
optimization model using:
GMP::Column::SetAsMultiObjective( genMP, TotalDistance, 2, 1.0, 0, 0.1 );
GMP::Column::SetAsMultiObjective( genMP, TotalTime, 1, 1.0, 0, 0.0 );
In this example, AIMMS will only pass the coefficients of the variable
X
as the multi-objective coefficients to the solver, so
Distance(i,j)
for the first objective and TravelTime(i,j)
for
the second objective. (In other words, the multi-objective variables
TotalDistance
and TotalTime
will be substituted by their
definitions.) After solving the model, the objectives can be deleted by
calling the procedure GMP::Instance::DeleteMultiObjectives
.
Priority and weight
The priority of the objective can be specified using the third argument
of the procedure GMP::Column::SetAsMultiObjective
. Its fourth
argument defines the weight by which the objective coefficients are
multiplied when forming a blended objective, i.e., if multiple
objectives have the same priority. The last two (optional) arguments
specify the absolute and relative tolerance respectively, which define
the amount by which a solution may deviate from the optimal value for
the objective.
Mathematical program objective
In case of multi-objective optimization, the variable specified in the
Objective
attribute of the mathematical program will be treated as a
normal variable, that is, it will not be used as one of the
multi-objectives, unless specified as such using the procedure
GMP::Column::SetAsMultiObjective
. Note that for multi-objective
optimization, the mathematical program suffices Objective
and BestBound
refer to the (blended) objective with the highest priority (after the solve).