staticLex
OPL function for use in CPLEX or CP Optimizer models with a multi-criteria objective.
Syntax
staticLex(int):void
staticLex(float):void
staticLex(int,int):void
staticLex(float,float):void
staticLex(int,int,int):void
staticLex(float,float,float):void
staticLex(int,int,int,int):void
staticLex(float,float,float,float):void
staticLex(float, ...):void
Description
The function staticLex
defines
a multi-criteria policy, ordering the different criteria and performing
lexicographic optimization. The first criterion is considered to be
the most important one; any improvement of this criterion is worth
any loss on the other criteria. The second criterion is the second
most important one, and so on. The last criterion is the least important
one.
Example
The following code extract is taken
from the OPL example truckfleet.mod
.
// Objective: first criterion for minimizing the cost for configuring and loading trucks
// second criterion for minimizing the number of trucks
dexpr int e1 = sum(t in Trucks) (truckCost[truckConfigs[t]]*(load[t]!=0))
+ sum(t in Trucks) transitionCost[t];
dexpr int e2 = numUsed;
minimize staticLex(e1, e2); // trying to minimize cost first
This model contains an alternative objective, with the criteria in a different order.
//minimize staticLex(e2, e1); // trying to minimize numUsed first
You can move the comment symbol to the
other minimize
statement and run the model again.