setterminal
Terminal weights and constraints
Description
Examples
Specify Constraints and Penalty Weights at Last Prediction Horizon Step
Create an MPC controller for a plant with three output variables and two manipulated variables.
plant = rss(3,3,2); plant.D = 0; mpcobj = mpc(plant,0.1);
-->"PredictionHorizon" is empty. Assuming default 10. -->"ControlHorizon" is empty. Assuming default 2. -->"Weights.ManipulatedVariables" is empty. Assuming default 0.00000. -->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000. -->"Weights.OutputVariables" is empty. Assuming default 1.00000. for output(s) y1 y2 and zero weight for output(s) y3
Specify a prediction horizon of 8
.
mpcobj.PredictionHorizon = 8;
Define the following penalty weights and constraints:
Diagonal penalty weights of
1
and10
on the first two output variablesLower bounds of
0
and-1
on the first and third outputs respectivelyUpper bound of
2
on the second outputLower bound of
1
on the first manipulated variable
Y = struct('Weight',[1,10,0],'Min',[0,-Inf,-1],'Max',[Inf,2,Inf]); U = struct('Min',[1,-Inf]);
Specify the constraints and penalty weights at the last step of the prediction horizon.
setterminal(mpcobj,Y,U)
Specify Terminal Constraints for Final Prediction Horizon Range
Create an MPC controller for a plant with three output variables and two manipulated variables.
plant = rss(3,3,2); plant.D = 0; mpcobj = mpc(plant,0.1);
-->"PredictionHorizon" is empty. Assuming default 10. -->"ControlHorizon" is empty. Assuming default 2. -->"Weights.ManipulatedVariables" is empty. Assuming default 0.00000. -->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000. -->"Weights.OutputVariables" is empty. Assuming default 1.00000. for output(s) y1 y2 and zero weight for output(s) y3
Specify a prediction horizon of 10
.
mpcobj.PredictionHorizon = 10;
Define the following terminal constraints:
Lower bounds of
0
and-1
on the first and third outputs respectivelyUpper bound of
2
on the second outputLower bound of
1
on the first manipulated variable
Y = struct('Min',[0,-Inf,-1],'Max',[Inf,2,Inf]); U = struct('Min',[1,-Inf]);
Specify the constraints beginning at step 5
and ending at the last step of the prediction horizon.
setterminal(mpcobj,Y,U,5)
Input Arguments
mpcobj
— Model predictive controller
mpc
object
Model predictive controller, specified as an MPC controller
object. To create an MPC controller, use mpc
.
Y
— Terminal weights and constraints for the output variables
structure
Terminal weights and constraints for the output variables, specified as a structure with the following fields:
Weight | 1-by-ny vector of nonnegative weights |
Min | 1-by-ny vector of lower bounds |
Max | 1-by-ny vector of upper bounds |
MinECR | 1-by-ny vector of constraint-softening Equal Concern for the Relaxation (ECR) values for the lower bounds |
MaxECR | 1-by-ny vector of constraint-softening ECR values for the upper bounds |
ny is the number of controlled outputs of the MPC controller.
If the Weight
, Min
or Max
field is empty, the values in mpcobj
are used at all prediction
horizon steps including the last. For the standard bounds, if any element of the
Min
or Max
field is infinite, the corresponding
variable is unconstrained at the terminal step.
Off-diagonal weights are zero (as described in Standard Cost Function). To apply nonzero off-diagonal terminal weights, you must augment the plant model. See Provide LQR Performance Using Terminal Penalty Weights.
By default, Y.MinECR
= Y.MaxECR
= 1 (soft
output constraints).
Choose the ECR
magnitudes carefully, accounting for the
importance of each constraint and the numerical magnitude of a typical violation.
U
— Terminal weights and constraints for the manipulated variables
structure
Terminal weights and constraints for the manipulated variables, specified as a structure with the following fields:
Weight | 1-by-nu vector of nonnegative weights |
Min | 1-by-nu vector of lower bounds |
Max | 1-by-nu vector of upper bounds |
MinECR | 1-by-nu vector of constraint-softening Equal Concern for the Relaxation (ECR) values for the lower bounds |
MaxECR | 1-by-nu vector of constraint-softening ECR values for the upper bounds |
nu is the number of manipulated variables of the MPC controller.
If the Weight
, Min
or Max
field is empty, the values in mpcobj
are used at all prediction
horizon steps including the last. For the standard bounds, if individual elements of the
Min
or Max
fields are infinite, the
corresponding variable is unconstrained at the terminal step.
Off-diagonal weights are zero (as described in Standard Cost Function). To apply nonzero off-diagonal terminal weights, you must augment the plant model. See Provide LQR Performance Using Terminal Penalty Weights.
By default, U.MinECR
= U.MaxECR
= 0 (hard
manipulated variable constraints)
Choose the ECR magnitudes carefully, accounting for the importance of each constraint and the numerical magnitude of a typical violation.
Pt
— Initial application step for terminal weight and constraints
prediction horizon p (default) | integer less than p
Step in the prediction horizon, specified as an integer between 1 and
p, where p is the prediction horizon. The
terminal weights and constraints are applied from prediction step Pt
to the end.
Version History
Introduced in R2011a
See Also
Functions
cloffset
|sensitivity
|ss
|tf
|zpk
|d2d
|review
|mpcprops
|setconstraint
|mpcverbosity
|set
|get
Objects
Blocks
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)