- Procedure GMP::Column::SetAsMultiObjective(GMP, column, priority, weight, abstol, reltol)
GMP::Column::SetAsMultiObjective
The procedure GMP::Column::SetAsMultiObjective
sets a column as one
of the multi-objectives of a generated mathematical program, thereby
creating a multi-objective optimization problem.
GMP::Column::SetAsMultiObjective(
GMP, ! (input) a generated mathematical program
column, ! (input) a scalar reference or column number
priority, ! (input) a numerical expression
weight, ! (input) a numerical expression
[abstol], ! (input/optional) a numerical expression
[reltol] ! (input/optional) a numerical expression
)
Arguments
- GMP
An element in
AllGeneratedMathematicalPrograms
.- column
A scalar reference to an existing column in the matrix or an element in the set
Integers
in the range \(\{ 0 .. n-1 \}\) where \(n\) is the number of columns in the matrix.- priority
A scalar value specifying the priority of the objective. An objective with the highest priority is considered first.
- weight
A scalar value specifying the weight of the objective. It defines the weight by which the objective coefficients are multiplied when forming a blended objective, i.e., if multiple objectives have the same priority.
- abstol
A scalar value specifying the absolute tolerance by which a solution may deviate from the optimal value of the objective of the previous optimization problem. The default value is 0.0.
- reltol
A scalar value specifying the relative tolerance by which a solution may deviate from the optimal value of the objective of the previous optimization problem. The default value is 0.0.
Return Value
The procedure returns 1 on success, and 0 otherwise.
Note
The column should be linear and have at exactly one coefficient in the matrix.
The column should be free, i.e., not have a lower or upper bound.
If
GMP::Column::SetAsMultiObjective
is called twice for the same column then only the information from the second call is used (and the information from the first call is ignored).Use the procedure
GMP::Instance::DeleteMultiObjectives
to delete all multi-objectives.Multi-objective optimization is only supported by CPLEX 12.9 or higher, and Gurobi.
The meaning of the relaxation of the objective, which is controlled by the abstol and reltol arguments, depends on whether the multi-objective problem is an LP or MIP. See the Multi-Objective Optimization section in the CPLEX Help or the Gurobi Help for more information.
Example
In the example below two multi-objectives are specified:
myGMP := GMP::Instance::Generate( MP );
GMP::Column::SetAsMultiObjective( myGMP, TotalDist, 2, 1.0, 0, 0.1 );
GMP::Column::SetAsMultiObjective( myGMP, TotalTime, 1, 1.0, 0, 0.0 );
GMP::Instance::Solve( myGMP );
We can now switch the priorities of the two objectives by adding:
GMP::Column::SetAsMultiObjective( myGMP, TotalDist, 1, 1.0, 0, 0.1 );
GMP::Column::SetAsMultiObjective( myGMP, TotalTime, 2, 1.0, 0, 0.0 );
GMP::Instance::Solve( myGMP );
See also
The procedure GMP::Instance::DeleteMultiObjectives
.