UI.Stability History
Hide minor edits - Show changes to output
Deleted lines 49-51:
% create a closed-loop system
loop = ClosedLoop(empc, anothermodel);
Changed lines 51-52 from:
autpwa = loop.toSystem();
to:
autpwa = ClosedLoop(empc, anothermodel).toSystem();
Changed line 58 from:
to:
Changed lines 42-61 from:
to:
@]
It is also possible to verify whether a given explicit MPC controller provides closed-loop stability when coupled with a different system:
(:source lang=MATLAB :) [@
% a different model will be used for the verification
anothermodel = LTISystem('A', [1 1; 0 0.9], 'B', [1; 0.5]);
% create a closed-loop system
loop = ClosedLoop(empc, anothermodel);
% convert the closed-loop system into an autonomous PWA system
autpwa = loop.toSystem();
% construct the PWQ Lyapunov function
L = autpwa.lyapunov('pwq');
% plot the PWQ Lyapunov function
L.fplot('lyapunov');
@]
Added lines 1-42:
!! Important note
This feature is currently only available in development releases of MPT3. To install the latest development version, run the following:
(:source lang=MATLAB :) [@
tbxmanager source add http://www.tbxmanager.com/package/unstable.xml/mpt
tbxmanager update
@]
!! Construction of Lyapunov functions
MPT3 allows to construct piecewise quadratic (PWQ) Lyapunov functions for autonomous PWA systems via the @@PWASystem/lyapunov()@@ method.
Example which verifies closed-loop stability of an explicit MPC controller:
(:source lang=MATLAB :) [@
model = LTISystem('A', [1 1; 0 1], 'B', [1; 0.5]);
model.x.min = [-5; -5];
model.x.max = [5; 5];
model.u.min = -1;
model.u.max = 1;
model.x.penalty = QuadFunction(eye(2));
model.u.penalty = QuadFunction(1);
% add LQR terminal set and terminal penalty
model.x.with('terminalSet');
model.x.terminalSet = model.LQRSet();
model.x.with('terminalPenalty');
model.x.terminalPenalty = model.LQRPenalty();
N = 5; % prediction horizon
empc = MPCController(model, N).toExplicit();
% create a closed-loop system
loop = ClosedLoop(empc, model);
% convert the closed-loop system into an autonomous PWA system
autpwa = loop.toSystem();
% construct the PWQ Lyapunov function
L = autpwa.lyapunov('pwq');
% plot the PWQ Lyapunov function
L.fplot('lyapunov');
@]