## Constraints on Linear Combinations of Inputs and Outputs

You can constrain linear combinations of plant input and output variables. For example, you can constrain a particular manipulated variable (MV) to be greater than a linear combination of two other MVs.

The general form of such constraints is:

` `

Here:

• is the QP slack variable used for constraint softening. For more information, see Constraint Softening.

• are the manipulated variable values, in engineering units.

• are the predicted plant outputs, in engineering units.

• are the measured plant disturbance inputs, in engineering units.

• , , , , and are constant matrices and vectors. For more information, see `setconstraint`.

As with the QP cost function, output prediction using the state observer makes these constraints a function of the QP decision variables.

To set the mixed input/output constraints of an MPC controller, use the `setconstraint` function. To obtain the existing constraints from a controller, use `getconstraint`.

When using mixed input/output constraints, consider the following:

• Mixed input/output constraints are dimensional by default.

• Run-time updating of mixed input/output constraints is supported at the command line and in Simulink®. For more information, see Update Constraints at Run Time.

• Using mixed input/output constraints is not supported in MPC Designer.

As an example, consider an MPC controller for a double-integrator plant with mixed input/output constraints.

### Create Initial MPC Controller

The basic setup of the MPC controller includes:

• A double integrator as the prediction model

• Prediction horizon of 20

• Control horizon of 20

• Input constraints: ```plant = tf(1,[1 0 0]); Ts = 0.1; p = 20; m = 20; mpcobj = mpc(plant,Ts,p,m); mpcobj.MV = struct('Min',-1,'Max',1); ```
```-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000. ```

### Define Mixed Input/Output Constraints

Constrain the sum of the input `u(t)` and output `y(t)` must be nonnegative and smaller than 1.2:

` `

To impose this combined (mixed) I/O constraint, formulate it as a set of inequality constraints involving and .

` `

To define these constraints using the `setconstraint` function, set the constraint constants as follows:

` `
```setconstraint(mpcobj,[1;-1],[1;-1],[1.2;0]); ```

### Simulate Controller

Simulate closed-loop control of the linear plant model in Simulink. The controller `mpcobj` is specified in the MPC Controller block.

```mdl = 'mpc_mixedconstraints'; open_system(mdl) sim(mdl) ```
```-->Converting the "Model.Plant" property of "mpc" object to state-space. -->Converting model to discrete time. Assuming no disturbance added to measured output channel #1. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel. ```    The MPC controller keeps the sum between 0 and 1.2 while tracking the reference signal, .

```bdclose(mdl) ```