Jos joku nyt kuitenkin kommenttien takia haluaa nimensä pois kilpailutyöstään, teen sen kyllä. Toivoisin kuitenkin, että jopa alemmas listalle joutuneet tuntisivat edes pientä ylpeyttä siitä, että viitsivät ja uskalsivat ottaa osaa.
Kuten kisasäännöissä luvattiin, on kierroksia mikä tahansa määrä 100:n ja 1000:n välillä. Tämä oli tehty siksi, ettei mikään työ voi tietää, koska kisa loppuu. Valitsin loppukilpailuun 791 kierrosta.
Yhdessä työssä oli oppimismoodi, jonka avulla se ensimmäisen pelikierroksen jälkeen tiesi, montako kierrosta on, mutta koska tekijä itsekin epäili sen sallittavuutta, hän teki ominaisuudesta helposti poiskytkettävän.
Yllättävän monessa työssä oli C++ -sekasotkua ja yhdessä oli selvä ohjelmointivirhe (taulukon rajojen ylitys), joista sain suoria kääntäjävirheitä tai varoituksia (gcc, Amigan SAS/C). Ja kun pitkien epäilysten päätteeksi lisäsin testipenkkiin koodin, joka tutkii kunkin pelaajan vastauksen laillisuuden, huomasin, että kaksi algoritmia tosiaan palauttavat myös muita arvoja kuin sallitut V_LUOTA ja V_HYLKAA.
Koska osassa töistä on mukana satunnaisuutta, vaihtelevat pisteet hieman. Siksi päätin jo etukäteen, että ensimmäinen 17.12. ajamani Vankipeli tuottaa lopulliset tulokset. Tämä tehtiin siksi, etten itse pääsisi tahallisesti tai tahattomasti vaikuttamaan tuloksiin.
Testirutiineista jätin algoritmin "Arvo" kilpailutöiden joukkoon, jotta se antaisi kuvan, miten täysin satunnaisesti käyttäytyvä "ilman algoritmia" toimiva vanki pärjäisi. Algoritmeissa, jotka pärjäävät huonommin kuin "Arvo", kutakuinkin täytyy olla jokin ajatusvirhe.
On myöskin huomattava, että töiden menestys riippuu yksinomaan siitä, mitä vastustajia kisassa on. Jos joitakin töitä jätetään pois tai otetaan lisää, muuttuu myös muiden töiden järjestys.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 389470 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 270763 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 230951 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 185449 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 179967 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 150052 7. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 144869 8. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 104691 9. tommi.lundell.ntx.nokia.com Testi2i Ti 104071 10. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 80188 11. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 53816 12. Tero Pulkkinen (terop.modeemi.cs.tut.fi) Teron oppiva viritys TP 48021 13. Risto Kurki (kafka.cc.tut.fi) Painotus Pn 27272
Hiukan harmikseni täytyy todeta, että ylivoimaisesti yksinkertaisin algoritmi voitti koko kisan. "Seuraa kaveria" on niin yksinkertainen, että laitan koko C-aliohjelman tähän:
static enum VASTE SeuraaKaveria(enum SYOTE edellinen) { return (edellinen==S_HYLKAA)?V_HYLKAA:V_LUOTA; }Ohjelma todellakin vain palauttaa vastapuolen edellisen siirron, ja aloittaa ensimmäisen kierroksen luottamalla. Tämä algoritmi, joka on alunperin ollut nimeltään "Tit for Tat" (Prof. Anatol Rapoport), voitti myös alkuperäisen ohjelmointikilpailun parikymmentä vuotta sitten. Kukaan muu kilpailijoista ei uskaltanut ajatella riittävän yksinkertaisesti. Näin "Seuraa kaveria" voittaa aika ylivoimaisesti.
Tämän algoritmin yksi mielenkiintoinen piirre on se, ettei se koskaan voita kaksinkamppailua. Se häviää aina niukasti tai pääsee tasapeliin. Paradoksilta tuntuva tilanne korjautuu sillä, että "Seuraa kaveria" saa hyvin helposti korkeita pisteitä - kun taas monilta muilta algoritmeilta menee tarmoa erilaisten huijausten keksimiseen.
Filosofiselta kannalta voimme tulkita voittaja-algoritmin toiminnan näin: kun tapaat uuden vastustajan, aloita optimistisesti luottamalla häneen. Jos luottamuksesi kuitenkin petetään, iske heti takaisin. Mutta jos vastustajasi päättää kokeilla uudelleen sinuun luottamista, älä jää murjottamaan.
Harmillinen puoli tässä työssä on myös se, että se tulee niin läheltä, että taidan tosiaan joutua lunastamaan lupaukseni voittomunkista.
Tämä algoritmi on muuten samanlainen kuin "Seuraa kaveria", mutta se vaatii vastustajalta kaksi peräkkäistä luottamista ennen kuin suostuu antamaan anteeksi. Tämä hiuksenhieno ero tuo yllättävän suuren piste-eron, koska moni ilkeä algoritmi ei halua antaa kahta luottoa petoksen jälkeen.
Tämä työ on selvästi parhaiten pärjännyt ilkeistä töistä. "Codeformer" kokeilee kolmannella ja neljännellä kierroksella kepillä jäätä pettämällä ja katsoo, saadaanko sen jälkeen syntymään luottamusta.
Alkuperäisessä 70-luvulla järjestetyssä kilpailussa kiltit ohjelmat pärjäsivät järjestelmällisesti ilkeitä paremmin, ja se näkyy pitäneen pääosin paikkansa myös tässä. "Codeformer" pärjäsi kuitenkin aika hyvin joukossa.
Tunnustele on hieman samankaltainen algoritmi kuin "Codeformer", ja korkeimmalle päässyt hylkäämällä aloittava algoritmi. Hylkäämällä aloittamisessa on se vaarallinen puoli, että se sattuu helposti omaan nilkkaan, mikäli vastapuoli on kovin herkkähipiäinen (kuten "Luota luotettavaan").
Tämä, kolmas ja heikoiten pärjännyt kilteistä algoritmeista pääsi silti kokonaiskisassa puolenvälin paremmalle puolelle. Algoritmi on erittäin yksinkertainen: luota niin kauan, kunnes petetään edes kerran. Ja jos luottamus kerran menetetään, sitä ei anneta takaisin vaikka mikä olisi.
Tässäkin työssä koodin määrä verrattuna sijoitukseen on varsin hyvä: algoritmin saisi kirjoitettua kahteen riviin mukaan lukien muistimuuttujan alustus.
Tunnista itsesi aloittaa pelinsä ennalta määrätyllä 16 siirron sekvenssillä voidakseen pelata itsensä kanssa plussia ja kupatakseen muita. Mutta kun vapaaehtoisesti kupattavaksi suostuvia algoritmeja ei joukossa juuri ole, käy olo äkkiä tukalaksi.
Tämä ehkä koko joukon hienostunein algoritmi aloittaa pelin muutamalla satunnaisella siirrolla (kuitenkin painottaen vastustajan siirtojen mukaan). Samalla se tilastoi kummankin osapuolen siirtoja ja suorittaa lokaalin optimoinnin kahden seuraavan kierroksen odotustuloksen maksimoimiseksi.
Haluaisin itse joskus oppia oikein kunnolla optimointiteoriaa, mutta tässä nimenomaisessa tapauksessa koneellinen optimointi jäi kauas yhden rivin voittaja-algoritmista. Harmittava takaisku on myös se, että Pasi Fränti lähetti myös pari muuta algoritmia, josta yksi pärjäsi oleellisesti paremmin kuin tämä (katso Kaikki työt vastakkain).
On myös todennäköistä, että jos algoritmi aloittaisi aina luottamalla satunnaisen aloituksen sijasta, sen mahdollisuudet pärjätä olisivat paremmat.
Tuloksena on kuitenkin kohtuullinen seitsemäs sija.
On ikävää, ettei kisan parhaalla nimellä mukaan lähtenyt työ noussut tätä ylemmäs.
"vanki no 7" on melkein erinomainen. Ensimmäiset 97 siirtoa se pelaa kuten "Seuraa kaveria", mutta sitten se alkaa kieroilla. Ikävä kyllä tämän kieroilun seurauksena se vääntää lähes kaikkien kanssa hanat nollille. Ainoina poikkeuksina näkyvät olevan Local Optimization ja Painotus, jotka molemmat ovat niin fiksautuneet keskinäiseen luottamukseen, että niiltä menee kymmeniä, jopa satoja siirtoja ennen kuin älyävät kääntää luottovirtansa kiinni.
Tämäkin työ aloittaa olemalla kiltti, mutta alkaa pian kokeilla vastustajansa rajoja. Liian usein se kuitenkin venyttelee rajaa liikaa. Kaikkein harmillisin piirre on se, ettei "Testi2i" saa sovittua itsensä kanssa jatkuvaa luottamusta, vaan joka kuudes kierros menee molemmille epäedulliseksi tuplamiinukseksi.
Olemme tässä jo oppineet, että ilkeät algoritmit tuppaavat pärjäämään huonommin kuin kiltit. Mitä siis voimme odottaakaan algoritmilta, jonka nimikin on "Petä"?
"Petä" aloittaa "Tunnista itsesi":n tavoin tunnistekuviolla, jolla se tunnistaa itsensä. Sen jälkeen se kokeilee hetken olla kiltti, mutta ellei se taistele itseään vastaan se alkaa tarjota pitkää miinusta. Tilanne saattaisi olla pelastettavissa, mikäli se huomaisi toisen iskiessä takaisin taas ruveta olemaan ihmisiksi, mutta näin ei käy.
Arvo ei hävinnyt. Kaikki tämän alapuolelle joutuneet työt pärjäävät siis jopa täysin satunnaistakin algoritmia huonommin tässä ympäristössä.
"Teron oppiva viritys" ei oikein uskalla luottaa kehenkään, paitsi itseensä. Se saa kyllä muutaman vastustajan kanssa sovittua keskinäisen tukemisen taktiikasta, mutta ei esimerkiksi kaikkein helpoimman, "Seuraa kaveria", kanssa.
Jonkun pitää aina jäädä viimeiseksi ja tällä kertaa se on ikävä kyllä painotus. En ole sen tarkemmin tutkinut algoritmia, mutta koska siinä oli taulukkorajavirhe, mieleeni tuli, että ehkä siinä on muitakin yksinkertaisia ohjelmointi-/ajatusvirheitä, jotka selittäisivät heikon menestyksen.
Mutta kuten sanoin, on parempi osallistua ja jäädä hännille kuin olla osallistumatta kokonaan.
Peli alkakoon!
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 389470 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 270763 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 230951 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 185449 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 179967 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 150052 7. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 144869 8. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 104691 9. tommi.lundell.ntx.nokia.com Testi2i Ti 104071 10. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 80188 11. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 53816 12. Tero Pulkkinen (terop.modeemi.cs.tut.fi) Teron oppiva viritys TP 48021 13. Risto Kurki (kafka.cc.tut.fi) Painotus Pn 27272"Painotus" tipahtaa armotta pois kisasta.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 382610 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 272750 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 231843 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 185089 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 183210 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 148248 7. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 127423 8. tommi.lundell.ntx.nokia.com Testi2i Ti 108735 9. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 107299 10. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 82204 11. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 56028 12. Tero Pulkkinen (terop.modeemi.cs.tut.fi) Teron oppiva viritys TP 18737"Teron oppiva viritys" joutuu väistymään kisasta. Ja kuten sanottua, kilpailu vaikuttaa keskinäiseen järjestykseen: "Testi2i" nousee "vanki no 7":n ohi.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 384184 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 270437 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 230277 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 183800 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 180424 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 150300 7. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 124623 8. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 106538 9. tommi.lundell.ntx.nokia.com Testi2i Ti 104185 10. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 79999 11. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 46155"Arvo" ei jäänyt kisan viimeiseki, mutta joutuu nyt väistämään parempiensa tieltä.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 356490 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 237747 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 191271 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 143356 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 143049 6. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 112360 7. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 89691 8. tommi.lundell.ntx.nokia.com Testi2i Ti 88132 9. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 67088 10. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 42250
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 357167 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 236953 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 192155 4. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 149287 5. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 145484 6. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 143558 7. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 111572 8. tommi.lundell.ntx.nokia.com Testi2i Ti 101013 9. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 68803Yhtään algoritmia ei tunnu haitanneen "Petä":n menetys. Se ei tosin juurikaan auta "vanki no 7":ää. "Luota luotettavaan" alkaa menettää asemiaan.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 352742 2. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 187591 3. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 187128 4. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 141381 5. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 138949 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 109426 7. tommi.lundell.ntx.nokia.com Testi2i Ti 72937 8. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 53988"Local Optimization":ilta menee pasmat dramaattisesti sekaisin sen pudotessa turvallisen oloiselta 4. sijalta pudotuspaikalle. "Codeformer" kirii asemiaan.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 306136 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 186834 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 186194 4. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 138294 5. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 137554 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 74120 7. tommi.lundell.ntx.nokia.com Testi2i Ti 71378"Testi2i" joutuu pitkän kitumisen jälkeen terärattaalle, ja kiltti mutta armoton "Luota luotettavaan" nousee sijalle 4 käytyään välillä jopa 6. sijalla. "Codeformer" putoaa takaisin 3. sijalle.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 268774 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 188000 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 187090 4. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 139442 5. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 138530 6. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 74954"Tunnista itsesi" on nyt armottomassa pudotusvuorossa. On mielenkiintoista panna merkille, että kaikki kolme kilpailun kilttiä työtä on vielä kisassa mukana, ja vielä sijoilla 1, 2 ja 4.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 237096 2. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 188736 3. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 187902 4. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 140120 5. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 139218Pudottuaan viidennelle sijalle edellisellä kierroksella "Tunnustele" ei mahda kohtalolleen mitään. 10 ilkeästä algoritmista on tämän jälkeen enää yksi jäljellä. "Codeformer" hönkii edelleenkin aivan 2. sijan kannoilla.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 189778 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 189738 3. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 141312 4. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 140544Kolme kilttiä algoritmia pelaavat jo niin hyvin yksiin, että ne tipauttavat porukalla viimeisenkin ilkeän algoritmin mäkeen. Nopeimmat arvaavat jo seuraavan kierroksen tuloksen.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 142380 1. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 142380 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 142380Kun kaikki algoritmit ovat kilttejä, taputtelevat ne vain kilvan toistensa selkiä eikä eroa enää synny. Kilpailu on päättynyt kilttien algoritmien kolmoisvoittoon.
1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 866904 2. Robert Axelrod (old) Tit for 2 Tats T2 812420 3. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 747055 4. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 742157 5. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 668003 6. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki 2 th 605044 7. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 579038 8. Pasi Ojala (albert.cs.tut.fi) Safe Try ST 548900 9. Henrik Herranen (leopold.cs.tut.fi) Arvo adaptiivisesti AA 544851 10. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 527765 11. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 508436 12. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 480334 13. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 474038 14. tommi.lundell.ntx.nokia.com Testi2i Ti 439146 15. Pasi Fränti (franti.cs.joensuu.fi) Play even EV 412736 16. Henrik Herranen (leopold.cs.tut.fi) Vuorottele VU 388996 17. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 364556 18. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 342333 19. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 335810 20. Henrik Herranen (leopold.cs.tut.fi) Arvo kiltisti AK 321143 21. Pasi Fränti (franti.cs.joensuu.fi) Politics PO 277741 22. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 273223 23. Henrik Herranen (leopold.cs.tut.fi) Arvo ilkeästi AI 242171 24. Henrik Herranen (leopold.cs.tut.fi) Luota aina LA 220020 25. Tero Pulkkinen (terop.modeemi.cs.tut.fi) Teron oppiva viritys TP 215722 26. Henrik Herranen (leopold.cs.tut.fi) Hylkää aina HA 214224 27. Risto Kurki (kafka.cc.tut.fi) Painotus Pn 210858Kaikkein parhaiten asemiaan parantaa Pasi Fränti, joka siirtyy sijalta 5/12 sijalle 5/27. Käyn tässä läpi vielä muutaman uuden algoritmin ja kommentoin niiden toimintaa:
On sääli, ettei kukaan huomannut lähettää tätä työtä kisaan. "Tit for 2 Tats" on muuten kuten "Seuraa kaveria" (eli "Tit for Tat"), mutta se vaatii vastustajaltaan kaksi peräkkäistä pettämistä ennen kuin se alkaa pettää. Se on siis tavallaan vastakohta "Ei tasapeliä ilkiöille" -algoritmille.
Algoritmi käyttää 8 vuoroparia vastustajan tarkkailuun. Jos vastustaja näiden aikana tuntuu luottavan aina, hylkää aina alkukierrosten jälkeen. Muuten käyttäytyy kuten "Seuraa kaveria". Tutki ja hutki on selvästi parhaiten pärjäävä ilkeä hylkäämällä aloittava algoritmi.
Olen vilpittömästi järkyttynyt, miten hyvin lähes puhtaaseen satunnaisuuteen perustuva algoritmi toimii: alussa asetetaan pelattujen pelien määrä yhdeksi ja merkataan se luotetuksi. Tämän jälkeen palautetaan tulos, jonka hylkäystodennökäisyys on vastustajan hylkäysprosentti siihen asti (tuo edellä mainitun vääristymän alentamana tosin).
Liian moni algoritmi on optimoitu kuppaamaan tätä algoritmia, joten menestys jää heikoksi. Huomattavaa on kuitenkin se, että tämä maailman sinisilmäisin algoritmi ei kuitenkaan häviä peliä, ja voittaa maailman ilkeimmän algoritmin, "Hylkää aina":n.
Liian moni algoritmi huomaa tämän metkut heti alkuunsa eikä anna tälle pistettäkään.
27. Risto Kurki (kafka.cc.tut.fi) Painotus Pn 210858 26. Tero Pulkkinen (terop.modeemi.cs.tut.fi) Teron oppiva viritys TP 211135 25. Henrik Herranen (leopold.cs.tut.fi) Hylkää aina HA 210707 24. Pasi Fränti (franti.cs.joensuu.fi) Politics PO 245137 23. Henrik Herranen (leopold.cs.tut.fi) Arvo ilkeästi AI 255167 22. Tommi Ylikulju (tylikul.ratol.fi) Petä PE 268481 21. Henrik Herranen (leopold.cs.tut.fi) Luota aina LA 304700Oli erittäin jännittävää huomata, kuinka "Luota aina" pysytteli koko ajan toiseksi tai kolmanneksi viimeisenä. Mutta joka kerta, kun sen alapuolella ollut ja sitä hyväksikäyttänyt ilkeä algoritmi poistettiin, "Luota aina":n pistemäärä kasvaa. Lopuksi kuitenkin tämä kilteistä kiltein algoritmi putoaa pelistä pois.
Jatkamme sijoilla 16..20:
20. Jyke Jokinen (jyke.cs.tut.fi) Tunnista itsesi JJ 247737 19. Henrik Herranen (leopold.cs.tut.fi) Vuorottele VU 244780 18. Kimmo.Takkunen.helsinki.fi vanki no 7 V7 235761 17. Henrik Herranen (leopold.cs.tut.fi) Arvo AR 244608 16. Pasi Fränti (franti.cs.joensuu.fi) Play even EV 278003Kiltit algoritmit johtavat tilannetta. Kolme ensimmäistä sijaa ovat jo pitkään olleet "Seuraa kaveria", "Tit for 2 Tats" ja "Ei tasap. ilkiöille". "Luota luotettavaan" tosin on vaarallisen lähellä pudotusrajaa, mutta "Follow trend" on toistaiseksi turvassa.
Jaetaan sijat 11..15:
15. Henrik Herranen (leopold.cs.tut.fi) Arvo kiltisti AK 254655 14. tommi.lundell.ntx.nokia.com Testi2i Ti 221713 13. Tero Holstila (h150712.cc.tut.fi) Tunnustele TU 237334 12. Pasi Fränti (franti.cs.joensuu.fi) Local Optimization LO 214813 11. Tero Mäyränen (deetsay.jyu.fi) Luota luotettavaan LL 279238"Luota luotettavaan" joutui lopultakin antamaan periksi paremmilleen. Huomattavaa on, että virallisten kilpailutöiden pudotuskisassa jaetulle ensimmäiselle sijalle vaikeuksien kautta noussut algoritmi jää tässä kilpailuilmapiirissä tylysti sijalle 11.
Kymmenen parhaan joukossa on viisi kilttiä algoritmia: 1. "Ei tasap. ilkiöille", 2. "Seuraa kaveria", 3. "Tit for 2 Tats", 4. "Follow trend" ja 8. "Arvo adaptiivisesti".
"Tit for 2 Tats" on pudonnut toiselta sijaltaan kolmanneksi.
Ja sitten on vuorossa TOP-10.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 473980 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 473780 3. Robert Axelrod (old) Tit for 2 Tats T2 473424 4. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 425632 5. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 398477 6. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki 2 th 349522 7. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 321245 8. Pasi Ojala (albert.cs.tut.fi) Safe Try ST 308457 9. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 284891 10. Henrik Herranen (leopold.cs.tut.fi) Arvo adaptiivisesti AA 280232"Arvo adaptiivisesti" menetti kaikkien muiden kilttien algoritmien kanssa erinomaisen yhteistyökumppanin, kun äärimmäisen epäluuloinen "Luota luotettavaan" karsiutui viime kierroksella.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 426520 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 426320 3. Robert Axelrod (old) Tit for 2 Tats T2 425964 4. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 375986 5. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 353019 6. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 330340 7. Pasi Ojala (albert.cs.tut.fi) Safe Try ST 305520 8. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 281049 9. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki 2 th 279344"Tutki ja hutki 2" menettää täydet kolme sijaa ja putoaa kokonaan pois.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 379308 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 379148 3. Robert Axelrod (old) Tit for 2 Tats T2 378810 4. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 330294 5. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 329029 6. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 283148 7. Pasi Ojala (albert.cs.tut.fi) Safe Try ST 282706 8. Juha Knuutila (juhakn.cs.tut.fi) Codeformer CF 282343"Codeformer":in taru loppuu tällä kertaa neljä sijaa alempaan sijoitukseen kuin varsinaisten kilpailutöiden pudotuskisassa.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 331910 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 331790 3. Robert Axelrod (old) Tit for 2 Tats T2 331532 4. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 330452 5. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 259769 6. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 258793 7. Pasi Ojala (albert.cs.tut.fi) Safe Try ST 235304Tämän jälkeen on enää kaksi ilkeää algoritmia taistelemassa voitosta. Vaikeutta lisää se, että kilteillä on kolmoisjohto.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 284512 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 284432 3. Robert Axelrod (old) Tit for 2 Tats T2 284192 4. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 283045 5. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 260308 6. Risto Paasivirta (paasivir.jyu.fi) Ohari Oh 260293"Ohari" häviää hiuksen hienosti "Follow trend":ille. Tiukkaa tekee myös kärkisijoilla.
Sija Tekijä Pelin nimi Lyh Tulos 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 237052 2. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 237012 3. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 237005 4. Robert Axelrod (old) Tit for 2 Tats T2 236994 5. Henrik Herranen (leopold.cs.tut.fi) Tutki ja hutki TH 235913"Tutki ja hutki" menettää hiukan yllättäen asemiaan pudotuspaikkaan saakka. Ja näin päädytään taas tilanteeseen, jossa jäljellä on enää kilttejä algoritmeja.
Sija Tekijä Pelin nimi Lyh Tulos 1. Pasi Ojala (albert.cs.tut.fi) Seuraa kaveria SK 189840 1. Robert Axelrod (old) Tit for 2 Tats T2 189840 1. Pasi Fränti (franti.cs.joensuu.fi) Follow trend FT 189840 1. Risto Paasivirta (paasivir.jyu.fi) Ei tasap. ilkiöille ET 189840Ja näin siinä taas käy: kiltit algoritmit saavat jäädä taputtelemaan toisiansa selkään.