matlab optimization toolbox inhaltsverzeichnis · pdf filematlab optimization toolbox...

Post on 06-Feb-2018

254 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

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

MATLAB Optimization Toolbox

Optimierung eines Simulink–Modells

Optimierungsergebnis

ungeregelt mit optimiertem Regler

0 2 4 6 8 100

0.5

1

1.5

t [s]

yout

0 2 4 6 8 100

0.5

1

1.5

yout

t [s]

Lehrstuhl fur Elektrische Antriebssysteme

Simulation mit Matlab/Simulink 42

top related