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 subproblem.
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.












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.