Multi-objective Attributes#
These are the attributes for setting and querying multiple objectives (refer to this section for additional information on multi-objective optimization).
ObjN#
Type:
double
Modifiable:
Yes
When the model has multiple objectives, this attribute is used to query or
modify objective coefficients for objective \(n\). You set \(n\) using
the ObjNumber parameter. Note that when
ObjNumber is equal to 0, ObjN
is equivalent to
Obj.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNCon#
Type:
double
Modifiable:
Yes
When the model has multiple objectives, this attribute is used to query
or modify the constant term for objective \(n\). You set \(n\)
using the ObjNumber parameter. Note that when
ObjNumber is equal to 0, ObjNCon
is equivalent to
ObjCon.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNPriority#
Type:
int
Modifiable:
Yes
This attribute is used to query or modify the priority of objective \(n\) when doing hierarchical multi-objective optimization. You set \(n\) using the ObjNumber parameter.
The default priority for an objective is 0.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNWeight#
Type:
double
Modifiable:
Yes
This attribute is used to query or modify the weight of objective \(n\) when doing blended multi-objective optimization. You set \(n\) using the ObjNumber parameter.
The default weight for an objective is 1.0.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNRelTol#
Type:
double
Modifiable:
Yes
This attribute is used to set the allowable degradation for objective \(n\) when doing hierarchical multi-objective optimization for MIP models. You set \(n\) using the ObjNumber parameter.
Hierarchical multi-objective MIP optimization will optimize for the
different objectives in the model one at a time, in priority order. If
it achieves objective value \(z\) when it optimizes for this
objective, then subsequent steps are allowed to degrade this value by at
most ObjNRelTol
*\(|z|\).
Objective degradations are handled differently for multi-objective LP models. The allowable degradation is controlled strictly using the ObjNAbsTol.
The default relative tolerance for an objective is 0.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNAbsTol#
Type:
double
Modifiable:
Yes
This attribute is used to set the allowable degradation for objective \(n\) when doing hierarchical multi-objective optimization. You set \(n\) using the ObjNumber parameter.
Hierarchical multi-objective MIP optimization will optimize for the
different objectives in the model one at a time, in priority order. If
it achieves objective value \(z\) when it optimizes for this
objective, then subsequent steps are allowed to degrade this value by at
most ObjNAbsTol
.
Objective degradations are handled differently for multi-objective LP
models. For LP models, solution quality for higher-priority objectives
is maintained by fixing some variables to their values in previous
optimal solutions. These fixings are decided using variable reduced
costs. The value of the ObjNAbsTol
parameter indicates the amount by
which a fixed variable’s reduced cost is allowed to violate dual
feasibility. The value of the related ObjNRelTol attribute is
ignored.
The default absolute tolerance for an objective is 1e-6
.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNVal#
Type:
double
Modifiable:
No
This attribute is used to query the objective value obtained for objective \(n\) by the \(k\)-th solution stored in the pool of feasible solutions found so far for the problem. You set \(n\) using the ObjNumber parameter, while you set \(k\) using the SolutionNumber parameter.
The number of objectives in the model can be queried (or modified) using the NumObj attribute; while the number of stored solutions can be queried using the SolCount attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
ObjNName#
Type:
string
Modifiable:
Yes
When the model has multiple objectives, this attribute is used to query or modify the name for objective \(n\). You set \(n\) using the ObjNumber parameter.
The number of objectives in the model can be queried (or modified) using the NumObj attribute.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.
NumObj#
Type:
int
Modifiable:
Yes
Number of objectives in the model. If you modify this attribute, it will
change the number of objectives in the model. Decreasing it will discard
existing objectives. Increasing it will create new objectives
(initialized to 0). Setting it to 0 will create a model with no
objective (i.e., a feasibility model). If you want to switch from a
multi-objective model to a single-objective model you also need to set
NumObj
to 0 and call model update before installing a new single
objective.
You can use the ObjNumber parameter, in conjunction with
multi-objective attributes (ObjN, ObjNName, etc.),
to query or modify attributes for different objectives. The value of
ObjNumber should always be less than NumObj
.
Please refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.
For examples of how to query or modify attributes, refer to our Attribute Examples.