Prírodou inšpirované algoritmyštudijné materiály pre projekt mobilnej triedy umelej inteligencie |
||
Programovanie náhodného správaniaExistuje viacero spôsobov ako zabezpečiť aby sa robot pohyboval náhodne s ohľadom na signály z jeho senzorov. V najjednoduchšom prípade zadefinujeme atribút behaviour tak, aby bol zoznam dvoch podzoznamov, kde každý z nich vygeneruje silu pohonu pre jeden pás resp. koleso. Počas generovania hodnoty zo zoznamov môže algoritmus počítať aj s hodnotou so snímača uloženou napr. do premennej x. 1 -> pb_new_world; [[if x(1) > 0.85 then 0 else 0.3 endif][0.3]] -> pb_behaviour; 100 -> pb_cycles; Atribút behaviour môže byť nastavený ako meno premennej, ktorá obsahuje zoznam alebo vektor. vars safe = [[if x(1) > 0.85 then 0 else 0.3 endif][0.3]]; "safe" -> pb_behaviour; 100 -> pb_cycles; Hodnota behaviour môže byť aj procedúra alebo meno procedúry. V tomto prípade sa hodnota behaviour vyhodnocuje opakovane v každom cykle simulácie. Tento spôsob je vhodný pre roboty s viacerými senzormi. Príklad so štyrmi senzormi: 1 -> pb_new_world; [[30] [10] [-10] [-30]] -> pb_sensors; Najprv definujeme procedúru define avoid_obstacles; lvars i, inputs = pb_sensor_inputs; for i from 1 to length(inputs) do if inputs(i) > 0.85 then {0.3 0.2} -> pb_action; return; else {0.3 0.3} -> pb_action; return; endif; endfor; enddefine; Potom priradíme meno procedúry do pb_behaviour. "avoid_obstacles" -> pb_behaviour; |
||
Kontakt: Marek Bundzel |