Difference between revisions of "Simulace robotického vysavače"
(→Závěr) |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
'''Metoda:''' Multiagentní<br><br> | '''Metoda:''' Multiagentní<br><br> | ||
=Definice problému= | =Definice problému= | ||
− | Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, | + | Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, po systematické algoritmy, které budou prostor procházet buď vertikálně nebo horizontálně. |
+ | |||
=Metoda= | =Metoda= | ||
− | Simulace byla prováděna v nástroji NetLogo, aby bylo možné vizualizovat pohyb robota v prostředí a vytvářet překážky v daném prostředí. | + | Simulace byla prováděna v nástroji NetLogo, jelikož se jednalo o jedinný vhodný nástroj pro tuto simulaci, aby bylo možné vizualizovat pohyb robota v prostředí a vytvářet překážky v daném prostředí. |
+ | |||
=Model= | =Model= | ||
+ | Model je postaven na simulační ploše o rozměru 50x50 s tím, že velikost robota se rovná právě jednomu poli na ploše. Průběh simulace je měřen podle jednotlivých kroků (''"ticks"''). Simulační plocha disponuje třemi různými rozloženími co se překážek týče a překážky jsou tvořeny poli s bílou barvou. Standardní povrch je pak tvořen hnědými poli, přičemž po přejezdu robota pole zesvětlají, signalizujíc, že daná pozice byla robotem vysána. | ||
+ | [[File:Vacuum-model.png]] | ||
+ | == Agenti == | ||
+ | Model obsahuje 2 typy agentů. | ||
+ | |||
+ | === Robot === | ||
+ | Představuje robotický vysavač, je reprezentován černým kolečkem na simulované ploše. Vlastnostmi tohoto agenta jsou: | ||
+ | * rychlost, která je stanndardně nastavena na 1 | ||
+ | * typ algoritmu, který agent používá pro porhcázení prostoru | ||
+ | * startovní pozice | ||
+ | |||
+ | === Překážky === | ||
+ | Představuje překážky, které se nacházjí v prostoru a blokují robota v pohybu. V protoru jsou vyznačeny bílou barvou. Rozložení těchto agentů je dáno parametrem '''obstacles'''. | ||
+ | [[File:Obstacles2.png|thumb|left|Překážky: Simple]] | ||
+ | [[File:Obstacles3.png|thumb|center|Překážky: Complex]] | ||
+ | |||
+ | |||
+ | == Parametry == | ||
+ | Model je vybaven třemi paramtery, které lze měnit přímo z rozhraní simulace, ale uvnitř kódu se nachází několik dalších veličin, které ovlivňují průběh simulace a to například rychlost robota nebo stupeň otočení. Zde se budeme věnovat pouze těmto třem. | ||
+ | |||
+ | *'''Algorithm''' je parametr, který určuje chování robota v průběhu simulace. Na výbě jsou 4 možnosti. | ||
+ | **'''Randomized''' je algoritmus, při kterém se robot v prostoru ohybuje zcela náhodně. Robot se náhodně natáčí na pravou či levou stranu a při střetu s překážkou se otočí o 180°. | ||
+ | **'''Vertical''' je algoritmus, při kterém robot prochází prostor po vertikálách, pohybuje se tedy vždy shora dolů a naopak. | ||
+ | **'''Horizontal''' je podobný jako vertical, s tím že v tomto případě se robot pohybuje horizontálně, tedy z leva do prava a naopak. | ||
+ | **'''Advanced''' je poslední typ, u kterého se robot pohybuje vždy vstříc poli, které ještě v současném běhu nenavštívil. | ||
+ | |||
+ | *'''Obstacles''' je parametr, který určuje rozložení překážek v prostoru. Je rozdělen do tří úrovní. | ||
+ | **'''None''' znamená, že prostor neobsahuje žádné překážky | ||
+ | **'''Simple''' znamená, že se v prostoru vyskytují 4 překážky v pevně daných pozicích | ||
+ | **'''Complex''' představuje nejtěžší úroveň překážek v modelu. Překážky jsou tvořeny tak, aby bylo obtížnější kolem nich navigovat robota. | ||
+ | |||
+ | *'''Start''' je parametr, který určuje startovní pozici robota | ||
+ | **'''Corner''', robot je umístněn v levém dolnm rohu | ||
+ | **'''Center''', robot je umístněn | ||
+ | **'''Critical''', robot je umístněn náhodně v prostoru a v případě třetí úrvně překážek je umístněn na kritické místo u překážky | ||
+ | == Další vlastnsti == | ||
+ | * Model je nastaven tak, aby simulace zastavila v momentě, kdy robot projede každé možné místo v prosotoru, a to z důvodu měření efektivity | ||
+ | * U algoritmů vertical a horizontal byla přidána funkce, že pokud robot v jistém intervalu neprojede nové pole, změní se algoritmus na randomized. Důvodem je to, že tyto algoritmy samotné nejsou schopné projít celý prostor s přeakážkami třetí úrovně. | ||
=Výsledky= | =Výsledky= | ||
+ | Pro vyhodnocení modelu bylo jako metrika použito množství kroků (''ticks'') potřebné pro vyčistění všech dostupných polí v prostoru. Jelikož se některé algoritmy pohybují náhodně, bylo pro každou kombinaci parametrů provedeno 10 simulací a následně se použil jejich průměr. Níže jsou uvedeny tabulky pro jednotlivé obtížnosti prostoru. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |+ align="top" | '''Prostor bez překážek''' | ||
+ | !| Algoritmus || Start - corner || Start - center || Start - critical | ||
+ | |- | ||
+ | | Vertical || 2499 || 3674 || 8027 | ||
+ | |- | ||
+ | | Horizontal || 2499 || 3674 || 13624 | ||
+ | |- | ||
+ | | Randomized || 32162 || 35832 || 36053 | ||
+ | |- | ||
+ | | Advanced || 9900 || 9749 || 9865 | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |+ align="top" | '''Prostor s jednoduchými překážkami''' | ||
+ | !| Algoritmus || Start - corner || Start - center || Start - critical | ||
+ | |- | ||
+ | | Vertical || 4450 || 4246 || 4594 | ||
+ | |- | ||
+ | | Horizontal || 4450 || 4246 || 4598 | ||
+ | |- | ||
+ | | Randomized || 33756 || 40232 || 38393 | ||
+ | |- | ||
+ | | Advanced || 10031 || 9792 || 9733 | ||
+ | |} | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |+ align="top" | '''Prostor s nejtěžšími překážkami''' | ||
+ | !| Algoritmus || Start - corner || Start - center || Start - critical | ||
+ | |- | ||
+ | | Vertical || 37360 || 42190 || 38394 | ||
+ | |- | ||
+ | | Horizontal || 21348 || 36350 || 24200 | ||
+ | |- | ||
+ | | Randomized || 34693 || 36541 || 40984 | ||
+ | |- | ||
+ | | Advanced || 11875 || 13278 || 12730 | ||
+ | |} | ||
+ | |||
+ | V tabulkách si můžeme všimnout vlivů startovní pozice, překážek v prostředí a zvoleného algoritmu na rychlost vyčištění prostoru. Čísla v tabulkách představují průměrný počet potřebných kroků na projetí celého prostoru. | ||
=Závěr= | =Závěr= | ||
+ | Cílem simulace bylo porovnat efektivitu jednotlivých algoritmů a zjistit jaká pozice v prostoru je ideální pro startovní stanici. Z výsledků simulace uvedených v tabulkách můžeme vyvodit několik závěrů. Za prvé můžeme z výsledků vidět, že Vertical a Horizontal algoritmy dosahují velmi podobných výsledků či v některých situacích dokonce totožných. A pro oba tyto algoritmy platí, že u nejtěžších překážek došlo k prudkému nárůstu potřebných kroků, což je z části způsobeno tím, že se zde musel použít i algoritmus Randomized, jelikož se původní algoritmus nebyl schopen se dostat do jistých míst. Dále lze z dat vyčíst, že algoritmus Randomized je jednoznačně nejhorší možností, jelikož pouze ve 2 kombinacích neměl nejhorší výsledek. Jako nejlepší volba se tedy jeví algoritmus Advanced, a to i přesto, že v prvních dvou úrovních překážek nebyl nejlepší. Výhodou je zejména to, že narozdíl od ostatních algoritmů se počet potřebných kroků s rostoucí náročností překážek zvyšoval podstatně pomaleji. Co se týče pozice startovní stanice, nelze z dostupných výsledků jasně určit optimální umístnění. | ||
=Kód= | =Kód= | ||
+ | Zdrojový kód:[[Media:Racj01 simulace.nlogo]] |
Latest revision as of 22:15, 15 June 2021
Název: Simulace robotického vysavače
Autor: Racj01 (talk) 23:45, 13 June 2021 (CET)
Nástroj: NetLogo
Metoda: Multiagentní
Contents
Definice problému
Simulace se bude věnovat simulaci robotického vysavače v různých místnostech domácnosti s různým rozložením. Budou zde vyzkoušeny různé algoritmy pro pohyb v prostoru a pro navigování kolem překážek. Od algoritmů s náhodným pohybem při styku s překážkou, po systematické algoritmy, které budou prostor procházet buď vertikálně nebo horizontálně.
Metoda
Simulace byla prováděna v nástroji NetLogo, jelikož se jednalo o jedinný vhodný nástroj pro tuto simulaci, aby bylo možné vizualizovat pohyb robota v prostředí a vytvářet překážky v daném prostředí.
Model
Model je postaven na simulační ploše o rozměru 50x50 s tím, že velikost robota se rovná právě jednomu poli na ploše. Průběh simulace je měřen podle jednotlivých kroků ("ticks"). Simulační plocha disponuje třemi různými rozloženími co se překážek týče a překážky jsou tvořeny poli s bílou barvou. Standardní povrch je pak tvořen hnědými poli, přičemž po přejezdu robota pole zesvětlají, signalizujíc, že daná pozice byla robotem vysána.
Agenti
Model obsahuje 2 typy agentů.
Robot
Představuje robotický vysavač, je reprezentován černým kolečkem na simulované ploše. Vlastnostmi tohoto agenta jsou:
- rychlost, která je stanndardně nastavena na 1
- typ algoritmu, který agent používá pro porhcázení prostoru
- startovní pozice
Překážky
Představuje překážky, které se nacházjí v prostoru a blokují robota v pohybu. V protoru jsou vyznačeny bílou barvou. Rozložení těchto agentů je dáno parametrem obstacles.
Parametry
Model je vybaven třemi paramtery, které lze měnit přímo z rozhraní simulace, ale uvnitř kódu se nachází několik dalších veličin, které ovlivňují průběh simulace a to například rychlost robota nebo stupeň otočení. Zde se budeme věnovat pouze těmto třem.
- Algorithm je parametr, který určuje chování robota v průběhu simulace. Na výbě jsou 4 možnosti.
- Randomized je algoritmus, při kterém se robot v prostoru ohybuje zcela náhodně. Robot se náhodně natáčí na pravou či levou stranu a při střetu s překážkou se otočí o 180°.
- Vertical je algoritmus, při kterém robot prochází prostor po vertikálách, pohybuje se tedy vždy shora dolů a naopak.
- Horizontal je podobný jako vertical, s tím že v tomto případě se robot pohybuje horizontálně, tedy z leva do prava a naopak.
- Advanced je poslední typ, u kterého se robot pohybuje vždy vstříc poli, které ještě v současném běhu nenavštívil.
- Obstacles je parametr, který určuje rozložení překážek v prostoru. Je rozdělen do tří úrovní.
- None znamená, že prostor neobsahuje žádné překážky
- Simple znamená, že se v prostoru vyskytují 4 překážky v pevně daných pozicích
- Complex představuje nejtěžší úroveň překážek v modelu. Překážky jsou tvořeny tak, aby bylo obtížnější kolem nich navigovat robota.
- Start je parametr, který určuje startovní pozici robota
- Corner, robot je umístněn v levém dolnm rohu
- Center, robot je umístněn
- Critical, robot je umístněn náhodně v prostoru a v případě třetí úrvně překážek je umístněn na kritické místo u překážky
Další vlastnsti
- Model je nastaven tak, aby simulace zastavila v momentě, kdy robot projede každé možné místo v prosotoru, a to z důvodu měření efektivity
- U algoritmů vertical a horizontal byla přidána funkce, že pokud robot v jistém intervalu neprojede nové pole, změní se algoritmus na randomized. Důvodem je to, že tyto algoritmy samotné nejsou schopné projít celý prostor s přeakážkami třetí úrovně.
Výsledky
Pro vyhodnocení modelu bylo jako metrika použito množství kroků (ticks) potřebné pro vyčistění všech dostupných polí v prostoru. Jelikož se některé algoritmy pohybují náhodně, bylo pro každou kombinaci parametrů provedeno 10 simulací a následně se použil jejich průměr. Níže jsou uvedeny tabulky pro jednotlivé obtížnosti prostoru.
Algoritmus | Start - corner | Start - center | Start - critical |
---|---|---|---|
Vertical | 2499 | 3674 | 8027 |
Horizontal | 2499 | 3674 | 13624 |
Randomized | 32162 | 35832 | 36053 |
Advanced | 9900 | 9749 | 9865 |
Algoritmus | Start - corner | Start - center | Start - critical |
---|---|---|---|
Vertical | 4450 | 4246 | 4594 |
Horizontal | 4450 | 4246 | 4598 |
Randomized | 33756 | 40232 | 38393 |
Advanced | 10031 | 9792 | 9733 |
Algoritmus | Start - corner | Start - center | Start - critical |
---|---|---|---|
Vertical | 37360 | 42190 | 38394 |
Horizontal | 21348 | 36350 | 24200 |
Randomized | 34693 | 36541 | 40984 |
Advanced | 11875 | 13278 | 12730 |
V tabulkách si můžeme všimnout vlivů startovní pozice, překážek v prostředí a zvoleného algoritmu na rychlost vyčištění prostoru. Čísla v tabulkách představují průměrný počet potřebných kroků na projetí celého prostoru.
Závěr
Cílem simulace bylo porovnat efektivitu jednotlivých algoritmů a zjistit jaká pozice v prostoru je ideální pro startovní stanici. Z výsledků simulace uvedených v tabulkách můžeme vyvodit několik závěrů. Za prvé můžeme z výsledků vidět, že Vertical a Horizontal algoritmy dosahují velmi podobných výsledků či v některých situacích dokonce totožných. A pro oba tyto algoritmy platí, že u nejtěžších překážek došlo k prudkému nárůstu potřebných kroků, což je z části způsobeno tím, že se zde musel použít i algoritmus Randomized, jelikož se původní algoritmus nebyl schopen se dostat do jistých míst. Dále lze z dat vyčíst, že algoritmus Randomized je jednoznačně nejhorší možností, jelikož pouze ve 2 kombinacích neměl nejhorší výsledek. Jako nejlepší volba se tedy jeví algoritmus Advanced, a to i přesto, že v prvních dvou úrovních překážek nebyl nejlepší. Výhodou je zejména to, že narozdíl od ostatních algoritmů se počet potřebných kroků s rostoucí náročností překážek zvyšoval podstatně pomaleji. Co se týče pozice startovní stanice, nelze z dostupných výsledků jasně určit optimální umístnění.
Kód
Zdrojový kód:Media:Racj01 simulace.nlogo