21
PID-säätimen PID-säätimen parametrien parametrien optimointi GA:lla optimointi GA:lla (Oma (Oma projekti/harjoitustyö) projekti/harjoitustyö)

PID-säätimen parametrien optimointi GA:lla

  • Upload
    rock

  • View
    42

  • Download
    1

Embed Size (px)

DESCRIPTION

PID-säätimen parametrien optimointi GA:lla. (Oma projekti/harjoitustyö). Alkuperäinen prosessi. Toimiiko GA? Näyttää ainakin lupaavalta Johtunee siitä, että k.o. säätöongelma on liian yksin-kertainen... ...lisäksi voi ihan randomillakin saada hyviä tuloksia(!). - PowerPoint PPT Presentation

Citation preview

Page 1: PID-säätimen parametrien optimointi GA:lla

PID-säätimen parametrien PID-säätimen parametrien optimointi GA:llaoptimointi GA:lla

(Oma projekti/harjoitustyö)(Oma projekti/harjoitustyö)

Page 2: PID-säätimen parametrien optimointi GA:lla

Alkuperäinen prosessiAlkuperäinen prosessi

Page 3: PID-säätimen parametrien optimointi GA:lla

0 10 20 30 40 50 60 700

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

Step Response

Time (sec)

Ampl

itude

Random ParametersOptimized Parameters

Toimiiko GA? Toimiiko GA? Näyttää ainakin Näyttää ainakin lupaavaltalupaavalta

Johtunee siitä, että Johtunee siitä, että k.o. säätöongelma k.o. säätöongelma on liian yksin-on liian yksin-kertainen...kertainen...

...lisäksi voi ihan ...lisäksi voi ihan randomillakin randomillakin saada hyviä saada hyviä tuloksia(!)tuloksia(!)

0 10 20 30 40 50 60 70 800

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Step Response

Time (sec)

Ampl

itude

Random Parameters

Page 4: PID-säätimen parametrien optimointi GA:lla

Kuvitteellinen prosessiStaattinen vahvistus = 1

Page 5: PID-säätimen parametrien optimointi GA:lla

Perus-PID:n toteutus Matlabin työpöydällä Perus-PID:n toteutus Matlabin työpöydällä Laplace-muodossaLaplace-muodossa

Gsys=tf(1,[1 2 3 1]); Gsys=tf(1,[1 2 3 1]); % prosessi% prosessi Gpid=tf([Ti(i)*Td(i) Ti(i) 1],[Ti(i) 0]); Gpid=tf([Ti(i)*Td(i) Ti(i) 1],[Ti(i) 0]); % säädin% säädin Golt=Gsys*Gtype; Golt=Gsys*Gtype; % total system Open loop% total system Open loop Gcl=feedback(Kp(i)*Golt,1); Gcl=feedback(Kp(i)*Golt,1); % Closed loop% Closed loop step(Gcl) step(Gcl) % Piirtää askelvasteen% Piirtää askelvasteen info=stepinfo(Gcl) info=stepinfo(Gcl) % Purkaa hyvyysarvot % Purkaa hyvyysarvot

askelvasteesta (struct)askelvasteesta (struct)

Page 6: PID-säätimen parametrien optimointi GA:lla

Heti hankalampi tapaus, undershoottia esiintyy Heti hankalampi tapaus, undershoottia esiintyy vaikka väkisinvaikka väkisin

0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (sec)

Ampl

itude

Optimized Parameters2nd Best Parameters3rd Best Parameters

Page 7: PID-säätimen parametrien optimointi GA:lla

PopulaatioPopulaatio

P =(20*rand(1,length)+0.001).*(rand(1,length)+0.001).*(rand(1,length)+0.001); I =(10*rand(1,length)+0.001).*(rand(1,length)+0.001).*(rand(1,length)+0.001); D =(10*rand(1,length)+0.001).*(rand(1,length)+0.001).*(rand(1,length)+0.001);

Page 8: PID-säätimen parametrien optimointi GA:lla

Siirretään parhaimmat Siirretään parhaimmat parametriyhdistelmät vasemmalleparametriyhdistelmät vasemmalle

Komentoja:Komentoja: Sort(hyvyysvektori)Sort(hyvyysvektori)Find(pienimmän arvon indeksi)Find(pienimmän arvon indeksi)

Page 9: PID-säätimen parametrien optimointi GA:lla

Säästetään ne parhaimmat ja Säästetään ne parhaimmat ja lisätään niiden risteytykset ja/tai lisätään niiden risteytykset ja/tai

mutaatiotmutaatiot

Sorry, crossover puuttuu Sorry, crossover puuttuu vielä kokonaan... Ei ole ihan vielä kokonaan... Ei ole ihan oppikirjan mukainen GAoppikirjan mukainen GA

Page 10: PID-säätimen parametrien optimointi GA:lla

Ongelmia...Ongelmia... Crossover: geenien vaihto ja rulettivalintaCrossover: geenien vaihto ja rulettivalinta

P, I ja D riippuvaisia toisistaan =>P, I ja D riippuvaisia toisistaan =>Ei voida useamman optimointikerran Ei voida useamman optimointikerran jälkeen yksinkertaisesti olettaa jälkeen yksinkertaisesti olettaa kromosomien (vastaavien parametrien) kromosomien (vastaavien parametrien) keskiarvojen olevan ne ”optimaaliset”.keskiarvojen olevan ne ”optimaaliset”.

Pitäisi ehkä huomioida geenien väliset Pitäisi ehkä huomioida geenien väliset suhteet esim. P:I:D 1:0.9:0.6 tai P/I, P/D, suhteet esim. P:I:D 1:0.9:0.6 tai P/I, P/D, I/D ja sovittaa sopivat vakiotI/D ja sovittaa sopivat vakiot

Hyvyysfunktion painoarvojen valintaHyvyysfunktion painoarvojen valinta

Page 11: PID-säätimen parametrien optimointi GA:lla

Hyvyysarvot saadaan Hyvyysarvot saadaan askelvasteestaaskelvasteesta

0 2 4 6 8 10 12 140

0.2

0.4

0.6

0.8

1

1.2

1.4Step Response

Time (sec)

Ampl

itude

5% SettlingTime

Overshoot% Undershoot%

10-90% Risetime

Page 12: PID-säätimen parametrien optimointi GA:lla

HyvyysfunktioHyvyysfunktio

Halutaan siis minimoida kaikki hyvyysarvot.Halutaan siis minimoida kaikki hyvyysarvot.Summataan ne yhteen eri painoarvoilla, Summataan ne yhteen eri painoarvoilla,

esim. esim. 1*Risetime+2*Overshoot+3*Undershoot+1*Risetime+2*Overshoot+3*Undershoot+

1.5*Settlingtime1.5*Settlingtime

Pienin summa = paras parametriyhdistelmäPienin summa = paras parametriyhdistelmäParametrit riippuvaisia toisistaan?Parametrit riippuvaisia toisistaan?

Page 13: PID-säätimen parametrien optimointi GA:lla

Peruskriteerit täyttävät askelvasteetPeruskriteerit täyttävät askelvasteet

Liikaa Liikaa undershoottia! undershoottia! => säädetään => säädetään painoarvo painoarvo suuremmaksisuuremmaksi

GA:lle pitää GA:lle pitää opettaa opettaa millainen vaste millainen vaste on ”hyvä” on ”hyvä” vaste – toinen vaste – toinen GA?GA?

0 2 4 6 8 10 120

0.2

0.4

0.6

0.8

1

1.2

1.4

H

Step Response

Time (sec)

Ampl

itude

Optimized Parameters2nd Best Parameters3rd Best Parameters

Undershoot painoarvo: 2.3

0 2 4 6 8 10 12 14 160

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (sec)

Ampl

itude

Optimized Parameters2nd Best Parameters3rd Best Parameters

Undershoot painoarvo: 5.3

Page 14: PID-säätimen parametrien optimointi GA:lla

Hyvyysfunktio ”GA”Hyvyysfunktio ”GA”valitaan se vaste, joka näyttää parhaimmaltavalitaan se vaste, joka näyttää parhaimmalta

(training data) (training data)

0 5 100

0.5

1

1.51.

Time (sec)

Ampl

itude

0 5 100

0.5

1

1.52.

Time (sec)

Ampl

itude

0 5 100

0.5

1

1.53.

Time (sec)

Ampl

itude

0 5 10 15 200

0.5

1

1.54.

Time (sec)

Ampl

itude

Page 15: PID-säätimen parametrien optimointi GA:lla

Eli kaikilla vasteilla on nyt samat PID-parametrit, mutta eri Eli kaikilla vasteilla on nyt samat PID-parametrit, mutta eri hyvyysfunktion painoarvot (random) hyvyysfunktion painoarvot (random)

0 10 20 30 40 500

0.5

1

1.51.

Time (sec)

Ampl

itude

0 5 100

0.5

1

1.52.

Time (sec)

Ampl

itude

0 10 20 30 400

0.5

1

1.53.

Time (sec)

Ampl

itude

0 5 100

0.5

1

1.54.

Time (sec)

Ampl

itude

Page 16: PID-säätimen parametrien optimointi GA:lla

Valitaan taas se paras käyrä, tosin ei aina niin helppoaValitaan taas se paras käyrä, tosin ei aina niin helppoa

0 5 100

0.5

1

1.51.

Time (sec)

Ampl

itude

0 5 10 150

0.5

1

1.52.

Time (sec)

Ampl

itude

0 5 10 150

0.5

1

1.53.

Time (sec)

Ampl

itude

0 5 100

0.5

1

1.54.

Time (sec)

Ampl

itude

Page 17: PID-säätimen parametrien optimointi GA:lla

Yritetään valita pois ne vasteet, joissa on eniten Yritetään valita pois ne vasteet, joissa on eniten sitä ärsyttävää undershoottia...sitä ärsyttävää undershoottia...

0 5 100

0.5

1

1.51.

Time (sec)

Ampl

itude

0 5 10 150

0.5

1

1.52.

Time (sec)

Ampl

itude

0 2 4 6 80

0.5

1

1.53.

Time (sec)

Ampl

itude

0 5 10 150

0.5

1

1.54.

Time (sec)

Ampl

itude

Page 18: PID-säätimen parametrien optimointi GA:lla

Miten dataa pitäisi tulkita? Ovatko keskiarvot nyt Miten dataa pitäisi tulkita? Ovatko keskiarvot nyt ne optimaaliset?ne optimaaliset?

Parameter_R =Parameter_R =

0.9364 1.3335 0.7735 1.51600.9364 1.3335 0.7735 1.5160

Parameter_S =Parameter_S =

0.8356 4.7717 2.3711 2.40420.8356 4.7717 2.3711 2.4042

Parameter_O =Parameter_O =

6.0054 5.8083 1.7413 2.37466.0054 5.8083 1.7413 2.3746

Parameter_U =Parameter_U =

0.6490 2.4100 0.9179 5.24240.6490 2.4100 0.9179 5.2424

keskiarvo =keskiarvo =

1.13991.1399

keskiarvo =keskiarvo =

2.59562.5956

keskiarvo =keskiarvo =

3.98243.9824

keskiarvo =keskiarvo =

2.30482.3048

Page 19: PID-säätimen parametrien optimointi GA:lla

No kokeillaan!No kokeillaan!(Ei ihan riittänyt undershootin eliminoimiseen, (Ei ihan riittänyt undershootin eliminoimiseen,

tarvittaisiin ehkä vähän enemmän training-data tarvittaisiin ehkä vähän enemmän training-data yritteitä kuin 4 ?)yritteitä kuin 4 ?)

0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (sec)

Ampl

itude

Optimized Parameters2nd Best Parameters3rd Best Parameters

Populaatio = 100Iteraatiot = 50Elitismi = 5%Mutaatiotod.näk. 12.5%

Eli nyt ollaan opetettu GA:lle että vasteet Eli nyt ollaan opetettu GA:lle että vasteet tulee olla tämännäköiset. Ei kuitenkaan saisi tulee olla tämännäköiset. Ei kuitenkaan saisi vaikuttaa PID-parametrien hyvyyteen.vaikuttaa PID-parametrien hyvyyteen.

0 5 10 15 20 250

0.2

0.4

0.6

0.8

1

1.2

1.4

Step Response

Time (sec)

Ampl

itude

Optimized Parameters2nd Best Parameters3rd Best Parameters

Populaatio = 100Iteraatiot = 100Elitismi = 20%Mutaatiotod.näk. 12.5%

Page 20: PID-säätimen parametrien optimointi GA:lla

Miten voidaan parantaa?Miten voidaan parantaa? Suurempi elitismi, vähemmän uusia satunnais-Suurempi elitismi, vähemmän uusia satunnais-

kromosomejakromosomeja

Palikkahypoteesi saattaa olla se toimivin =>Palikkahypoteesi saattaa olla se toimivin =>

Crossover eliittien välillä rulettivalinta-Crossover eliittien välillä rulettivalinta-periaatteella, suurimmat todennäköisyydet niille periaatteella, suurimmat todennäköisyydet niille parhaimmille (vasemmassa laidassa)parhaimmille (vasemmassa laidassa)

Iteraatioiden edetessä kasvava mutatointiarvo (ja Iteraatioiden edetessä kasvava mutatointiarvo (ja todennäköisyys?). Etsitään tällä tavalla parempia todennäköisyys?). Etsitään tällä tavalla parempia arvoja optimin lähistölläarvoja optimin lähistöllä

Miten ne alan ”gurut” ovat tätä toteuttaneet? Miten ne alan ”gurut” ovat tätä toteuttaneet? Googlaamalla löytää vaikka kuinka paljon...Googlaamalla löytää vaikka kuinka paljon...

Page 21: PID-säätimen parametrien optimointi GA:lla

To be continued...To be continued...