Creating and Managing Linearizations

MINLP problems and linearizations

When solving a mixed integer nonlinear (MINLP) problem using an outer approximation approach (see also AIMMS Outer Approximation Algorithm for MINLP for a more detailed description), an associated master MIP problem is created and extended with linearizations of the nonlinear constraints of the original problem with respect to successive solutions of the underlying NLP sub-problem. Using the procedures in the GMP::Linearization namespace, AIMMS allows you to add linearizations of nonlinear constraints to a particular math program instance. Together with the GMP::Instance::CreateMasterMIP procedure to create the initial master MIP problem, these procedures form the heart of the implementation of the outer approximation algorithm in AIMMS, as discussed in A First and Basic Implementation.

Managing linearizations

The procedures and functions of the GMP::Linearization namespace are listed in this table.

Table 47 : GMP::Linearization functions and procedures

Add(GMP1, GMP2, solNr, conSet, devPermitted, penalty, linNr[, jacTol])

AddSingle(GMP1, GMP2, solNr, row, devPermitted, penalty, linNr[, jacTol])

Delete(GMP, linNr)

RemoveDeviation(GMP, row, linNr)

GetDeviation(GMP, row, linNr)

GetDeviationBound(GMP, row, linNr)

GetWeight(GMP, row, linNr)

GetLagrangeMultiplier(GMP, row, linNr)

GetType(GMP, row, linNr)\(\to\)AllRowTypes

SetDeviationBound(GMP, row, linNr, value)

SetWeight(GMP, row, linNr, value)

SetType(GMP, row, linNr, rowType)

Creating and deleting linearizations

Through the procedures

you can instruct AIMMS to add and delete one or more rows and columns to a given math program instance, representing the linearizations of (nonlinear) constraints of another math program instance at a particular solution point.

Modifying linearizations

You can modify the rows and columns generated by these procedures using the matrix manipulation routines discussed in Matrix Manipulation Procedures. The rows and columns generated by AIMMS cannot be associated directly with constraints and variables in your model, but must be addressed using the .ExtendedConstraint and .ExtendedVariable suffices. Modifying an Extended Math Program Instance discusses the precise suffices generated by AIMMS when using the functions GMP::Linearization::Add and GMP::Linearization::AddSingle.

Remaining functions

Through the remaining functions in the GMP::Linearization namespace you can

  • get and set information about the devation variables added to the linearized constraints, and their penalties added to the objective, and

  • get and set the row types of the generated constraints.

Note the you must use the appropriate .ExtendedConstraint suffix to refer to the particular linearization constraint when using these functions.