OHJ-2550 Tekoäly, kevät 2009, Harjoitustyö

Palautettavien ohjelmien on toimittava Lintulan koneissa, ohjelmointikielelle ei ole asetettu rajoituksia.

Kivi, paperi ja sakset on tuttu yksinkertainen peli, jossa kivi voittaa (rikkoo) sakset, paperi voittaa (peittää) kiven ja sakset voittavat (leikkaavat) paperin. Kaksi pelaajaa valitsee samanaikaisesti pelivälineensä ja voittavan esineen valinnut saa pisteen. Jos molemmat pelaajat valitsevat saman esineen ei kumpikaan saa pistettä.

Kehitä oppiva kivi, paperi ja sakset -peliä pelaava agentti, joka pyrkii maksimoimaan pistekertymänsä. Agentin pelistrategian tulee mukautua käyttäjän pelin mukaan, eli agentin on jatkuvasti seurattava käyttäjän tekemiä valintoja ja mukautettava oma pelinsä sen mukaisesti. Agentin pelistrategia ei saa pohjautua satunnaiseen valintaan (ensimmäisiä kierroksia lukuunottamatta), vaan pelivälineen valinnalla pitää olla rationaalinen pohja. Agentti ei tietenkään saa katsoa käyttäjän valintaa ennen omaa päätöstään. Huomaa, että vain viimeaikaiset havainnot ansaitsevat huomiota tai ainakin painokkaampaa huomiota kuin vanhat havainnot.

Ohjelman on pidettävä kirjaa pelitilanteesta ja sen kehittymisestä; monestiko ohjelma ja käyttäjä ovat voittaneet, monestiko on päädytty tasapeliin. Kokonaistilanteen lisäksi on seurattava esimerkiksi 15-25 viimeisimmän valinnan tilastotietoja. Ohjelman käyttöliittymä voinee sisältää valintanapin kullekin esineelle, tiedon sekä pelaajan että agentin viimeisimmästä valinnasta ja tilastotiedot. Laita ohjelmaasi mahdollisuus lukea syötejonoja tiedostosta kun niiden koodaus on kivi = 1, paperi = 2 ja sakset = 3. Muut mahdolliset merkit jätetään huomiotta. Vastauksena tiedostosta luettuun syötejonoon on tuotettava tilastotietoja sisältävä tulostiedosto. Kokonaistilanteen tilastotietojen lisäksi tiedostoon on tuotettava syötejonon tiedot jaettuna esimerkiksi 15-25 valinnan jaksoiksi. Miten siis agenttisi on pärjännyt osajaksoissa. Valittu arvo annetaan ohjelmalle parametrina.

Harjoitustyöstä palautetaan toimiva ohjelma, lähdekoodit sekä raportti (n. 10 sivua), joka selvittää agentin perusidean ja sen käyttämät tekoälytekniikat. Arvostelukriteereinä käytetään ohjelman suoriutumista, valittujen menetelmien innovatiivisuutta ja raportin laatua.

Tarkastus tapahtuu käsin ei automatisoituna, joten tarkat tiedostomuodot ovat vapaita, kunhan ne on huolellisesti raportoitu. Palautus Timo Aholle (http://www.cs.tut.fi/~aho26/).

Palautuspäivä: 19.5.2009