Vuodenvaihteessa 2019–2020 pidetään jälleen ohjelmointikilpailu.
Tässä tekoälykilpailussa on aiheena kuurupiilo. Kolme pelaajaa etsii ja muut piiloutuvat. Jos pysyy liian kauan etsijän näkyvillä, jää kiinni.
Tarkemmat säännöt ovat kilpailusivulla, ja peliä (ja omaa tekoälyään) voi kokeilla testaussivulla. Mukana on perinteiseen tapaan esimerkkiohjelma muutamalla yleisimmällä ohjelmointikielellä.
Tervetuloa kilpailuun!
Tähän viestiin kerätään linkkejä harjoitusvastustajiin:
Dodii! Näitä on aina kiva tehdä, vaikkei menestyisikään. Aihe vaikuttaa hauskalta, vaikka ehkä aavistuksen vaikealta. Tästä aiheesta tuli väkisinkin mieleen vähän aikaa sitten näkemäni OpenAI-julkaisu: https://openai.com/blog/emergent-tool-use/ Onkohan sama ehkä jopa toiminut innoittajana tälle aiheelle? :)
Tegu, hauska linkki. :) Tämän kisan idea tuli kuitenkin siitä, että mietin erilaisia vaikeampia pelejä mutta totesin sitten, että pelkkä järkevä navigointi maailmassa on jo tarpeeksi vaikea tehtävä. Lisäksi ensimmäinen itse järjestämäni kilpailu oli vuoden 2008–2009 hippakilpailu, jonka jatkoksi tämä sopii hyvin.
Vaikka aihe on ehkä vaikea, yritin tehdä osallistumisesta helppoa: Ohjelma voi tulostaa mitkä tahansa koordinaatit pelilaudalta ja odottaa, että pääsee perille. Jopa esteiden huomioiminen on siis vapaaehtoista. Esimerkkiä on helppo jatkokehittää. Kannustan kaikkia yrittämään.
Edelliseen kisaan osallistuneille vielä huomiona: apuohjelma KilpailuProxy on uudistunut huomattavasti, eli on syytä ladata uusi versio ja säätää asetukset tällä kertaa asetustiedoston kautta.
Testasin peliympäristöä ja java-esimerkkiohjelmaa ja hyvin näytti toimivan! Tuntui hiukan hankalammalta kuin poimintapelin ympäristö, mutta asetusten syöttäminen KilpailuProxy.json -tiedoston kautta varmaan onkin parempi noin.
Harjoitusvastustajia taas kaivattaisiin ...
TapaniS: Kehitysehdotuksia (tai jopa koodia) otetaan mieluusti vastaan. Ominaisuuksia on paljon enemmän kuin edellisissä kisoissa, mutta käyttöliittymää voi varmasti vielä hioa.
Kilpailuproxyn hallintaosite on hiukan eri kuin tuohon lomakkeelle napsahtaa. Eli pieni säätö tuohon helpottaisi. Saahan sen tietysti myös kirjoitettua manuaalisesti.
Pisteen etäisyys suorasta. Tuo piti käydä katsomassa, muuten ei lähde ajatus käyntiin.
Tangentin yhtälö ja tämäkin vielä!
TapaniS kirjoitti:
Kilpailuproxyn hallintaosite on hiukan eri kuin tuohon lomakkeelle napsahtaa.
Hauska huomio. Nyt testaussivulla on sama osoite. Sinänsä on melko yleisesti tiedossa, että 127.0.0.1 ja localhost johtavat samaan paikkaan... (Jotain ongelmia oli localhost-sanan käytössä, ja siksi KilpailuProxyssa on nimenomaan 127.0.0.1.)
Korjasin myös testaussivusta kiusallisen bugin, joka aiheutti turnauksen toimimattomuuden muilla kuin Firefoxilla.
Tulipa mieleen, että mitenköhän peliohjain toimisi ihmispelaajalle. Eipähän ainakaan tarvitsisi kliksutella ympäriinsä. Kyhäsin sitten ensimmäistä kertaa jotain selainten Gamepad-rajapinnalla, ja ihan kelvollisesti se tuntuisi toimivan. Välillä syöte tosin tuntuu jäävän pohjaan hetkeksi, ja pelin alussa pitää jostain syystä klikata hiirellä ennen kuin ohjain alkaa totella. Kaikki on kovakoodattua, joten jos jotain haluaa säätää, niin se pitää tehdä koodissa. Testattu pelkästään Firefoxilla ja (ei-Chromium-)Edgellä.
Paste: http://paste.dy.fi/mu5 (rivit 1208–1235 ja 1246)
Näppistuki kävi mielessä, mutta itse en enää sitä tarvitse, kun tuon toteutin, joten sen saa joku halutessaan tehdä. :D
Tegu: Lisäsin tuolta pohjalta peliohjainkoodin testaussivulle. Tämän pitäisi toimia myös ilman klikkausta. Minulla ei ole peliohjainta testattavaksi, joten voitko kokeilla päivitettyä sivua?
Saako kilpailuun osallistua joukkueena? Säännöt ei suoraan kiellä tätä, viittaa tosin "osallistujaan" yksikössä.
En keksi hyvää syytä miksi ei, paitsi että yksin kisassa on vaikeampi pärjätä jos mukana on joukkueita. Syitä puolesta sen sijaan ovat että yhdessä on hauskempi tehdä, ja joka tapauksessa on mahdoton valvoa että yhtä tekoälyä on ollut tekemässä vain yksi henkilö.
Heh - ekan kappaleen perusteella ajattelin että tarkoitat että tekisi useamman tekoälyn jotka pelaisi joukkueena muita tekoälyjä vastaan.
En usko että koodaus tiimissä on sinänsä kiellettyä, mm. mainitsemistasi syistä.
atlantti, kuten itsekin totesit, tekoälyn tekijöitä ei voi kuitenkaan valvoa. Saa mielellään ilmoittaa kaikkien tekijöiden tiedot ja joukkueen nimen, ja laitetaan sitten tuloslistaan tekijäksi vaikka joukkueen nimi ja tarkemmat tekijätiedot tekoälyn kuvaukseen.
Keskeneräisiä ohjelmia saa mielellään julkaista kisan kuluessa harjoittelua varten, niin kisan kiinnostavuus ja taso nousee.
Yritin saada kaksi ohjelmaa testaussivulle, mutta en onnistunut. Olisiko tällaiseen ohjetta, miten pitäisi toimia? Käynnistin kaksi kilpailuproxyä (127.0.0.1:50001 ja 127.0.0.1:50002), testisivu löytää ohjelmat, mutta kun pelin käynnistää, tulee virhe ja ensimmäistä ohjelmaa ei enää löydy.
TapaniS: Kaikki ohjelmat kuuluu määritellä saman KilpailuProxyn asetuksiin; tätä varten programs-asetus on taulukko. Useaa KilpailuProxya ei voi yhdistää samalle testaussivulle. (Yksittäisiä tekoälyjä voi tarvittaessa suoralla osoitteella laittaa kohtaan ”Muut WebSocket-ohjelmat”.)
Ok, yritin kyllä tuonne asetustiedostoon laittaa kaksi ohjelmaa, mutta en löytänyt oikeaa formaattia tähän.
Virhe: "Tiedosto KilpailuProxy.json ei ole kelvollinen JSON-asetustiedosto."
No nyt onnistui sittenkin!
"programs": [ { "name": "ohjelma1", "version": "v1", "path": "c:\\Java\\xxx\\zzz\\", "command": ["java", "ohjelma1"] }, { "name": "ohjelma2", "version": "v1", "path": "c:\\Java\\xxx\\zzz\\", "command": ["java", "ohjelma2"] } ]
Eli unohtui tuo pilkku ohjelmien välissä olevien sulkeiden välistä pois.
Tästä ensimmäinen harjoitusvastustaja: TaSsuttelija. Ei ole kovin kehittynyt, toivottavasti paranee vielä kovasti. Nyt lähinnä tassuttelee piiloon tai etsijänä roikkuu toisten perässä. Tämä siis Javalla tehty.
Tässä on myös yksi vastustaja: lataa. Mukana on Windows ja Linux binäärit. Linuxia en testannut kunnolla, mutta toivottavasti toimii. Tää on vielä aika kämänen, mutta koitan laittaa parempaa versiota vielä myöhemmin.
Ajoin testisivulla turnajaisia, mutta turnajaiset päättyvät aina ensimmäisen pelin jälkeen virheeseen, jos KilpailuProxy on mukana. En ole myöskään onnistunut saamaan tulosteita tiedostoon, mahdollisesti liittyvät toisiinsa (?).
Mitkähän asetukset pitäisi olla, jotta tuo onnistuisi? Nyt alla olevan mukaiset:
"version": "2019-11-16", "host": "127.0.0.1", "port": 50001, "output": { "usage": true, "program": true, "traffic": true, "storage": true }, "storage": { "read": true, "write": true, "password": "", "path": "data" }, "programs": [ ...
Joo, itellä on kanssa ongelma KilpailuProxy.exen kanssa, kun ajaa turnausta. Printtaa seuraavan tyyppisen virheen:
write esim1-esim2-esim3,esim4,-1812931603.json failed, Menetelmää ei löydy: System.String[] System.String.Split(Char, System.StringSplitOptions).
Python versio KilpailuProxysta toimii kyllä ongelmitta turnauksessa käyttäen samoja asetuksia.
Jaa, olen tainnut ennenkin törmätä samaan Split-metodin eroon Monossa. Nyt on uusi KilpailuProxy.exe, jossa tuon pitäisi olla kunnossa.
Metabolix kirjoitti:
Jaa, olen tainnut ennenkin törmätä samaan Split-metodin eroon Monossa. Nyt on uusi KilpailuProxy.exe, jossa tuon pitäisi olla kunnossa.
En saanut vieläkään toimimaan. Sama virhe tulee edelleen.
Python-proxy toimii kyllä, mutta Anaatin harjoitusvastustaja jämähti siinä alkuruutuun.
No nyt pitäisi olla kunnossa, testasin Windowsilla. Path.Join != Path.Combine. Ihme, että Monossa toimii.
Jep. Nyt toimii hienosti!
Tässä on JS:llä tehty tekoäly Maalitaulu v1. Voi siis kopioida suoraan testaussivun laatikkoon tai ajaa komentorivillä Node.js:llä tai SpiderMonkeylla.
Ajoin turnauksen, jossa olivat Maalitaulu, TaSsuttelija, einimeeviel0 ja esim, kaikilla yhdistelmillä 20 peliä, ja tässä tulokset:
summa = etsijä + pakenija 1. TaSsuttelija 48769 = -23546 + 72315 2. Maalitaulu 8581 = -33593 + 42174 3. einimeeviel0 -17647 = -40150 + 22503 4. esim -39703 = -45664 + 5961
Hienoa, että esimerkki jää viimeiseksi.
Testaussivusta korjasin sellaisen bugin, että tietyissä tilanteissa esteen sisään pyrkivä pelaaja pysähtyi mutta kohdekoordinaatit eivät päivittyneet oikein. Tarkoitus on siis, että jos pelaaja ei liiku enää, kohdekoordinaatit ja pelaajan sijainti ovat samat, jotta tästä voi helposti tunnistaa, milloin on perillä.
Itsekin olen ajanut jonkin verran turnauksia ja sellainen huomio, että lopputulos voi vaihdella hyvinkin paljon (vaikka olisi sama kenttä ja samat pelaajat), jos ohjelmassa on satunnaistekijöitä mukana.
Jos kolme etsijää liikkuu alueella ja pystyvät seuraamaan piiloutujia, niin melko nopeasti kaikki löytyvät. Esteiden pienentymiseen asti ei tarvitse odotella.
Uusi harjoitusvastustaja kuuntelee osoitteessa ws://riekkuja.sytes.net:50002/lurkki
Itse kisaan on tarkoitus ilmoittaa lurkista kehittyneempi versio, mutta toivottavasti tuo nykyinen käy harjoitusvastustajaksi.
Niin ja ilmoitelkaa jos tuo palvelin ei jostain syystä vastaa tai muuten vain toimi, pyrin korjaamaan asap!
Kerään harjoitusvastustajien linkit (nykyiset ja tulevat) keskustelun alkuun.
riekkuja kirjoitti:
(16.12.2019 16:00:01): Uusi harjoitusvastustaja kuuntelee...
Tuli tällainen ilmoitus:
SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
TapaniS, KilpailuProxy tarjoilee tuon harjoitusvastustajan WS protokollan yli, eli kuurupiilo-testaus.html pitää ladata HTTP eikä HTTPS protokollan kautta. Selaimet eivät tahdo tykätä jos salattuja ja ei salattuja protokollia käytetään samalla sivulla.
Oletko ladannut tuon kuurupiilo-testaus.html:n omalle koneelle, vai käytätkö sitä tuolta ohjelmointiputkan osoitteen kautta? Jos omalle koneelle sen lataa ja sieltä käyttää, niin käsittääkseni pitäisi toimia.
Joo, lähtikin toimimaan, kun latasin sivun omalle koneelle!
Jees, hienoa!
Tässä olisi parempi versio tuosta aikaisemmasta harjoitusvastustajastani: lataa
Älystä löytyy nyt enemmän järkeä ja se yrittää vähän hämätä muita pelaajia.
Edellisestä linkistä löytyy vielä se vanhempi versio, jos haluaa ajella isompia turnauksia useammilla älyillä.
Ajoin muutaman testiturnauksen ja tulokset olivat kyllä hiukan omituisen tuntuisia: ensimmäiset yksinkertaiset versiot tuntuvat pärjäävän paremmin kuin ohjelmaversiot, joihin on lisätty "älykkyyttä", satunnaisuutta ja muita ominaisuuksia. Sama lopputulos oli testeissäni sekä Anaatin einimeevielx että omien ohjelmaversioiden kanssa.
"lurkki" tuntui jumittavan testiajoa, lieneekö syy sitten itse ohjelmassa tai vaatiiko se verkkoyhteyttä, joka sitten tökkii? Se kuitenkin on pärjännyt tuloksissa aika mukavasti.
TapaniS kirjoitti:
"lurkki" tuntui jumittavan testiajoa, lieneekö syy sitten itse ohjelmassa tai vaatiiko se verkkoyhteyttä, joka sitten tökkii? Se kuitenkin on pärjännyt tuloksissa aika mukavasti.
Kun asiaa miettii, niin ohjelma voi jumittaa ajoa ainakin kolmella tavalla:
1. Hyvä piiloutuja, etsijät eivät löydä ennen kuin esteet ovat kadonneet käytännössä kokonaan
2. Huono etsijä, ei löydä muita ennen kuin esteet ovat pienentyneet tarpeeksi
3. Hitaat vastaukset, juuri tuo mainitsemasi verkon yli tapahtuva keskustelu
Vaihtoehto kaksi tietenkin riippuu myös muista kahdesta etsijästä, jos ne ovat hyviä niin yksi äly ei pysty jumittamaan koko ajoa.
Tuo "lurkin" harjoitusvastusversio etsiessään saataa jäädä paikalleen melkein sadaksi kierrokseksi, eli se vaikuttaa pelin kulkuun ainakin jonkin verran.
Teinpä minäkin hienompaa ohjelmaa: Kokkeli v0.1, tämäkin on testaussivulle syötettävää JavaScript-koodia. Testasin vasta lyhyesti, vaikutti melko lupaavalta, mutta etsijä pysähtyi löydettyään ensimmäisen piiloutujan... Lisäksi nykyinen versio on hieman hidas, joten saatan tehdä turnausta varten C++-version.
riekkuja kirjoitti:
Kun asiaa miettii, niin ohjelma voi jumittaa ajoa ainakin kolmella tavalla: ...
Ehkä TapaniS tarkoitti sitä, että verkon yli pelatessa tulee ylimääräistä viivettä, kun laskenta-ajan lisäksi kuluu aikaa viestiliikenteessä testaussivun ja tekoälyn välillä (ja protokolla on synkroninen, eli tekoälyltä odotetaan aina vastausta). Tämä korostuu varmasti turnauksessa ilman katselua, kun omalla koneella voi pelata kokonaisen ottelun parissa sekunnissa mutta verkon yli peli jää suhteellisen hitaaksi.
Todennäköisesti yhteydestä tulee viive, en pysty tuota kuitenkaan todentamaan. Myös Kokkeli (v0.1) jää välillä jumiin, ei vielä pärjää TaSsuttelijalle!
Tästä vielä kehittyneempi harjoitusvastustaja: TaSokas. Tämä on jo aika lähellä lopullista kilpaversiota. Lisätty satunnaisuutta alkupiilon sekä etsijän alkusuunnan valinnan suhteen. Myös piiloutumisen logiikkaa kehitelty eteenpäin.
Tämäkin on Javalla tehty. Olisi mukava saada jonkinlainen väliaikatesti nykyisten ohjelmien keskinäisestä järjestyksestä (samalla tavalla kuin neljän ensimmäisen testi).
Tässä on korjattu versio toisesta ohjelmastani: Kokkeli v1. Valitettavasti TapaniS:n havainto pitää paikkansa, eli Kokkeli pärjää tuloksissa huonommin kuin Maalitaulu. :D
Ajoin nyt saatavilla olevilla ohjelmilla 840 peliä: kaikki kolmen etsijän yhdistelmät kaikissa järjestyksissä ja piiloutujien järjestystä kiertäen. Lista peleistä (etsijät, piiloutujat, siemenluku) on pastessa. Tulokset ovat alla.
1. lurkki 368531 = -644503 + 1013034 2. TaSsuttelija 354110 = -656551 + 1010661 3. TaSokas 239071 = -691130 + 930201 4. einimeeviel0 -181424 = -776411 + 594987 5. Maalitaulu -197946 = -778761 + 580815 6. Kokkeli -266193 = -789522 + 523329 7. einimeeviel1 -316149 = -743529 + 427380
Käsin testatessa ohjelmien erot tuntuvat aika pieniltä: jos etsijä roikkuu edes jotenkuten perässä, siltä on melko vaikea päästä piiloon, ja toisaalta piiloutujan mahdollisuudet edes yhtä etsijää vastaan tuntuvat olevan aika heikot. Ei kuitenkaan muuteta sääntöjä vaan katsotaan, miten kisassa käy. Seuraava kisa täytyy tasapainottaa huolellisemmin.
Huomasin, että testaussivun katselutoiminnossa oli vikaa, jotkin pelit toimivat väärin. Korjattu versio on nyt netissä.
Yhdessä katsomassani pelissä kävi niin, että lurkki kiersi yhden esteen ympäri ja kolme etsijää kiersivät perässä, kunnes este alkoi pienentyä. Olisi selvästi hyödyllistä, jos etsijät osaisivat myös hajaantua. (Pelin tunniste: Kokkeli-TaSokas-TaSsuttelija,einimeeviel1-lurkki-Maalitaulu-einimeeviel0,-1842859633)
Metabolix kirjoitti:
Ajoin turnauksen, jossa olivat Maalitaulu, TaSsuttelija, einimeeviel0 ja esim, kaikilla yhdistelmillä 20 peliä, ja tässä tulokset:
Minulla turnaus ei suostu ajamaan kuin Kilpailuproxyn tekoälyjä.
1. jsb-c 0 = 0 + 0 ( - 0 ) 1. jsb-p 0 = 0 + 0 ( - 0 ) Valmis!
Vaikka uusi peli -välilehdeltä lisää uusia tekoälyjä, niin turnaus-välilehden lopputuloksissa näkyy vain kaksi omaa bottia. Oletusturnaus käytössä.
jsbasic: Oletusskriptissä on kommentoitu pois se rivi, jossa otettaisiin JS-ohjelmat mukaan turnaukseen. Eli täytyy lukea ja editoida turnausskriptiä. Jos haluaa turnauksesta tuloksia nopeammin, kannattaa myös ottaa pois pelien näyttö ja nopeussäätö.
Ehkä ensi kerralla turnaukseen voisi tehdä jonkinlaisen rasti ruutuun -valikon asetuksista, ja myös KilpailuProxyn käyttöliittymää pitää nähtävästi kehittää.
Kysyisin vielä tärkeän kysymyksen: Saako ohjelma kirjoittaa pelin aikana omaan datatiedostoon? Viimeksi Poimintapeli-kilpailuissa tästä ei ollut lainkaan puhetta, eikä ole nytkään. Oppiminen erien välillä on mielestäni merkittävä etu, koska kilpailutilannetta ei voi täysin ennustaa.
Tekoäly pitää kouluttaa etukäteen. Tiedot nollataan otteluiden välillä. Muutenkaan en usko, että kisan aikaraja ja otteluiden määrä riittäisivät oppimiseen, kun yleensä koneoppimisessa puhutaan miljoonista toistoista.
lurkki ei vastaa!
TapaniS kirjoitti:
lurkki ei vastaa!
Nyt pitäisi taas toimia.
Joo, nyt toimii taas!
Ajoin samoilla asetuksilla testisivun turnauksen kolme kertaa ja tulokset vaihtelevat jonkin verran, mutta ohjelmien keskinäinen asema kuitenkin on säilynyt aika hyvin.
Onko lurkki kohdannut voittajansa!?
1. TaSapaino 32984 = -52642 + 85626 ( - 0 ) 2. lurkki 30061 = -50648 + 80709 ( - 0 ) 3. TaSokas 23061 = -56295 + 79356 ( - 0 ) 4. TaSsuttelija 13337 = -53590 + 66927 ( - 0 ) 5. einimeeviel0 -6847 = -58924 + 52077 ( - 0 ) 6. Kokkeli -27632 = -62111 + 34479 ( - 0 ) 7. Maalitaulu -29395 = -62401 + 33006 ( - 0 ) 8. einimeeviel1 -35569 = -59191 + 23622 ( - 0 ) 1. TaSapaino 40544 = -51913 + 92457 ( - 0 ) 2. lurkki 28098 = -54903 + 83001 ( - 0 ) 3. TaSokas 11911 = -59735 + 71646 ( - 0 ) 4. TaSsuttelija 5758 = -55316 + 61074 ( - 0 ) 5. einimeeviel0 1300 = -64409 + 65709 ( - 0 ) 6. Kokkeli -23424 = -65040 + 41616 ( - 0 ) 7. Maalitaulu -28573 = -68167 + 39594 ( - 0 ) 8. einimeeviel1 -35614 = -58048 + 22434 ( - 0 ) 1. TaSapaino 31206 = -53838 + 85044 ( - 0 ) 2. lurkki 24794 = -56239 + 81033 ( - 0 ) 3. TaSsuttelija 17140 = -55610 + 72750 ( - 0 ) 4. TaSokas 15506 = -57289 + 72795 ( - 0 ) 5. einimeeviel0 -6910 = -62110 + 55200 ( - 0 ) 6. Kokkeli -18379 = -60673 + 42294 ( - 0 ) 7. Maalitaulu -26629 = -63883 + 37254 ( - 0 ) 8. einimeeviel1 -36728 = -57386 + 20658 ( - 0 )
Voisin muuten laittaa myös TaSapainon jakoon, mutta en osaa salata koodia (java).
Ilmoittautuneita on toistaiseksi vain muutama, joten saa mielellään ilmoittaa myös noita harjoitusvastuksia kisaan, jos ovat siihen kelvollisia. Voi ilmoittaa niitä vaikka ehdollisesti niin, että otetaan ne mukaan vain, jos osallistujia muuten olisi alle 10.
Tässä oma harjoitusvastukseni, joka on suurin piirtein TaSokkaan tasoinen:
https://www.ohjelmakartta.fi/jorolainen85.zip (Linux-binääri)
jsbasic: Muistathan myös osallistua, nyt on viimeinen päivä. Kisaan on nyt ilmoittautunut tähän mennessä seitsemän ohjelmaa.
Mielenkiintoinen kisa. Laitoin vielä omankin "virityksen" mukaan (taisi olla minuutin myöhässä tosin).
EDIT: Disclaimerina täytyy vielä ennen tulosten julkaisua todeta, että kyseessä on kokonaisuudessaan viimeisenä päivänä koodattu, lähinnä "jännän idean" ympärille koottu ratkaisu, joka toimii jotenkuten, mutta ei hyvin eikä nopeasti, joten kärkikahinoissa tuskin ollaan mukana :)
Pöööhh.. Petyin itseeni, mutta piti jokin kompofilleri silti laittaa mukaan. Peli oli hauska, mutta en lopulta oikein keksinyt mitään järkevää ideaa. Ja kun joulukuu meni Advent of Coden parissa, niin ei jotenkin jaksanutkaan tätä. :(
Eksyin välillä lueskelemaan inspiraatioksi kaikenlaisia papereita, kuten http://www.red3d.com/cwr/steer/gdc99/, vaikken oikein tiennyt, olisiko ne edes järkevästi sovellettavissa tähän. (E: Tekoälyssäni käytin jollain tasolla linkin pursuit- ja wander-menetelmiä.) Lopussa kokeilin vielä jonkinlaisia piiloutumismenetelmiä, mutta en saanut niitä toimimaan hyvin. Sitten loppui debuggausaikakin.
Tähän pitäisi ehdottomasti varata aikaa tarpeeksi. No, tulipa kuitenkin mainosteltua parissa paikassa, toivottavasti niistä tuli edes yksi lisäosallistuja.
Minäkin aloitin vasta 1.1. En ihan pärjännyt TapaniS:n tekoälylle, mutta kun olin jo laittanut ohjelmani sähköpostiin, ajoin uuden turnauksen, jossa se meni ensimmäistä kertaa TaSokkaan ohi.
Kilpailutehtävävä oli mielestäni oikein hyvä. Niin kuin TapaniS:n listasta näkee, niin paras tekoäly voittaa aina. Ainakin itse uskon siihen. Lisäksi ohjelmien pitää osata vuorovaikuttaa keskenään. Olisi silti hauskaa, jos joskus olisi (matematiikan sijaan) joku dataan perustuva kilpailu. Esimerkiksi jo mainitsemani wikipedian pakkaaminen, tai vaikka jokinlainen bottien tietokilpailu tai ennustamiskilpailu.
jsbasic kirjoitti:
– – tai vaikka jokinlainen bottien tietokilpailu tai ennustamiskilpailu.
Lasketaanko taannoinen Lukupeli?
Tegu kirjoitti:
Lasketaanko taannoinen Lukupeli?
Tarkoitin jotain laajempaa, "aitoa" tietämystä vaativaa tehtävää. Esimerkiksi http://prize.hutter1.net/
Kilpailuaika on päättynyt. Kisassa on mukana kymmenen tekoälyä: Jorolainen, lurkki, Maalitaulu, Reisille, Rustaus, SpinMagnet, Suikero, TaSapaino, Tuntematon1, viritys.
Laitan pelit pyörimään. Tiedossa on nyt ainakin 5040 peliä (10×9×8 yhdistelmää etsijöinä, 7 järjestystä piiloutujille). Nopeus näyttäisi olevan noin kahdeksan peliä minuutissa.
Tulokset on julkaistu! Kilpailun voittajaksi selviytyi Anaatti tekoälyllään Rustaus, toiseksi tuli riekkuja tekoälyllään lurkki, ja kolmannen sijan vei TapaniS tekoälyllään TaSapaino. Onnea menestyjille ja kiitos kaikille osallistujille!
Koetan mahdollisesti kääntää ainakin kärkipään ohjelmista JavaScript-versioita testaussivulle taas jossain vaiheessa. Kehitän myös testaussivua (ja ehkä KilpailuProxya) yleisesti seuraavaa kisaa varten.
Kiitos kisasta!
Piiloutumisen jumbosijastani en yllättynyt lainkaan, kun ei tuo versio edes yritä piiloutua. :D Olisi pitänyt ajaa otus alussa edes hieman pidemmälle keskustasta ja jättää vasta sitten vaeltelemaan. Etsimisessä sen sijaan puolta väliä hipova sijoitus oli oikeastaan ihan mukava noin yksinkertaisella ratkaisulla. Esteitä en tosiaan huomioinut lainkaan. Tai kehitteillä sekin oli, mutta se jumiutui laskemaan aivan liaan pitkäksi aikaa ja löysi jostain syystä vain oman nykyisen paikkansa, enkä saanut sitä kuntoon ajoissa.
Kiitokset mukavasta kisasta!
Olikohan lurkki sama versio kuin harjoitusvastustaja? Se jäi ainakin omissa testeissäni TaSapainon jälkeen, mutta nyt se yllätti kiilaamalla toiseksi!
Onnittelut kuitenkin kaikille mukana olleille! Ilman osallistujia ei kisaa saada aikaan! Nyt oli hiukan haastava, kun piti saada kaksi erilaista toimintoa (etsijä / piiloutuja) samaan koodiin.
TapaniS kirjoitti:
Nyt oli hiukan haastava, kun piti saada kaksi erilaista toimintoa (etsijä / piiloutuja) samaan koodiin.
Kai ne olisi voinut rakentaa vaikka kokonaan erikseen ja lopuksi vain lisätä pieni pätkä koodia joka valitsee kumpi suoritetaan?
TapaniS kirjoitti:
Olikohan lurkki sama versio kuin harjoitusvastustaja? Se jäi ainakin omissa testeissäni TaSapainon jälkeen, mutta nyt se yllätti kiilaamalla toiseksi!
Kisaan osallistunut versio oli paranneltu versio harjoitusvastustajasta. Idea on täysin sama kuin harjoitusvastustajassa, mutta kieli vaihtui välissä Lua:sta Rubyyn.
Oikein mukava kisa oli taas kerran. Sai myös hyvän syyn harjoitella lisää uusia kieliä eli Rustia tällä kertaa. Tuo Tuntematon1 oli tosiaan täysin sama äly kuin tuo harjoitusvastustaja einimeeviel1.
Minunkin piti viime kisan tapaan tehdä Rustilla, mutta olin sen kanssa niin ruosteessa, että päätin aloittaa Pythonilla. No, lopulta sitten jäinkin siihen. Pitääkin latailla koodit ja katsella hieman muiden tuotoksia. :)
Muokkaus: Purkkasinpa JavaScript-version: http://paste.dy.fi/Kz4 Yhtä ruma ilman siistimistä, ettei siinä tulisi vahingossa eroja. Tosin kisakorjausta satunnaisuuteen en osannut/jaksanut toteuttaa etenkään siten, että se vastaisi Python-versiota. Ilmeisesti BigIntin kanssa pitäisi leikkiä.
Olipa mukava kisa. No, minä tykkäsin ainakin. Vaikka tehtävä tuntui alussa aika monimutkaiselta, kilpailuohjelmat olivatkin kooltaan pienempiä kuin viime vuonna. Itselleni kehittäminen oli selkeää. Outo yhtälö! Tosin Go-lautapelissäkin on yksinkertaiset säännöt, mutta pelaaminen on silti monimutkaista.
70- ja 80-luvun lapset saattavat keksiä, mistä ohjelmani nimi Jorolainen tulee. Liittyy piiloutumiseen ja etsimiseen. Ääkköset ovat pudonneet nimestä pois.
Aihe on jo aika vanha, joten et voi enää vastata siihen.