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

45
MATLAB Optimization Toolbox Inhaltsverzeichnis Inhaltsverzeichnis 0 Deckblatt: Optimization Toolbox 1 Was ist Optimierung? 2 Behandelte Themen der Optimization TB 3 Darstellung der Funktionen in Matlab 4 Inline Objects 5 Algorithmensteuerung 6 Algorithmensteuerung 7 Nullstellenbestimmung 8 Nullstellenbestimmung – Skalare Funktionen 9 Nullstellenbestimmung – Skalare Funktionen 10 Nullstellenbestimmung – Skalare Funktionen 11 Nullstellenbestimmung – Skalare Funktionen 12 Nullstellenbestimmung – Vektorwertige Funktionen 13 Nullstellenbestimmung – Vektorwertige Funktionen 14 Nullstellenbestimmung – Vektorwertige Funktionen 15 Nullstellenbestimmung – Vektorwertige Funktionen 16 Nullstellenbestimmung – Vektorwertige Funktionen 17 Minimierung ohne Nebenbedingungen 18 Minimierung ohne Nebenbedingungen 19 Minimierung ohne Nebenbedingungen 20 Minimierung ohne Nebenbedingungen 21 Minimierung ohne Nebenbedingungen 22 Minimierung unter Nebenbedingungen 23 Minimierung unter Nebenbedingungen Lehrstuhl f¨ur Elektrische Antriebssysteme Simulation mit Matlab/Simulink

Upload: doanbao

Post on 06-Feb-2018

254 views

Category:

Documents


5 download

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