# Using the AOA Algorithm

AOA module \(\ldots\)

The basis GMP implementation of the AIMMS Outer Approximation (AOA)
algorithm can be found in a single AIMMS module, called
`GMP Outer Approximation`

, that is provided as part of the AIMMS
system. You can install this module using the **Install System Module**
command in the AIMMS **Settings** menu.

Basic algorithm

The procedure `DoOuterApproximation`

inside the module implements the
basic algorithm from the previous section. The procedure
`DoOuterApproximation`

has one input argument, namely:

`MyGMP`

, an element parameter with range`AllGeneratedMathematicalPrograms`

.

This procedure is called as follows:

```
generatedMP := GMP::Instance::Generate( SymbolicMP );
GMPOuterApprox::DoOuterApproximation( generatedMP );
```

Here `SymbolicMP`

is the symbolic mathematical program containing the
MINLP model, and `generatedMP`

is an element parameter in the
predefined set `AllGeneratedMathematicalPrograms`

. `GMPOuterApprox`

is the prefix of the AOA module. The implementation of this procedure
will be discussed in A First and Basic Implementation.

Modifying the algorithm

Because the AIMMS Outer Approximation algorithm is completely implemented using functionality provided the GMP library, you have the complete freedom to modify the math program instances generated by the basic AOA algorithm using the matrix manipulation routines discussed in Matrix Manipulation Procedures. Such problem-specific modifications to the basic algorithm may help you to find a better overall solution to your MINLP model, or to find a good solution faster.