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.