Agent World Model
Model sveta opisuje aktuálny stav okolia. Na tento model sa možno tiež pozerať ako na pravdepodobnostnú reprezentáciu vytvorenú na základe predošlých vnemov. Obsahuje rozličné informácie o všetkých objektoch na ihrisku ale aj niekoľko metód na odvodenie vysoko-úrovňových záverov. Obr. X Súradnicový systém
Hráč si musí byť vedomý vlastnej pozície, rýchlosti, rovnako aj pozície a rýchlosti ostatných hráčov a lopty. Uchováva si ich vo svojom modely sveta. Tieto informácie dostáva cez tri typy senzorov: vizuálne, zvukové a telesné, ktoré sú mu posielané vo forme správ. Okrem senzorických informácií sú spolu s nimi posielané aj časové pečiatky, ktoré určujú čas správy. Uchovávaním tejto časovej pečiatky je potom hráč schopný rozlišovať medzi neaktuálnymi a aktuálnymi informáciami vo svojom modely sveta. Dôležitý poznatok je, že soccer server posiela hráčovi informácie o pozíciách a podobne vzhľadom na pozíciu hráča. Teda relatívne pozície. Tieto si musí hráč skonvertovať do globálnej podoby. Ako už bolo spomenuté, model hráča možno považovať aj za pravdepodobnostný. V tom zmysle, že informácie o viditeľných objektoch sú aktualizované z vnemov, ktoré hráč dostáva. Informácie o objektoch, ktoré hráč nevidí sú tiež aktualizované na základe predošlých vnemov, spolu s confidence informáciou, ktorá je odvodená od časovej pečiatky informácie, z ktorej sa vychádza. Confidence hodnota klesá každým prechodom simulačným cyklom.
Aby bolo možné vybrať najvhodnejšiu akciu, poskytuje model sveta rozličné metódy, ktoré umožňujú používať informácie z modelu na vyšších úrovniach. Tieto metódy môžeme zaradiť do štyroch typov:
- Získavacie/Vyhľadávacie (retrieval) metódy: pre priame získavanie informácií z modelu sveta agenta.
- Aktualizačné (update) metódy: slúžia na aktualizáciu modelu sveta agenta podľa nových vnemových informácií.
- Predpovedajúce (prediction) metódy: Slúžia na predpovedanie stavu sveta na základe doteraz získaných vnemov.
- Vysoko-úrovňové (high-level) metódy: Slúžia na odvodzovanie úsudkov/záverov zo základných informácií o stave sveta (napr. určenie spoluhráča, ktorý sa najrýchlejšie dostane k lopte).
Atribúty
Atribúty WorldModelu tiež možno zadeliť do štyroch kategórií:
- informácie o okolí (environmental information)
- informácie o zápase (match information)
- informácie o objekte (object information)
- informácie o akcií (action information)
Informácie o okolí
Ide o informácie, ktoré sú špecifické pre prostredie poskytované serverom. Tieto atribúty reprezentujú rozličné parametre servera a parametre pre heterogénne typy hráčov.
Informácie o zápase
Sú to základné informácie o aktuálnom stave zápasu:
- Time – tento atribút reprezentuje serverovský čas ako usporiadanú dvojicu (t, s), kde t je počet simulačných cyklov a s je čas od zastavenia hodín pri situáciach keď sa nehrá. Napr. pri faule a pod.
- PlayerNumber – číslo hráča. Je poskytované serverom a nemení sa počas celého zápasu.
- Side – reprezentuje stranu, z ktorej tím hrá. Nadobúda hodnoty left a right.
- TeamName – tento atribút reprezentuje meno tímu a ako hodnotu má reťazec. Pri parsovaní správ zo servera slúži na určenie, či je správa určená spoluhráčovi alebo oponentovi.
- GoalDiff – tento atribút reprezentuje gólový rozdiel medzi tímami. Jeho hodnota je nulová, ak je skóre vyrovnané, kladná ak tím hráča vedie a záporná ak prehráva.
Informácie o objektoch
Sú to informácie o objektoch na ihrisku. Možno ich rozdeliť na stacionárne (čiary, zástavky a brány) a dynamické, ktoré sa pohybujú naokolo (hráči, lopta). Pre každý objekt sú informácie uložené v triede Object, ktorá slúžia ako kontajner pre dáta a neposkytuje žiadnu dodatočnú funkcionalitu okrem metód na nastavovanie (setters) a získavania (getters) informácií. Pozície a rýchlosti sú uložené v globálnej sústave súradníc, ktorá je nezávislá od pozície hráča na ihrisku. Hráč používa stacionárne objekty (značky) na ihrisku na určenie svojej vlastnej pozície z relatívnych dát získaných o týchto objektoch jeho vnímaním. Na základe vlastnej globálnej pozície potom určí všetky globálne pozície ostatných objektov. Obr. Y Hierarchia tried popisujúcich objekty
Object
Abstraktná trieda, ktorá obsahuje základné informácie o objekte. Najdôležitejšie informácie obsahujú typ objektu, globálnu pozíciu a čas, kedy bol objekt naposledy pozorovaný. Treba poznamenať, že atribút „typ objektu“ jednoznačne definuje identitu objektu (napr. OBJECT_BALL, OBJECT_GOAL_R, OBJECT_TEAMMATE_9, OBJECT_OPPONENT_6 atď.).
Okrem toho atribút „naposledy videný“ môže byť použitý na odvodenie confidence hodnoty, ktorá indikuje spoľahlivosť danej informácie. Táto hodnota sa pohybuje v intervale <0; 1> a je definovaná nasledovne:
confidence = 1-(tc-to)/100
Kde tc je aktuálny čas a to je čas, kedy bol objekt naposledy pozorovaný. To znamená, že hodnota confidence klesá každým simulačným cyklom o hodnotu 0.01 a je obnovená na hodnotu 1.0, keď je objekt znovu spozorovaný. Dôležité je ale uvedomiť si, že hodnota confidence sa pre stacionárne objekty nemení a má vždy hodnotu 1.
FixedObject
Je potomkom triedy Object a obsahuje informácie o stacionárnych objektoch na ihrisku. Neobsahuje žiadne ďalšie atribúty okrem tých zdedených od triedy Object.
DynamciObject
Je tiež potomkom triedy Object a obsahuje informácie o pohyblivých objektoch. Dopĺňa informácie o rýchlosti. Najdôležitešími atribútmi sú tie, ktoré zaznamenávajú globálnu rýchlosť a čas, kedy bola pozorovaná.
PlayerObject
Je to potomok triedy DynamicObject. Obsahuje informácie o špecifickom hráčovi na poli (spoluhráč, protihráč). Pridáva atribúty označujúce otočenie krku a otočenie tela (všetko v globálnych súradniciach) a tiež čas posledného zaznamenania týchto informácií. Tiež obsahuje boolovskú hodnotu, či hráč je brankár alebo nie. Samotný agent nie je členom tejto triedy.
BallObject
Je potomkom triedy DynamicObject, ktorá obsahuje informácie o o lopte. Nepridáva žiadne dodatočné informácie k tým, čo zdedila.
AgentObject
Je potomkom triedy PlayerObject, ktorá obsahuje informácie o samotnom hráčovi. Rozširuje rodičovskú triedu o atribúty označujúce staminu, veľkosť uhla pohľadu, a kvalitu pohľadu.
Model sveta teda obsahuje všetky informácie o hracom poli a o objektoch: lopta, 10 spoluhráčov, 11 protihráčov a hráč samotný. Informácie o hráčoch sú uložené na základe ich čísla dresu. Nie je však vždy možné presne vidieť číslo dresu hráča, ak je príliš vzdialený. V takom prípade sa vychádza z predošlej pozície hráča a uvažuje sa možnosť, či na základe minulých údajov a aktuálnych môže ísť o daného hráča. Ak sa nájde zhoda, sú tieto informácie priradené konkrétnemu hráčovi. Ak sa zhoda nenájde, údaje sa priradia hráčovi, ktorého confidence hodnota klesla pod prahovú hodnotu.
Informácie o akciách
Model sveta obsahuje tiež informácie o akciách, ktoré agent v minulosti vykonal.
- Počítadlá akcií – slúžia na určenie celkového počtu akcií určitého typu, ktoré hráč vykonal. Využívajú sa tiež na určenie toho, či sa príkaz odoslaný v predošlom cykle vykonal. Ak nebola inkrementovaná hodnota počítadla danej akcie, tak príkaz nestihol doraziť k serveru pred ukončením simulačného cyklu a vykoná sa v nasledovnom.
- QueuedAction – je to zoznam akcií, ktoré agent poslal serveru v posledom simulačnom cykle.
- PerformedAction – zoznam boolovských hodnôt pre každú akciu v zozname QueuedAction , ktorý hovorí, či daná akcia bola vykonaná. Tento zoznam teda reprezentuje hráčovu znalosť o tom, ktorá akcia bola vykonaná, na základe čoho môže urobiť zmeny v modely sveta.
Metódy
Získavacie metódy (retrieval) Používajú sa na priame získavanie informácií z modelu sveta a majú tvar getMenoAtributu(). Pre atribúty reprezentujúce informácie o prostredí, zápase a akcií môžu byť tieto metódy volané bez parametrov. Na získanie atribútov reprezentujúcich informácie o konkrétnom objekte je nutné ako parameter zadať identifikátor objektu (napr. getGlobalPosition(OBJECT_TEAMMATE_3)).
Aktualizačné metódy (update)
Slúžia na aktualizáciu údajov v modeli sveta na základe získaných informácií z vnemov. Podobne ako na získanie, tak aj na nastavenie majú funkcie tvar setMenoAtributu(). Pre niektoré atribúty môže byť hodnota priamo extrahovaná z vnemu, pre ostatné je nutné ju vypočítať na základe nových informácií. Model sveta je aktualizovaný vždy, keď je obdržaný nový vnem zo servera. Táto aktualizácia prebieha v dvoch fázach. V prvej fáze sú údaje uložené v modely, v druhej fáze sú aktualizované údaje, ktoré sú kombináciou výpočtu nových údajov a starých.
Predpovedajúce metódy (prediction)
Sú používane na predpovedanie stavu sveta podľa získaných vnemov. Tieto metódy sú dôležité pre proces výberu akcií. Model sveta však obsahuje na predpovedanie stavu iba nízkoúrovňové metódy, ktoré určujú napríklad budúcu pozíciu pohybujúceho sa objektu a pod. Predpovedajúce metódy možno rozdeliť do troch kategórií:
- Metódy predpovedajúce stav hráča po vykonaní určitej akcie. Tie majú ako parameter akciu, ktorú hráč ide vykonať a výstupom je predpoveď stavu agenta (globálna pozícia, rýchlosť,...) po tom, čo túto akciu vykoná.
- Metódy predpovedajúce stav ostatných dynamických objektov na ihrisku. Odhadnúť vlastnosti hráčov je veľmi náročné, nakoľko nie je známe, akú akciu podniknú. Preto sa tieto metódy používajú hlavne na odhad stavu lopty.
- Metóda predpovedajúca čas trvania, ktorý potrebuje hráč, aby sa dostal na určité miesto. Táto metóda má ako parameter cieľ a konkrétny objekt a ako výstup vracia odhadovaný počet simulačných cyklov, kým sa objekt dostane na zvolené miesto.
Vysoko-úrovňové metódy
Model sveta poskytuje tiež niekoľko vysoko-úrovňových metód na odvodenie záverov z informácií o svete. Možno ich zadeliť do piatich kategórií:
- Metódy, ktoré vracajú počet hráčov v určitej oblasti. Tieto metódy majú ako vstup oblasť a výstupom je počet spoluhráčov a/alebo protihráčov v tejto oblasti. Táto oblasť môže byť buď kruh, obdĺžnik alebo kužeľ. Príklady takýchto funkcií sú napr. getNrTeammatesInCircle() alebo getNrOpponentsInCone().
- Metódy, ktoré vracajú najbližšieho alebo najrýchlejšieho hráča vzhľadom na určitú pozíciu či loptu. Príklady týchto funkcií sú napr. getFastestOpponentTo(OBJECT_BALL) alebo getClosestTeammateTo(x,y).
- Metódy, ktoré indikujú, či daný objekt spĺňa niektoré vysoko-úrovňové podmienky. Tieto metódy môžu byť použité na určenie príznačných vlastností, kedy je možné použiť najlepšiu akciu. Najdôležitejšie sú napr.:
- isBallKickable: vracia true ak sa lopta nachádza v oblasti, kde je hráč schopný do lopty kopnúť.
- isBallCatchable: vracia true ak je lopta v dosahu brankára.
- isBallInOurPossesion: vracia true ak je najrýchlejším hráčom k lopte spoluhráč.
- isBallHeadingToGoal: vracia true ak lopta smeruje na bránu a má dostatočnú rýchlosť, aby ju dosiahla. Toto je relevantná informácia pre brankára.
- Ďalšie príklady sú: isFreeKickThem, isGoalKickUs, isKickInThem, atď.
- Metóda určujúca smer najbezpečnejšej trajektórie lopty medzi protihráčmi: getDirectionOfWidestAngleBetweenOpponents(a1, a2, d).
- Metódy na výpočet argumentov pre akcie s cieľom dosiahnuť želaný stav. Tieto metódy používajú známe rovnice servera na výpočet stavu po vložení parametrov. Invertujú tieto rovnice na získanie parametrov po vložení želaného stavu. Medzi takéto metódy patria napr.: getAngleForTurn(a), getActualKickPowerRate(), getKickPowerForSpeed(s), getKickSpeedToTravel(d, e), getPowerForDash(x,y)
Späť na hlavnú stránku | Aktuálna verzia na našom Wiki