File Exchange

image thumbnail

MPC Tutorial I: Dynamic Matrix Control

version 1.0.0.0 (28 KB) by Yi Cao
A tutorial for beginners to learn dynamic matrix control

16 Downloads

Updated 08 Apr 2008

View License

This is the first part of the planned series for Model Predictive Control (MPC) tutorials.

Dynamic Matrix Control is the first MPC algorithm developed in early 1980s. It is probably also the most widely used MPC algorithm in industry due to the fact that its internal model, the step response model is easy to obtain in an industrial process.

The package provides a dmc function to perform dynamic matrix control and to show the principal of DMC. An example file is included to show how the dmc function can be used to solve a control problem. It only uses basic MATLAB commands. No any other toolboxe is required.

Cite As

Yi Cao (2021). MPC Tutorial I: Dynamic Matrix Control (https://www.mathworks.com/matlabcentral/fileexchange/19479-mpc-tutorial-i-dynamic-matrix-control), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (20)

Pengfei Hou

Alex

Alex

Lilian

Sorry, can anyone explain the matrix p.F in the dmc.m. In my opinion, in the formula f = p.F*p.v + p.y, the p.F should be the dynamic matrix.

XIZHOU HUANG

qin John

many thanks

sam

thanks

Abhishek

Hi
I keep getting an error Maximum Recursion Limit 0f 500 Reached.
I changed it but to 750 Matlab shuts itself down.
How to fix this problem?

Hassan

Sarav

Hi,

Can anyone tell how to calculate the step response co-efficients from step test data?
and
how can i fix the prediction and control horizons?

thx in advance.

Sarav

thx matija, i got it
thank you very much Mr.Yi Cao
for this nice tutorial

matija

Function "filter" is digital filter which takes coefficients of discrete transfer function polynomial. To get digital filter approximation of continuous filter with transfer function "1/(1+T*s)" and sampling period Ts use coefficients p.a=exp(-Ts/T) ,b=[0,p.a], a=[1,-p.a].

Sarav

thx, matija
actually i dont have any idea on how filter works, i tried to understand the help file in matlab, but i coudnt. Is there any other alternate for filter to this particular application.

matija

Reference trajectory is generated with first order filter. The initial condition of filter is initialized to p.y and then the set point is filtered so you get "smooth" transition of reference trajectory from current PV to desired SP.

Sarav

hi can anyone pls explain the following line
w=filter([0 (1-p.a)],[1 -p.a],ref,p.y)
thx

Mr Smart

matija

I got it. The plant has 3 samples of delay, but you only used 2 for generating p.sr. So p.sr=[g1,g2...]'.

Thanks for this nice tutorial.

matija

Hi,

I noticed that in Camacho's Model Predictive Control G is built like:
g1,zeros;
g2,g1,zeros;
...

however it seems like here in dmc.m it is built like:
g0,zeros;
g1,g0,zeros;
...

Is that a flaw or am I missing something?

The filter function produces y=[y0,y1, ...]', right?
And since input is X=[1,1,1, ...]' we could say that y=g=[g0,g1, ...]' and according to Camacho we would use g(2:P+1) for building G but in mpc.m it is used p.sp=(1:P) which would be g(1:P) in books notation.

V. Poor

Haryanto Ade

This is a good tutorial and best. It make clear understanding of MPC.

Let continue the tutorial, please!! Thanks alot.

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!