Kirjautuminen

Haku

Tehtävät

Kilpailu

Ohjelmoi tekoäly!
Kilpailuaika on päättynyt.
Nyt voi äänestää!

Kilpailut: Kuurupiilo: tulokset

Järjestäjä: Metabolix

Vuodenvaihteessa 2019–2020 Ohjelmointiputkassa pidettiin tekoälykilpailu kuurupiilon leikkimisestä.

Kilpailuun osallistui 10 ohjelmaa. Aihe osoittautui melko vaikeaksi. Piiloutumisessa nähdään paljon suuremmat piste-erot kuin etsimisessä, mutta muuten on vaikea sanoa, mitkä seikat tekoälyissä johtivat menestykseen.

Jäljempänä tällä sivulla on ohjelmien kuvauksia, ja tekoälyt voi ladata yhtenä pakettina.

Osallistujat ja tulokset

Alla ovat kaikki kilpailun osallistujat voittajasta alkaen. Kisassa pelattiin yhteensä 5040 peliä: käytiin läpi kaikki kolmen etsijän yhdistelmät kaikissa järjestyksissä ja seitsemän piiloutujan seitsemän eri järjestystä. Pelissä piiloutuja sai joka kierroksella 3 pistettä, kunnes putosi pelistä, ja etsijä sai joka kierroksella miinuspisteitä sen verran, kuin piiloutujia oli vielä mukana. Lisäksi aikarajan ylityksestä kertyi sakkoa.

sijatekoälykielitekijänimimerkkipisteet
1RustausRustAntti VainioAnaatti5625128
2lurkkiRubyJyri Simonenriekkuja5044743
3TaSapainoJavaTapani SjömanTapaniS3742150
4JorolainenCJari Saarijsbasic2248292
5SpinMagnetPythonJoonas TapioSeriousJoke-1286673
6Tuntematon1RustAntti VainioAnaatti-2356862
7MaalitauluJavaScriptLauri KenttäMetabolix-2392897
8ReisillePythonTegu-4194025
9SuikeroJavaScriptLauri KenttäMetabolix-4350419
10viritysC++Otto Seiskarios-11312517

Onnea voittajalle!

Pistetilastot

Alla ovat ohjelmien pisteet eri osa-alueilta ja sijoitukset pelkän piiloutumisen ja etsimisen osalta. Nähdään, että kärkijoukossa ovat nimenomaan parhaat piiloutujat. Voittaja on menestynyt parhaiten molemmissa osioissa. Häviäjän kohtaloksi koituivat sakkopisteet ajankäytöstä.

sijatekoäly#piilossa#etsijänäsakko
1Rustaus1113796841-5754556
2lurkki2111992313-6154488
3TaSapaino3100233784-6281228
4Jorolainen482082192-5959927
5SpinMagnet5693996010-8226633
6Tuntematon1841988095-6555671
7Maalitaulu657565719-8149468
8Reisille1023648346-6558859
9Suikero932896477-7640066
10viritys757295028-7808939-9233080

Ohjelmien tulokset vaihtelivat melko paljon. Seuraavassa taulukossa esitetään, paljonko pisteitä tekoälyt saivat piiloutumisesta suhteessa kunkin pelin parhaan ohjelman pisteisiin. Taulukossa on keskiarvo ja kvartaalit.

sijatekoälykeskiarvoMINQ1Q2Q3MAX
1Rustaus71,3 %3,2 %46,3 %78,5 %100,0 %100,0 %
2lurkki69,4 %3,2 %44,4 %72,8 %100,0 %100,0 %
3TaSapaino65,2 %2,6 %40,5 %64,7 %100,0 %100,0 %
4Jorolainen53,3 %1,6 %26,9 %48,9 %79,9 %100,0 %
5SpinMagnet54,0 %5,1 %30,2 %49,3 %76,2 %100,0 %
6Tuntematon131,7 %0,6 %12,7 %22,3 %44,5 %100,0 %
7Maalitaulu43,1 %3,6 %23,4 %35,4 %56,3 %100,0 %
8Reisille18,3 %0,2 %5,5 %11,1 %24,5 %100,0 %
9Suikero24,7 %0,1 %8,5 %15,4 %32,4 %100,0 %
10viritys44,5 %0,2 %22,9 %39,0 %61,1 %100,0 %

Nähdään, että kolme parasta tekoälyä ovat kukin saavuttaneet huippupisteet ainakin neljäsosassa peleistään – voitto lienee aivan ansaittu. Jokainen tekoäly on silti voittanut ainakin yhden pelin, onneksi olkoon!

Ohjelmat

Tekoälyjen lähdekoodit voi ladata yhtenä pakettina. Alla ovat tekijöiden omat kuvaukset ohjelmistaan.

Rustaus
Anaatti
Pakeneminen tapahtuu pääasiassa kiertäen kentän ulkoreunaa poispäin etsijöistä, mutta tekoäly voi myös hakeutua kentän keskelle. Lisäksi paetessa tekoäly pyrkii aina kiertämään lähellä olevia esteitä ympäri pyrkien esteen taakse, jotta näköyhteys etsijöihin katkeaisi. Etsijänä tekoäly pääasiassa menee suoraan kohti lähintä pakenijaa mutta yrittää olla vaihtamatta kohteita liian useasti. Lisäksi tämä tekoäly yrittää vielä hämätä muita pelaajia tulostamalla vähän satunnaistettuja kohteita. Tekoäly pystyy myös arvioimaan piilossa olevien pelaajien sijaintia niiden viimeksi nähdyn kohteen perusteella.
lurkki
riekkuja
Piiloutuessaan valitsee viidestä pinta-alaltaan suurimmasta esteestä kentän keskipisteeseen nähden etäisimmän. Etsijän nähdessään lähtee kiertämään esteen ympäri karkuun eikä missään vaiheessa etsi uutta piilopaikkaa.
Etsiessään lähtee kiertämään kenttää ennalta määrättyä reittiä pitkin. Yhdenkin etsijän havaitessa piiloutujan suuntaa suoraan piiloutujaa kohden.
TaSapaino
TapaniS

Piiloutuja: Alkupiilo satunnaisesti alueelta, jossa eniten piiloja. Jos nähdään, ensin saman piilon toiselle puolelle ja sitten kauemmas.

Etsijä: Samalla logiikalla alkusuunta. Jos nähdään piiloutuja, lähdetään perään. Jos piiloutuja katoaa näkyvistä, suunnataan hänen viimeisimpään kohteeseensa. Jos toinen etsijä on lähellä menossa samaan suuntaan, vaihdetaan omaa suuntaa toiseksi.

Jorolainen
jsbasic
Ohjelma perustuu lähes kokonaan vektorilaskentaan, lukion pitkän matematiikan kursilla opittuihin yhteenlaskuun, kertomiseen luvulla ja pituuden laskemiseen. Näiden avulla muodostetaan erilaisia sääntöjä: Etsijä yrittää saartaa piiloutujat reunoille ja samalla kohti muita etsijöitä. Piiloutujana ohjelma aloittaa siltä puolelta estettä, jossa on eniten muita esteitä peittämässä. Jäätyään kiinni piiloutuja yrittää vaihtaa eri puolelle estettä tai paeta alueen keskelle.
SpinMagnet
SeriousJoke

Tämä tekoäly koostuu kahdesta osasta. Tekoälyä inspiroi magneettien toiminta, ja sen on jokseenkin sidonnainen kentän muotoon ja ongelmanasetteluun.

Etsintä: Aluetta kierretään ympäriinsä viiden eri pisteen kautta, jotka kattavat koko kentän melko hyvin. Pisteiden välillä liikutaan satunnaisesti, mutta huomioon otetaan myös muiden etsijöiden sijanti niin, että heitä vältetään. Tämä lisäksi, kun tehdään havainto piiloilijasta, hänen tietonsa otetaan muistiin ja häntä lähdetään jahtamaan.

Piiloilu: Pelin alkaessa mennään piilon kauimman ympyrän taakse optimaaliseen paikkaan keskustaan nähden, jossa pysytään paikallaan, kunnes joku löytää. Löytämiseen jälkeen aletaan kiertää ympyrää vaihtaen suuntaa tarvittaessa. Suunnanvaihtomekanismia voisi parantaa nykyisestä.

Tuntematon1
Anaatti
Tämä on Rustauksen aikaisempi versio, jossa ei ole vielä kaikkia lopullisia ominaisuuksia. Lisäksi tekoäly on hyvin buginen, erityisesti pakenemisen osalta, minkä vuoksi tekoäly toimii varsin järjettömästi tuoden kaaosta pelikentälle.
Maalitaulu
Metabolix
Maalitaulu numero 1 etsii kiertämällä keskustan ympäri etäisyydellä 1000 eli reunoja pitkin. Numerolla 2 ja 3 se pysyy etäisyydellä 700 tai 300 keskustasta ja pyrkii samaan suuntakulmaan kuin etsijä numero 1, joten kolmena etsijänä se olisi melko tehokas haravointiketju. Piiloutuessaan se kiertää keskustaa etäisyydellä 900, ja etsijöitä kohdatessaan se valitsee tietyllä logiikalla suunnan, jossa näyttää olevan suurin rako etsijöiden ketjussa. Esteitä se ei huomioi.
Reisille
Tegu
Nimensä mukaiseseti täysin reisille mennyt yritelmä, josta piti viime minuuteilla poistaa toimimatonta piiloutumiskoodia. Vaeltelee lähinnä satunnaisesti ympäriinsä, paitsi jos sattuu näkemään jonkun etsijänä. Yrittää etsijänä jopa seurata jahdattavan kohdetta hieman ennakoiden.
Suikero
Metabolix
Piiloutuessaan Suikero valitsee pelilaudalta pisimmän esteketjun, jossa peräkkäisten esteiden välimatka on tarpeeksi pieni. Suikero kiemurtelee valitsemaansa ketjua pitkin kiertäen esteet vuoroin vasemmalta, vuoroin oikealta. Etsiessään Suikero järjestää esteet muutamaan sektoriin ja kiertää järjestyksessä vuorollaan kunkin sektorin esteet ja luottaa siihen, että joku muu lähtee varsinaisesti ajamaan takaa havaittuja piiloutujia.
viritys
os
Yrittää mallintaa todennäköisyyksiä sille, missä muut pelaajat ovat, ja käyttää niitä navigointiin.

Lopuksi

Kiitos kaikille osallistujille hyvästä kilpailusta, ja tervetuloa mukaan taas ensi kerralla.

Tietoa sivustosta