- 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 and Gurobi.
Multi-objective optimization is not supported for generated mathematical programs created by one of the following functions:
GMP::Instance::GenerateRobustCounterpart,
GMP::Instance::GenerateStochasticProgram,
GMP::Instance::CreatePresolved,
GMP::Instance::CreateDual, or
GMP::Instance::CreateMasterMIP.
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
.