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);
-->"Weights.ManipulatedVariables" is empty. Assuming default 0.00000. -->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000. -->"Weights.OutputVariables" 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 to state-space. -->Converting model to discrete time. Assuming no disturbance added to measured output #1. -->"Model.Noise" is empty. Assuming white noise on each measured output.
The MPC controller keeps the sum between 0 and 1.2 while tracking the reference signal, .
bdclose(mdl)
See Also
Functions
Objects
Related Examples
- Update Constraints at Run Time
- Update Mixed Input/Output Constraints at Run Time
- Use Custom Constraints in Blending Process