# Declaration of Mixed Complementarity Models

Mixed complementarity models

To define a pure mixed complementarity model, you must declare a
`MathematicalProgram`

(see also MathematicalProgram Declaration and Attributes) and specify `mcp`

as the `Type`

attribute of the `MathematicalProgram`

. In the
`Variables`

attribute you can specify a subset of the set of all
`ComplementarityVariables`

to be included in the mixed complementarity
model at hand. Based on this specification, AIMMS will automatically
generate all constraints associated with these complementarity
variables, resulting in a square system.

Additional variables and constraints

In addition, AIMMS allows you to add ordinary variables to the
`Variables`

attribute, and to specify additional constraints in the
`Constraints`

attribute of the `MathematicalProgram`

that must be
satisfied as well. If the solver used to solve the mixed complementarity
model requires a square system, AIMMS will automatically add auxiliary
constraints or variables to the generated system, and provide the
linkages with the ordinary variables and constraints you have added to
the system.

No optimization

For a mixed complementarity problem you should not specify the
`Objective`

and `Direction`

attributes, as a complementarity solver
will only compute a feasible solution that satisfies all the
complementarity conditions specified. If these attributes are not empty,
AIMMS will produce a runtime error when you apply the `SOLVE`

statement the corresponding `MathematicalProgram`

(see also
The SOLVE Statement).

Example

A mixed complementarity model containing the declaration of the
complementarity variable `MembraneHeight`

declared in the previous
section, is defined by the following declaration.

```
MathematicalProgram Membrane {
Variables : AllVariables;
Type : mcp;
}
```

As usual, you can solve the `Membrane`

through the statement

```
solve Membrane;
```

which will generate the mixed complementarity model and invoke a
suitable solver for `mcp`

problem type.