A keretrendszer bemutatása
A keretrendszer egy Java alkalmazás. Feladata kettős: egyrészt az USAR környezet grafikus szimulátora, másrészt egy futtatórendszer és programozói felület az ágensekprogramok számára.
Grafikus szimulátor és pontszámítás
Az alkalmazás a RescueFramework főosztályának main() metódusával futtatható. A szimuláció elindítása előtt kiválasztható egy térkép, és megadható az egyes ágensek száma típusonként. Ezután elindítva a szimulációt a grafikus felületen nyomon követhetjük a robotok működését és a sérültek állapotának alakulását.
A keretrendszer egy pontszámmal folyamatosan értékeli a versenyzők által programozott ágensrendszer teljesítményét. A megmentett sérültekért pontokat ad, míg a robotok beszerzése költséggel (negatív pontszámmal) járnak és cselekedeteikkel energiát használnak fel (csökkentik a pontszámot). Az idő múlása (a lépések száma) szintén csökkenti az elérhető pontszámot. A keretrendszer futásidőben folyamatosan kijelzi a pontszám részletes számítását.
A futtatórendszer működése
A program futása során az ágensek programjait a keretrendszer hívja meg.
A szimuláció körökre osztott, minden körben (lépésben) a keretrendszer egymás után egyesével aktiválja az ágenseket (step() metódus), és válaszként várja az ágens által végrehajtani kívánt cselekvést (lépés valamilyen irányban, gyógyítás, sérült felemelése stb.), amit azonnal végrehajt a szimulált világban, amennyiben az lehetséges és engedélyezett az ágens számára (a robot megpróbálhat belépni egy falba, de egy ilyen cselekvést a keretrendszer nem fog végrehajtani). Az ágens úgy is dönthet, hogy semmilyen cselekvést nem végez, nem használ fel további energiát (pl. egy drón már felfedezte a teljes terepet, így leáll).
A szimuláció akkor fejeződik be, ha egyetlen ágens sem hajt végre cselekvést, vagy valamelyik ágensprogram hibát dob.
Véletlen események
A Sensor ágensek elhelyezése véletlenszerű, a versenyzőknek csak az ágensek számára és körülbelüli helyére (lásd generate{X|Y}Coord()) van hatása.
A szimuláció során a a keretrendszer véletlenszerűen megváltoztathatja a térképet azzal, hogy egyes falakat "ledönt". Ezeket a változásokat a grafikus szimulátor pirossal jelzi - ezt az információt azonban az ágensek csak akkor észlelik, ha az a látókörükben történik, vagy arra járva felfedezik. Ezek a változások a világ valóságos és az ágensek által használt belső modellje között eltéréseket eredményeznek, amíg egyetlen ágens sem észleli azokat.
Annak érdekében, hogy a véletlen események ne befolyásolják a versenyt, illetve a fejlesztést (a szimuláció lefutása reprodukálható legyen), a keretrendszer a Java beépített álvéletlen-generátorát rögzített seed értékkel inicializálja (lásd Java.util.Random()). A seed értéke azonban eltérhet a keretrendszer kiadott és értékelésre használt változataiban.