MPC Toolbox in Matlab

Transcription

MPC Toolbox in Matlab
MPC Toolbox in Matlab
Seminararbeit
von
Florian Häberlein
FAKULTÄT FÜR MATHEMATIK UND PHYSIK
MATHEMATISCHES INSTITUT
Datum: 4. Juli 2006
Betreuung:
Prof. Dr. L. Grüne
Dipl.-Wirtschaftsmath. J. Pannek
Inhaltsverzeichnis
Tabellenverzeichnis
III
Abbildungsverzeichnis
V
1 MPC Toolbox in Matlab
1.1 Einführung in die MPC Toolbox . . . . . . . . . . . . . . . . . . .
1.1.1 Die Rolle der MPC Toolbox in der Matlab-Familie . . . .
1.1.2 Grundlegende Fähigkeiten der MPC Toolbox . . . . . . . .
1.2 Beispiel: Leerlauffüllungsregelung . . . . . . . . . . . . . . . . . .
1.2.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Problemmodellierung . . . . . . . . . . . . . . . . . . . . .
1.2.3 Implementierung des Systems . . . . . . . . . . . . . . . .
1.2.4 Implementierung des Reglers . . . . . . . . . . . . . . . . .
1.2.5 Simulation des closed-loop-Verhaltens . . . . . . . . . . . .
1.2.6 Vergleich verschiedener Regler . . . . . . . . . . . . . . . .
1.2.7 Import des Reglers in Simulink . . . . . . . . . . . . . . .
1.3 Der Blick hinter die Kulissen der MPC Toolbox . . . . . . . . . .
1.3.1 Algorithmen für unbeschränkte Probleme oder Probleme
mit saturierten Beschränkungen . . . . . . . . . . . . . . .
1.3.2 Algorithmen für beschränkte Probleme . . . . . . . . . . .
1
1
1
2
4
4
4
5
6
9
11
12
14
A Plots und Quelltext
A.1 Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Quelltext zu Kapitel 1.2 . . . . . . . . . . . . . . . . . . . . . . .
19
19
26
Literaturverzeichnis
29
I
14
15
II
INHALTSVERZEICHNIS
Tabellenverzeichnis
1.1
Übersicht über verschiedene Störungsarten . . . . . . . . . . . . .
III
3
IV
TABELLENVERZEICHNIS
Abbildungsverzeichnis
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
Signalflussplan des cmpc-Reglers . . . . . . . . . . . . . . . . . .
Simulation für die Fahrstufe D“ mit Modellfehler . . . . . . . . .
”
Simulation für die Fahrstufe N“ mit Modellfehler . . . . . . . . .
”
Vergleich von Simulationen für die Fahrstufe D“ mit beschränktem
”
Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . . . . .
Signalflussplan des linearen Kontrollsystems in Simulink . . . . .
Signalflussplan der nichtlinearen Regelstrecke mit zusätzlicher Störung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prinzip der saturierten Beschränkungen . . . . . . . . . . . . . . .
Dantzig-Wolfe-Methode der aktiven Mengen . . . . . . . . . . . .
Beispiel zur Dantzig-Wolfe-Methode der aktiven Mengen . . . . .
A.1
A.2
A.3
A.4
A.5
Simulation für die Fahrstufe D“ ohne Modellfehler . . . . . . . .
”
Simulation für die Fahrstufe N“ ohne Modellfehler . . . . . . . .
”
Simulation für die Fahrstufe D“ mit Modellfehler . . . . . . . . .
”
Simulation für die Fahrstufe N“ mit Modellfehler . . . . . . . . .
”
Simulation für die Fahrstufe D“ ohne Modellfehler mit erhöhten
”
Gewichtsfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.6 Simulation für die Fahrstufe N“ mit Modellfehler mit erhöhten
”
Gewichtsfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.7 Vergleich von Simulationen für die Fahrstufe D“ mit unbeschränk”
tem Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . .
A.8 Vergleich von Simulationen für die Fahrstufe D“ mit beschränktem
”
Prädiktionshorizont . . . . . . . . . . . . . . . . . . . . . . . . . .
A.9 Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Ausgangsvariablen . . . . . . . . . . . . . . . . . . . . . .
A.10 Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Kontrollvariablen . . . . . . . . . . . . . . . . . . . . . .
V
7
10
11
12
13
14
15
17
18
19
20
20
21
21
22
23
24
25
25
VI
ABBILDUNGSVERZEICHNIS
Kapitel 1
MPC Toolbox in Matlab
In diesem Kapitel wird die MPC (Model Predictive Control) Toolbox in Matlab
vorgestellt. Im ersten Abschnitt wird eine allgemeine Einführung gegeben. Im
zweiten Abschnitt erfolgt eine ausführliche Behandlung eines Beispiels. Im dritten Abschnitt wird auf die verwendeten Algorithmen der in der MPC Toolbox
vorhandenen Funktionen eingegangen.
1.1
Einführung in die MPC Toolbox
In diesem Abschnitt wird die MPC Toolbox allgemein vorgestellt. Zuerst wird die
Einordnung der Toolbox in die Matlab-Produktfamilie erläutert, im Anschluss
werden die speziellen Fähigkeiten der MPC Toolbox aufgelistet.
1.1.1
Die Rolle der MPC Toolbox in der Matlab-Familie
Das Programmpaket Matlab bietet neben den im Kernprogramm vorhandenen
numerischen Standardalgorithmen eine Reihe von Erweiterungspaketen — sog.
Toolboxen — mit numerischen Algorithmen zu speziellen Themenbereichen der
Mathematik, Physik und den Ingenieurwissenschaften. Der in allen drei Wissenschaften behandelte weitläufige Bereich der Kontrolltheorie wird dabei unter
anderem durch Simulink, die Control System Toolbox und die MPC Toolbox
abgedeckt. Diese Toolboxen beschäftigen sich mit der Modellbildung, dem Reglerentwurf und den theoretischen Tests der entwickelten Regelstrecken. Weitere
Toolboxen ermöglichen dann den Entwurf von Prototypen des Reglers (z. B.
mit Real-Time Workshop) und bieten Schnittstellen zwischen den realen Kontrollsystemen und den entwickelten Reglern (z. B. die OPC Toolbox, Openess
Productivity Collaboration).
Für die Arbeit mit der MPC Toolbox in Matlab spielt die Control System Toolbox eine fundamentale Rolle. Mit ihr ist die Erstellung von Kontrollsystemen in
den verschiedenen Modellarten möglich. Desweiteren bietet sie Algorithmen zur
1
2
KAPITEL 1. MPC TOOLBOX IN MATLAB
Transformation zwischen den verschiedenen Modellen, zu Stabilitätstests der jeweiligen Modelle sowie zu grundlegenden Problemen der Kontrolltheorie. Da die
Control System Toolbox die existentielle Grundlage der MPC Toolbox bildet, ist
Letztere nur in Zusammenhang mit Ersterer zu betreiben.
Im bereits erwähnten Programm Simulink finden sich eine Reihe von Möglichkeiten zur Modellierung von linearen und nichtlinearen Kontrollsystemen. Die in
diesem Programm erstellten Modelle lassen sich in linearisierter Form ebenfalls
in der MPC Toolbox zum Reglerentwurf heranziehen. Umgekehrt könnten die in
der MPC Toolbox für lineare Systeme entwickelten modellprädiktiven Regler für
die nichtlinearen Systeme in Simulink verwendet werden. Desweiteren bietet die
System Identification Toolbox die Möglichkeit, durch Tests an realen Systemen
approximierte Modelle am PC zu bestimmen, die wiederum sowohl in Simulink
als auch in der MPC Toolbox verwendet werden können.
Zusammenfassend kann man sagen, dass die MPC Toolbox einen mächtigen Baustein in der Matlab-Familie bildet. Die optimale Zusammenarbeit zwischen den
verschiedenen Toolboxen und dem Kernprogramm sowie die Objektorientierung
der entwickelten modellprädiktiven Regler begründen diese Schlussfolgerung.
1.1.2
Grundlegende Fähigkeiten der MPC Toolbox
Die MPC Toolbox bietet Algorithmen zum Entwurf, zur Analyse und zur Simulation von modellprädiktiven Reglern. Als Benutzeroberflächen bietet sie zum
Einen den sogenannten Control and Estimation Tools Manager, mit dem man
graphisch Regelstrecken und Regler erstellen, analysieren und testen kann. Die
Benutzung ist intuitiv und übersichtlich, jedoch ist diese Benutzerschnittstelle im
Leistungsumfang gegenüber der herkömmlichen kommandozeilenorientierten Benutzung eingeschränkt. Eine bessere Modularisierung und Wartbarkeit der Regler und Kontrollsysteme und die Wiederverwendbarkeit von Teilsystemen und
Reglern, sowie die Benutzung von Scriptfiles bietet nur die klassische kommandozeilenorientierte Benutzeroberfläche. Es stehen alle im Control and Estimation
Tools Manager vorhandenen Funktionen auch durch kommandozeilenorientierte Funktionen zur Verfügung, weswegen diese Arbeit sich nicht näher mit der
graphischen Oberfläche beschäftigt. Eine detaillierte Anleitung zur graphischen
Oberfläche findet sich in der Bedienungsanleitung zur Version 2 der MPC Toolbox [1, Kapitel 3].
Das Anlegen der Modelle von Kontrollsystemen lässt sich neben der oben beschriebenen Möglichkeit des Imports aus anderen Matlab-Toolboxen natürlich
auch direkt durch Eingabe der Modelle mittels Kommandozeilenfunktionen bewerkstelligen. Dabei kann die MPC Toolbox MIMO-Systeme (Multi Input, Multi Output, Kontroll- und Ausgangsvariablen können mehrdimensional sein) mit
Beschränkungen in Kontroll- und Ausgangsvariablen verarbeiten. Grundsätzlich
können jedoch nur lineare, zeitinvariante Kontrollsysteme (sog. LTI-Systeme, li-
3
1.1. EINFÜHRUNG IN DIE MPC TOOLBOX
2
6
1
5
1.5
0.8
4
1
z(t)
z(t)
z(t)
0.6
3
0.4
0.5
2
0.2
0
1
0
−0.5
0
0.5
1
1.5
2
2.5
t
3
3.5
4
4.5
−0.2
5
0
0.5
1
1.5
2
2.5
t
(
0
z(t) =
1
z(t) = a
0.8
2
0.6
1.5
3
3.5
4
4.5
0
5
0
0.5
1
1.5
t < t0
t ≥ t0
2
2.5
t
3
3.5
4
4.5
5
z(t) = at + b
1.5
1
0.4
1
0.5
0.2
z(t)
z(t)
z(t)
0
0
0.5
−0.5
−0.2
−1
−0.4
0
−1.5
−0.6
−0.8
−2
0
0.5
1
1.5
2
2.5
t
3
3.5
4
4.5
5
−2.5
0
z(t) = a sin(bt + t0 )
0.5
1
1.5
2
2.5
t
3
3.5
4
4.5
z(t) = an ,
t ∈ [nts , (n + 1)ts [,
(an ) ∼ N (0, 1)
5
−0.5
0
z(t) =
0.5
(
1
a
b
1.5
2
2.5
t
3
3.5
4
4.5
5
t ∈ [nts , (n + 1)ts
t ∈ [(n + 1)ts , (n + 2)ts [
n := 2i
Tabelle 1.1: Übersicht über verschiedene Störungsarten. Obere Zeile v. l. n. r.:
konstant, Sprung, linear; Untere Zeile v. l. n. r.: sinusförmig, gaußverteilt, gepulst.
+
a, b ∈ R, ts , t0 ∈ R+
0 , n, i ∈ N0
near, time invariant) der Form
x(k + 1) = Ax(k) + Bu(k) + Md(k) + Nw(k)
y(k) = y(k) + z(k)
verarbeitet werden. Dabei bezeichnet x(k) den k-ten Ausgang, u(k) die k-te Kontrollanweisung, d(k) bzw. w(k) die gemessene bzw. ungemessene Störung; y(k)
bezeichnet den Ausgang des Systems, z(k) das Messrauschen und y(k) den gemessenen Ausgang. Die Matrizen A, B, M und N sind hierbei konstant, also
zeitinvariant. Desweiteren müssen die Systeme in diskretisierter Form vorliegen,
die Abtastzeit kann jedoch selbst festgelegt werden. Neben dem Einfluss von
bekannten Störungen kann man auch unbekannte Störungen auf das System einwirken lassen. Dabei kann die Störung konstant, als Sprung, gepulst, als lineare
Funktion, sinusförmig oder gaußverteilt gewählt werden. Eine Übersicht über die
verschiedenen Störungsarten gibt Tabelle 1.1. Bei der Reglererstellung wird das
Kontrollziel als Setpoint-Regelung implementiert, eine Referenztrajektorie wird
als Folge von Setpoints zu den Abtastzeitpunkten realisiert. Als Reglerparameter lassen sich innerhalb der Problemstellung Prädiktions- und Kontrollhorizont
4
KAPITEL 1. MPC TOOLBOX IN MATLAB
sowie Gewichtsfaktoren für das Regelziel bei Ein- und Ausgangsgrößen festlegen.
Die erstellten Regler lassen sich im Anschluss exportieren, so dass sie z. B. in
Simulink für die zugehörige nichtlineare Regelstrecke getestet werden können.
1.2
Beispiel: Leerlauffüllungsregelung
In diesem Abschnitt wird die sog. Leerlauffüllungsregelung (LFR) bei Motoren in
Autos mit Automatikgetrieben mittels MPC behandelt. Der algorithmische Teil
dieses Abschnitts orientiert sich dabei an der Bedienungsanleitung zur Version 1
der MPC Toolbox [8, Kapitel 2, Seite 2-22 bis 2-30], eine ausführliche theoretische
Behandlung des Themas findet sich in der Arbeit von Hrovat und Bodenheimer [6,
Seite 1778 - 1783]. Weiterführende Literatur zum Einsatz von modellgestützten
Reglern in Verbrennungsmotorsystemen findet sich im Buch von Guzzella und
Onder [4].
1.2.1
Problemstellung
Das Ziel der Leerlauffüllungsregelung ist es, einen Motor, der im Leerlauf betrieben wird, durch Einfluss des Zündzeitpunkts und der Menge an zugeführter
Luft während des Zündzeitpunkts zu einer konstanten Mindestdrehzahl zu regeln.
Das Kontrollsystem unterliegt dabei unbekannten Störungen: Ein Lenkeinschlag
im Stand führt beispielsweise dazu, dass der Öldruck der Servolenkung erhöht
werden muss, was wiederum zu einer plötzlichen Last auf den Motor führt, ebenso können plötzliche Laständerungen am Motor durch die Klimaanlage oder die
Lichtmaschine hervorgerufen werden. Aufgrund unterschiedlicher Systemkomponenten und -eigenschaften (verschiedene Motorvarianten, verschiedene zusätzliche
an den Motor gebundene Geräte) soll ein Regler für die Massenproduktion erstellt
werden, der robust und stabil die auftretenden Störungen ausregelt. Der modellprädiktive Ansatz bietet sich deswegen hier besonders an. Unabhängig von den
veränderlichen Systemparametern müssen jedoch gewisse Schranken in den Einund Ausgangsvariablen eingehalten werden: Um einen sicheren Motorbetrieb zu
gewährleisten, darf der Zündzeitpunkt vom voreingestellten Zündzeitpunkt um
nicht mehr als 20 ◦ abweichen, desweiteren sollte er nach einer Veränderung zum
voreingestellten Zündzeitpunkt zurückgeregelt werden um einen optimalen Kraftstoffverbrauch zu gewährleisten.
1.2.2
Problemmodellierung
Aufgrund der betrachteten Problemstellung liegt es nahe, den Zündzeitpunkt sowohl als veränderbare Eingangsvariable als auch als zu regelnde Ausgangsvariable
mit einer Gleichgewichtsregelung zu behandeln. Das allgemeine lineare Kontroll-
1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG
system wird dabei wie folgt im Frequenzbereich modelliert:
Gd
u1
G1 G2
y1
w
+
=
0
u2
0
1
y2
5
(1.1)
Dabei beschreibt y1 die Drehzahl des Motors, y2 und u2 beschreiben beide den
Zündzeitpunkt, u1 beschreibt die Menge der zugeführten Luft und w stellt die
unbekannte Störung in Form eines Lastdrehmoments dar.
Für das Modell betrachten wir zwei Betriebszustände, zum Einen den Betrieb
in der Fahrstufe D“ (dies entspricht bei Schaltgetrieben dem Betrieb mit einge”
legtem ersten Gang und einem Schleifenlassen“ der Kupplung, so dass auf den
”
Motor ein konstantes Drehmoment von 30 Nm wirkt, welches das Auto langsam
vorantreibt), zum Anderen den Betrieb in der Fahrstufe N“ (dies entspricht bei
”
Schaltgetrieben dem Leerlauf ohne eingelegten Gang, das Lastdrehmoment ist in
diesem Fall 0 Nm). In beiden Fällen soll die Motordrehzahl auf konstant 800 rpm
gehalten werden.
Modelliert man für das System die Übertragungsfunktionen so, dass die Gleichgewichtszustände im Nullpunkt liegen, ergibt sich als Beschränkung für den Zündzeitpunkt |u2 | ≤ 0,7. Für den Betrieb in der Fahrstufe D“ ergeben sich die
”
Übertragungsfunktionen wie folgt:
9,62e−0,16s
G1 = 2
s + 2,4s + 5,05
15,9(s + 3)e−0,04s
G2 = 2
s + 2,4s + 5,05
−19,1(s + 3)
Gd = 2
s + 2,4s + 5,05
(1.2)
Für den Betrieb in der Fahrstufe N“ ergeben sich folgende Übertragungsfunktio”
nen:
20,5e−0,16s
s2 + 2,2s + 12,8
47,6(s + 3,5)e−0,04s
G2 = 2
s + 2,2s + 12,8
−19,1(s + 3,5)
Gd = 2
s + 2,2s + 12,8
G1 =
1.2.3
Implementierung des Systems
Nun werden die Übertragungsfunktionen für (1.2) und (1.3) angelegt:
G1D = [0 0 9.62;1 2.4 5.05;0 0.16 0];
G2D = [0 15.9 15.9*3;1 2.4 5.05;0 0.04 0];
(1.3)
6
KAPITEL 1. MPC TOOLBOX IN MATLAB
G1N = [0 0 20.5; 1 2.2 12.8; 0 0.16 0];
G2N = [0 47.6 47.6*3.5; 1 2.2 12.8; 0 0.04 0];
G0 = [0 0;0 0;0 0];
GI = [0 1;0 1;0 0];
Diese Übertragungsfunktionen sind für kontinuierliche Frequenzen formuliert (man
beachte, dass das System im Frequenz- und nicht im Zeitbereich formuliert ist),
die MPC Toolbox kann jedoch nur diskrete Systeme verarbeiten. Deswegen werden nun die beiden Kontrollsysteme gemäß (1.1) mit einer diskreten Approximation der Sprungantworten weiterverwendet. Dabei benutzen wir eine Endzeit
der Approximation von tf = 4 und eine Abtastrate von ts = 0,1, dies bedeutet,
dass wir tf /ts = 40 Koeffizienten der Sprungfunktion approximieren. Zur Festlegung der Anzahl an stabilen Ausgabevariablen geben wir als drittes Argument
der Funktion tfd2step 2 an. Für Systeme mit integrierenden Ausgabevariablen ist
die dritte Übergabevariable ein Vektor, mit der Dimension des Ausgabevektors,
eine 1 in der i-ten Komponente signalisiert dabei einen stabilen i-ten Ausgang,
eine 0 einen integrierenden i-ten Ausgang. Die restlichen vier Übergabevariablen
stellen die Transferfunktionen des ungestörten Systems dar, wobei die Elemente
der Matrix spaltenweise von oben nach unten angegeben werden.
tf = 4;
ts = 0.1;
systemD = tfd2step(tf,ts,2,G1D,G0,G2D,GI);
systemN = tfd2step(tf,ts,2,G1N,G0,G2N,GI);
Um die Kontrollsysteme zu vervollständigen, implementiert man nun noch die
Störungen für beide Szenarien, dabei geht man genauso vor wie oben:
GdD = [0 -19.1 -19.1*3; 1 2.4 5.05; 0 0 0];
dD = tfd2step(tf,ts,2,GdD,G0);
GdN = [0 -19.1 -19.1*3.5; 1 2.2 12.8; 0 0 0];
dN = tfd2step(tf,ts,2,GdN,G0);
Die Vorarbeit ist nun geleistet und man kann zum Reglerentwurf und zu closedloop-Simulationen übergehen.
1.2.4
Implementierung des Reglers
Wir benutzen hierfür den cmpc-Regler (constraint MPC), der sich besonders für
Simulationen an closed-loop Systemen mit relativ starken Beschränkungen an
Ein- und/oder Ausgangsvariablen eignet. Auf die implementierten Algorithmen
dieses und anderer MPC-Regler wird in Kapitel 1.3 eingegangen. Die Zusammenhänge dieses Reglers verdeutlicht Abbildung 1.1.
Zunächst legen wir die Reglerparameter fest:
1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG
7
Abbildung 1.1: Signalflussplan des cmpc-Reglers
• Gewichtsfaktoren für Ausgänge: In der Grundeinstellung sind alle zu regelnden Ausgänge gleich bewertet, dies bedeutet, Abweichungen von den
Setpoints werden für alle Ausgänge gleich bestraft“. Im vorliegenden Mo”
dell ist die Drehzahlregelung viel wichtiger, als die Zündzeitpunktregelung,
letztere spielt eine untergeordnete Rolle. Wir gewichten also y1 5-fach und
y2 1-fach.
ywt = [5 1];
• Gewichtsfaktoren für Regelung: In der Grundeinstellung sind alle Regeleingriffe unbestraft in der Optimierungsformel. In unserem Fall bestrafen wir
zunächst beide 0,5-fach.
uwt = [.5 .5];
• Kontrollhorizont: Die Standardeinstellung für den Kontrollhorizont ist M =
1, dies bedeutet, es wird jeweils nur der erste Zeitschritt des aktuellen Horizonts mit der gerade berechneten Kontrollfolge geregelt. Wir definieren
unseren Kontrollhorizont mit N = 10, das heißt, es wird bei einer Abtastrate von ts = 0,1 immer genau eine Sekunde mit der aktuell berechneten
Steuerfolge geregelt. Es besteht die Möglichkeit, sogenannte Blockierfak”
toren“ zu definieren, diese geben die Anzahl der Zeitschritte an, über die
die Kontrollfolge unverändert bleibt, also ∆u = 0. Dafür definiert man M
als Zeilenvektor, wobei die Summe über alle Blockierfaktoren“ maximal so
”
groß sein darf, wie der Prädiktionshorizont.
8
KAPITEL 1. MPC TOOLBOX IN MATLAB
m = 10;
• Prädiktionshorizont: Wir definieren den Prädiktionshorizont mit p = ∞.
p = inf;
• Simulationszeit: Die Endzeit der Simulation definieren wir mit tf sim = 20.
tfsim = 20;
• Referenztrajektorie: Die Standardeinstellung für die Referenztrajektorie ist
eine Nullregelung für alle Komponenten. Für eine Regelung mit Setpoints
verschieden von 0 definiert man die Referenztrajektorie als Spaltenvektor,
wobei in der i-ten Komponente der Setpoint für die i-te Ausgangsvariable
steht. Möchte man beispielsweise einer Referenztrajektorie folgen, so definiert man die Referenztrajektorie als Matrix. Dabei bezeichnet das Element
in der i-ten Zeile und der j-ten Spalte, den Setpoint für die i-te Komponente
zur Zeit t = jts . Hat die Matrix j Spalten mit jts < tf sim , so gilt ab der Zeit
t = jts die letzte Spalte als konstante Setpointdefinition für den Zeitbereich [jts , tf sim ]. In unserem Fall wünschen wir eine konstante Nullregelung
(beachte, das System wurde dementsprechend normiert).
r = [0 0];
• Beschränkungen der Kontrolle: Um den Kontrolleingriff zu beschränken definiert man einen Spaltenvektor, bestehend aus drei Matrizen nach dem selben Prinzip wie bei der Referenztrajektorie. Die erste Matrix beschreibt die
unteren Schranken für u, die zweite Matrix beschreibt die oberen Schranken
an u und die dritte Matrix beschreibt die Beschränkungen an ∆u. Die Standardeinstellungen sind umin = −∞, umax = ∞ sowie (∆u)max = 106 für alle
Zeitpunkte und alle Komponenten. Für unser System ist u1 (Luftmenge) unbeschränkt sowohl in der oberen und unteren Grenze, als auch in der maximalen Änderung. Der Zündzeitpunkt ist beschränkt durch −0,7 ≤ u2 ≤ 0,7.
Um die Motorfunktionalität nicht zu beeinträchtigen, beschränken wir die
maximale Änderung des Zündzeitpunkts auf (∆u2 )max ≤ 1,4.
ulim = [[-inf -0.7] [inf 0.7] [1e6 1.4]];
• Beschränkungen des Ausgangs: Die Definition der Beschränkungen des Ausgangs entspricht der der Kontrolle, lediglich der Beschränkung an die Änderung der Ausgangsvariablen (∆y)max fällt weg. In unserem Fall liegen
keine Beschränkungen des Ausgangs vor, die Änderung des Zündzeitpunkts
wurde bereits durch u2 beschränkt.
1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG
9
ylim = [];
• Filterung und Verzögerung für Störungen: Für die Definition eines Entstörfilters und für die Definition von Verzögerungen für die Störungen definiert
man je eine Matrix mit Zeitkonstanten. Die Standardeinstellungen sind keine Filterung und keine Verzögerung (also ein unverzögerter Einheitssprung
in der Störung). Wir definieren keine Filterung und keine Verzögerung für
unser Modell.
tfilter = [];
• Störungen: Für die Störungen ergibt sich das selbe Format wie für die Referenztrajektorie. Für reine Störungen an den Ausgabevariablen (kein Störungssystem und kein Störungsmodell vorhanden), stehen in der Matrix die
additiven Störungen. Ist ein Störungssystem oder sowohl ein Störungsmodell als auch ein Störungssystem vorhanden, so werden in der Matrix die
Sprungfunktionen definiert. In unserem Fall haben wir eine ungemessene
Störung, die durch eine Übertragungsfunktion in das System eingeht (also
nur ein Störungssystem ohne Störungsmodell). Das zugehörige Störungssystem haben wir bereits angelegt. Desweiteren benötigen wir nun noch einen
Einheitssprung auf das Störungssystem.
dstep = 1;
Nun sind alle System-, Modell- und Reglerparameter definiert und man kann zu
den ersten Simulationen übergehen.
1.2.5
Simulation des closed-loop-Verhaltens
Als erstes testen wir die Regler unter der Voraussetzung, dass wir keinen Modellfehler gemacht haben, das modellierte System entspricht also dem realen System.
Für den Betrieb in der Fahrstufe D“ ergibt sich damit:
”
[y1,u1] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure;
plotall(y1,u1,ts);
Nun die gleiche Simulation für den Betrieb in der Fahrstufe N“:
”
[y2,u2] = cmpc(systemN,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
plotall(y2,u2,ts);
10
KAPITEL 1. MPC TOOLBOX IN MATLAB
Man beachte, dass wir nun zwei verschiedene Regler erstellt haben, die, jeder für
sich, das jeweilige System stabilisieren (vergleiche die Plots in Abbildung A.1 und
A.2 im Anhang A.1). Was man wirklich will, ist ein Regler, der das System in
beiden Fahrstufen regelt. Wir testen deswegen nun die Regler indem wir für das
System D“ das Modell N“ und umgekehrt verwenden.
”
”
[y3,u3] = cmpc(systemD,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure;
plotall(y3,u3,ts);
[y4,u4] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
plotall(y4,u4,ts);
Man sieht, dass nun keiner der Regler das System
stabilisieren kann, wenn ein Modellfehler vorliegt
(vergleiche die Plots in Abbildung A.3 und A.4 im
Anhang A.1 sowie in Abbildung 1.2 rechts). Man
muss also die Reglerparameter verändern um eine
bessere Robustheit zu erhalten. Ein Versuch kann
sein, den Regeleingriff in der Optimierungsfunktion stärker zu bestrafen um ein zu starkes Schwingen zu verhindern. Wir erhöhen deswegen den Gewichtsfaktor für die Bestrafung der Veränderung Abbildung 1.2: Simulation
der Luftzufuhr von 0,5 auf 10 und den Gewichtsfak- für die Fahrstufe ”D“ mit
tor für die Bestrafung der Veränderung des Zünd- Modellfehler
zeitpunkts von 0,5 auf 20.
Outputs
15
y1
10
5
0
y2
−5
−10
−15
0
1
2
3
4
Time
5
6
7
uwt = [10 20];
[y5,u5] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure;
plotall(y5,u5,ts);
[y6,u6] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
plotall(y6,u6,ts);
8
1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG
11
Man sieht, dass für das System ohne Modellfehler der Regler weiterhin stabilisierend
wirkt (vergleiche den Plot in Abbildung A.5
im Anhang A.1), natürlich dauert es nun
länger, bis das System stabilisiert ist, da ja
ein starker Regeleingriff, der zu einer schnelleren Nullregelung führt, bestraft wird. Zum
gleichen Ergebnis kommt man für das System in der Fahrstufe N“ wenn kein Modell”
fehler vorliegt. Für das System mit Modellfehler zeigt sich nun auch ein stabilisierenAbbildung 1.3: Simulation für die des Regelverhalten (vergleiche den Plot in
Fahrstufe N“ mit Modellfehler
Abbildung A.6 im Anhang A.1 sowie in Ab”
bildung 1.3 links), das gleiche Ergebnis erhält man für das System D“ mit feh”
lerbehaftetem Modell N“.
”
Die Ergebnisse sollten jedoch nicht dazu verleiten, den erstellten Regler als global
asymptotisch stabil für das System mit Modellfehler zu betrachten. Eine globale
asymptotische Stabilität kann nämlich nur für die Regler ohne Modellfehler garantiert werden, jedoch sollen uns in diesem Beispiel die erhaltenen Ergebnisse
genügen.
Outputs
1
y2
0.5
0
−0.5
−1
y1
−1.5
−2
−2.5
−3
−3.5
0
1
1.2.6
2
3
4
Time
5
6
7
8
Vergleich verschiedener Regler
Wir vergleichen nun den cmpc-Regler, der das quadratische Kostenfunktional
in jedem Schritt on-line minimiert, mit einem MPC-Regelansatz, der zuerst die
Gain-Matrix berechnet und dann das System simuliert.
Kmpc = mpccon(systemD,ywt,uwt,m,p);
[y7,u7] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,...
dD,[],dstep);
figure;
plot([0:ts:tfsim],y5(:,1),’-b’,[0:ts:tfsim],y5(:,2),’-k’,...
[0:ts:tfsim],y7(:,1),’-.b’,[0:ts:tfsim],y7(:,2),’-.k’);
legend(’y_1 mit cmpc’,’y_2 mit cmpc’,...
’y1 mit mpcsim’,’y_2 mit mpcsim’,0);
xlabel(’Time’);
title(’Outputs’);
Man sieht, dass sich die Ergebnisse nicht stark unterscheiden (vergleiche den Plot
in Abbildung A.7 im Anhang A.1), obwohl wir zwei unterschiedliche Wege in
der Optimierung des Kostenfunktionals gegangen sind. Der Vorteil der on-lineOptimierung lässt sich jedoch verdeutlichen, wenn wir den Prädiktionshorizont
auf einen beschränkten Wert setzen, z. B. p = 80 und beide Simulationen nocheinmal durchführen.
12
KAPITEL 1. MPC TOOLBOX IN MATLAB
p = 80;
[y8,u8] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
Kmpc = mpccon(systemD,ywt,uwt,m,p);
[y9,u9] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,...
dD,[],dstep);
figure;
plot([0:ts:tfsim],y8(:,1),’-b’,[0:ts:tfsim],y8(:,2),’-k’,...
[0:ts:tfsim],y9(:,1),’-.b’,[0:ts:tfsim],y9(:,2),’-.k’);
legend(’y_1 mit cmpc’,’y_2 mit cmpc’,...
’y1 mit mpcsim’,’y_2 mit mpcsim’,0);
xlabel(’Time’);
title(’Outputs’);
Die Ergebnisse zeigen, dass in diesem Fall die on-line-Optimierung des Kostenfunktionals zu einer schnelleren Nullregelung führt (vergleiche den Plot in Abbildung A.8 im Anhang A.1 sowie in Abbildung 1.4).
Outputs
1
0
−1
−2
−3
−4
y1 mit cmpc
y2 mit cmpc
y1 mit mpcsim
y2 mit mpcsim
−5
−6
−7
0
1
2
3
4
Time
5
6
7
8
Abbildung 1.4: Vergleich von Simulationen für die Fahrstufe D“ mit beschränk”
tem Prädiktionshorizont
1.2.7
Import des Reglers in Simulink
Die gute Zusammenarbeit zwischen der MPC Toolbox und anderen Toolboxen
in Matlab sowie Simulink erlaubt es, einen modellprädiktiven Regler für lineare
Systeme in Simulink an einer nichtlinearen Regelstrecke zu testen. Wir benutzen
1.2. BEISPIEL: LEERLAUFFÜLLUNGSREGELUNG
13
hier den zuletzt betrachteten Regler für beschränkte Systeme (cmpc, Prädiktionshorizont p = 80, erhöhte Gewichtsfaktoren). Simulink bietet zum Import eine
S-Block-Funktion, die diesen Regler anspricht, die nötigen Modelldaten und Reglereinstellungen müssen bereits im Arbeitsbereich geladen sein. Abbildung 1.5
zeigt die lineare Regelstrecke und den modellprädiktiven Regler in Simulink.
Abbildung 1.5: Signalflussplan des linearen Kontrollsystems in Simulink.
Nun wird der Strecke eine leichte Nichtlinearität sowie als eine weitere Störung ein
Messrauschen hinzugefügt. Die roten Blöcke in Abbildung 1.6 zeigen die Nichtlinearitäten und die zusätzliche Störung in der Regelstrecke. Die Abbildungen A.9
und A.10 im Anhang A.1 zeigen, dass der Regler auch für die nun nichtlineare
Strecke gute Ergebnisse liefert.
14
KAPITEL 1. MPC TOOLBOX IN MATLAB
Abbildung 1.6: Signalflussplan der nichtlinearen Regelstrecke mit zusätzlicher
Störung.
1.3
Der Blick hinter die Kulissen der MPC Toolbox
In diesem Abschnitt wird kurz auf die in der MPC Toolbox implementierten
Algorithmen eingegangen.
1.3.1
Algorithmen für unbeschränkte Probleme oder Probleme mit saturierten Beschränkungen
Für Modelle (modelliert im Frequenzbereich oder im Zeitbereich) ohne Beschränkungen oder mit saturierten Beschränkungen bietet die MPC Toolbox einen GPCAnsatz (Generalized Predictive Control). Dabei wird zuerst iterativ über die algebraische Riccati-Gleichung die sog. Gain-Matrix berechnet, im Anschluss wird
eine closed-loop-Simulation durchgeführt. Ist das Modell unbeschränkt, so liefert dieses Vorgehen gute Ergebnisse. Liegen nur schwache Beschränkungen vor,
so kann man das System mit saturierten Beschränkungen“ betreiben. Dies be”
deutet, dass die Gain-Matrix, die ja für unbeschränkte Probleme gilt, für das
beschränkte System eingesetzt wird. Sollte nun eine Kontrollanweisung oder eine
Ausgangsvariable eine Beschränkung verletzen, so wird die Kontrollanweisung so
verändert, dass Beschränkungen nicht verletzt werden. Der zu große“ Anteil der
”
1.3. DER BLICK HINTER DIE KULISSEN DER MPC TOOLBOX
15
Steuerung wird sozusagen abgeschnitten“, so dass Beschränkungen erfüllt blei”
ben, Abbildung 1.7 verdeutlicht dieses Vorgehen. Verständlicherweise funktioniert
Abbildung 1.7: Prinzip der saturierten Beschränkungen
dieses Vorgehen nur für schwach beschränkte Systeme und stellt in der Realität
somit nicht das Verfahren der Wahl. Für die Regelung über den GPC wird auf
Kapitel 2 verwiesen.
1.3.2
Algorithmen für beschränkte Probleme
Für Modelle (modelliert im Frequenzbereich oder im Zeitbereich) mit Beschränkungen wird das Kostenfunktional
!
p
m
X
X
min
|Q (y(k + l|k) − r(k + l))|2 +
|R∆u(k + l − 1)|2
∆u(k)...∆u(k+m−l)
l=1
l=1
in jedem Schritt online unter Beachtung der Beschränkungen gelöst. Dabei bezeichnen Q und R die Gewichtsmatrizen, y(k + l|k) den l-ten vorausgesagten
Ausgangswert zum k-ten Abtastschritt und u(k + m − l) die k + m − l-te Kontrollanweisung.
Zur Lösung dieses Problems verwendet die MPC Toolbox die Dantzig1 -Wolfe2 Methode der aktiven Mengen (ausführlich erläutert im Buch von Fletcher [3,
Kapitel 10.3 und 10.6]). Dabei wird das quadratische Programm
1 T
T
min
x Hx + f x =: min (q(x))
x
x
2
Ax ≤ b, x ≥ xmin
iterativ gelöst. Voraussetzung ist hierfür, dass die Hessematrix H positiv definit
ist, dies garantiert, dass das Problem eindeutig lösbar ist.
1
2
George Bernard Dantzig, 1914 - 2005, US-amerikanischer Mathematiker
Philip Wolfe, US-amerikanischer Mathematiker
16
KAPITEL 1. MPC TOOLBOX IN MATLAB
Die Dantzig-Wolfe-Methode der aktiven Mengen ist eine Erweiterung des bekannten Simplex-Algorithmus, bei dem entlang des Beschränkungsrandes gesucht
wird. Da hier eine quadratische Funktion vorliegt, muss das Minimum aber nicht
auf dem Rand des zu untersuchenden Gebiets liegen. Man unterscheidet deswegen
zwei Fälle:
Zuerst sucht man das globale Minimum. Verletzt dies keine Beschränkungen, so
ist dies auch das Minimum unter Beschränkungen.
Verletzt dieses globale Minimum aber Beschränkungen, so liegt das Minimum unter Beschränkungen auf dem Rand der zulässigen Menge. Man beachtet nun eine
gewisse Auswahlmenge (die aktive Menge) an Beschränkungen, die über Gleichheit anstatt Ungleichheit erfüllt werden müssen. Im ersten Schritt sind dies die
Beschränkungen, welche vom globalen Minimum verletzt werden. Man sucht nun
ein Minimum auf dieser aktiven Menge an Restriktionen und überprüft, ob nicht
aktive Beschränkungen verletzt werden. Ist dies der Fall, werden diese mit in
die aktive Menge der Beschränkungen aufgenommen (wieder mittels Gleichheit
anstatt Ungleichheit) und es wird erneut gesucht. Werden aber keine inaktiven
Beschränkungen verletzt, so ist ein potentieller Kandidat für das Minimum unter
Beschränkungen gefunden. Verletzt der Kandidat die Karush3 -Kuhn4 -Tucker5 Bedingung (s. u.) für eine aktive Beschränkung, so wird diese inaktiv und es
kann weitergesucht werden. Erfüllt aber der potentielle Kandidat die KarushKuhn-Tucker-Bedingung, so ist er auch Lösung des Problems.
Die Karush-Kuhn-Tucker-Bedingung lässt sich folgendermaßen formulieren: Ist
x∗ ein lokales Minimum einer skalaren Funktion q(x) := 21 xT Hx + f T x unter den
Nebenbedingungen g(x) := b − Ax ≤ 0 und gilt für die Gradienten der aktiven
Gleichungen gi (x∗ ) = 0 für i ∈ I (aktive Menge), dass sie linear unabhängig sind,
so existieren eindeutige Lagrange-Multiplikatoren λi ≥ 0, so dass
X
∇q(x∗ ) =
λi ∇gi (x∗ ).
i∈I
Abbildung 1.8 zeigt die Vorgehensweise des Algorithmus.
Zur genaueren Beschreibung des Algorithmus wird noch folgendes vermerkt: Im
ersten Schritt muss nicht notwendigerweise das globale Minimum für das unbeschränkte System gesucht werden, ein Warmstart“ innerhalb der zulässigen
”
Menge ist möglich. Sollte in einem Suchschritt keine Beschränkung aktiv sein, so
bestimmt sich die Suchrichtung als negativer Gradient der Zielfunktion, also als
−Hx.
Die Implementierung geschieht dabei analog zum Simplex-Algorithmus über ein
Tableau, in dem ein transformiertes und erweitertes System gespeichert wird. In
jedem Iterationsschritt verändern Zeilenoperationen das Tableau so, dass am En3
William Karush, 1917 - 1997, US-amerikanischer Mathematiker
Harold W. Kuhn, geb. 1925, US-amerikanischer Mathematiker
5
Albert William Tucker, 1905 - 1995, US-amerikanischer Mathematiker
4
1.3. DER BLICK HINTER DIE KULISSEN DER MPC TOOLBOX
17
Abbildung 1.8: Dantzig-Wolfe-Methode der aktiven Mengen, aus [7].
de eine spezielle Form erhalten wird und die Lösung abgelesen werden kann. Eine
genauere Besprechung der Implementierung findet sich im Buch von Fletcher [3,
Kapitel 10.6].
Es lässt sich zeigen, dass der Algorithmus in einer endlichen Schrittzahl ein Ergebnis liefert. Der Aufwand für die Lösung beträgt O(n + p), wobei n = dim(x)
und p = dim(b), nur selten werden dabei mehr als 3(n + p) Iterationen benötigt
(eine ausführliche Begründung dieses Resultats findet sich im Buch von Dantzig
[2, Kapitel 7.3]).
Zur Verdeutlichung des Algorithmus folgt ein einfaches Beispiel im R2 : Abbildung
1.9 zeigt die Höhenlinien der quadratischen Zielfunktion, der Punkt x stellt dabei
das globale Minimum ohne Beschränkungen dar, die weiße Fläche beschreibt die
zulässige Menge (beschränkt durch g1 ≥ 0, g2 ≥ 0 und g3 ≤ 0). Man startet mit
einem Punkt in der zulässigen Menge, hier ist es der Punkt x(0) . Dieser erfüllt
die Beschränkung g1 , weswegen diese in der aktiven Menge der Beschränkungen
ist. Man sucht nun das Minimum unter der Voraussetzung, dass x2 = 0, dies ist
x(1) . Nun wird die zweite Beschränkung g2 aktiv: Überprüft man nun die KarushKuhn-Tucker-Bedingung, so stellt man fest, dass
∇f
∇g1
=−
k∇f k
k∇g1 k
18
KAPITEL 1. MPC TOOLBOX IN MATLAB
gilt, da der Gradient von f in negative x2 -Richtung, der Gradient der Nebenbedingung aber in positive x2 -Richtung zeigt. Die Beschränkung g1 wird also
inaktiv.
Man muss nun das Minimum unter der Bedingung g2 = 0 suchen. Dies findet sich
in x(2) . Betrachtet man wieder den Gradienten der Zielfunktion (dieser zeigt in
negative x1 -Richtung), so ergibt sich wieder ein negativer Lagrange-Multiplikator
(der Gradient der Bedingung g2 zeigt in positive x1 -Richtung). Die Beschränkung
g2 wird also auch inaktiv.
Beachte, nun sind keine Bedingungen aktiv und es wird in Richtung des aktuellen negativen Gradienten der Zielfunktion gesucht. Man gelangt schließlich zu
x(3) , was nun die Beschränkung g3 aktiv werden lässt. Eine Suche unter der Beschränkung g3 = 0 liefert dann das Minimum x(4) . Hier zeigt der Gradient der
Zielfunktion in die selbe Richtung wie der Gradient der einzigen aktiven Nebenbedingung g3 . Wir haben also die Karush-Kuhn-Tucker-Bedingung erfüllt und
somit das Minimum unter den Beschränkungen gefunden.
Abbildung 1.9: Beispiel zur Dantzig-Wolfe-Methode der aktiven Mengen.
Anhang A
Plots und Quelltext
A.1
Plots
Outputs
1
0
−1
y2
−2
−3
y1
−4
−5
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
8
6
4
u1
2
u2
0
−2
0
2
4
6
8
10
Time
12
Abbildung A.1: Simulation für die Fahrstufe D“ ohne Modellfehler. Man sieht,
”
dass der Regler das System asymptotisch stabil zur 0 regelt.
19
20
ANHANG A. PLOTS UND QUELLTEXT
Outputs
1
0.5
0
−0.5
y2
−1
y1
−1.5
−2
−2.5
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
5
4
3
2
u1
1
u2
0
−1
0
2
4
6
8
10
Time
12
Abbildung A.2: Simulation für die Fahrstufe N“ ohne Modellfehler. Ebenso beim
”
zweiten Modell liefert der Regler ein asymptotisch stabiles Verhalten.
Outputs
20
y1
10
0
−10
−20
y2
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
20
15
u1
10
5
0
−5
−10
u2
0
2
4
6
8
10
Time
12
Abbildung A.3: Simulation für die Fahrstufe D“, wobei als Systemmodell die
”
Fahrstufe N“ gewählt wurde. Man sieht, dass der Regler das System nicht sta”
bilisieren kann.
21
A.1. PLOTS
Outputs
2
1
0
−1
−2
−3
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
4
3
u1
2
u2
1
0
−1
0
2
4
6
8
10
Time
12
Abbildung A.4: Simulation für die Fahrstufe N“, wobei als Systemmodell die
”
Fahrstufe D“ gewählt wurde. Auch hier kann der Regler das System nicht stabi”
lisieren.
Outputs
1
0
−1
−2
y2
−3
y1
−4
−5
−6
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
8
6
4
u1
2
u2
0
−2
0
2
4
6
8
10
Time
12
Abbildung A.5: Simulation für die Fahrstufe D“ ohne Modellfehler mit erhöhten
”
Gewichtsfaktoren für die Bestrafung des Regeleingriffs in der Kostenfunktion.
22
ANHANG A. PLOTS UND QUELLTEXT
Outputs
1
0
−1
u2
−2
u1
−3
−4
0
2
4
6
8
10
Time
12
14
16
18
20
14
16
18
20
Manipulated Variables
3.5
3
2.5
2
u1
1.5
u2
1
0.5
0
0
2
4
6
8
10
Time
12
Abbildung A.6: Simulation für die Fahrstufe N“, wobei als Systemmodell die
”
Fahrstufe D“ gewählt wurde mit erhöhten Gewichtsfaktoren für die Bestrafung
”
des Regeleingriffs in der Kostenfunktion. Nun zeigt sich, dass der Regler auch für
das System mit Modellfehler ein stabilisierendes Ergebnis liefert.
23
A.1. PLOTS
Outputs
1
0
−1
−2
−3
y1 mit cmpc
y2 mit cmpc
−4
y1 mit mpcsim
y2 mit mpcsim
−5
−6
0
2
4
6
8
10
Time
12
14
16
18
20
Abbildung A.7: Vergleich von Simulationen für die Fahrstufe D“ ohne Modell”
fehler und Prädiktionshorizont p = ∞. Durchgezogene Linien: cmpc mit on-lineOptimierung des Kostenfunktionals. Strich-Punkt-Linien: mpcsim mit im Voraus
berechneter Gain-Matrix. Es zeigt sich kein wesentlicher Unterschied zwischen
den verschiedenen Verfahren.
24
ANHANG A. PLOTS UND QUELLTEXT
Outputs
1
0
−1
−2
−3
−4
y1 mit cmpc
y2 mit cmpc
y1 mit mpcsim
y2 mit mpcsim
−5
−6
−7
0
2
4
6
8
10
Time
12
14
16
18
20
Abbildung A.8: Vergleich von Simulationen für die Fahrstufe D“ ohne Modell”
fehler und Prädiktionshorizont p = 80. Durchgezogene Linien: cmpc mit on-lineOptimierung des Kostenfunktionals. Strich-Punkt-Linien: mpcsim mit im Voraus
berechneter Gain-Matrix. Die on-line-Optimierung ist hier klar im Vorteil.
25
A.1. PLOTS
2
0
y1
−2
−4
−6
−8
0
2
4
6
8
10
Time
12
14
16
18
20
4
6
8
10
Time
12
14
16
18
20
0.8
0.6
y2
0.4
0.2
0
−0.2
0
2
Abbildung A.9: Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Ausgangsvariablen.
6
5
u1
4
3
2
1
0
−1
0
2
4
6
8
10
Time
12
14
16
18
20
4
6
8
10
Time
12
14
16
18
20
0.8
0.6
u2
0.4
0.2
0
−0.2
0
2
Abbildung A.10: Simulation des linearen cmpc-Reglers an der nichtlinearen Regelstrecke, Kontrollvariablen.
26
A.2
ANHANG A. PLOTS UND QUELLTEXT
Quelltext zu Kapitel 1.2
function bsp();
% Definition der Systemuebertragungsfunktionen
G1D = [0 0 9.62;1 2.4 5.05;0 0.16 0];
G2D = [0 15.9 15.9*3;1 2.4 5.05;0 0.04 0];
G1N = [0 0 20.5; 1 2.2 12.8; 0 0.16 0];
G2N = [0 47.6 47.6*3.5; 1 2.2 12.8; 0 0.04 0];
G0 = [0 0;0 0;0 0];
GI = [0 1;0 1;0 0];
% Approximation der Systemsprungfunktionen
tf = 4; % Endzeit der Approximation
ts = 0.1; % Abtastzeit
systemD = tfd2step(tf,ts,2,G1D,G0,G2D,GI);
systemN = tfd2step(tf,ts,2,G1N,G0,G2N,GI);
% Definition der Stoerungsuebertragungsfunktionen
% und Approximation der Stoerungssprungfunktionen
GdD = [0 -19.1 -19.1*3; 1 2.4 5.05; 0 0 0];
dD = tfd2step(tf,ts,2,GdD,G0);
GdN = [0 -19.1 -19.1*3.5; 1 2.2 12.8; 0 0 0];
dN = tfd2step(tf,ts,2,GdN,G0);
% Definition der Reglerparameter
ywt = [5 1]; % Gewichte fuer die Ausgaenge
uwt = [.5 .5]; % Gewichte fuer die Kontrolleingriffe
m = 10; % Kontrollhorizont
p = inf; % Praediktionshorizont
tfsim = 20; % Dauer der Simulation
r = [0 0]; % Setpunkte
ulim = [[-inf -0.7] [inf 0.7] [1e6 1.4]];
% Beschraenkungen an die Kontrolle
ylim = []; % Beschraenkungen an die Ausgaenge
tfilter = []; % Stoerungsfilter, -verzoegerung
dstep = 1; % Sprungfunktion fuer Stoerung
%================================================================
% 1. Simulation ohne Modellfehler
%===============================================================
% Fahrstufe D
A.2. QUELLTEXT ZU KAPITEL 1.2
[y1,u1] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure; % neues Plotfenster
plotall(y1,u1,ts); % plottet Ausgaenge und Kontrollen
% Fahrstufe N
[y2,u2] = cmpc(systemN,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
plotall(y2,u2,ts);
%===============================================================
% 2. Simulation mit Modellfehler
%===============================================================
% Fahrstufe D
[y3,u3] = cmpc(systemD,systemN,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure;
plotall(y3,u3,ts);
%Fahrstufe N
[y4,u4] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
plotall(y4,u4,ts);
%===============================================================
% 3. Simulation mit erhoehtem Gewichtsfaktor fuer die Kontrolle
%===============================================================
uwt = [10 20]; % Gewichtsfaktor fuer die Kontrolle
% Fahrstufe D ohne Modellfehler
[y5,u5] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
figure;
plotall(y5,u5,ts);
% Fahrstufe N mit Modellfehler
[y6,u6] = cmpc(systemN,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dN,[],dstep);
figure;
27
28
ANHANG A. PLOTS UND QUELLTEXT
plotall(y6,u6,ts);
%===============================================================
% 4. Simulation - Vergleich zwischen cmpc und mpcsim
%===============================================================
Kmpc = mpccon(systemD,ywt,uwt,m,p); % Erstellung der Gain-Matrix
[y7,u7] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,...
dD,[],dstep);
figure;
plot([0:ts:tfsim],y5(:,1),’-b’,[0:ts:tfsim],y5(:,2),’-k’,...
[0:ts:tfsim],y7(:,1),’-.b’,[0:ts:tfsim],y7(:,2),’-.k’);
legend(’y_1 mit cmpc’,’y_2 mit cmpc’,...
’y1 mit mpcsim’,’y_2 mit mpcsim’,0);
xlabel(’Time’);
title(’Outputs’);
%===============================================================
% 5. Simulation - Vergleich zwischen cmpc und mpcsim
% mit beschraenktem Praediktionshorizont
%===============================================================
p = 80; % neuer Praediktionshorizont
[y8,u8] = cmpc(systemD,systemD,ywt,uwt,m,p,tfsim,r,ulim,ylim,...
tfilter,dD,[],dstep);
Kmpc = mpccon(systemD,ywt,uwt,m,p);
[y9,u9] = mpcsim(systemD,systemD,Kmpc,tfsim,r,ulim,tfilter,...
dD,[],dstep);
figure;
plot([0:ts:tfsim],y8(:,1),’-b’,[0:ts:tfsim],y8(:,2),’-k’,...
[0:ts:tfsim],y9(:,1),’-.b’,[0:ts:tfsim],y9(:,2),’-.k’);
legend(’y_1 mit cmpc’,’y_2 mit cmpc’,...
’y1 mit mpcsim’,’y_2 mit mpcsim’,0);
xlabel(’Time’);
title(’Outputs’);
Literaturverzeichnis
[1] A. Bemporad, M. Morari, N. L. Ricker, Getting Started with the Model Predictive Control Toolbox ; Version 2, The MathWorks, 2004 - 2006.
[2] G. B. Dantzig, Linear Programming and Extensions; Princeton University
Press, Princeton, 1963.
[3] R. Fletcher, Practical Methods of Optimization; John Wiley & Sons, Chichester, UK, 1986.
[4] L. Guzzella, C. H. Onder, Introduction to Modeling and Control of Internal
Combustion Engine Systems; Springer, 2004.
[5] D. Hömberg, Nichtlineare Optimierung, Script zur Vorlesung; Technische Universität Berlin, 2005/2006, http://www.math.tu-berlin.de/
Vorlesungen/WS05/NonLinOpt/skript/nonlin-opt.pdf.
[6] D. Hrovat and B. Bodenheimer, Robust Automotive Idle Speed Control Design Based on µ-Synthesis; Proceedings of American Control Conference,
1993.
[7] J. Matthes, L. Gröll, R. Mikut, J. Jäkel, Optimale Führung von
Endoskopen mit redundanter Kinematik ; Automatisierungstechnik 48,
R. Oldenbourg Verlag, 2000, http://www.sfb588.uni-karlsruhe.de/
publikationen/2001_06.pdf.
[8] M. Morari, N. L. Ricker, Model Predictive Control Toolbox User’s Guide;
Version 1, The MathWorks, 1995 - 1998.
[9] MPC Toolbox Website: http://www.mathworks.com/products/mpc/.
29