Hakumenetelmien vertailua myllypelissä
Kotilainen, Jukka (2022)
Kotilainen, Jukka
2022
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2022051810323
https://urn.fi/URN:NBN:fi:amk-2022051810323
Tiivistelmä
Insinöörityössä vertailtiin hakumenetelmien eroavaisuuksia sekä niiden soveltuvuutta myllyssä tai muissa saman tyylisissä peleissä. Vertailtavat hakumenetelmät olivat minimax, iteratiivisesti syventyvä minimax ja Monte Carlo -puuhaku. Hakumenetelmät valittiin niiden erilaisten ominaisuuksien perusteella, eli millaisia ominaisuuksia ne mahdollistavat tehtyyn sovellukseen. Työssä käytiin myös läpi hakumenetelmien optimointia sekä menetelmien implementoinnissa esiintyneet ongelmat ja niiden ratkaisut.
Eri hakumenetelmät tarjoavat samaan ongelmaan erilaisen ratkaisun ja mahdollistavat haluttuja sivuominaisuuksia toteutettuun sovellukseen. Tästä syystä onkin siis hyvä pohtia, mitä hakumenetelmää kannattaa milloinkin käyttää ja mitä muita ominaisuuksia ne mahdollistavat.
Hakumenetelmien toiminnan yhteydessä kerrotaan pelipuun ratkomisesta. Samanlaista puurakenteiden ratkomista on myös muualla ohjelmoinnissa, eli menetelmiä voidaan myös soveltaa muuallakin.
Insinöörityössä kehitettiin myllysovellus, jossa valitut hakumenetelmät ja niiden vertailuun tarvittavat työkalut toteutettiin. Käyttöliittymälle kehitettiin myös palvelinpuolen sovellus, jolle kerätty data lähetetään ja haetaan. Palvelimelta voidaan suoraan esittää kerätty data erilaisten kuvaajien avulla, mitkä auttavat hakumenetelmiä kehittäessä, vertaillessa ja etenkin optimoidessa.
Työn tarkoituksena ei siis ollut toteuttaa mahdollisimman hyvää myllynpelausalgoritmia, vaan vertailla hakumenetelmien soveltuvuutta ja niiden ominaisuuksia keskenään. Siitä huolimatta työssä toteutettiin myllyä melko hyvin eri vaikeustasoilla pelaava algoritmi.
Eri hakumenetelmät tarjoavat samaan ongelmaan erilaisen ratkaisun ja mahdollistavat haluttuja sivuominaisuuksia toteutettuun sovellukseen. Tästä syystä onkin siis hyvä pohtia, mitä hakumenetelmää kannattaa milloinkin käyttää ja mitä muita ominaisuuksia ne mahdollistavat.
Hakumenetelmien toiminnan yhteydessä kerrotaan pelipuun ratkomisesta. Samanlaista puurakenteiden ratkomista on myös muualla ohjelmoinnissa, eli menetelmiä voidaan myös soveltaa muuallakin.
Insinöörityössä kehitettiin myllysovellus, jossa valitut hakumenetelmät ja niiden vertailuun tarvittavat työkalut toteutettiin. Käyttöliittymälle kehitettiin myös palvelinpuolen sovellus, jolle kerätty data lähetetään ja haetaan. Palvelimelta voidaan suoraan esittää kerätty data erilaisten kuvaajien avulla, mitkä auttavat hakumenetelmiä kehittäessä, vertaillessa ja etenkin optimoidessa.
Työn tarkoituksena ei siis ollut toteuttaa mahdollisimman hyvää myllynpelausalgoritmia, vaan vertailla hakumenetelmien soveltuvuutta ja niiden ominaisuuksia keskenään. Siitä huolimatta työssä toteutettiin myllyä melko hyvin eri vaikeustasoilla pelaava algoritmi.