# complements

Tags:

Updated:

complements implements a complementarity constraint $$x\geq 0, y\geq 0, x^Ty = 0$$

### Syntax

F = complements(Constraint1,Constraint2)

### Examples

complements applies to linear constraints and defines the associated complementarity constraints that one of the constraints is active. As an example, the following model states that $$y=0$$ and $$x+z\geq 1$$, or $$x+z = 1$$ while $$y\geq 0$$.

sdpvar x y z
F = complements(y >= 0, x+z >= 1)

### Comments

Since complements is implemented using a big-M approach when you use a mixed-integer solver, it is crucial that all involved variables have explicit bound constraints.

When a general nonlinear solver is used, the model is implemented by simply using the nonlinear form $$x^Ty=0$$.

When KNITRO is used, the complementarity structure is communicated to the solver.

The built-in global solver BMIBNB will exploit complementarity structure to improve bound propagation if the complementary is working on simple non-negative variables (i.e., if you have a complementarity constraints on an affine expression $$a^Tx + b\geq 0$$, introduce new variables and equality constraint $$z = a^Tx + b$$ first).