Mesterséges Intelligencia I. kötelező program



Hasonló dokumentumok
Mesterséges Intelligencia II. kötelező feladat (3. forduló) - Ajánló rendszer 2.

GEOMATECH TANULMÁNYI VERSENYEK ÁPRILIS

Tájékoztató a szakdolgozat elektronikus feltöltéséről

Nyerni jó évfolyam

Programozás II gyakorlat. 6. Polimorfizmus

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

A játékot tervezte Wolfgang Panning; 2 4 személyre, 8 éves kortól

A minute to learn A lifetime to master! TM

ULTIMATE TIC TAC TOE. Serfőző Péter

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

V. Kétszemélyes játékok

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Java programozási nyelv 6. rész Java a gyakorlatban

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Felhasználói útmutató

INFORMATIKAI ALAPISMERETEK

Programozási nyelvek Java

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Programozási nyelvek Java

Isola (1-1 db sötét és világos király-bábu és max. 45 db blokk-bábu) A lépések két fázisból állnak: (1.) bármelyik oldalszomszédos mezőre áttoljuk a

Szakdolgozat feltöltése a DEA-ba

Java I. A Java programozási nyelv

Kétszemélyes játékok

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Egy francia-sakk feladvány: Világos lép, és döntetlen az alsó sor az 1. sor!

A 2010/2011 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának megoldása. II. (programozás) kategória

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

Segédanyag: Java alkalmazások gyakorlat

Programozási nyelvek és módszerek Java Thread-ek

Felhasználói útmutató

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

AUTOMATIKUS TACHOGRÁF KIÉRTÉKELÉS ONLINE TACHOGRÁF KIÉRTÉKELŐ ÉS FUVAROZÓ KEZELŐ RENDSZER. tacho

Szoftvertechnolo gia gyakorlat

OKTATÁSKUTATÓ ÉS FEJLESZTŐ INTÉZET TÁMOP-3.1.5/ Pedagógusképzés támogatása

Programozási technológia

Útmutató a évi szabadidősportos pályázatok elektronikus beadásához

Rejtvény-változataikban: a legkevesebb lépésből álló (és/vagy visszalépés tiltása melletti) helycsere a feladat.

Tájékoztató. Használható segédeszköz: -

Országos Középiskolai Tanulmányi Verseny, 2004/2005-ös tanév INFORMATIKA, II. (programozói) kategória második fordulójának javítási útmutatója

Magyar Közgazdaságtudományi Egyesület. Konferencia-honlap tudnivalók. Fiók létrehozása a honlapon

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

JAVA SE/ME tanfolyam tematika

TÁMOP /1-2 Referencia-intézmények országos hálózatának kialakítása és felkészítése. 4S PÁLYÁZATI INFORMÁCIÓS NAP Budapest, július 5.

KönyvtárMozi segédanyag

Név: Neptun kód: Pontszám:


1. Szolgáltatásaink. Adatok feltöltése és elemzése. Digitális feltöltés. Analóg korong feltöltés

Felhasználói kézikönyv

Segédlet a Diplomamentő II. program benyújtásához a Forrástár rendszeren keresztül

C++ programozási nyelv

OOP: Java 8.Gy: Abstract osztályok, interfészek

Elektromos gépkocsi vásárlás támogatása Pályázati kiírás pályázói segédlete

INFORMATIKAI ALAPISMERETEK

ÚTMUTATÓ A NEMZETKÖZI KONFERENCIASZERVEZÉSHEZ NYÚJTOTT TÁMOGATÁS MEGPÁLYÁZÁSÁHOZ

Útmutató a Domus elektronikus pályázati rendszerben történő pályázáshoz.

Bevezetés a Python programozási nyelvbe

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Netis vezeték nélküli, N típusú USB adapter

Informatika A versenyzők a feladatlapot mindkét kategóriában a II. kategória első fordulójának kivételével csak elektronikus formában kapják meg

8 bivaly 2 tigris ellen

Mesterséges Intelligencia MI

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

A feladatok megoldásához felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Programozási nyelvek JAVA EA+GY 1. gyakolat

Szkeleton beadása. 100 Generalis faliora. Csapattagok: Konzulens: Szabó András március 29.

ISA szimulátor objektum-orientált modell (C++)

Alkalmazott modul III 3. feladatcsoport. Közös követelmények:

INFORMATIKAI ALAPISMERETEK

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

BaBér bérügyviteli rendszer telepítési segédlete év

Ellenőrző keretprogram (eesztconnect.exe)

Képernyőképes segédlet a Prompt e-learning portál használatához

Beszámoló átadása az OBR * -nek a Hessyn Éves beszámoló nyomtatványkitöltő programból

Szerepjáték Project Story of my life

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

HDD6320. Jukebox Quick start guide

Beszámoló átadása az OBR * -nek a Hessyn Éves beszámoló nyomtatványkitöltő programból

Számonkérési formák a BME-n a Deklaratív programozás című tárgyban

EU LOGIN KÉZIKÖNYV. Tartalom

Webes alkalmazások fejlesztése

Informatika Informatika

Szakdolgozat feltöltési útmutató

Abstract osztályok és interface-ek. 7-dik gyakorlat

A FÉLÉV BEJELENTKEZÉSÉRŐL, SZAKIRÁNY- VÁLASZTÁSÁRÓL ÉS A VÁLASZTHATÓ TÁRGYAK FELVÉTELÉRŐL

TŐTIKE. tologatós AMŐBA A szélére teszek, ezzel: a már fennlévőket eltolom. letologatós AMŐBA. TŐTIKÉK ( tervezz hozzá táblákat! )

Space Invaders Dokumenta cio

Az alábbi szabály-elemek különböző kombinációi számos dámaváltozatot eredményeznek.

Quick start guide HDD1420 HDD1430. Micro jukebox HDD1820 HDD1630 HDD1635

Archivált tanulmányi adatok importálása. Felhasználói dokumentáció verzió 2.0.

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

ÚTMUTATÓ A NEMZETKÖZI TUDOMÁNYOS RENDEZVÉNYEK SZERVEZÉSÉHEZ NYÚJTOTT TÁMOGATÁS MEGPÁLYÁZÁSÁHOZ

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Java labor segédlet. Alkalmazás fejlesztési környezetek c. tárgyhoz. késztette: Filep Szabolcs 2017.

Oktatási Hivatal. A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának feladatai. II. (programozás) kategória

Átírás:

1. Feladat kiírás Mesterséges Intelligencia I. kötelező program A feladat az Othello (más neveken Reversi, Fonákollós, Színcserélő) játékot játszó ágens írása. A játékot egyik oldalán világos, a másikon sötét korongokkal játszuk, egy 8x8-as táblán. Az egyik játékos színe a világos, a másiké a sötét. Sötét kezd. A játék célja, hogy a saját színű korongokkal a lehető legtöbb mezőt foglaljuk el a táblán, az ellenfél korongjainak közrefogásával és átfordításával. A pontos szabályok a következők: 1. A kezdőállást az 1. ábra szemlélteti. 2. A játékosok felváltva helyeznek korongokat a saját színükkel felfelé a tábla valamely szabad mezőjébe, sötét kezd. 3. Közrefogáson azt értjük, hogy a lehelyezett korong vízszintes, függőleges vagy átlós irányban egy vonalban van egy másik, saját színű koronggal, és közöttük megszakítás nélkül csak az ellenfél korongjai vannak. 4. Csak olyan mezőbe helyezhető korong, ahol az ellenfél legalább egy korongját az éppen lehelyezett korong és valamelyik, a táblán lévő, saját színű korong közrefogja. 5. Minden, a lehelyezéssel közrefogott korongot át kell fordítani, minden irányban. 6. Ha egy játékos nem tud lépni, akkor megint a másik játékos jön. De ha tud lépni (azaz van lépés ami eredményez átfordítást) akkor kötelező lépni. 7. A játéknak akkor van vége ha egyik játékos sem tud lépni. A végeredmény a táblán levő korongok megszámolásával adódik. 1. ábra. Kezdőállás

2. Fejlesztés és kiértékelés A következő fejezetben összefoglaljuk a fejlesztéssel és a kiértékeléssel kapcsolatos tudnivalókat. 2.1. Kiértékelő rendszer A megoldást Java programozási nyelven kell elkészíteni. A könnyebb fejlesztés és kiértékelés megvalósítása érdekében közreadunk egy keretrendszert, ami egyben egy osztály könyvtár is. A keretrendszer alapvető feladata, hogy levezényelje az egyes meccseket (ellenőrizze a lépések helyességét, az időkorlátok betartását, stb...). A közreadott rendszer egyben egy osztálykönyvtár is, hiszen tartalmazza azt az interface-t (Player interface), amelyet a megoldásoknak meg kell valósítaniuk. Az említett keretrendszer, annak forráskódja és néhány példa implementáció elérhető a http://www.inf.u-szeged.hu/~jelasity/mi1/mi-kotprog.zip címen. A könnyebb érthetőség kedvéért tekintsünk egy példa fejlesztés-kiértékelés ciklusra: 1. Töltsük le és tanulmányozzuk a közreadott keretrendszert, a valamint a benne elérhető Player interface-t. Értsük meg a meccs lejátszásának mikéntjét az említett interface szemszögéből. Ehhez nagy segítség a javadoc-ban elérhető dokumentáció. 2. Implementáljuk a stratégiánkat Java programozási nyelven. Például: import szte.mi.*; public class h241696 implements Player { public void init( int order, long t, Random rnd ) { //... public Move nextmove(move prevmove, long topponent, long t ) { //... 3. Fordítsuk le azt. A fordítás során a class-path-ban szerepelnie kell a keretrendszernek. Például: javac -cp "./mi-kotprog.jar;." h241696.java 4. Az elkeszült stratégiát próbáljuk ki, valamelyik közreadott stratégia ellen a keretrendszer használatával. Például (egy sorban): java -Xmx1024M -cp "./mi-kotprog.jar;." szte.mi.othellogame h241696 szte.mi.randothelloplayer

Érdemes több tesztet végezni! 5. Ha megfelelőnek ítéljük a stratégiánkat, akkor töltsük fel a Bíró rendszerbe, különben iteráljunk a forráskód változtatásától. 2.2. Követelmények a megoldással szemben A megoldást tartalmazó forráskódnak minden körülmények között ki kell elégítenie a következő követelményeket: A stratégiánkat tartalmazó osztálynak meg kell valósítania a Player interface-t, ami a keretrendszer részét képezi. A megoldást tartalmazó osztálynak részletes magyar osztálydokumentációt kell tartalmaznia, javadoc formátumban, illetve a kód dokumentációja is magyar kell hogy legyen. A kód nem használhat a keretrendszeren kívül semmilyen más osztálykönyvtárat. A stratégiát leíró osztály nevének meg kell egyeznia a hallgató h-s azonosítójával (kis h betűvel). A megoldást tartalmazó osztály nem lehet csomagban. A megoldásban nem lehet képernyőre írás. A megoldás nem nyithat meg file-t, nem indíthat új szálat. Az implementált metódusoknak minden esetben vissza kell térniük. (Nem szerepelhet benn exit hívás például.) A megoldásnak az szte.mi.randothelloplayer-t és az szte.mi.greedyothelloplayert le kell győzni a következő arányban: 10 játékból legalább 8-szor kell nyerni mindkét ellenféllel szemben, és a 10 játékból 5-ször az egyik, 5-ször a másik játékos kezd. Összesen tehát 20 meccs kerül lejátszásra. Ha ez sikerül, akkor a gyakorlaton szerezhető pontszámokból 10 pont megvan! Néhány szabályt nagyon szigorúan fogunk venni tekintettel a magas létszámra. A kötelező program nem kerül elfogadásra (ami a kurzuson bukást jelent) ha: a benyújtott ágens nem vagy helytelenül implementálja az interfészt a futás során hiba lép fel (végtelen ciklus, kivételdobás, stb.) az ágens érvénytelen lépést választ a forráskódban nincs kielégítő magyar nyelvű osztálydokumentáció és forráskód dokumentáció (azért magyar, hogy nehogy kísértésbe essünk letöltögetésre)

a programozói munka nem a hallgató saját munkája (természetesen ötleteket lehet és ajánlott keresgélni); ez esetben a bukáson felül további következményekkel is kell számolni! Vannak megbízható eszközeink a plágium kiszűrésére, nem érdemes kísérletezni. bármilyen "hack"-et találunk ami a kiértékelő nem rendeltetésszerű használatából fakadóan jogosulatlan előnyt eredményez. 2.3. Bíró rendszer A kötelező programok tényleges kiértékelését a bíró rendszer végzi. Ha sikerült elkészíteni egy megfelelőnek ítélt stratégiát, akkor a bíró rendszerbe (https://biro.inf. u-szeged.hu/) történő bejelentkezés után, fel kell tölteni a forráskódot. A feltöltött forráskódnak ki kell elégíteni az előző fejezetben ismertetett követelményeket! A feltöltés után a bíró rendszer a következők szerint jár el: 1. A feltöltött forráskódon egy előzetes ellenőrzést hajt végre, hogy az kielégíti-e az előzőekben ismertett követelményeket. Ha nem elégíti ki azokat, akkor a beküldés sikertelen, máskülönben a kiértékelés folytatódik. 2. A rendszer lefordítja a feltöltött forrást. A fordítás a Kiértékelő rendszer c. fejezetben látott példa szerint történik. Ha nem sikerült lefordítani a kódot, akkor a beküldés sikertelen, máskülönben a kiértékelés folytatódik. 3. A rendszer 10 alkalommal meghívja a kiértékelő keretrendszert a Kiértékelő rendszer c. fejezetben szereplő példában látottak szerint a RandOthelloPlayer stratégia ellen. A feltöltött megoldás váltakozva fekete illetve fehér játékosként szerepel. Ha sikerül a megoldásunknak legalább 8 alkalommal győznie, akkor eggyel nő a pontjaink száma és a kiértékelés tovább halad. Ha hiba történt bármelyik meccs során, akkor a beküldés sikertelen. 4. A rendszer hasonlóan meghívja a kiértékelőt 10-szer a GreedyOthelloPlayer stratégia ellen. A feltöltött megoldás váltakozva fekete illetve fehér játékosként szerepel. Ha sikerül a megoldásunknak legalább 8 alkalommal győznie, akkor eggyel nő a pontjaink száma és a kiértékelés tovább halad. Ha hiba történt bármelyik meccs során, akkor a beküldés sikertelen. 5. A bíró rendszer elérhetővé teszi a webes felületen az elért pontszámunkat és a kiértékelés során készített jelentést. Egy beküldés akkor tekinthető elfogadottnak, ha legalább 2 pontot ad a bíró rendszer. Ezesetben a hallgató teljesítette az első forduló minimális követelményeit. Fontos megjegyezni, hogy bizonyos esetekben a kiértékelés hosszú ideig tart. Ezalatt a bíró rendszer webes felületén semmi információt nem látunk. Ez normális működés! Ha ezalatt frissítjük a böngészőt és újraküldjük az adatokat, akkor az új próbálkozásnak minősül!

Másik fontos észrevétel, hogy a beküldési határidőhöz közeledve egyre terheltebb szokott lenni a rendszer. Ekkor egy-egy feltöltés hosszabb időt is igénybe vehet. A fejlesztés során ezzel mindenki kalkuláljon! (Természetesen a keretrendszer processzor időt mér a futás során, így a terheltség nem jelenti azt, hogy kevesebb idő jut az egyes stratégiáknak arra, hogy végigjátszák a meccset.) 2.4. Korlátok, határidők Az első fordulóval kapcsolatban az alábbi korlátok, határidők élnek: Egy meccs 40 másodpercig tart, így egy játékos összesen 20 másodperccel rendelkezik, egy Core 2 Duo 2.8GHz-es gépen. A meccsek során a teljes keretrendszer számára 1024MB memória áll rendelkezésre. A bíró 1.6-os Java verziót használ. 10 próbálkozás áll a hallgatók rendelkezésére. A beküldési határidő 2008. december 2. 00:00:00. Hasznos és jó munkát kívánunk!