matlab optimization toolbox inhaltsverzeichnis · pdf filematlab optimization toolbox...
Post on 06-Feb-2018
254 Views
Preview:
TRANSCRIPT
MATLAB Optimization Toolbox
Inhaltsverzeichnis
Inhaltsverzeichnis0 Deckblatt: Optimization Toolbox1 Was ist Optimierung?2 Behandelte Themen der Optimization TB3 Darstellung der Funktionen in Matlab4 Inline Objects5 Algorithmensteuerung6 Algorithmensteuerung7 Nullstellenbestimmung8 Nullstellenbestimmung – Skalare Funktionen9 Nullstellenbestimmung – Skalare Funktionen10 Nullstellenbestimmung – Skalare Funktionen11 Nullstellenbestimmung – Skalare Funktionen12 Nullstellenbestimmung – Vektorwertige Funktionen13 Nullstellenbestimmung – Vektorwertige Funktionen14 Nullstellenbestimmung – Vektorwertige Funktionen15 Nullstellenbestimmung – Vektorwertige Funktionen16 Nullstellenbestimmung – Vektorwertige Funktionen17 Minimierung ohne Nebenbedingungen18 Minimierung ohne Nebenbedingungen19 Minimierung ohne Nebenbedingungen20 Minimierung ohne Nebenbedingungen21 Minimierung ohne Nebenbedingungen22 Minimierung unter Nebenbedingungen23 Minimierung unter Nebenbedingungen
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink
MATLAB Optimization Toolbox
Inhaltsverzeichnis
Inhaltsverzeichnis (Fortsetzung)24 Minimierung unter Nebenbedingungen25 Minimierung unter Nebenbedingungen26 Minimierung unter Nebenbedingungen27 Minimierung vektorwertiger Funktionen28 Methode der kleinsten Quadrate – Least Squares29 Least Squares – Lineare Verfahren30 Least Squares – Lineare Verfahren31 Least Squares – Lineare Verfahren32 Least Squares – Lineare Verfahren33 Least Squares – Lineare Verfahren34 Least Squares – Nichtlineare Verfahren35 Least Squares – Nichtlineare Verfahren36 Least Squares – Nichtlineare Verfahren37 Least Squares – Nichtlineare Verfahren38 Optimierung eines Simulink–Modells39 Optimierung eines Simulink–Modells40 Optimierung eines Simulink–Modells41 Optimierung eines Simulink–Modells42 Optimierung eines Simulink–Modells
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink
MATLAB Optimization Toolbox
MATLAB
Optimization Toolbox
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink
MATLAB Optimization Toolbox
Was ist Optimierung?
Minimierung oder Maximierung von
• Funktionen
• Zielfunktionen, die wiederum einzelne Funktionen ent-
halten konnen
• ohne oder mit Nebenbedingungen
• durch numerische Verfahren
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 1
MATLAB Optimization Toolbox
Behandelte Themen der Optimization TB
• Algorithmensteuerung
• Nullstellenbestimmung
• Losen von Gleichungssystemen
• Minimierung ohne Nebenbedingungen
• Minimierung unter Nebenbedingungen
• Least Squares (lineare und nichtlineare Verfahren)
• Optimierung eines Simulink–Modells
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 2
MATLAB Optimization Toolbox
Darstellung der Funktionen in Matlab
Die zu minimierenden Funktionen werden dargestellt als
• Matlab–Funktionen (m–files)
function F = funktion1(x)
F = x.^2-exp(-x).*cos(3.*x);
• inline–objects (Funktion im Workspace abgelegt)
funktion1 = inline(’x.^2-exp(-x).*cos(3.*x)’,’x’);
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 3
MATLAB Optimization Toolbox
Inline Objects
Inline Objects
• konnen wie Funktionen benutzt werden
• werden nicht auf Festplatte gespeichert, sondern im
Workspace abgelegt
• erhalten Eingabewerte und liefern Funktionswerte zuruck
• Definition durch
funktion = inline(’ausdruck’,’var1’,’var2’)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 4
MATLAB Optimization Toolbox
Algorithmensteuerung
• Beeinflussung der Algorithmen der Optimization TB
durch eine Structure–Variable mit gleichen Feldern fur
alle Algorithmen
• Nicht alle Felder sind fur alle Algorithmen relevant
→ Hilfe konsultieren
• Leere Struktur erzeugen:
optimset bzw. options=optimset
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 5
MATLAB Optimization Toolbox
Algorithmensteuerung
• Einzelne Felder verandern:
options=optimset(oldopts,’TolX’,1e-6,’MaxIter’,30)
options=optimset(options,’TolX’,1e-6,’MaxIter’,30)
• Einzelne Felder abfragen:
tol=optimget(options,’TolX’) oder
tol=options.TolX
• Variable mit Standardwerten vorbelegen:
options = optimset(@befehlsname)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 6
MATLAB Optimization Toolbox
Nullstellenbestimmung
• Unterprobleme der Optimierung fuhren oft auf Null-
stellensuche (Nullsetzen von Gradienten)
• Losen von nichtlinearen Gleichungen laßt sich immer
auf eine Nullstellensuche zuruckfuhren
tanx = 0.5x ⇔ tanx − 0.5x = 0
• Losen von Gleichungssystemen
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 7
MATLAB Optimization Toolbox
Nullstellenbestimmung – Skalare Funktionen
• Begriff der Nullstelle ist physikalisch motiviert, d.h.
– nur reellwertige Nullstellen werden berechnet
– an der Nullstelle muß ein Vorzeichenwechsel auftre-
ten
• Berechnung in Matlab:
nullst = fzero(@funktion,x0,options) oder
[nullst fwert] = fzero(@funktion,x0,options)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 8
MATLAB Optimization Toolbox
Nullstellenbestimmung – Skalare Funktionen
• funktion: skalarwertige m–Funktion oder inline object
• x0: Anfangswert (skalar) oder Suchintervall (Vektor)
• options: Struktur zur Algorithmensteuerung
• [nullst fwert]: Nullstelle und zugehoriger Funktions-
wert
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 9
MATLAB Optimization Toolbox
Nullstellenbestimmung – Skalare Funktionen
Beispiel
f(x) = x6 + x5 − 3x4 − x2 − 6x + 1
−3 −2 −1 0 1 2−10
0
10
20
x
f(x)
funktion1.m
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 10
MATLAB Optimization Toolbox
Nullstellenbestimmung – Skalare Funktionen
• Berechnungsgenauigkeit verandern:
options = optimset(@fzero)
options = optimset(options,’TolX’,1e-3)
• Vereinfachung bei Polynomen:
poly=[1 1 -3 0 -1 -6 1]
nullst = roots(poly)
⇒ Bei roots werden auch komplexe Nullstellen berech-
net.
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 11
MATLAB Optimization Toolbox
Nullstellenbestimmung – Vektorwertige Funktionen
• Lineare Gleichungssysteme
– die eindeutig bestimmt sind
– sie besitzen genau eine oder keine Losung
– Ax = b
• Losung durch:
x = A\b
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 12
MATLAB Optimization Toolbox
Nullstellenbestimmung – Vektorwertige Funktionen
• Nichtlineare Gleichungssysteme
– konnen keine, eine oder mehrere Losungen besitzen
– Darstellung durch eine vektorwertige Funktion
F(x) = 0
– Losung durch:
[x fval exitflag]=fsolve(@funktion,x0,options)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 13
MATLAB Optimization Toolbox
Nullstellenbestimmung – Vektorwertige Funktionen
• Bezeichnungen:
– x0: Startwert fur Optimierungsalgorithmus
– x: Losungsvektor
– fval: zugehoriger Funktionswert
– exitflag:
∗ > 0: es wurde eine Losung gefunden
∗ = 0: maximale Anzahl an Iterationen erreicht
∗ < 0: es wurde keine Losung gefunden
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 14
MATLAB Optimization Toolbox
Nullstellenbestimmung – Vektorwertige Funktionen
• Einstellungen mittels options
– Algorithmenauswahl
– Auswahl des Suchverfahrens
– Toleranzen fur maximale und minimale Anderungen
– maximale Anzahl an Iterationen
– Verwendung der Jacobi–Matrix
– u.v.m.
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 15
MATLAB Optimization Toolbox
Nullstellenbestimmung – Vektorwertige Funktionen
• Effizienzsteigerung durch Verwendung der Jacobi–Matrix
→ Verringerung der Zahl der Funktionsauswertungen
Jij = ∂Fi∂xj
• options.Jacobian auf ’on’ setzen
• ’funktion’ muß zusatzlich zum Funktionswert die Jacobi–
Matrix zuruckliefern
function [F, J] = funktion4(x)F = [x(1)^2 - 3*x(2) + exp(-x(1)), sin(x(1)) + x(2) - exp(-x(2))];J = [ 2*x(1)-exp(-x(1)), -3; cos(x(1)), 1+exp(-x(2)) ];
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 16
MATLAB Optimization Toolbox
Minimierung ohne Nebenbedingungen
• Minimierung einer Funktion einer Variablen
[x,fval,exitflag]=fminbnd(@funktion,x1,x2,options)
• fminbnd liefert lokales Minimum im Bereich x1 < x < x2
• Langsame Konvergenz bei einem Minimum an den
Intervallgrenzen
• fminsearch auch fur unstetige Funktionen anwendbar
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 17
MATLAB Optimization Toolbox
Minimierung ohne Nebenbedingungen
Beispiel: f(x) = 0.5x3 − x2 − x + exp(0.1x)
−2 −1 0 1 2 3
−2
0
2
x
funktion5.m
f(x)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 18
MATLAB Optimization Toolbox
Minimierung ohne Nebenbedingungen
• Minimierung einer Funktion mehrerer Variablen
[x,fval,exitflag]=fminunc(@funktion,x0,options)
• Large Scale (mit Gradientenangabe) oder Medium
Scale (numerische Gradientenberechnung) moglich
→ hier nur Medium Scale
• x0 ist der Anfangswert der Optimierungsroutine
(Vektor) fur die lokale Minimumsuche
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 19
MATLAB Optimization Toolbox
Minimierung ohne Nebenbedingungen
• Angabe einer Output-Funktion moglich (bei den mei-
sten Algorithmen der Optimization TB)
• Wird bei jedem Iterationsschritt aufgerufen
• Parameterubergaben finden auch an diese Funktion
statt
• Aktivierung durch Setzen der Option OutputFcn auf die
gewunschte Funktion
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 20
MATLAB Optimization Toolbox
Minimierung ohne Nebenbedingungen
Beispiel: f(x1, x2) = 2x41 + x4
2 − 2x21 − 2x2
2 + 4sin(x1x2)
−1 0 1−10
1
−5
0
5
10
x1
Zielfunktion
x2
f(x 1,x
2)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 21
MATLAB Optimization Toolbox
Minimierung unter Nebenbedingungen
• Minimierung skalarer Funktionen mehrerer Variablen
unter Nebenbedingungen
[x,fval,exitflag]=fmincon(@funktion,x0,A,b,Aeq,...
beq,lb,ub,@nonlcon,options)
• Unterscheidung zwischen linearen Gleichungs– und Un-
gleichungsnebenbedingungen: A,b,Aeq,beq
• und nichtlinearen Gleichungs– und Ungleichungsneben-
bedingungen: nonlcon
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 22
MATLAB Optimization Toolbox
Minimierung unter Nebenbedingungen
Problemformulierung
minx
f(x) unter den Nebenbedingungen
c(x) ≤ 0 nichtlineare UNB
ceq(x) = 0 nichtlineare GNB
A · x ≤ b lineare UNB
Aeq · x = beq lineare GNB
lb ≤ x ≤ ub Unter– und Obergrenze
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 23
MATLAB Optimization Toolbox
Minimierung unter Nebenbedingungen
• lineare NB werden durch Angabe der Matrizen spezi-
fiziert
• nichtlineare NB werden als m–File spezifiziert
(Reihenfolge beachten!)
% Nichtlineare Nebenbedingungen
function [c, ceq] = nonlcon(x)
c = ... % nichtlineare Ungleichungs NB
ceq = ... % nichtlineare Gleichungs NB
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 24
MATLAB Optimization Toolbox
Minimierung unter Nebenbedingungen
Beispiel 1
• f(x1, x2) = 2x41 + x4
2 − 2x21 − 2x2
2 + 4sin(x1x2)
• nichtlineare GNB: (x1 − 0.5)2 + x22 = 1
−1 0 1−10
1
−5
0
5
10
x1
Zielfunktion
x2
f(x 1,x
2)
−0.5 0 0.5 1 1.5−10
1−5
0
5
x1
Gleichungs NB
x2
f(x 1,x
2)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 25
MATLAB Optimization Toolbox
Minimierung unter Nebenbedingungen
Beispiel 2
• f(x1, x2) = 2x41 + x4
2 − 2x21 − 2x2
2 + 4sin(x1x2)
• lineare UNB: x1 ≥ x2 und x2 ≥ −1
A =
−1 10 −1
b =
01
−2 −1 0 1
−2
−1
0
1
x1
x 2
Ungleichungs NB
B
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 26
MATLAB Optimization Toolbox
Minimierung vektorwertiger Funktionen
• Goal Attainment Problem
fgoalattain(@funktion,x0,@goal,weight,A,...
• Minimax Problem
fminimax(@funktion,x0,A,b,Aeq,beq,...)
• Methode der kleinsten Quadrate (Least Squares)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 27
MATLAB Optimization Toolbox
Methode der kleinsten Quadrate – Least Squares
• Ziel: Minimierung einer quadratischen Fehlersumme
• Lineare und nichtlineare Varianten
• Mit und ohne Nebenbedingungen
• Curve Fitting als spezielle Anwendung
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 28
MATLAB Optimization Toolbox
Least Squares – Lineare Verfahren
Uberbestimmte lineare Gleichungssysteme
C · x = d ⇐⇒ C · x − d = 0
• C ∈ IRn×m mit n > m ⇒ keine Losung
• Auffassung als Minimierungsproblem: minx ‖C · x − d‖22
• Mit F(x) = (C · x − d) folgt: minx∑n
i=1 Fi(x)2
• Berechnung in Matlab: x = C \ d
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 29
MATLAB Optimization Toolbox
Least Squares – Lineare Verfahren
Beispiel: Ausgleichspolynom
• Eingangsdaten u = [u1 . . . un], Messdaten y = [y1 . . . yn]
• Ausgleichspolynom yi = a0+a1ui +a2u2i + . . .+amum
i
• Gleichungssystem:
C =
1 u1 u21 · · · um
11 u2 u2
2 · · · um2
... . . . ...
1 un u2n · · · um
n
x =
a0a1...
am
d =
y1y2...
yn
• Alternative Losung mittels polyfit
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 30
MATLAB Optimization Toolbox
Least Squares – Lineare Verfahren
Nonnegative Least Squares
• minx ‖C · x − d‖22 fur x ≥ 0
• Least Squares Verfahren mit UNB
• Existenz mehrerer Minima moglich
• Berechnung in Matlab:
[x,resnorm] = lsqnonneg(C,d,x0,options)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 31
MATLAB Optimization Toolbox
Least Squares – Lineare Verfahren
Least Squares mit Nebenbedingungen
• Problemstellung: minx ‖C · x − d‖22
• Unter den Nebenbedingungen A ·x ≤ b Aeq ·x = beq
lb ≤ x ≤ ub
• Berechnung in Matlab:
[x,resnorm] = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 32
MATLAB Optimization Toolbox
Least Squares – Lineare Verfahren
Beispiel
• Eingangsdaten u = [u1 . . . un], Meßdaten y = [y1 . . . yn]
• Ausgleichspolynom yi = a0+a1ui +a2u2i + . . .+amum
i
• Gleichungsnebenbedingung: x1 + x2 = 3
⇒ Aeq =[
1 1 0 0]
beq = 3
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 33
MATLAB Optimization Toolbox
Least Squares – Nichtlineare Verfahren
Beliebige Ausgleichsfunktion
• Nichtlineares Curve Fitting
• Problemstellung: minx ‖F(x,xdata) − ydata‖22 =
= minx∑n
i=1
(
F(x,xdata,i) − ydata,i
)2
• xdata und ydata sind Meßwertepaare
• x enthalt die Parameter der nichtlinearen Ausgleichs-
funktion
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 34
MATLAB Optimization Toolbox
Least Squares – Nichtlineare Verfahren
• Matlab–Befehl:
[x,resnorm]=lsqcurvefit(@funktion,x0,xdata,ydata,...
lb,ub,options)
• Funktionsdefinition, z.B. abklingende exp–Funktion:
F = K · exp(−x/T )
% Funktionsdefinition fuer lsqcurvefit
function F = funktion(x, xdata)
F = x(1) .* exp(-xdata ./ x(2)) ;
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 35
MATLAB Optimization Toolbox
Least Squares – Nichtlineare Verfahren
Beispiel zu lsqcurvefit
Annaherung einer abklingenden Sinusschwingung an eine
Meßdatenreihe:
0 2 4 6 8 10−2
−1
0
1
2
Zeit [s]
y(t) Naherungsfunktion:
y(t) = K · e−t/T · sin(ωt)
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 36
MATLAB Optimization Toolbox
Least Squares – Nichtlineare Verfahren
Allgemeine nichtlineare MKQ
• Problemstellung: Minimierung einer vektorwertigen
Funktion F(x)
minx
‖F(x)‖22 = minx
n∑
i=1Fi(x)2
• Matlab–Befehl:
[x,resnorm] = lsqnonlin(@funktion,x0,lb,ub,options)
• funktion: vektorwertige Funktion
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 37
MATLAB Optimization Toolbox
Optimierung eines Simulink–Modells
Anwendung der nichtlinearen MKQ
• Optimierung der Reglerparameter des Simulink–Modells
• Anregung durch Sprungfunktion
• Minimierung der quadratischen Abweichung zwischen
Soll– und Istwert
• Jeder Iterationsschritt von Simulink ist eine Kompo-
nente einer nichtlinearen vektorwertigen Funktion
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 38
MATLAB Optimization Toolbox
Optimierung eines Simulink–Modells
Simulink–Modell
1
yout
1
reference
u y
Plant
PID
PID Controller
1
ySaturation Rate Limiter
4
s +2.5s +3s+4.63 2
Plant
1
u
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 39
MATLAB Optimization Toolbox
Optimierung eines Simulink–Modells
Vektorwertige Funktion
• Konstanter Sollwert: yref = 1
• Anzahl der Abtastschritte = Dimension der Funktion:
yi = y(ti)
• Funktion:
F(x) =
y1(x) − yrefy2(x) − yref
...yn(x) − yref
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 40
MATLAB Optimization Toolbox
Optimierung eines Simulink–Modells
Funktionsdefinition in Matlab
• Argumente sind die Reglerparameter Kp, KI und Kd
• Optionen des Simulink–Modells setzen
• Simulation von der Matlab–Funktion aus starten
• Berechnung der Abweichungen vom Sollwert
Lehrstuhl fur Elektrische Antriebssysteme
Simulation mit Matlab/Simulink 41
top related