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(!)
Heti hankalampi tapaus, undershoottia esiintyy vaikka väkisin
Populaatio
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 parametriyhdistelmät vasemmalle
Find(pienimmän arvon indeksi) Sort(hyvyysvektori) Komentoja:
Säästetään ne parhaimmat ja lisätään niiden risteytykset ja/tai mutaatiot
Sorry, crossover puuttuu vielä kokonaan... Ei ole ihan oppikirjan mukainen GA
Ongelmia...
Crossover: geenien vaihto ja rulettivalinta
P, I ja D riippuvaisia toisistaan =>
Ei voida useamman optimointikerran jälkeen yksinkertaisesti olettaa kromosomien (vastaavien parametrien) keskiarvojen olevan ne ”optimaaliset”.
Pitäisi ehkä huomioida geenien väliset suhteet esim. P:I:D 1:0.9:0.6 tai P/I, P/D, I/D ja sovittaa sopivat vakiot
Hyvyysfunktion painoarvojen valinta
Hyvyysarvot saadaan askelvasteesta
Hyvyysfunktio
Halutaan siis minimoida kaikki hyvyysarvot.
Summataan ne yhteen eri painoarvoilla, esim.
1*Risetime+2*Overshoot+3*Undershoot+
1.5*Settlingtime
Pienin summa = paras parametriyhdistelmä
Parametrit riippuvaisia toisistaan?
Peruskriteerit täyttävät askelvasteet
Liikaa undershoottia! => säädetään painoarvo suuremmaksi
GA:lle pitää opettaa millainen vaste on ”hyvä” vaste – toinen GA?
Hyvyysfunktio ”GA”valitaan se vaste, joka näyttää parhaimmalta (training data)
Eli kaikilla vasteilla on nyt samat PID-parametrit, mutta eri hyvyysfunktion painoarvot (random)
Valitaan taas se paras käyrä, tosin ei aina niin helppoa
Yritetään valita pois ne vasteet, joissa on eniten sitä ärsyttävää undershoottia...
Miten dataa pitäisi tulkita? Ovatko keskiarvot nyt ne optimaaliset?
No kokeillaan!(Ei ihan riittänyt undershootin eliminoimiseen, tarvittaisiin ehkä vähän enemmän training-data yritteitä kuin 4 ?)
Eli nyt ollaan opetettu GA:lle että vasteet tulee olla tämännäköiset. Ei kuitenkaan saisi vaikuttaa PID-parametrien hyvyyteen.
Miten voidaan parantaa?
Suurempi elitismi, vähemmän uusia satunnais-kromosomeja
Palikkahypoteesi saattaa olla se toimivin =>
Crossover eliittien välillä rulettivalinta-periaatteella, suurimmat todennäköisyydet niille parhaimmille (vasemmassa laidassa)
Iteraatioiden edetessä kasvava mutatointiarvo (ja todennäköisyys?). Etsitään tällä tavalla parempia arvoja optimin lähistöllä
Miten ne alan ”gurut” ovat tätä toteuttaneet? Googlaamalla löytää vaikka kuinka paljon...
Comments