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
PID-säätimen parametrien PID-säätimen parametrien optimointi GA:llaoptimointi GA:lla
(Oma projekti/harjoitustyö)(Oma projekti/harjoitustyö)
Alkuperäinen prosessiAlkuperäinen prosessi
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
Kuvitteellinen prosessiStaattinen vahvistus = 1
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)
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
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);
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)
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
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
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
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?
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
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
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
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
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
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
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%
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...
To be continued...To be continued...