| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Keskustelut - Muu Ohjelmointi - Tekoälyn suunnitteluapua kaivataan.helkepet 08:39 26.2.12 Olemme tekemässä PGH4 -lautapeliä puhelimeen. Verkon yli pelattava versio valmistuu, kun valmistuu, mutta tekoälyn ja pelaajan välinen ottelu kaipaa tekoälyn osalle apua. Pelistä saattaa saada, jonkinlaisen käsityksen www.petesgamesaff.com/pgh4.php -tyhmästä versiosta, jossa teet molempien siirrot. Ideana pelissä on laittaa nappula kirjaimen päälle, josta se työnnetään sisään pelialueelle. Jos siirtoruudussa oli jo nappula, työntyy se sisään jne. Tarkoituksena on saada neljän suora. "Myllymatti" -efektin poissulkemiseksi on suunniteltu lisäsääntöä, samaan ruutuun (saman kirjaimen kautta) ei saa siirtää kuin kahdesti, jos vastustaja siirtää "toistaen oman siirtonsa". Itse ohjelmointiin ei tarvita "aivoja", mutta jos kellä on innostusta miettiä pseudokoodi tasolla älyn olemusta, hän voi kommentoida tänne tai lähettää viestiä LovePGH4@gmail.com:iin postia. Olen / olemme kiitollisia avusta / vihjeistä! Petri Lebe80 12:00 27.2.12 Ohjelmointiputkassa tulikin tähän hyviä vinkkejä, eli mitään kummoista tekoälyä kyseinen peli vaatii, lähinnä mennään lävitse eri siirtovaihtoehtoja, jotka pisteytetään ja valitaan niistä esim. satunnaisesti parhaiden joukosta yksi. Ztane 19:29 27.2.12 Ensimmäiseksi olis hyvä tietää miten pisteyttää keskeneräinen pelitilanne - esim Reversissä / Othellossa huonoin mahdollinen tapa on laskea keskeneräisten nappien lukumäärä; paljon parempi on sen sijaan painottaa liikkumavapauksien lukumäärää keskeneräisessä pelissä. Pelin lopputilanteessa jos tekoäly voittaa niin pistemääräksi +ääretön, ja häviölle -ääretön. Jos sitten haluaa hyvän tuloksen, niin käytät minimax-algoritmia (+ alfa-beta-karsintaa) syvenevällä haulla. Syvenevässä haussa tietyssä aikarajassa katsotaan 1 siirron päähän, sitten 2, 3, 4 jne. Kun esim sekunti tai 100 millisekuntia tulee vastaan, sen hetkinen paras siirto tehdään. Minimax-algoritmissa puolestaan oletetaan että myös vastustaja pyrkii aina pelaamaan parhaimman mahdollisen siirtonsa, ja minimoimaan siten tekoälyn tuloksen. Alfa-beta-karsinnassa puolestaan lopetetaan syvyyshaku jo sellasille haaroille jotka edellyttäisivät että "jompikumpi pelaisi huonosti". Wikipediasta suomennettaessa siis alfa-beta-karsinnassa siis pidetään siirtoja alaspäin käydessä kahta lukua: alfaa, joka on pienin pistemäärä jonka maksimoiva pelaaja voi odottaa saavansa pelatessaan siirron. Beta puolestaan suurin pistemäärä jonka minimoiva pelaaja voi odottaa saavansa. Alussa alfa on -ääretön ja beta on ääretön; ja haun syvetessä näitten välinen ikkuna pienenee; jos rekursion jossain välissä huomataan että puun haaran beta on pienempi kuin alfa, voidaan kyseisen puun muiden haarojen tutkiminen lopettaa, koska muiden siirtojen pelaaminen edellyttäisi, että jompi kumpi ei pelaisi omalta kannaltaan mahdollisella tavalla. |
![]() Haku
|