ModelPredictiveControlcse.lab.imtlucca.it/~bemporad/teaching/mpc/imt/2-ltv_nl... · 2019-04-02 ·...

Preview:

Citation preview

Model Predictive ControlLinear time-varying and nonlinear MPC

Alberto Bemporad

http://cse.lab.imtlucca.it/~bemporad

©2019 A. Bemporad - "Model Predictive Control" 1/30

Course structure

Linear model predictive control (MPC)

• Linear time-varying and nonlinear MPC

• MPC computations: quadratic programming (QP), explicit MPC

• Hybrid MPC

• Stochastic MPC

• Data-driven MPC

MATLAB Toolboxes:– MPC Toolbox (linear/explicit/parameter-varying MPC)

– Hybrid Toolbox (explicit MPC, hybrid systems)

Course page:http://cse.lab.imtlucca.it/~bemporad/mpc_course.html

©2019 A. Bemporad - "Model Predictive Control" 2/30

Linear Time-Varying Model Predictive Control

LPV models

• Linear Parameter-Varying (LPV)model{xk+1 = A(p(t))xk +B(p(t))uk +Bv(p(t))vk

yk = C(p(t))xk +Dv(p(t))vk

that depends on a vector p(t) of parameters

• The weights in the quadratic performance index can also be LPV

• The resulting optimization problem is still a QP

minz

1

2z′H(p(t))z +

[x(t)r(t)

u(t−1)

]′F (p(t))′z

s.t. G(p(t))z ≤ W (p(t)) + S(p(t))

[x(t)r(t)

u(t−1)

]

• The QP matrices must be constructed online, contrarily to the LTI case

©2019 A. Bemporad - "Model Predictive Control" 3/30

Linearizing a nonlinear model: LPV case

• An LPV model can be obtained by linearizing the nonlinear model{xc(t) = f(xc(t), uc(t), pc(t))

yc(t) = g(xc(t), pc(t))

• pc ∈ Rnp = a vector of exogenous signals (e.g., ambient conditions)• At time t, consider nominal values xc(t), uc(t), pc(t) and linearize

d

dτ(xc(t+ τ)− xc(t)) =

d

dτ(xc(t+ τ)) ≃ ∂f

∂x

∣∣∣∣xc(t),uc(t),pc(t)︸ ︷︷ ︸

Ac(t)

(xc(t+ τ)− xc(t)) +

∂f

∂u

∣∣∣∣xc(t),uc(t),pc(t)︸ ︷︷ ︸

Bc(t)

(uc(t+ τ)− uc(t)) + f(xc(t), uc(t), pc(t))︸ ︷︷ ︸Bvc(t)

·1

• Convert (Ac, [Bc Bvc]) to discrete-time and get prediction model (A, [B Bv])

• Same thing for the output equation to get matricesC andDv

©2019 A. Bemporad - "Model Predictive Control" 4/30

LTV models

• Linear Time-Varying (LTV)model{xk+1 = Ak(t)xk +Bk(t)uk

yk = Ck(t)xk

• At each time t the model can also change over the prediction horizon k

• The measured disturbance is embedded in the model

• The resulting optimization problem is still a QP

minz

1

2z′H(t)z +

[x(t)r(t)

u(t−1)

]′F (t)′z

s.t. G(t)z ≤ W (t) + S(t)

[x(t)r(t)

u(t−1)

]• As for LPV-MPC, the QP matrices must be constructed online

©2019 A. Bemporad - "Model Predictive Control" 5/30

Linearizing a nonlinear model: LTV case• LPV/LTV models can be obtained by linearizing nonlinear models{

xc(t) = f(xc(t), uc(t), pc(t))

yc(t) = g(xc(t), pc(t))

• At time t, consider nominal trajectories

U = {uc(t), uc(t+ Ts), . . . , uc(t+ (N − 1)Ts)}(example: U = shifted previous optimal sequence or input ref. trajectory)

P = {pc(t), pc(t+ Ts), . . . , pc(t+ (N − 1)Ts)}(no preview: pc(t+ k) ≡ pc(t))

• Integrate the model and get nominal state/output trajectories

X = {xc(t), xc(t+ Ts), . . . , xc(t+ (N − 1)Ts)}Y = {yc(t), yc(t+ Ts), . . . , yc(t+ (N − 1)Ts)}

• Examples: xc(t) = current xc(t); xc(t) = equilibrium; xc(t) = reference

©2019 A. Bemporad - "Model Predictive Control" 6/30

Linearizing a nonlinear model: LTV case

• While integrating, also compute the sensitivities

Ak(t) =∂xc(t+ (k + 1)Ts)

xc(t+ kTs)

Bk(t) =∂xc(t+ (k + 1)Ts)

uc(t+ kTs)

Ck(t) =∂yc(t+ kTs)

xc(t+ kTs)

• Approximate the NL model as the LTV modelxk+1︷ ︸︸ ︷

xc(k + 1)− xc(k + 1) = Ak(t)

xk︷ ︸︸ ︷(xc(k)− xc(k))+Bk(t)

uk︷ ︸︸ ︷(uc(k)− uc(k))

yc(k)− yc(k)︸ ︷︷ ︸yk

= Ck(t) (xc(k)− xc(k))︸ ︷︷ ︸xk

©2019 A. Bemporad - "Model Predictive Control" 7/30

LTV-MPC example• Process model is LTV

d3y

dt3+ 3

d2y

dt2+ 2

dy

dt+ (6 + sin(5t))y = 5

du

dt+

(5 + 2 cos

(5

2t

))u

• LTI-MPC cannot track the setpoint, LPV-MPC tries to catch-up withtime-varying model, LTV-MPC has preview on future model values

(See demo TimeVaryingMPCControlOfATimeVaryingLinearSystemExample in MPC Toolbox)

©2019 A. Bemporad - "Model Predictive Control" 8/30

LTV-MPC example• Define LTV model

Models = tf; ct = 1;for t = 0:0.1:10

Models(:,:,ct) = tf([5 5+2*cos(2.5*t)],[1 3 2 6+sin(5*t)]);ct = ct + 1;

end

Ts = 0.1; % sampling timeModels = ss(c2d(Models,Ts));

• Design MPC controller

sys = ss(c2d(tf([5 5],[1 3 2 6]),Ts)); % average model timep = 3; % prediction horizonm = 3; % control horizonmpcobj = mpc(sys,Ts,p,m);

mpcobj.MV = struct('Min',-2,'Max',2); % input constraintsmpcobj.Weights = struct('MV',0,'MVRate',0.01,'Output',1);

©2019 A. Bemporad - "Model Predictive Control" 9/30

LTV-MPC example

• Simulate LTV system with LTI-MPC controller

for ct = 1:(Tstop/Ts+1)real_plant = Models(:,:,ct); % Get the current planty = real_plant.C*x;u = mpcmove(mpcobj,xmpc,y,1); % Apply LTI MPCx = real_plant.A*x + real_plant.B*u;

end

• Simulate LTV system with LPV-MPC controller

for ct = 1:(Tstop/Ts+1)real_plant = Models(:,:,ct); % Get the current planty = real_plant.C*x;u = mpcmoveAdaptive(mpcobj,xmpc,real_plant,nominal,y,1);x = real_plant.A*x + real_plant.B*u;

end

©2019 A. Bemporad - "Model Predictive Control" 10/30

t

uy

Time-Varying Plant

AdaptiveMPC mv

model

mo

ref

Adaptive MPC Controller

t

A

B

C

D

U

Y

X

DX

Time Varying Predictive Model

Clock

usim

To Workspace

ysim

To Workspace1

Zero-OrderHold

1

Reference

LTV-MPC example• Simulate LTV system with LTV-MPC controller

for ct = 1:(Tstop/Ts+1)real_plant = Models(:,:,ct); % Get the current planty = real_plant.C*x;u = mpcmoveAdaptive(mpcobj,xmpc,Models(:,:,ct:ct+p),Nominals,y,1);x = real_plant.A*x + real_plant.B*u;

end

• Simulate in Simulink

mpc_timevarying.mdl

©2019 A. Bemporad - "Model Predictive Control" 11/30

LTV-MPC example• Simulink block

need to provide 3D arrayof future models

mpc_timevarying.mdl

©2019 A. Bemporad - "Model Predictive Control" 12/30

Tj

Tf

CAf

CAT

F

A�� B

Example: LPV-MPC of a nonlinear CSTR system

• MPC control of a diabatic continuous stirred tank reactor (CSTR)

• Process model is nonlinear

dCA

dt=

F

V(CAf − CA)− CAk0e

−∆ERT

dT

dt=

F

V(Tf − T ) +

UA

ρCpV(Tj − T )−

∆H

ρCpCAk0e

−∆ERT

– T : temperature inside the reactor [K] (state)

– CA : concentration of the reactant in the reactor [kgmol/m3] (state)

– Tj : jacket temperature [K] (input)

– Tf : feedstream temperature [K] (measured disturbance)

– CAf : feedstream concentration [kgmol/m3] (measured disturbance)

• Objective: manipulate Tj to regulate CA on desired setpoint

>> edit ampccstr_linearization (MPC Toolbox)

©2019 A. Bemporad - "Model Predictive Control" 13/30

2CA

1T

Feed Concentration

Feed Temperature

Coolant Temperature

Reactor Temperature

Reactor Concentration

CSTR

3Tc

2Ti

1CAi

Example: LPV-MPC of a nonlinear CSTR systemProcess model:>> mpc_cstr_plant

% Create operating point specification.plant_mdl = 'mpc_cstr_plant';op = operspec(plant_mdl);

op.Inputs(1).u = 10; % Feed concentration known @initial conditionop.Inputs(1).Known = true;op.Inputs(2).u = 298.15; % Feed concentration known @initial conditionop.Inputs(2).Known = true;op.Inputs(3).u = 298.15; % Coolant temperature known @initial conditionop.Inputs(3).Known = true;

[op_point, op_report] = findop(plant_mdl,op); % Compute initial condition

x0 = [op_report.States(1).x;op_report.States(2).x];y0 = [op_report.Outputs(1).y;op_report.Outputs(2).y];u0 = [op_report.Inputs(1).u;op_report.Inputs(2).u;op_report.Inputs(3).u];

% Obtain linear plant model at the initial condition.sys = linearize(plant_mdl, op_point);sys = sys(:,2:3); % First plant input CAi dropped because not used by MPC

©2019 A. Bemporad - "Model Predictive Control" 14/30

Example: LPV-MPC of a nonlinear CSTR system

• MPC design

% Discretize the plant modelTs = 0.5; % hoursplant = c2d(sys,Ts);

% Design MPC Controller

% Specify signal types used in MPCplant.InputGroup.MeasuredDisturbances = 1;plant.InputGroup.ManipulatedVariables = 2;plant.OutputGroup.Measured = 1;plant.OutputGroup.Unmeasured = 2;plant.InputName = 'Ti','Tc';plant.OutputName = 'T','CA';

% Create MPC controller with default prediction and control horizonsmpcobj = mpc(plant);

% Set nominal values in the controllermpcobj.Model.Nominal = struct('X', x0, 'U', u0(2:3), 'Y', y0, 'DX', [0 0]);

©2019 A. Bemporad - "Model Predictive Control" 15/30

Example: LPV-MPC of a nonlinear CSTR system

• MPC design (cont’d)

% Set scale factors because plant input and output signals have different% orders of magnitudeUscale = [30 50];Yscale = [50 10];mpcobj.DV(1).ScaleFactor = Uscale(1);mpcobj.MV(1).ScaleFactor = Uscale(2);mpcobj.OV(1).ScaleFactor = Yscale(1);mpcobj.OV(2).ScaleFactor = Yscale(2);

% Let reactor temperature T float (i.e. with no setpoint tracking error% penalty), because the objective is to control reactor concentration CA% and only one manipulated variable (coolant temperature Tc) is available.mpcobj.Weights.OV = [0 1];

% Due to the physical constraint of coolant jacket, Tc rate of change is% bounded by degrees per minute.mpcobj.MV.RateMin = -2;mpcobj.MV.RateMax = 2;

©2019 A. Bemporad - "Model Predictive Control" 16/30

Example: LPV-MPC of a nonlinear CSTR system• Simulink diagram

Copyright 1990-2014 The MathWorks, Inc.

Concentration

33

Temperature3

3

MeasurementNoise

33

CA Reference

2

0

u0(1)

Selector

3

u0(2)

Disturbance

T

CA

CAi

Ti

Tc

A

B

C

D

U

Y

X

DX

poles

Successive Linearizer

[2x1]

[2x1]

[2x1]

[2x1]

[2x1]

[2x2]

[2x2]

[2x2]

[2x2] 8{24}

[2x1]

[2x1]

[2x1]

[2x1]

[2x2]

[2x2]

[2x2]

[2x2]

22

32

2

u0(1)

CAi

Ti

Tc

T

CA

CSTR

Pole[2x1]

AdaptiveMPC

mvmodel

mo

ref

mdest.state

Adaptive MPC Controller

3

2

8{24}

Reference

Feed

Coolant

Reactor

Estimated

A

B

C

D

U

Y

X

DX

True

Poles

plant model

LPV-MPC

linearize + discretize

>> edit ampc_cstr_linearization

©2019 A. Bemporad - "Model Predictive Control" 17/30

Example: LPV-MPC of a nonlinear CSTR system

• Closed-loop results

©2019 A. Bemporad - "Model Predictive Control" 18/30

Example: LTI-MPC of a nonlinear CSTR system

• Closed-loop results with LTI-MPC, same tuning

Copyright 1990-2014 The MathWorks, Inc.Concentration

22

Temperature3

3

Noise

33

CA Reference

2

0

u0(1)

CAi

CAi

Ti

Tc

T

CA

CSTR

u0(2)

Ti

Disturbance

MPCmv

mo

ref

md

MPC Controller

2

Reference

Feed

Coolant

Reactor

True

LTI-MPC

©2019 A. Bemporad - "Model Predictive Control" 19/30

Example: LTI-MPC of a nonlinear CSTR system

• Closed-loop results

©2019 A. Bemporad - "Model Predictive Control" 20/30

LTV Kalman filter

• Process model = LTV model with noise

x(k + 1) = A(k)x(k) +B(k)u(k)+G(k)ξ(k)

y(k) = C(k)x(k) + ζ(k)

• ξ(k) ∈ Rq = zero-mean white process noisewith covarianceQ(k) ≽ 0

• ζ(k) ∈ Rp = zero-mean whitemeasurement noisewith covarianceR(k) ≻ 0

• measurement update:

M(k) = P (k|k − 1)C(k)′[C(k)P (k|k − 1)C(k)′ +R(k)]−1

x(k|k) = x(k|k − 1) +M(k) (y(k)− C(k)x(k|k − 1))

P (k|k) = (I −M(k)C(k))P (k|k − 1)

• time update:

x(k + 1|k) = A(k)x(k|k) +B(k)u(k)

P (k + 1|k) = A(k)P (k|k)A(k)′ +G(k)Q(k)G(k)′

©2019 A. Bemporad - "Model Predictive Control" 21/30

Extended Kalman filter• Process model = nonlinear model with noise

x(k + 1) = f(x(k), u(k), ξ(k))

y(k) = g(x(k), u(k)) + ζ(k)

• measurement update:

C(k) =∂g

∂x(xk|k−1, u(k))

M(k) = P (k|k − 1)C(k)′[C(k)P (k|k − 1)C(k)′ +R(k)]−1

x(k|k) = x(k|k − 1) +M(k) (y(k)− g(x(k|k − 1), u(k)))

P (k|k) = (I −M(k)C(k))P (k|k − 1)

• time update:

x(k + 1|k) = f(x(k|k), u(k))

A(k) =∂f

∂x(xk|k, u(k), E[ξ(k)]), G(k) =

∂f

∂ξ(xk|k, u(k), E[ξ(k)])

P (k + 1|k) = A(k)P (k|k)A(k)′ +G(k)Q(k)G(k)′

©2019 A. Bemporad - "Model Predictive Control" 22/30

Nonlinear Model Predictive Control

Nonlinear MPC(Mayne, Rawlings, Diehl, 2017)

• Nonlinear prediction model{xk+1 = f(xk, uk)

yk = g(xk, uk)

• Nonlinear constraints h(xk, uk) ≤ 0

• Nonlinear performance indexmin ℓN (xN ) +

N−1∑k=0

ℓ(xk, uk)

• Optimization problem: nonlinear programming problem (NLP)

minz F (z, x(t))

s.t. G(z, x(t)) ≤ 0

H(z, x(t)) = 0

z =

u0

...uN−1x1

...xN

©2019 A. Bemporad - "Model Predictive Control" 23/30

Nonlinear optimization

(Nocedal,Wright, 2006)

• (Nonconvex) NLP is harder to solve than QP

• Convergence to a global optimummay not be guaranteed

• Several NLP solvers exist (such as Sequential Quadratic Programming (SQP))

• NL-MPC is not used in practice so often, except for dealing with strongdynamical nonlinearities and slow processes (such as chemical processes)

©2019 A. Bemporad - "Model Predictive Control" 24/30

Fast nonlinear MPC(Lopez-Negrete, D’Amato, Biegler, Kumar, 2013)

• Fast MPC: exploit sensitivity analysis to compensate for the computationaldelay caused by solving the NLP

• Key idea: pre-solve the NLP between time t− 1 and t based on the predictedstate x∗(t) = f(x(t− 1), u(t− 1)) in background

• Get u∗(t) and sensitivity∂u∗

∂x

∣∣∣∣x∗(t)

within sample interval [(t− 1)Ts, tTs)

• At time t, get x(t) and compute

u(t) = u∗(t) +∂u∗

∂x(x(t)− x∗(t))

• Note that still one NLP must be solved within the sample interval

©2019 A. Bemporad - "Model Predictive Control" 25/30

From LTV-MPC to NL-MPC

• Key idea: Solve a sequence of LTV-MPC problems at the same time t

• Given the current state x(t) and reference {r(t+ k), ur(t+ k)}, initial guessU0 = {u0

0, . . . , u0N−1} and corresponding state trajectoryX0 = {x0

0, . . . , x0N}

• A good initial guess U0, X0 is the previous (shifted) optimal solution

• At a generic iteration i, linearize the NL model around Ui, Xi:{xk+1 = f(xk, uk)

yk = g(xk)

Ai =∂f(xi

0, ui0)

∂x, Bi =

∂f(xi0, u

i0)

∂u, Ci =

∂g(xi0, u

i0)

∂x

©2019 A. Bemporad - "Model Predictive Control" 26/30

Nonlinear MPC

For h = 0 to hmax − 1 do:1. Simulate from x(t)with inputs Uh, parameter sequence P and get state

trajectoryXh and output trajectory Yh

2. Linearize around (Xh, Uh, P ) and discretize in time with sample time Ts

3. Let U∗h+1 be the solution of the QP problem corresponding to LTV-MPC

4. Find optimal step size αh ∈ (0, 1];5. Set Uh+1 = (1− αh)Uh + αhU

∗h+1;

Return solution Uhmax

• The method above is a Gauss-Newton method to solve the NL-MPC problem

• Special case: just solve one iteration with α = 1 (a.k.a. Real-Time Iteration)(Diehl, Bock, Schloder, Findeisen, Nagy, Allgower, 2002)

©2019 A. Bemporad - "Model Predictive Control" 27/30

Nonlinear MPC(Gros, Zanon, Quirynen, Bemporad, Diehl, 2016)

• Example8

2 4 6 8 10 12 14 16 18 20-5

0

5

10

x1

2 4 6 8 10 12 14 16 18 20-2

0

2

4

x2

2 4 6 8 10 12 14 16 18 20

-0.4

-0.2

0

0.2

u1

time

Linear MPC

RTI

Fully converged

Linear MPC

RTI

Fully converged

Linear MPCRTIConverged

Fig. 7. Illustration of the RTI solution vs. the linear MPC solutions at thediscrete time instant i = 2, with state noise.

0 5 10 15 20 25 30

0

1

2

3

4

x1

0 5 10 15 20 25 30

0

1

2

3

4

x2

0 5 10 15 20 25 30

-0.4

-0.2

0

0.2

u1

time

Linear MPCRTIConverged

Fig. 8. Illustration of the RTI solution vs. the linear MPC solutions inclosed-loop simulations, without state noise.

0 5 10 15 20 25 30-1

0

1

2

3

4

x1

0 5 10 15 20 25 30-1

0

1

2

3

4

x20 5 10 15 20 25 30

-0.4

-0.2

0

0.2

u1

time

Linear MPCRTIConverged

Fig. 9. Illustration of the RTI solution vs. the linear MPC solutions inclosed-loop simulations, with state noise of covariance 0.1.

the system is readily described as a discrete dynamic system,such as when the model is identified from input/output data,computing f (x,u) and — f (x,u) is straightforward. However,in many applications, the system dynamics are available in acontinuous form, typically as an Ordinary Differential Equa-tion (ODE) of the form:

x(t) = F (x(t),u(t)) . (23)

In this section, we will present a family of numerical meth-ods for simulation and sensitivity generation. It is importantto stress that the well-known matrix exponential can alsobe considered as such a method for numerical simulation.However, depending on the system considered, other methodsmight be more accurate and less computationally intensive.We also want to stress the fact that several integration stepscan be taken inside each control interval in order to increasethe accuracy of the simulation. We will also sketch how thesensitivities can be propagated in case multiple integrationsteps are taken.

For the sake of simplicity we consider here an explicitODE having time-invariant dynamics, though the followingdevelopments can be easily extended to the time-varying caseand to implicit ODE or Differential Algebraic Equation (DAE)systems.

Let us consider a piecewise constant discretization of the

©2019 A. Bemporad - "Model Predictive Control" 28/30

Learning nonlinear models for MPC(Masti, Bemporad, CDC 2018)

• Idea: use autoencoders and artificial neural networks to learn a nonlinearstate-space model of desired order from input/output data

(Hinton, Salakhutdinov, 2006)

dead-beat observer

output map

state map

Ok = [y′k . . . y′

k−m]′

Ik = [y′k . . . y′

k−na+1 u′k . . . u′

k−nb+1]′

©2019 A. Bemporad - "Model Predictive Control" 29/30

LTV MPC

● The performance achieved with the derivative-based controller suggests that an LTV-MPC formulation might also works well. We also assess its robustness using a model achieving 61% BFR in open loop

ODYS CONFIDENTIAL

Computation time per step: ~40ms

LTV-MPC results

Learning nonlinear models for MPC - An example(Masti, Bemporad, CDC 2018)

• System generating the data = nonlinear 2-tank benchmark

www.mathworks.com

x1(k + 1) = x1(k)− k1

√x1(k) + k2(u(k) + w(k))

x2(k + 1) = x2(k) + k3√

x1(k)− k4√

x2(k)

y(k) = x2(k) + v(k)

Model is totally unknown to learning algorithm

• Artificial neural network (ANN): 3 hidden layers60 exponential linear unit (ELU) neurons

• For given number of model parameters,autoencoder approach is superior to NNARX

• Jacobians directly obtained from ANN structurefor Kalman filtering & MPC problem construction

©2019 A. Bemporad - "Model Predictive Control" 30/30

Recommended