Simulace

Cílem práce je vytvořit simulační framework představující prostředí, ve kterém žijí ruzná zvířata lišící se svými vlastnostmi. Součástí vypracované práce bude i několik implementovaných zvířat demonstrující funkce a možnosti simulačního frameworku. Simulátor bude obsahovat i vizualizaci ukazující aktuální stav světa.

Distribuovaná diskrétní simulace

Prostředí (reprezentované pravidelnou mřížkou) obsahuje aktuální polohu a stav jednotlivých zvířat. Na základě tohoto stavu se spočítá stav reprezentující následující den.

Pravidla pro jednotlivá zvířata mohou být např.:

  • pohyb na jiné políčko (popř. s omezeními podle terénu)
  • liška je na políčku sousedícím se zajícem ⇒ zajíc je snězen
  • 2 nasycené lišky jsou na sousedních políčcích ⇒ narodí se nová liška
  • pokud liška 3 dny nejí, umře
  • lovec může vystřelit ve směru, kterým míří. Střela letí políčko za kolo, dokud někoho nezasáhne, nebo neurazí 10 políček.

Simulace bude podporovat hodně velké světy, které budou udržovány distribuovaně. Na každém počítači bude část světa. Když tento simulátor dostane přes síť povel, odsimuluje další kolo, poté potvrdí provedení simulace. Pokud se bude něco dít na hranici světa, zeptá se simulátor sousedícího simulátoru na stav konkrétního políčka.

GUI je samostatná aplikace, která se připojí ke všem simulátorům a přijímá od nich informace o aktuálním stavu světa (pouze tu část, kterou právě zobrazuje) a posílá jim instrukce na provedení dalšího kroku simulace.

Veškerá síťová komunikace bude v textovém formátu a dotazy na různé simulátory budou obslouženy pomocí vláken (jedno na jeden simulátor, se kterým se komunikuje).

Real-time simulace

Real-time simulace se od diskrétní simulace, liší v tom, že se stav světa neaktualizuje po dni, ale každé zvíře má své vlákno a kdykoliv může provést nějakou akci. Tato simulace také není distribuovaná. V této práci je hlavně důležité správně navrhnout práci s vlákny.

courses/b0b36pjv/semestral/simulace.txt · Last modified: 2018/02/06 08:43 (external edit)