Ifi6057lab1
Tähtaeg: 23. september. Hilinenult on tööd võimalik kaitsta kuni 7. oktoobrini (kaasa arvatud).
Sissejuhatus
Agent (robot-tolmuimeja) tegutseb Tolmuimejamaailmas, mis koosneb kahest ruumist A ja B (vt. joonis). Ruum võib olla kas puhas või on seal prügi, agendi eesmärgiks on ruumid puhtana hoida. Maailmas kehtib diskreetne aeg: igal sammul loeb agent korra oma sensoreid ja teeb ühe tegevuse.
- Sensorid: agent näeb ruumi tähist (A ja B) ning ruumi olekut (puhas või must)
- Tegevused: agendi tegevused on: Left ja Right liiguvad ruumide vahel, Suck üritab ruumi puhtaks teha.
Maailmast välja liikuda ei ole võimalik, tegevuse Left ruumis A tagajärg on see, et agent on endiselt ruumis A.
Ülesanne
- Programmeerida Pythonis Tolmuimejamaailma simulaator, mis võimaldab:
- erineva loogikaga agente mingi n sammu jooksul maailmas käitada;
- igal sammul annab simulaator töötavale agendile ette selle, mida agendi sensorid tajuvad ning viib täide tegevused, mida agent selle peale teeb (näiteks kui agent teeb Suck siis tuleks ruumist prügi ära võtta);
- mõõta nende efektiivsust. Efektiivsuse skoor on puhaste ruumide arv igal sammul (näiteks kui ruumid on kogu aeg puhtad ja simulaator töötab 10 sammu, siis skoor on 20).
- maailma esialgne olek ja agendi esialgne asukoht peaks olema muudetav (võib olla ka juhuslik)
- näidata maailma olekut igal sammul (saaks ka ilma, aga nii on huvitavam).
- Programmeerida lihtne "Reflex" agent mis:
- igal sammul loeb oma sensoreid ja tegutseb selle alusel.
- Programmeerida olekuga "Model-based reflex" agent, mis:
- lisaks eelnevale säilitab sisemist olekut (mingisugune mälu, millest saab järeldada asju maailma seisundi kohta).
- Lisada simulaatorisse efektiivsuse mõõt, mis annab miinuspunkte edasi-tagasi sõitmise eest. Iga kord kui agent käivitab mootorid käsuga Left või Right, võetakse skoorist üks punkt maha.
- Katsetada mõlemat agenti mõlema efektiivsuse mõõdu juures 10 sammu jooksul. Kui algolek on juhuslik, tuleks piisavalt palju katseid teha. Selgitada tulemusi lühiraportis (0,5 lk; .pdf või .txt)
- Mõtelda, mis juhtub mittedeterminismi korral: tegevused võivad ebaõnnestuda või maailm ei ole staatiline. Programmis või raportis seda teemat pole vaja käsitleda (kuigi keelatud ka ei ole).
Esitamine
Töö eest saab punktid kätte, kui see on harjutustunnis kaitstud (õppejõud vaatab tööd ja esitab küsimusi). Kuna võib tekkida olukord, et töö on valmis, aga mingil põhjusel seda tähtaja päeval kaitsta ei õnnestu, siis tuleks programmikood ja lühiraport panna ka arvutiklassi jagatud kettale (XXX: asukoht täpsustamisel). Selle järgi näeb õppejõud, et töö on reaalselt olemas.
