NEURAALISÄÄTÖ

Yleistä

Neuraalilaskennan harjoitustyö tehdään käyttäen MATLAB-ohjelmistoa [2,3,4] sekä MATLABiin tehtyjä laajennusfunktioita. Työn voi tehdä millä tahansa koneella, jossa on MATLAB-ohjelmisto sekä neuraalilaskennan töissä käytettävä MATLAB-funktioista koostuva Neural Network Toolbox [5]. Neural Network Toolbox on asennettu Maarintalon työasemille. Toolboxin manuaali löytyy Maarintalon työasemien luota sekä Informaatiotekniikan laboratoriosta.

Tiedostot

Työssä tarvittavat tiedostot:

Tiedostot löytyvät myös Maarintalon työasemilta löytyvän hakemiston /p/edu/tik-61.170 alihakemistoista. Seuraavassa työssä tarvittavat alihakemistot sisältöineen:

neural/simu sisältää työssä tarvittavat tiedostot. MATLAB-formaattinen tiedosto trset.mat sisältää opetusaineistoa MATLAB-matriisimuodossa. simu.m sisältää simulaattorin MATLAB-koodin ja muut MATLAB-tiedostot (*.m) sisältävät simulaattorin käyttämiä funktioita.

Työn suorittaminen

Simulaattori

Työhön liittyy simulaattori, joka simuloi kahden auton käyttäytymistä ympyräradalla. Etummainen auto vaihtelee nopeuttaan tietyllä satunnaisuudella välillä 0-40m/s (0-144km/h) ja toisen auton tehtävänä on seurata johtaja-autoa (auto1) siten, että ei tapahdu törmäystä. Koska kyseessä on ympyrärata, ei seuraaja-auto (auto2) saa ajaa liian hiljaa eikä liian lujaa, vaan sen nopeuden on seurattava johtaja-auton nopeutta. Ympyräradan pituus on 1000m. Johtaja-auto kiihdyttelee ja jarruttelee satunnaisesti. Simulaattorissa on huomioitu seuraaja-auton reaktioaika (käytetty vakioarvoa 1.5s). Simulaation aika-askel on 0.1s. Autojen kiihtyvyys vaihtelee välillä -3m/s2 - 3m/s2. Seuraaja-auton nopeus voi liikkua samalla välillä kuin johtaja-auton (0-40m/s). Seuraaja-autolle on siis tuotettava sellainen säätö, että auto pystyy seuraamaan toista autoa törmäämättä. Säädöllä tässä yhteydessä tarkoitetaan seuraaja-auton kiihtyvyyttä.

Simulaattorin puute on se, että siitä puuttuu kunnollinen säätöfunktio. Simulaattorissa on olemassa vain funktio rcontrol, joka tuottaa satunnaisen säädön seuraaja-autolle.

Simulaattorissa voi olla tarpeen muutella seuraavia parametreja : simul_time (default 2000s) on haluttu simulointiaika sekunteina, show_loop (default 5s) on simulointitilanteen näyttämisväli simulointisekunneissa.

Tietorakenteet ja opetusdata

Simulaattori käyttää kahta erilaista vektoria päätietotyyppeinään. Nämä vektorit ovat parametrivektori pv sekä tilavektori v. Vektorit ovat seuraavaa muotoa :

\begin{displaymath}
pv = [ ts \: rt \: a_{max} \: a_{min} \: v_{max} \: v_{min} \: bias 
\: len_{tr}],\end{displaymath} (1)

missä ts on aika-askel (0.1s), rt on reaktioaika (1.5s), vmin on miniminopeus (0m/s), vmax on maksiminopeus (40m/s), amin on minimikiihtyvyys (-3m/s2), amax on maksimikiihtyvyys (3m/s2), bias on tässä törmäysmarginaali (2m) ja lentr on radan pituus (1000m).

\begin{displaymath}
v = [p_1 \: v_1 \: a_1 \: p_2 \: v_2 \: a_2],\end{displaymath} (2)

missä p1, v1 ja a1 ovat johtaja-auton paikka radalla, johtaja-auton nopeus ja kiihtyvyys. p2, v2 ovat seuraaja-auton paikka ja nopeus. a2 on seuraaja-auton kiihtyvyys reaktioajan päästä.

Tiedostossa trset.mat on 800 tilavektoria eräästä toimivan säädön simuloinnista. Nämä tilavektorit ovat tiedoston sisältämän matriisin trset vaakarivit, jotka ovat tilavektorin v muotoisia.

Tilavektorina tietyllä hetkellä on säädön tapauksessa järkevää käyttää vektoria

\begin{displaymath}
sv = [d \: v_1 \: v_2 \: a_1],\end{displaymath} (3)

missä d on autojen välinen etäisyys radalla (esimerkiksi autosta 2 autoon 1. Tämän voi laskea funktiolla distance). Muut vektorin komponenttien merkinnät ovat samat kuin edellä esitetyt.

Työn rakenne

Työssä tehtävänä on käyttää tiedoston trset.mat sisältämää dataa sopivien opetusnäytteiden aikaansaamiseksi ja opettaa (esimerkiksi yhden piilokerroksen omaava) MLP-neuraaliverkko (Multi-Layer Perceptron) opetusalgoritmina backpropagation [1] suorittamaan seuraaja-auton nopeuden säätöä näytevektorina 4-elementtinen tilavektori, joka sisältää autojen välisen etäisyyden (seuraaja-autosta johtaja-autoon), autojen nopeudet sekä johtaja-auton kiihtyvyyden (nämä viivästettynä reaktioajalla) ja tuottaa tuloksena senhetkisen kiihtyvyyden seuraaja-autolle. Etäisyyden voit laskea esimerkiksi käyttämällä funktiota

distance(v, pv),

(4)

missä v on tilavektori ja pv simulaattorin parametrivektori.

Työssä opetetaan neuraaliverkko sopivalla määrällä trset-matriisin dataa tavoitearvona seuraaja-auton kiihtyvyys reaktioajan päästä. Tämän jälkeen toteutetaan säätöfunktio

a = ncontrol(painot, biasit, hlp, pv),

(5)

missä hlp on reaktioajalla viivästetty nelielementtinen tilavektori ja pv on simulaattorin parametrivektori.

Kun neuraaliverkko on opetettu ja säätöfunktio tehty omaan m-tiedostoonsa, ajetaan ensin vähän aikaa simulaattoria kontrollifunktiolla

a = rcontrol(pv),

(6)

joka tuottaa seuraaja-autolle satunnaisen kontrollin ja aiheuttaa törmäilyä. Simuloi rcontrolia käyttäen lyhyehkö simulointiaika (esim. 100s). Tämän jälkeen poistetaan rcontrol-funktio kommentoimalla käytöstä ja poistetaan kommentti ncontrol-funktiosta. Mikäli käytät yhden piilokerroksen sisältävää MLP-verkkoa säätöverkkona ja argumentit ovat samassa järjestyksessä, ei muita muutoksia kuin mahdollisesti nelikomponenttiseen tilavektoriin siirtyminen tarvita. Muussa tapauksessa muuta argumentit vastaamaan oman säätöfunktiosi argumentteja. Tätä simuloidaan riittävän pitkä simulointiaika (yli 1000 simuloitua sekuntia).

Työselostus

Työselostus alkaa kansilehdellä, jossa on kurssin koodi, kurssin nimi, oma nimesi, osastosi, email-osoitteesi, opintokirjan numero sekä työselostuksen palautuspäivämäärä. Työselostuksessa kuvataan lyhyesti valitut menetelmät ja käytetyt parametrit sekä perustellaan menetelmien ja parametrien valintaa lyhyesti. Tulokset tulee esittää selkeästi. Työselostuksessa tulee esittää valitun opetusnäytejoukon koko, suhteellinen virhe opetuksen jälkeen ja kuva neuraaliverkon tuottamasta säädöstä ja tavoitesäädöstä samassa kuvassa opetusjoukolla. Simuloinnista on selostuksessa esitettävä törmäysten määrä satunnaisella säädöllä (esim törmäyksiä/min arvo) ja neuraalisäädöllä. Työn liitteenä tulee olla omien MATLAB-ohjelmiesi listaukset, jotka on koodattu "hyvää ohjelmointitapaa" noudattaen , mikä tarkoittaa, että ohjelmat on asiallisesti kommentoituja ja muutoinkin luettavuudeltaan selkeitä.

References

1
S. Haykin. Neural Networks - a Comprehensive Foundation, Prentice Hall 1998

2
S.K. Kivelä. MATLAB-opas, 2. painos 1988

3
A Prewiev of MATLAB, The Math Works Inc. 1989

4
C. Moler et al. PC-MATLAB User's Guide, The Math Works Inc. 1987

5
Neural Network Toolbox User's Manual, The Math Works Inc. 1992


http://www.cis.hut.fi/Opinnot/T-61.261/harjtyo/saato/neuralcontrol.shtml
matti.aksela@hut.fi
Friday, 07-Jun-2002 14:21:26 EEST