Riadenie inverzného kyvadla pomocou neurónových sietí
Riadenie inverzného kyvadla pomocou neurónových sietí Riadenie inverzného kyvadla pomocou neurónových sietí
TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTROTECHNIKY A INFORMATIKY Riadenie inverzného kyvadla pomocou neurónových sietí Milan DOSTAL BAKALÁRSKA PRÁCA 2009
- Page 2 and 3: TECHNICKÁ UNIVERZITA V KOŠICIACH
- Page 4: Abstrakt v SJ Bakalárska práca sa
- Page 7 and 8: Poďakovanie Týmto sa chcem poďak
- Page 9 and 10: FEI KKUI Zoznam symbolov a skratiek
- Page 11 and 12: FEI KKUI 1 Úvod do riadenia neuró
- Page 13 and 14: FEI KKUI Kde N0 je počet výstupn
- Page 15 and 16: FEI KKUI 2 Úvod do problematiky in
- Page 17 and 18: FEI KKUI Teraz zavedieme substitúc
- Page 19 and 20: FEI KKUI v druhej rovnici (13) za X
- Page 21 and 22: FEI KKUI 3 Návrh systému pre riad
- Page 23 and 24: FEI KKUI otestovať neurónovú sie
- Page 25 and 26: FEI KKUI Tab. 2: Výstupné hodnoty
- Page 27 and 28: FEI KKUI Výber aktivačnej funkcie
- Page 29 and 30: FEI KKUI Obr. 11: Na grafe po osi x
- Page 31 and 32: FEI KKUI Topológia 6-6-1 Obr. 14:
- Page 33 and 34: FEI KKUI Topológia 6-40-1 Obr. 18:
- Page 35 and 36: FEI KKUI Topológia 6-2-2 Obr. 22:
- Page 37 and 38: FEI KKUI Topológia 6-12-2 Obr. 26:
- Page 39 and 40: FEI KKUI 4.3 Topológia NN so šies
- Page 41 and 42: FEI KKUI Topológia 6-6-3 Obr. 34:
- Page 43 and 44: FEI KKUI Topológia 6-40-3 Obr. 38:
- Page 45 and 46: FEI KKUI Na riadenie modelu inverzn
- Page 47 and 48: FEI KKUI Start Incializácia kontex
- Page 49 and 50: FEI KKUI 7 Záver Cieľom tejto pr
- Page 51: FEI KKUI Prílohy Príloha A: CD m
TECHNICKÁ UNIVERZITA V KOŠICIACH<br />
FAKULTA ELEKTROTECHNIKY A INFORMATIKY<br />
<strong>Riadenie</strong> <strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong> <strong>neurónových</strong> <strong>sietí</strong><br />
Milan DOSTAL<br />
BAKALÁRSKA PRÁCA<br />
2009
TECHNICKÁ UNIVERZITA V KOŠICIACH<br />
FAKULTA ELEKTROTECHNIKY A INFORMATIKY<br />
KATEDRA KYBERNETIKY A UMELEJ INTELIGENCIE<br />
<strong>Riadenie</strong> <strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong> <strong>neurónových</strong> <strong>sietí</strong><br />
BAKALÁRSKA PRÁCA<br />
Milan DOSTAL<br />
Vedúci bakalárskej práce: Ing. Rudolf Jakša, PhD.<br />
Konzultant bakalárskej práce: Ing. Rudolf Jakša, PhD.<br />
Košice 2009
Analytický list<br />
Autor: Milan Dostal<br />
Názov práce: <strong>Riadenie</strong> <strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong> <strong>neurónových</strong> <strong>sietí</strong><br />
Podnázov práce:<br />
Jazyk práce: slovenský<br />
Typ práce: Bakalárska práca<br />
Počet strán: 51<br />
Akademický titul: Bakalár<br />
Univerzita: Technická univerzita v Košiciach<br />
Fakulta: Fakulta elektrotechniky a informatiky (FEI)<br />
Katedra: Katedra kybernetiky a umelej inteligencie (KKUI)<br />
Študijný odbor: Kybernetika<br />
Študijný program: Kybernetika<br />
Mesto: Košice<br />
Vedúci práce: Ing. Rudolf Jakša, PhD.<br />
Konzultanti práce: Ing. Rudolf Jakša, PhD.<br />
Dátum odovzdania: 1. jún 2009<br />
Dátum obhajoby: 15.06.2009<br />
Kľúčové slová: Inverzné kyvadlo, neurónová sieť, model, topológia, riadenenie<br />
Kategória konspekt: Výpočtová technika; Teória systémov. Automatické systémy.<br />
Kybernetika. Informačné systémy<br />
Citovanie práce: Dostal, Milan : <strong>Riadenie</strong> <strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong><br />
<strong>neurónových</strong> <strong>sietí</strong>. Bakalárska práca. Košice: Technická<br />
univerzita v Košiciach, Fakulta elektrotechniky a informatiky ,<br />
2009. 51 s.<br />
Názov práce v AJ: Inverted Pendulum Control Using Neural Networks<br />
Podnázov práce v AJ:<br />
Kľúčové slová v AJ: Nural Network, Topology, Design
Abstrakt v SJ<br />
Bakalárska práca sa zaoberá návrhom riadenia pre model <strong>inverzného</strong> <strong>kyvadla</strong> použitím<br />
neurónovej siete. Popisuje úvod do riadenia systémov a zameriava sa na paradigmu neuroriadenia.<br />
V neuroriadení sa zameriava na algoritmus učenia so spätným šírením chyby a popisuje systém<br />
<strong>inverzného</strong> <strong>kyvadla</strong>. Pre model <strong>inverzného</strong> <strong>kyvadla</strong> navrhujú neurónové siete, kde jednotlivé<br />
navrhované topológie sú simulované v Štuttgardskom neurónovom simulátore (SNNS). Výsledky<br />
vyhodnocuje a porovnáva jednotlivé topológie <strong>neurónových</strong> <strong>sietí</strong>. Najlepšie navrhnuté riešenie sa<br />
aplikuje na riadenie modelu <strong>inverzného</strong> <strong>kyvadla</strong>.<br />
Abstrakt v AJ<br />
This bachelor work deals with a design control for the inverted pendulum model by using<br />
the neural network. It describes the introduction to the systems control and focuses on the<br />
paradigm of neural control. In the neural control it focuses on the algorithm of learning with a<br />
backpropagation of error and describes the system of the inverted pendulum. For the inverted<br />
pendulum model, the neural networks are designed, where the individual suggested topologies are<br />
simulated in the Stuttgard Neural Network Simulator (SNNS). The results are evaluated and<br />
compared with each topology of neural network. The best designed solution is applied to the<br />
control of the inverted pendulum model.
Čestné vyhlásenie<br />
Vyhlasujem, že som celú bakalársku prácu vypracoval samostatne s použitím uvedenej<br />
odbornej literatúry.<br />
Košice, 15.06.2009<br />
..........................................<br />
vlastnoručný podpis
Poďakovanie<br />
Týmto sa chcem poďakovať vedúcemu práce za pripomienky a odbornú pomoc pri<br />
vypracovaní práce.
Obsah<br />
Zoznam symbolov a skratiek.......................................................................................................9<br />
Úvod.............................................................................................................................................10<br />
1 Úvod do riadenia neurónovou sieťou ................................................................................11<br />
1.1 Učenie so spätným šírením chyby..................................................................................12<br />
2 Úvod do problematiky <strong>inverzného</strong> <strong>kyvadla</strong>......................................................................15<br />
2.1 Model <strong>inverzného</strong> <strong>kyvadla</strong>..............................................................................................20<br />
3 Návrh systému pre riadenie <strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong> neurónovej siete................21<br />
3.1 Model <strong>inverzného</strong> <strong>kyvadla</strong>..............................................................................................21<br />
3.2 Návrh riadenia virtuálneho modelu <strong>kyvadla</strong>...................................................................21<br />
3.3 Množina trénovacich a testovacích dát...........................................................................26<br />
4 Overenie výsledkov návrhu................................................................................................28<br />
4.1 Topológie NN so šiestimi vstupmi a s jedným výstupom...............................................28<br />
4.2 Topológia NN zo šiestimi vstupmi a s dvoma výstupmi................................................34<br />
4.3 Topológia NN so šiestimi vstupmi a s tromi výstupmi...................................................39<br />
5 Vyber najvhodnejšieho riešenia..........................................................................................44<br />
6 Implementácia neurónovej siete na model <strong>inverzného</strong> <strong>kyvadla</strong>......................................46<br />
7 Záver.....................................................................................................................................49<br />
Zoznam použitej literatúry........................................................................................................50<br />
Prílohy.........................................................................................................................................51
FEI KKUI<br />
Zoznam symbolov a skratiek<br />
M hmotnosť vozíka<br />
m hmotnosť <strong>kyvadla</strong><br />
F sila pôsobiaca na vozík<br />
g gravitačné zrýchlenie<br />
l dĺžka <strong>kyvadla</strong><br />
x dráha vozíka<br />
x' rýchlosť vozíka<br />
x'' zrýchlenie vozíka<br />
θ uhol vychýlenia <strong>kyvadla</strong><br />
θ' uhlová rýchlosť <strong>kyvadla</strong><br />
θ'' uhlové zrýchlenie <strong>kyvadla</strong><br />
b trecia sila pôsobiaca na vozík<br />
I trecia sila pôsobiaca na kyvadlo<br />
9
FEI KKUI<br />
Úvod<br />
V oblasti riadenia a regulácie je neodmysliteľnou súčasťou systémov vo<br />
všeobecnosti regulátor, alebo takzvaný akčný člen, ktorého parametre musia presne<br />
vyhovovať pre daný riadený systém. Na to, aby sme vedeli na základe stanovených<br />
požiadaviek navrhnúť regulátor pre systém, musíme poznať riadený systém a<br />
potrebujeme poznať technológie, na základe ktorých vieme navrhnúť daný regulátor. V<br />
našom prípade sa budeme zaoberať s neuroriadením, pretože táto problematika je pre<br />
nás zaujímavá a veľmi rozšírená, tak sa pokúsime bližšie zoznámiť z možnosťami a<br />
princípom takéhoto riadenia na modeli <strong>inverzného</strong> <strong>kyvadla</strong>.<br />
10
FEI KKUI<br />
1 Úvod do riadenia neurónovou sieťou<br />
<strong>Riadenie</strong> je taká činnosť, ktorou sa snažíme pôsobiť na systém tak, aby sme<br />
pôsobili na akčný člen žiadanými hodnotami. Existuje viacero definícií pre riadenie, ale<br />
dôležité je uvedomiť si, čo je riadenie a čo umožňuje.<br />
Na procese riadenia sa zúčastňujú:<br />
– riadený systém (je to systém ktorý chceme riadiť),<br />
– riadiaci systém (je to regulátor, ktorým chceme riadiť systém),<br />
– signály, <strong>pomocou</strong> ktorých prebieha komunikácia medzi zúčastnenými<br />
systémami.<br />
– cieľ riadenia, ktorý dáva procesu riadenia zmysel,<br />
– prostredie, v ktorom sa riadenie uskutočňuje a ktoré na neho vplýva, ako sú<br />
napríklad poruchy rôzneho charakteru.<br />
Existuje niekoľko paradigiem riadenia, ale kvôli prehľadu vymenujeme len tie základné<br />
a neskôr sa zameriame v ďalších kapitolách len na jednu paradigmu.<br />
– kompenzačné riadenie,<br />
– spätnoväzobné riadenie,<br />
– riadenie s modelom,<br />
– adaptívne riadenie,<br />
– centralizované a decentralizované riadenie,<br />
– riadenie zložitých systémov,<br />
– lineárne riadenie,<br />
– riadenie systémov s diskrétnymi udalosťami,<br />
– neuroriadenie.<br />
11
FEI KKUI<br />
V súčastnosti je výskum v oblasti riadenia na takej úrovni, že máme pred sebou<br />
širokú škálu možností, z ktorých môžeme vybrať vhodnú technológiu riadenia na daný<br />
riadený systém. Preto jednou z možností riadenia systémov je neuroriadenie, kde takéto<br />
riadenie je aplikované neurónovou sieťou. Neurónové siete sa postupne dostávajú na<br />
úroveň všeobecného riadenia, čo umožňuje rôznorodé využitie v oblasti riadenia.<br />
Neurónová sieť NN (Nueral Network) je zložitý systém, ktorého hlavnými<br />
vlastnosťami sú: nelinearita, čo predurčuje na použite nielen v prostredí linearných<br />
systémov, ale aj v prostredí nelineárnych systémov [1]. Neurónová sieť patrí do systému<br />
MIMO (Multiple Input Multiple Output), teda umožňuje riadenie systémov s veľkým<br />
počtom vstupov a výstupov. Prirodzenou schopnosť všetkých NN je schopnosť učiť sa a<br />
adaptovať sa.<br />
Existujú dva pohľady na objekt ,,Neurónová sieť“. Štandardný je ten, podľa<br />
ktorého je neurónová sieť modelom mozgu, prípadne nervovej sústavy. Ďalší však je<br />
iný, matematicky orientovaný pohľad, podľa ktorého tvoria neurónové siete triedu<br />
algoritmov pre paralelne distribuované spracovanie dát (Parallel Distributed<br />
Processing) a vlastne nejaký univerzálny matematický nástroj. Neurónové siete<br />
môžeme kategorizovať podľa učiaceho algoritmu na viaceré skupiny, z dôvodu rozsahu<br />
práce sa zameriame na učiaci algoritmus: učenie so spätným šírením chyby<br />
(Backpropagation of error). Viac teórie o <strong>neurónových</strong> sietiach nebudeme rozvádzať,<br />
pretože by to malo širší rozsah, ale pre záujem si môžete pozrieť v nasledujúcej<br />
bibliografii [1].<br />
1.1 Učenie so spätným šírením chyby<br />
V súčasností je veľká väčšina aplikácií založená na tomto učiacom sa algoritme<br />
(backpropagation, error backpropagation, backpropagation of error). Je považovaný za<br />
základný učiaci sa algoritmus. Ide o rekurzívnu gradientovú metódu na nastavenie váh<br />
neurónovej siete s ohľadom na minimalizáciu učiacej chyby J, ktorá je definovaná<br />
vzťahom:<br />
1 0 N<br />
∑<br />
i=<br />
1<br />
p<br />
p p 2<br />
J = ( evi<br />
− xi<br />
) . (1)<br />
2<br />
12
FEI KKUI<br />
Kde N0 je počet výstupných neurónov v sieti, evi je požadovaná hodnota aktivácie<br />
i-tého neurónu, xi je aktivácia i-tého neurónu a index p znamená, že údaj sa vzťahuje k<br />
p-tej vzorke. Pre každý neurón platí:<br />
M<br />
∑<br />
j = 1<br />
x i = fi<br />
( ii<br />
) ii = wij<br />
x j + θ i.<br />
(2)<br />
Kde ii je vstup i-tého neurónu, fi je aktivačná funkcia i-tého neurónu, M je počet<br />
liniek vstupujúcich do i-tého neurónu, wij je váha na linke z j-tého neurónu do i-tého<br />
neurónu a θi je prah i-tého neurónu (externý vstup neurónu). Keďže ide o gradientovú<br />
metódu, pre zmenu váhy Δwij platí:<br />
∂ J ∂ J ∂ ii<br />
Δ wij = − γ = − γ<br />
= γ δ ix<br />
j , (3)<br />
∂ w ∂ i ∂ w<br />
ij<br />
kde γ je konštanta udávajúca rýchlosť zmeny váh (learning rate) a pre δi platí:<br />
Ak je i-tý neurón výstupný, tak platí:<br />
Ak je i-tý neurón nie je výstupný, tak platí:<br />
δ<br />
i<br />
∑<br />
= − f ′ ( i )<br />
∂ J ∂ J ∂ xi<br />
∂ J<br />
δ i = − = −<br />
= − f ′ ( ii<br />
). (4)<br />
∂ i ∂ x i ∂ x<br />
i<br />
i<br />
i<br />
∂ J<br />
δ i = − f ′ ( ii<br />
) = ( evi<br />
− xi<br />
) f ′ ( ii<br />
). (5)<br />
∂ x<br />
∑<br />
= − f ′ ( i )<br />
i<br />
i<br />
Nh<br />
Nh<br />
h= 1 h<br />
∂ J<br />
w<br />
∂ i<br />
h= 1 h<br />
i<br />
∂ J ∂ ih<br />
= − f ′ ( ii<br />
) ∑<br />
∂ i ∂ x<br />
hi<br />
=<br />
i<br />
f ′ ( i )<br />
i<br />
Nh<br />
∑<br />
h=<br />
1<br />
δ<br />
i<br />
,<br />
ij<br />
i<br />
∂ J<br />
∂ i<br />
h= 1 h<br />
h<br />
Nh<br />
w<br />
hi<br />
∂<br />
∂ x<br />
Ni<br />
∑<br />
i i=<br />
1<br />
kde Nh je počet neurónov, do ktorých vedú z i-tého neurónu linky a ih sú vstupy týchto<br />
neurónov. Ni je počet neurónov, z ktorých vedú linky do neurónov so vstupmi ih a xi sú<br />
aktivácie týchto neurónov.<br />
Posledný vzťah je základným vzťahom backpropagation a vyjadruje rekurzívne spätné<br />
šírenie chybového signálu δ od výstupných neurónov až po vstup siete. Z hodnoty tohto<br />
signálu na jednotlivých neurónoch sa potom odvádza zmena váh na linkách Δij= γδi xi. Je<br />
vidíme, že backpropagation je veľmi univerzálny algoritmus. Od aktivačnej funkcie<br />
požaduje iba znalosť jej derivácie. Učiacu chybu, od ktorej sa odvádza celé učenie, v<br />
13<br />
w<br />
hi<br />
x<br />
i<br />
=<br />
(6)
FEI KKUI<br />
podstate je tiež možné predefinovať bez podstatných zmien v algoritme. Uvedená<br />
použitá teória je prevzatá z [3].<br />
14
FEI KKUI<br />
2 Úvod do problematiky <strong>inverzného</strong> <strong>kyvadla</strong><br />
Princíp <strong>inverzného</strong> <strong>kyvadla</strong><br />
Inverzné kyvadlo môže byť realizované viacerými spôsobmi. Zameriame sa na<br />
typ <strong>inverzného</strong> <strong>kyvadla</strong>, ktoré je na vozíku. Na vrchu vozíka je pripevnená tyč jedným<br />
koncom o pohyblivý čap. Je to systém s dvoma stupňami voľnosti, s posuvným a<br />
rotačným. Tyč nemusí mať konštantnú dĺžku a hmotnosť, kde tieto parametre sú<br />
sústredené na konci tyče. Pre lepšiu predstavu <strong>inverzného</strong> <strong>kyvadla</strong> je zobrazené na obr.<br />
1. Toto kyvadlo z pohľadu riadenia môžeme nazvať riadeným systémom, ktorý zatiaľ<br />
nemá riešené riadenie.<br />
Funkcia <strong>inverzného</strong> <strong>kyvadla</strong> spočíva pôsobením silou na vozík z jednej alebo z<br />
druhej strany, čím sa vozík posúva po dráhe. Pripevnená tyč na pohyblivom čape<br />
balansuje po rovine, ktorá je kolmá na dráhu vozíka. Pôsobením silou na vozík sa<br />
snažíme udržať balansujúcu tyč v kolmej polohe voči dráhe vozíka.<br />
Obr. 1: Inverzné kyvadlo na vozíku, na vrchu vozíka je pripevnená tyč jedným koncom o<br />
pohyblivý čap. Je to systém s dvoma stupňami voľnosti, s posuvným a rotačným. Tyč nemusí mať<br />
konštantnú dĺžku a hmotnosť, kde tieto parametre sú sústredené na konci tyče.<br />
15<br />
čap
FEI KKUI<br />
Popis <strong>kyvadla</strong><br />
Tento systém vieme popísať niekoľkými spôsobmi, buď Lagrange-Eulerovou<br />
rovnicou <strong>pomocou</strong> rozdielu kinetickej energie a potenciálnej energie viď. [2], alebo<br />
<strong>pomocou</strong> síl a vektorov pôsobiacich na kyvadlo obr. 2 viď.[5].<br />
F<br />
mg<br />
Teda vychádzame zo súčtu síl pôsobiacich na kyvadlo:<br />
m<br />
Obr. 2: Popis jednotlivých zložiek pôsobiacich<br />
na inverzné kyvadlo<br />
M x<br />
+ bx<br />
+ N = F,<br />
(7)<br />
výsledná sila F je rovná sume síl pôsobiacich na vozík pri horizontálnom (vodorovnom)<br />
posune vozíka. Teda M x<br />
je sila vozíka, b x je trecia sila pôsobiaca proti vozíku a vektor<br />
N je sila, ktorá pôsobí z horizontálneho vychýlenia tyče na vozík. Teda tento vektor N<br />
viď. obr. 3 a 4 je rovný nasledujúcim zložkám, ktoré pôsobia na tyč <strong>kyvadla</strong>:<br />
2<br />
N = mx<br />
+ mlθ<br />
cosθ<br />
− mlθ<br />
sin θ , (8)<br />
kde θ 2<br />
ml cosθ<br />
je sila <strong>kyvadla</strong> a ml θ sin θ je odstredivá sila <strong>kyvadla</strong>.<br />
l<br />
θ<br />
M<br />
16<br />
x<br />
čap<br />
bx'
FEI KKUI<br />
Teraz zavedieme substitúciu do prvej rovnice (7) za N dosadíme druhú rovnicu (8)<br />
a po úprave dostávam pre tento systém prvú pohybovú rovnicu v tvare:<br />
2<br />
( M + m)<br />
x<br />
+ bx<br />
+ mlθ<br />
cosθ<br />
− mlθ<br />
sin θ = F.<br />
(9)<br />
m<br />
F<br />
Iθ' 2<br />
l/2<br />
N<br />
mg<br />
I<br />
N<br />
θ<br />
P<br />
Obr. 4: Popis zložiek na tyči <strong>inverzného</strong> <strong>kyvadla</strong><br />
17<br />
M<br />
Obr. 3: Zobrazenie síl pôsobiacich na vozík<br />
P<br />
Iθ''<br />
x''<br />
x<br />
x<br />
čap<br />
b x
FEI KKUI<br />
Druhú pohybovú rovnicu získame sumou síl pôsobiacich kmitavo na kyvadlo. Z<br />
obrázka obr. 3 popíšeme nasledujúcu rovnicu:<br />
Psin θ + N cosθ<br />
− mg sin θ = mlθ<br />
+ mx<br />
cosθ<br />
. (10)<br />
Aby sme zjednodušili výpočet, musíme sa zbaviť vektorov P a N v rovnici.<br />
Urobíme sumu momentov okolo stredu <strong>kyvadla</strong> a dostaneme:<br />
rovnicu:<br />
− Pl sin θ − Nl cosθ<br />
= Iθ.<br />
(11)<br />
Kombináciou týchto dvoch rovníc (10) a (11) dostaneme druhú dynamickú<br />
2<br />
( I + ml ) θ + mgl sin θ = − mlx<br />
cosθ<br />
. (12)<br />
Z týchto dvoch pohybových rovníc (9) a (12) dostaneme prenosovú funkciu<br />
systému, ktorú linearizujeme analyticky. Najprv urobíme Laplaceovú transformáciu<br />
týchto pohybových rovníc.<br />
( I + ml<br />
2<br />
) Φ ( s)<br />
s<br />
( M + m)<br />
X ( s)<br />
s<br />
2<br />
2<br />
2<br />
− mglΦ<br />
( s)<br />
= mlX ( s)<br />
s<br />
2<br />
+ bxX ( s)<br />
s − mlΦ<br />
( s)<br />
s = U ( s).<br />
(13)<br />
Počas vyjadrenia prenosovej funkcie predpokladáme, že počiatočné podmienky<br />
budú nulové. Na uhol Φ sa budeme pozerať ako na výstup a dostaneme X(s):<br />
2<br />
⎡ ( I + ml ) g ⎤<br />
X ( s)<br />
= ⎢<br />
− Φ ( s),<br />
2 ⎥<br />
(14)<br />
⎣ ml s ⎦<br />
18
FEI KKUI<br />
v druhej rovnici (13) za X(s) dosadíme rovnicu (14) a dostaneme:<br />
2<br />
2<br />
⎡ ( I + ml ) g ⎤ 2 ⎡ ( I + ml ) g ⎤<br />
2<br />
( M + m)<br />
⎢<br />
− ⎥ Φ ( s)<br />
s + b⎢<br />
− ⎥ Φ ( s)<br />
s − mlΦ<br />
( s)<br />
s = U ( s),<br />
(15)<br />
⎣ ml s ⎦<br />
⎣ ml s ⎦<br />
Φ(s) musíme prehodiť na pravú stranu a po úprave dostaneme:<br />
kde<br />
Φ ( s)<br />
=<br />
U ( s)<br />
s<br />
4<br />
2<br />
b(<br />
I + ml ) 3<br />
+ s −<br />
q<br />
ml 2<br />
s<br />
q<br />
( M + m)<br />
mgl 2<br />
s −<br />
q<br />
,<br />
bmgl<br />
s<br />
q<br />
2<br />
2<br />
q = [ ( M + m)(<br />
I + ml ) − ( ml)<br />
]. (17)<br />
Z prenosovej funkcie uvedenej vyššie (16) môžeme dva póly a nuly v originály<br />
vykrátiť. Z toho dostaneme prenosovú funkciu pre inverzné kyvadlo:<br />
Φ ( s)<br />
=<br />
U ( s)<br />
Tieto použité vzťahy sú prevzaté z [5].<br />
s<br />
3<br />
2<br />
b(<br />
I + ml ) 2<br />
+ s −<br />
q<br />
ml<br />
s<br />
q<br />
( M + m)<br />
mgl<br />
s<br />
q<br />
−<br />
19<br />
. (18)<br />
bmgl<br />
q<br />
(16)
FEI KKUI<br />
2.1 Model <strong>inverzného</strong> <strong>kyvadla</strong><br />
Pre virtuálny model <strong>inverzného</strong> <strong>kyvadla</strong> sme použili už vytvorený model na<br />
základe predchádzajúceho popisu systému. Model <strong>kyvadla</strong> je programovaný pre<br />
platformu Linux v jazyku C. Využíva staršie grafické rozhranie Motif – z historického<br />
pohľadu patril Motif medzi prvé grafické používateľské rozhrania (GUI – Grafical user<br />
interface) Unixovských systémoch v 80-tich rokoch 20-ho storočia. Ukážka modelu je<br />
na obr. 5.<br />
Obr. 5: Ukážka modelu <strong>inverzného</strong> <strong>kyvadla</strong>. Program je stiahnuteľný [11] na základe<br />
licenčných podmienok, viď. v prílohe systémovú príručku. Model je ovládaný myšou, <strong>pomocou</strong><br />
klikania vľavo alebo vpravo dokážete udržať kyvadlo v kolmej polohe voči dráhe vozýka.<br />
20
FEI KKUI<br />
3 Návrh systému pre riadenie <strong>inverzného</strong> <strong>kyvadla</strong><br />
<strong>pomocou</strong> neurónovej siete<br />
3.1 Model <strong>inverzného</strong> <strong>kyvadla</strong><br />
Kompilácia a spustenie virtuálneho modelu<br />
Použitý model <strong>inverzného</strong> <strong>kyvadla</strong> je hotové riešenie, teda voľne dostupný balík<br />
so zdrojovým kódom, ktorý je potrebné nainštalovať pod operačným systémom Linux.<br />
Balík obsahuje okrem zdrojového kódu aj make-file a inštrukcie pre kompiláciu a<br />
spustenie. Zdrojové kódy virtuálneho <strong>kyvadla</strong> skompilujeme Linuxovským<br />
kompilátorom. Spustenie aplikácie modelu bez nainštalovania balíčka s grafickým<br />
používateľským rozhraním (GUI) Motif nie je možné, pretože aplikácia využíva<br />
knižnicu Xlib, tá je podporovaná grafickým používateľským rozhraním Motif. Aby sa<br />
aplikácia mohla spustiť,je potrebné nainštalovať grafické používateľské rozhranie<br />
Motif, ktoré je dostupné na internete pre väčšinu typov Linuxu. Tu sme použili balíček<br />
pre Linux Mandriva: lesstif-devel-0.93.94-12mdv2007.0.i586.rpm. Po inštalácií GUI je<br />
možné spustiť aplikáciu modelu <strong>inverzného</strong> <strong>kyvadla</strong>.<br />
Úprava zdrojových kódov<br />
Ďalšou dôležitou úlohou je preštudovanie zdrojových kódov aplikácie modelu<br />
<strong>inverzného</strong> <strong>kyvadla</strong>. Bolo potrebné zdrojový kód aplikácie upraviť do jednoduchšej<br />
formy, pretože kód obsahoval nevyužité programové funkcie a premenné pre naše<br />
potreby.<br />
3.2 Návrh riadenia virtuálneho modelu <strong>kyvadla</strong><br />
Voľba vstupných a výstupných veličín<br />
Dôležitou súčasťou návrhu riadenia je definovanie vstupov a výstupov pre riadenie<br />
<strong>inverzného</strong> <strong>kyvadla</strong>. Vstupnými veličinami, od ktorých je výstup závislý, bude: poloha<br />
vozíka - x, rýchlosť vozíka – x', zrýchlenie vozíka – x'', uhol posunu <strong>kyvadla</strong> – θ, uhlová<br />
rýchlosť <strong>kyvadla</strong> – θ' a uhlové zrýchlenie <strong>kyvadla</strong> - θ''. Výstupom z neurónovej siete je<br />
sila pôsobenia na vozík – F. Detailnejšie je zobrazené na obr. 6.<br />
21
FEI KKUI<br />
Odchýlka <strong>kyvadla</strong><br />
Posun vozíka<br />
x<br />
x'<br />
x”<br />
θ<br />
θ'<br />
θ”<br />
M<br />
Neurónová sieť<br />
Obr. 6: Pohľad na vstupné a výstupné veličiny pre riadenie systému: poloha vozíka - x, rýchlosť<br />
vozíka – x', zrýchlenie vozíka – x'', uhol posunu <strong>kyvadla</strong> – θ, uhlová rýchlosť <strong>kyvadla</strong> – θ' a uhlové<br />
zrýchlenie <strong>kyvadla</strong> - θ''. Výstupom z neurónovej siete je sila pôsobenia na vozík – F.<br />
Návrh topológie pre neurónovú sieť<br />
l<br />
Neuroriadeniu nemusí vyhovovať hneď prvá vybraná topológia neurónovej siete.<br />
Preto sa treba pripraviť na návrh neuroriadenia tak, že musíme počítať s viacerými<br />
alternatívami. Práve vybraná topológia, ktorá sa naprogramuje, nemusí poskytovať<br />
vyhovujúce riadenie pre náš systém. Pre jednoduchosť programovania existuje<br />
Štuttgardský neurónový simulátor, ktorý umožňuje rýchlo odsimulovať navrhnutú<br />
topológiu a <strong>pomocou</strong> trénovacích a testovacích množín, čím dokážeme naučiť a<br />
22<br />
Sila pôsobiaca na vozík<br />
F
FEI KKUI<br />
otestovať neurónovú sieť. Z týchto testov potom dokážeme vyhodnotiť neurónovú sieť<br />
na základe učiacich sa a testovacích chýb, či daná topológia spĺňa naše kritéria.<br />
Topológia sa navrhuje tak, že musíme vedieť koľko vstupov a výstupov budeme<br />
využívať pri neuroriadení nášho systému. Náš systém je ovládaný jedným výstupom a<br />
to je pôsobením konštantnej sily na vozík za čas t+1. Znamená to, že kyvadlo pokiaľ sa<br />
drží v kolmej polohe, nepotrebujeme pôsobiť na systém. V prípade, že nastane<br />
vychýlenie o daný uhol θ, musíme pôsobiť na vozík konštantnou silou do protismeru<br />
výchylky. Pokiaľ pôsobenie s konštantnou silou na vozík raz nestačí, musíme pôsobiť<br />
ešte raz konštantnou silo na vozík a to až dovtedy, kým sa kyvadlo nevráti do kolmej<br />
polohy. Ak sa kyvadlo vychýli na opačnú stranu, pôsobíme na vozík do protismeru<br />
vychýlenia na kyvadlo a postupujeme tak isto ako do opačnej strany.<br />
Z uvedených skutočností teda vyplýva, že riadenie nášho systému bude mať<br />
trojhodnotovú logiku na výstupe neuroriadenia. Vstupom do neuroriadenia sú tieto<br />
veličiny: poloha vozíka, uhol posunu <strong>kyvadla</strong>, rýchlosť vozíka, zrýchlenie vozíka,<br />
uhlová rýchlosť <strong>kyvadla</strong> a uhlové zrýchlenie <strong>kyvadla</strong>. Tieto veličiny sa dostávajú na<br />
vstup neurónovej siete, teda sieť bude mať šesť vstupov. Na obr. 7 máme načrtnutý<br />
vzhľad neurónovej siete, kde skrytá vrstva je načrtnutá len pre ilustráciu. Rozloženie<br />
skrytej vrstvy bude popísané ďalej. Úrovne výstupného neurónu pre topológiu s jedným<br />
neurónom na výstupe sú naznačené v tabuľke tab. 1.<br />
Tab. 1: Úrovne výstupného neurónu pre topológiu s jedným výstupným neurónom<br />
Pôsobenie na vozík Úroveň výst. neurónu<br />
zľava 0,1<br />
nepôsobí 0,5<br />
zprava 0,9<br />
23
FEI KKUI<br />
Vstupná vrstva Skrytá vrstva Výstupná vrstva<br />
Obr. 7: Návrh topológie nerónovej siete so šiestimi vstupmi a s jedným<br />
výstupom. Skrytá vrstva je zobrazená ilustračne.<br />
Pre ďalšiu alternatívu sme sa rozhodli navrhnúť nerónovú sieť, ktorá má dve<br />
výstupné neuróny a šesť vstupných neurónov (obr. 8). Výstupná logika je riešená tak, že<br />
konštantná sila bude ovládaná do jednej strany jedným výstupným neurónom a druhým<br />
výstupným neurónom bude ovládaná do druhej strany. Pokiaľ nieje potrebné s vozíkom<br />
pohnúť, oba výstupné neuróny budú v rovnakej úrovni, podľa tab. 2.<br />
Vstupná vrstva Skrytá vrstva<br />
Výstupná vrstva<br />
Obr. 8: Návrh topológie nerónovej siete so šiestimi vstupmi a s dvoma<br />
výstupmi. Skrytá vrstva je zobrazená ilustračne.<br />
24
FEI KKUI<br />
Tab. 2: Výstupné hodnoty na výstupných neurónoch<br />
Pôsobenie na<br />
vozík<br />
Hodnota na 1.<br />
výst. neurónu<br />
Hodnota na 2.<br />
výst. neurónu<br />
zľava 0,9 0,1<br />
nepôsobí 0,1 0,1<br />
zprava 0,1 0,9<br />
Poslednou možnou alternatívou je návrh topológie so šiestimi vstupnými neurónmi<br />
a s troma výstupnými neurónmi. Na každú akciu <strong>kyvadla</strong> teda použijeme jeden neurón<br />
obr. 9.<br />
Vstupná vrstva Skrytá vrstva<br />
Výstupná vrstva<br />
Obr. 9: Návrh topológie neurónovej siete so šiestimi vstupmi a s<br />
troma výstupmi. Skrytá vrstva je zobrazená ilustračne.<br />
Skrytej vrstve sa počet neurónov bude pohybovať v každej kombinácií vstupov a<br />
výstupov v počtoch: 0,2,6,12,40 neurónov, to znamená, že získame pätnásť rôznych<br />
topológii <strong>neurónových</strong> sieti. Pre 12 neurónov v skrytej vrstve sa neuróny rozložia do<br />
dvoch skrytých vrstiev po šesť neurónov. Podobným spôsobom sa rozdelí sieť zo 40<br />
neurónmi v skrytej vrstve, takže podelíme 40 neurónov do štyroch skrytých vrstiev po<br />
desať neurónov na jednu skrytú vrstvu.<br />
25
FEI KKUI<br />
3.3 Množina trénovacich a testovacích dát<br />
Získanie trénovacich dát<br />
Množinu trénovacich dát musíme vhodne vybrať, pretože na základe týchto dát<br />
budeme môcť vedieť čo najlepšie naučiť neurónové siete pre navrhované topológie.<br />
Fáza učenia je taká fáza, kde sa do sinaptických váh ukladajú znalosti. Dáta musia byť<br />
navrhnuté podobne ako pri návrhu jednotlivých topológii <strong>neurónových</strong> <strong>sietí</strong>, čiže<br />
napríklad pre topológiu so šiestimi vstupmi a jedným výstupom priradíme šesť<br />
vstupných hodnôt a jednu výstupnú hodnota. Tieto hodnoty považujeme za vzorku z<br />
trénovacej množiny. Pre tieto topológie sme sa rozhodli použiť tisíc vzoriek na<br />
trénovanie každej neurónovej siete.<br />
Návrh testovacích dát<br />
Testovacie dáta sú potrebné na testovanie danej neurónovej siete, čiže na základe<br />
testu vieme zistiť ako úspešne dokáže neurónová sieť vo fáze života využívať znalosti,<br />
ktoré sa naučila počas fázy testovania. Testovacie dáta sa navrhujú z množiny<br />
trénovacich dát tak, že množina testovacích dát tvorí približne dvadsať percent z<br />
trénovacej množiny.<br />
Prispôsobenie aplikácie modelu <strong>inverzného</strong> <strong>kyvadla</strong> pre získanie<br />
trénovacich dát<br />
Pre zjednodušenie získavania trénovacich dát sme pôvodnú aplikáciu modelu<br />
<strong>inverzného</strong> <strong>kyvadla</strong> preprogramovali tak, aby sme pri ručnom ovládaní myšou<br />
generovali trénovaciu množinu pre príslušnú topológiu. Teda pre tri rôzne výstupné<br />
topológie sme vytvorili tri rôzne aplikácie pre generovanie trénovacich dát. Týmto<br />
dátam sa len jednoducho prepíše koncovka súboru .txt na .pat<br />
Testovacia množina sa vytvorí ako bolo spomenuté vyššie z tých dvadsiatich<br />
percent z trénovacej množiny náhodným výberom, čiže pripravíme približne dvesto<br />
vzoriek na testovaciu množinu. Túto testovaciu množinu uložíme s koncovkou .pat,<br />
ktorú vieme načítať do SNNS.<br />
26
FEI KKUI<br />
Výber aktivačnej funkcie pre neurónovú sieť<br />
Aktivačná funkcia pre učiaci sa algoritmus pre Backpropagation je štandardne<br />
sigmoidálna funkcia, ktorá je popísaná vzťahom:<br />
kde α je parameter strmosti sigmoidy.<br />
1<br />
xi = f ( ini<br />
) = ,<br />
− α in (19)<br />
i 1 + e<br />
27
FEI KKUI<br />
4 Overenie výsledkov návrhu<br />
Pre každú topológiu, ktorú overíme <strong>pomocou</strong> neurónového simulátora SNNS,<br />
nastavujeme nasledovné parametre:<br />
- učiací algoritmus je štandardný backpropagation,<br />
- učiací parameter je 0.2,<br />
- inicializácia neurónovej siete je -0.1 až 0.1,<br />
- pre trénovacia množina je použité 1000 vzoriek vid. CD príloha,<br />
- pre testovaciu množinu je použité približne 20 percent z trénovacej množiny vid.<br />
CD príloha.<br />
4.1 Topológie NN so šiestimi vstupmi a s jedným výstupom<br />
Topológia bp 6-0-1<br />
Obr. 10: Topológia NN so šiestimi vstupnými neurónmi a s jedným výstupným<br />
neurónom, bp 6-0-1.<br />
28
FEI KKUI<br />
Obr. 11: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Čierna krivka je chyba učenia NN, červená krivka je testovacia chyba NN. Neurónová sieť sa nič<br />
nenaučila pri tejto topológii. Vidíme, že ani jedna krivka neklesá, ale drží sa rovnako na chybe<br />
22.00 z rozptylom ±1. Táto topológia teda nie je vhodná na riadenie <strong>kyvadla</strong>.<br />
29
FEI KKUI<br />
Topológia 6-2-1<br />
Obr. 12: Topológia NN so šiestimi vstupnými neurónmi, s dvoma neurónmi v<br />
skrytej vrstve a jedným neurónom na výstupe, bp 6-2-1.<br />
Obr. 13: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 20,7 a s rozptylom ±0,5. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 3,05 a s rozptylom ±0,2. Táto neurónová<br />
sieť s topológiou 6-2-1 sa dokázala niečo naučiť. Testovacia krivka ukazuje že chyba testovania je<br />
oveľa nižšia oproti predchádzajúcemu prípadu.<br />
30
FEI KKUI<br />
Topológia 6-6-1<br />
Obr. 14: Topológia NN so šiestimi vstupmi, šesť neurónov v skrytej vrstve a<br />
jeden neurón na výstupe, bp 6-6-1.<br />
Obr. 15: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Pri tejto topológie učiaca krivka s čiernou farbou hore postupne klesá počas učenia, z chyby 22,00<br />
na 15,0 s rozptylom približne ±0,2. Testovacia krivka s červenou farbou dole, klesá s chybou až na<br />
1,8 s rozptylom približne ±0,2. Tento výsledok je prijateľnejší oproti predchádzajúcim topológiám.<br />
31
FEI KKUI<br />
Topológia 6-12-1<br />
Obr. 16: Topológia NN so šiestimi vstupnými neurónmi, dvanásť neurónov vo<br />
skrytej vrstve a jeden neurón na výstupe, bp 6-12-1.<br />
Obr. 17: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka s čiernou farbou hore postupne klesá počas učenia až na chyby 5,50 s rozptylom<br />
približne ±0,2. Testovacia krivka s červenou farbou dole, klesá s chybou až na 0,7 s rozptylom<br />
približne ±0,2. Z kriviek vidíme, že aj táto topológia patrí medi zhodné riešenia riadenia <strong>kyvadla</strong>.<br />
32
FEI KKUI<br />
Topológia 6-40-1<br />
Obr. 18: Topológia NN so šiestimi neurónmi na vstupe, štyridsať neurónov v<br />
skrytej vrstve a jeden neurón na výstupe, bp 6-40-1.<br />
Obr. 19: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka s čiernou farbou hore, postupne klesá počas učenia na 1,30 s rozptylom ±0,3.<br />
Testovacia krivka s červenou farbou dole, klesá s chybou až na 0,2 s rozptylom ±0,15. Tento<br />
výsledok je najlepší oproti predchádzajúcim topológiam. Túto topológiu môžeme započítať do<br />
jednej alternatív riešenia pre náš systém.<br />
33
FEI KKUI<br />
4.2 Topológia NN zo šiestimi vstupmi a s dvoma výstupmi<br />
Topológia 6-0-2<br />
Obr. 20: Topológia NN so šiestimi vstupnými neurónmi a s dvomi výstupnými<br />
neurónmi, bp 6-0-2.<br />
Obr. 21: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia 97,0 a rozptylom ±0,5. Nižšie červenou farbou je<br />
krivka testovania s chybou približne 15,50 a s rozptylom ±0,5. Takáto topológia nepriniesla veľmi<br />
uspokojivé výsledky, NN sa dokáže niečo naučiť, ale so slabými výsledkami.<br />
34
FEI KKUI<br />
Topológia 6-2-2<br />
Obr. 22: Topológia NN so šiestimi vstupmi, s dvoma neurónmi v skrytej<br />
vrstve a s dvomi neurónmi na výstupe, bp 6-2-2.<br />
Obr. 23: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 90,0 a s rozptylom ±2,0. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 14,90 a s rozptylom ±0,2. Takáto topológia<br />
má podobné výsledky ako v predchádzajúcom prípade, NN dokáže sa niečo naučiť, ale so slabými<br />
výsledkami.<br />
35
FEI KKUI<br />
Topológia 6-6-2<br />
Obr. 24: Topológia NN so šiestimi vstupmi, šesť neurónov v skrytej vrstve a dva<br />
neuróny na výstupe, bp 6-6-2.<br />
Obr. 25: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou klesá na chybu učenia približne 58,0 a s rozptylom ±1,0. Nižšie s<br />
červenou farbou je krivka testovania, ktorá má chybou testovania približne 12,0 a s rozptylom ±3,5.<br />
NN dokáže sa niečo naučiť, ale chyba je ešte v tomto prípade veľká.<br />
36
FEI KKUI<br />
Topológia 6-12-2<br />
Obr. 26: Topológia NN so šiestimi vstupnými neurónmi, dvanásť neurónov vo<br />
skrytej vrstve a jeden neurón na výstupe, bp 6-12-2.<br />
Obr. 27: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 37,5 a s rozptylom ±1,5. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 8,3 a s rozptylom ±1,2. NN s touto<br />
topológiou má lepšie výsledky oproti predchádzajúcemu prípadu, postupne tá chybovosť klesá<br />
nárastom počtu neurónov v skrytej vrstve.<br />
37
FEI KKUI<br />
Topológia 6-40-2<br />
Obr. 28: Topológia NN so šiestimi neurónmi na vstupe, štyridsať neurónov v<br />
skrytej vrstve a dva neuróny na výstupe, bp 6-40-2.<br />
Obr. 29: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 9,30 a s rozptylom ±1,1. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 1,85 a s rozptylom ±0,65. NN s touto<br />
topológiou sa dokáže naučiť a zároveň vo fáze života celkom úspešne zvláda riadenie systému. Túto<br />
topológiu môžeme započítať do jednej alternatív riešenia pre náš systém.<br />
38
FEI KKUI<br />
4.3 Topológia NN so šiestimi vstupmi a s tromi výstupmi<br />
Topológia 6-0-3<br />
Obr. 30: Topológia NN so šiestimi vstupnými neurónmi a s tromi<br />
výstupmi neurónmi, bp 6-0-3.<br />
Obr. 31: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 162,0 a s rozptylom ±0,7. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 43,50 a s rozptylom ±0,5. Takáto topológia<br />
nepriniesla veľmi uspokojivé výsledky, NN dokáže sa niečo naučiť, ale so slabými výsledkami.<br />
Chyba učenia je v tomto prípade najvyššia zo všetkých topológii.<br />
39
FEI KKUI<br />
Topológia 6-2-3<br />
Obr. 32: Topológia NN so šiestimi vstupmi, s dvoma neurónmi v skrytej<br />
vrstve a s tromi neurónmi na výstupe, bp 6-2-3.<br />
Obr. 33: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 113,6 a s rozptylom ±1,2. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 25,0 a s rozptylom ±2,5. Takáto topológia<br />
nepriniesla veľmi uspokojivé výsledky, NN dokáže sa niečo naučiť, ale so slabými výsledkami.<br />
40
FEI KKUI<br />
Topológia 6-6-3<br />
Obr. 34: Topológia NN so šiestimi vstupnými neurónmi, šesť neurónov vo<br />
skrytej vrstve a tri neuróny na výstupe, bp 6-6-3.<br />
Obr. 35: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 73,0 a s rozptylom ±2,2. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 17,70 a s rozptylom ±3,4. Takáto topológia<br />
má lepšie výsledky ako predchádzajúce prípady, NN dokáže sa niečo naučiť, ale so slabými<br />
výsledkami.<br />
41
FEI KKUI<br />
Topológia 6-12-3<br />
Obr. 36: Topológia NN so šiestimi vstupnými neurónmi, dvanásť neurónov<br />
vo skrytej vrstve a tri neuróny na výstupe, bp 6-12-3.<br />
Obr. 37: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 30,0 a s rozptylom ±3,5. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 6,10 a s rozptylom ±4,0. Takáto topológia<br />
má lepšie výsledky, táto NN dokáže sa niečo naučiť.<br />
42
FEI KKUI<br />
Topológia 6-40-3<br />
Obr. 38: Topológia NN so šiestimi neurónmi na vstupe, štyridsať neurónov v<br />
skrytej vrstve a tri neuróny na výstupe, bp 6-40-3.<br />
Obr. 39: Na grafe po osi x je počet cyklov a na osi y je chybovosť pri učení alebo testovaní.<br />
Učiaca krivka je čiernou farbou s chybou učenia približne 10,0 a s rozptylom ±4,8. Nižšie s<br />
červenou farbou je krivka testovania s chybou približne 2,90 a s rozptylom ±1,5. Takáto topológia<br />
má najlepšie výsledky spomedzi topológii s tromi výstupmi. Túto topológiu môžeme započítať do<br />
jednej alternatív riešenia pre náš systém.<br />
43
FEI KKUI<br />
5 Vyber najvhodnejšieho riešenia<br />
Výsledky testov pre topológie <strong>neurónových</strong> <strong>sietí</strong> sme zhrnuli pre prehľad do<br />
tabuľky tab.3, kde pre lepší prehľad sú tri najlepšie výsledky vyznačené v tejto tabuľke.<br />
Z tohto množstva experimentov vyplýva, že sme vybrali tri najvhodnejšie riešenia, ktoré<br />
by zvládli úspešne riadenie nášho modelu. Vyhovujúcim riešením je NN s topológiou<br />
bp 6-40-3 obr. 38, s chybou učenia približne 10,0 a s rozptylom ±4,8. Chyba testov je<br />
2,90 a s rozptylom ±1,5. Druhá vhodnejšia alternatíva je topológia s NN pb 6-40-2 obr.<br />
28 s chybou učenia približne 9,30 a s rozptylom ±1,1. Chyba testovania je 1,85 a s<br />
rozptylom ±0,65. Najvýhodnejšou možnosťou je NN s topológiou bp 6-40-1 obr. 18 s<br />
chybou učenia na 1,30 a s rozptylom ±0,3. Chyba testovania je 0,2 s rozptylom<br />
približne ±0,15.<br />
Tab. 3: Zhrnutie výsledkov testov pre jednotlivé topológie<br />
Topológia NN Chyba pri učení Chyba pri testovaní<br />
bp 6-0-1 22 ±1 22 ±0,5<br />
bp 6-2-1 20,7 ±0,5 3,05 ±0,2<br />
bp 6-6-1 15,0 ±0,2 1,8 ±0,2<br />
bp 6-12-1 5,50 ±0,2 0,7 ±0,2<br />
bp 6-40-1 1,3 ±0,3 0,2 ±0,15<br />
bp 6-0-2 97,0 ±0,5 15,50 ±0,5<br />
bp 6-2-2 90,0 ±2,0 14,90 ±0,2<br />
bp 6-6-2 58,0 ±1,0 12,0 ±3,5<br />
bp 6-12-2 9,30 ±1,1 1,85 ±0,65<br />
bp 6-40-2 9,3 ±1,1 1,85 ±0,65<br />
bp 6-0-3 162,0 ±0,7 43,50 ±0,5<br />
bp 6-2-3 113,6 ±1,2 25,0 ±2,5<br />
bp 6-6-3 73,0 ±2,2 17,70 ±3,4<br />
bp 6-12-3 30,0 ±3,5 6,10 ±4,0<br />
bp 6-40-3 10 ±4,8 2,9 ±1,5<br />
44
FEI KKUI<br />
Na riadenie modelu <strong>inverzného</strong> <strong>kyvadla</strong> navrhujeme topológiu neurónovej siete pb 6-<br />
40-1, pretože táto topológia má najlepšie parametre. Najhoršia topológia je bp 6-0-1,<br />
pretože táto topológia sa nič nenaučila počas fáze učenia.<br />
45
FEI KKUI<br />
6 Implementácia neurónovej siete na model<br />
<strong>inverzného</strong> <strong>kyvadla</strong><br />
Pre model <strong>inverzného</strong> <strong>kyvadla</strong> sme sa rozhodli použiť neurónovú sieť, ktorá má<br />
najlepšie parametre, teda sme vybrali z topológiou bp-6-40-1 obr. 18. Táto neurónová<br />
sieť je po naučení v SNNS uložená do súboru bp5.net. Tento súbor potrebujeme<br />
prekonvertovať do zdrojového kódu, ktorý je použiteľný pre aplikáciu <strong>inverzného</strong><br />
<strong>kyvadla</strong>. Pomocou snns2c súbor bp5.net prekonvertujeme do zdrojového súboru bp5.c a<br />
bp5.h, ktoré môžeme do modelu <strong>kyvadla</strong> dopracovať pre neuroriadenie touto vybranou<br />
topológiou. Dopracovanie neurónovej siete urobíme tak, že vstupy <strong>kyvadla</strong> privádzame<br />
na vstup NN a výstup z NN využijeme pre riadenie <strong>kyvadla</strong> viď, obr. 40.<br />
Odchýlka <strong>kyvadla</strong><br />
Posun vozíka<br />
x<br />
x'<br />
x”<br />
θ<br />
θ'<br />
θ”<br />
l<br />
M<br />
Neurónová sieť<br />
Obr. 40: Pripojenie neurónovej siete na riadenie <strong>inverzného</strong> <strong>kyvadla</strong><br />
46<br />
Sila pôsobiaca na vozík<br />
F
FEI KKUI<br />
Start<br />
Incializácia kontextu<br />
draw_track()<br />
Vstupné udalosti<br />
Je stalčeny reset?<br />
update_pole()<br />
calc_derivs()<br />
bp5() - volanie NN<br />
draw_state()<br />
nie<br />
show_state()<br />
Koniec<br />
ano<br />
Obr. 41: Zakomponovanie zdrojového kódu pre NN do hlavného programu <strong>inverzného</strong><br />
<strong>kyvadla</strong><br />
47<br />
Hlavný cyklus<br />
reset(context)<br />
Zakomponovanie NN do programu pre<br />
riadenie <strong>inverzného</strong> <strong>kyvadla</strong>
FEI KKUI<br />
V hlavnom programe sa doplní do funkcie update_pole() volanie funkcie pre<br />
neurónovú sieť ako je principiálne grafický znázornené na obr. 41. Netreba zabudnúť<br />
správne podávanie parametrov medzi funkciami. Výsledkom dostaneme inverzné<br />
kyvadlo, ktoré je ovládané neurónovou sieťou. Celkový výsledok riadeného modelu<br />
<strong>inverzného</strong> <strong>kyvadla</strong> <strong>pomocou</strong> neurónovej siete je možné pozrieť v CD prílohe nahraté<br />
vo video formáte.<br />
48
FEI KKUI<br />
7 Záver<br />
Cieľom tejto práce bolo navrhnúť riadenie pre model <strong>inverzného</strong> <strong>kyvadla</strong><br />
<strong>pomocou</strong> neurónovou sieťou. Počas návrhu boli testované rôzne topológie <strong>neurónových</strong><br />
<strong>sietí</strong>, ktoré by sa hodili pre riadenie <strong>inverzného</strong> <strong>kyvadla</strong>. Ako ukázali výsledky<br />
experimentov, tak najlepšia možnosť je <strong>pomocou</strong> topológie pb 6-40-1 pozri tab. 3 a<br />
najhoršia topológia bola pb 6-0-1, kde sme mali najslabšie výsledky učenia NN.<br />
49
FEI KKUI<br />
Zoznam použitej literatúry<br />
[1] SINČÁK, Peter – ANDREJKOVÁ, Gabriela: Neurónvé siete : Inžiniersky<br />
prístup (1. diel). Košice : TU-FEI, 1996. 107 s. Elfa<br />
[2] KOPČÍK, Martin: Použitie fuzzy neurónovej siete typu ANFIS na riadenie<br />
vozíka s balansujúcou tyčou (Diplomová práca). Košice: TU-FEI, 1996.<br />
http://www.ai-cit.sk/source/publications/thesis/master_thesis/1996/kopcik/html/<br />
all.html/<br />
[3] JAKŠA, Rudolf: Neuroriadenie: využitie <strong>neurónových</strong> <strong>sietí</strong> v inteligentnom<br />
riadení (Dizertačná práca). Košice : TU-FEI, 1998. http://www.ai-cit.sk/source/<br />
publications/thesis/phd_thesis_prospectuses/1998/jaksa/html/all.html/<br />
[4] MADARÁSZ, Ladislav – BUČKO, Marián – FÖZÖ, Ladislav: Základy<br />
automatického riadenia. Košice : TU-FEI, 2007. 449 s. ISBN 80-8086-042-4<br />
[5] MENSER, William – TILBURY, Dawn : Control Tutorials for Matlab and<br />
Simulink: http://www.engin.umich.edu/class/ctms/<br />
[6] ČUBA, Marián: Použitie <strong>neurónových</strong> <strong>sietí</strong> pri riadení autonómneho vozidla.<br />
Košice: TU-FEI, 2007. (Diplomová práca) http://www.ai-<br />
cit.sk/source/publications/thesis/master_thesis/1997/cuba/html/index.html/<br />
[7] NOSKIEVIČ, Petr: Modelování a identifikace systémú, Ostrava :<br />
MONTANEX, a. s., 1999. 276 s. ISBN 80-7225-030-2<br />
[8] MRÁZIK, František: Ako na neurónové siete, alebo Stuttgart Neural Network<br />
Simulator po slovensky a v praxi... . 2005 : http://www.ist.sk/index.php?<br />
go=clanok&id=4&PHPSESSID=2e6e49c4f9b17d4cfcfc67f163e6d000/<br />
[9] ZELL Andreas: Stuttgart Neural Network Simulator: Developed at University<br />
of Stuttgart, Maintained at University of Tübingen http://www.ra.cs.uni-<br />
tuebingen.de/SNNS/<br />
[10] Maxwell's Stuttgart Neural Network Simulator [SNNS] Tutorial<br />
http://palantir.cs.colby.edu/maxwell/classes/tutorials/snns/<br />
[11] ANDERSON, Chuck - Program pre model <strong>inverzného</strong> <strong>kyvadla</strong>:<br />
http://www.cs.colostate.edu/~anderson/code/<br />
50
FEI KKUI<br />
Prílohy<br />
Príloha A: CD médium – bakalárska práca v elektronickej podobe, prílohy v<br />
elektronickej podobe.<br />
Príloha B: Používateľská príručka<br />
Príloha C: Systémová príručka<br />
51