Description
In the class, we will develop step-response MPC (i.e., classical DMC algorithm) for control of
a SISO system. The system was given by the following transfer function
�(�) = 2.5�!”#
20� + 1 �(�)
with sampling-time of h = 5. Recall that we chose n = 24 number of steps and developed DMC
algorithm to control the system at the set-point of r = 1. Controller tuning parameters: m = 4, p = 10,
Q = 1, R = 0.04. The following constraints are implemented: −0.5 ≤ �(�) ≤ 0.5, |Δ�(�)| < 0.05.
You will repeat the simulations for the following SISO models: (i) Case with no disturbance;
(ii) extension to measured disturbance case; (iii) extension to plant-model mismatch case.
Problem 1: SISO MPC (6 points)
In the previous assignments, you developed step-response model, simulated open-loop
response and developed matrices for using with DMC algorithm for the first-order system:
�(�) = 5
�� + 1 �!$.&’#, � = 1 + �
2 a = Last digit of roll number, Δ� = 0.5
In this assignment, please modify the uploaded DMC code for controlling your system
Choose n long enough for the system to reach steady state. Typically, � = (4 to 5) × �.
Choose n in the range 16 ≤ � ≤ 50. Controller tuning parameters: m = 4, p = 10, Q = 1, R = 0.1. The
following constraints are implemented: −0.4 ≤ �(�) ≤ 0.4, |Δ�(�)| < 0.025.
Problem 2: Extension to Measured Disturbance Case (8 points)
Modify the uploaded SISO system code to simulate the case of measured disturbance:
�(�) = 2.5�!”#
20� + 1 �(�) +
0.4�!(#
10� + 1 �(�)
Modify the uploaded code to handle the effect of measured disturbance, with
• Case-1: A step-change of 0.5 in the disturbance
• Case-2: A series of step changes, with d = 0.5, 1.0 and –0.2 made at k = 0, 12, 20
Note that there is no model plant mismatch for this problem.
Hint: Model with measured disturbances
Consider a model: � = �)� + �*�, where � ∈ ℝ+! are process outputs, � ∈ ℝ+” are
manipulated inputs and � ∈ ℝ+# are measured disturbances. As we have seen in previous
assignments, we can obtain step response coefficient matrices � and �* from �) and �*.
The model formulation, thus, becomes:
�S(� + 1) = ��S(�) + � �(�) + �� ��(�)
whereas, the p-step prediction equation becomes:
�)(� + 1) = ℳ�S(�) + �-Δ�.(�) + �*Δ�(�)
Following the discussion in the course videos, the Hessian remains same, whereas gradient becomes:
�/ = [�0]
/Γ1aℳ�S(�) + ����(�) − ℛd
You only need to focus on the two highlighted equations. Other equations remain unchanged.
The uploaded code does not have the bolded term involving Δ�(�).
You need to edit the code at only
the appropriate locations to: (i) Obtain �* and �* matrices of size e�. �1f × �* and e�. �1f × �*;
(ii) edit plant behavior and model predictions to include the effect of d(k); and
(iii) edit the gradient calculation required for obtaining the input moves.
These are the main changes required in the code. Other than these, the idea remains the same.
Problem 3: Extension to Model-Plant Mismatch Case (6 points)
Now consider the case of Model-Plant Mismatch. Let us assume that the true Plant is:
�(�) = 2.75�!2.3#
18.5� + 1 �(�)
Modify the uploaded code to handle the case of MPM. Note that the code needs to be changed
to include load disturbances so as to ensure steady-state bias correction.
Hint: Handling unmeasured disturbances or Model-Plant Mismatch
When there are unmeasured disturbances or model-plant mismatch, the model predictions
�S(�) differ from the actual response of the system being controlled, �(�). Hence, we need to
introduce bias correction, based on the error: �(�) = �(�) − �j(�).
Recall that �j(�) is nothing but the first �1 elements of �S(�). In this assignment, �1 = 1.
As in the previous problem, the Hessian remains same, whereas gradient becomes:
�/ = [�0]/Γ1aℳ�S(�) + ℐ��(�) − ℛd
where, ℐ) = m
�+!×+!
⋮
�+!×+!
p p times.
Note that you will need to run two separate step-response models: One for the actual plant
(in cyan highlight above) and another for the DMC-model.