LETECKÁ BITVA NA KKY. Letní semestr, 2014. Katedra Kybernetiky Západočeská Univerzita v Plzni. Speciální zadání semestrální práce MATLAB



Podobné dokumenty
Zadání soutěžních úloh

Hodnocení soutěžních úloh

Zadání soutěžních úloh

Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.

Manuál k programu IDP 1.0

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Hledání správné cesty

Nová áplikáce etesty zá te z ove testová ní

2. úkol MI-PAA. Jan Jůna (junajan)

Dokumentace programu piskvorek

Laser game. Návod ke hře. Manual ver. 1.1

Úvod do mobilní robotiky NAIL028

Dokumentace k semestrální práci z předmětu PT

Metody analýzy modelů. Radek Pelánek

Průvodce programováním AMiNi-E jazykem STL Dipl. Ing. Pavel Votrubec

Algoritmus pro hledání nejkratší cesty orientovaným grafem

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Základy algoritmizace a programování

Aktualizace JETI REX Assist verze 1.10 (září 2018)

pracovní list studenta

CVIČNÝ TEST 2. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

UNIVERZITA OBRANY. Knihovna HLAGate. Programátorská dokumentace. Petr Františ

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

[BAL-MLP] Multiplayer

Cvičná bakalářská zkouška, 1. varianta

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

ALGORITMIZACE A PROGRAMOVÁNÍ

Simulace TCP - Didaktická akční hra

Úvod do teorie měření. Eva Hejnová

PRAVIDLA: ÚROVEŇ 4 BALÍČEK VS BALÍČEK

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE

Úvodem... 9 Kapitola 1 Karetních

1. Téma 03 - Rozhodování

ŽELEZNIČNÍ TRATĚ A STANICE

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Zápočtová práce STATISTIKA I

JAK HRÁT ON-LINE? 0. PŘIZPŮSOBTE SI SVŮJ ŠTÍT A SVÉ BARVY

Úvod. Tlačítka. Typ baterie

Vstupní požadavky, doporučení a metodické pokyny

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Mini DVR s jedním kanálem

POTŘEBA A PRODUKCE ENERGIÍ V ZEMĚDĚLSKÉ VÝROBĚ V ČR V KRIZOVÉ SITUACI. Specializovaná mapa. Návod k používání programu

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi

Programování v jazyku LOGO - úvod

KIV/ZIS Základy informačních systémů

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Řízení modelu letadla pomocí PLC Mitsubishi

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

NAPOJENÍ ZAŘÍZENÍ S KOMUNIKACÍ BELIMO MP-BUS NA SÍŤ AUTOMATŮ MICROPEL

Úloha - rozpoznávání číslic

Slovo na úvod FTG 1 ZS Jasné vymezení hřiště a domluva pravidel hry usnadňuje vzájemnou komunikaci.

PŘÍRUČKA SYSTÉMOVÉHO ADMINISTRÁTORA PRO HOMEBANKING PPF banky a.s.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

JS-230 šachové hodiny ID: 28276

Hodnocení soutěžních úloh

Úvod do teorie měření. Eva Hejnová

MODUL DÁLKOVÉHO OVLÁDÁNÍ S PLOVOUCÍM KÓDEM

NUMERICKÝ MODEL NESTACIONÁRNÍHO PŘENOSU TEPLA V PALIVOVÉ TYČI JADERNÉHO REAKTORU VVER 1000 SVOČ FST 2014

Zobrazený panel je pouze informatívní a nemusí být identický s ovládacím panelem trouby kterou jste si zakoupili.

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Projekt: Přístupový terminál

Práce s texty, Transformace rastru, Připojení GPS

Vývojové prostředí,průvodce novou aplikací

CHYTRÝ FOTBAL. fotbal.indd :16:03

Měření průtoku kapaliny s využitím digitální kamery

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Zadání semestrálního projektu Algoritmy I. zimní semestr 2018/2019

na interpolovaný pohyb s LMC078, servosystémem LXM32 a kartézským robotem.

TEAM DESIGN ABB CHALLENGE. EBEC Brno března

6 Příkazy řízení toku

Tomáš Karel LS 2012/2013

Circular Harmonics. Tomáš Zámečník

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)

Nepřímá úměrnost I

Řízení tepelné soustavy s dopravním zpožděním pomocí PLC

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

BP / DP / semestrální práce / semestrální projekt

TESTOVÁNÍ 8. A 9. ROČNÍKŮ 2014/2015 PRŮŘEZOVÁ TÉMATA SOUHRNNÁ ZPRÁVA

Zadání soutěžních úloh

Téma 12: Správa diskových jednotek a system souborů. Téma 12: Správa diskových jednotek a systémů souborů

LANGMaster.com, s.r.o. Metodická příručka pro práci se systémem LANGMaster Blended Learning

Návod na použití aplikace Pager v2

Simluátor Trilobota. (projekt do předmětu ROB)

VISUAL BASIC. Přehled témat

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW)

PRO K206 Kompletní letecký elektronický systém

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

AutoPEN, Ing. Lubomír Bucek, Halasova 895, Liberec 6 autopen@volny.cz ,

Manuál. k aplikaci WD FileAgent

AGROKONZULTA ŽAMBERK S. R. O. Popis instalace. Optimalizace krmivové základny

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

SOLVER UŽIVATELSKÁ PŘÍRUČKA. Kamil Šamaj, František Vižďa Univerzita obrany, Brno, 2008 Výzkumný záměr MO0 FVT

S2. Vytvoření Windows balíku pro vývoj na STM32 architektuře

ČÁSTI A MECHANISMY STROJŮ III

Č í sla slovy 1.3. verze dokumentu: vytvořil: Ing. Pavel Randák předmět: Uživatelský manuál vydavatel: Austro-Bohemia, s.r.o.

Úvodní slovo. Vážení studenti, dostává se Vám do rukou stručný návod na e-learningové prostředí Moodle obsahující počítačové kurzy.

Popis programu: Popis přípon důležitých souborů: *.qpf projektový soubor Quartusu

NÁVOD K OBSLUZE konfigurační SW CS-484

Transkript:

LETECKÁ BITVA NA KKY Speciální zadání semestrální práce MATLAB Letní semestr, 2014 Katedra Kybernetiky Západočeská Univerzita v Plzni 1

Obsah 1 Popis... 3 2 Přiložené funkce... 5 2.1 Hlavní funkce pro spuštění simulace... 5 2.1.1 engine1.m... 5 2.1.2 initplanes.m... 5 2.1.3 run.m... 5 2.2 Vzorová funkce letadla ftestexample1.m... 5 2.2.1 Vstupní parametry:... 5 2.2.2 planes()... 6 2.2.3 Výstupní parametry:... 6 2.2.4 Volitelné nastavení - setup... 7 2.3 Pomocné funkce... 7 2.3.1 unwrapangle.m... 7 2.3.2 unwrapxy.m... 7 2.3.3 anglediff.m... 8 2.3.4 compangle.m... 8 2.3.5 pointdiff.m... 8 2.4 Příklad spuštění... 8 2.5 Bodové hodnocení... 8 2.6 Testování algoritmu... 8 2.7 Rady a tipy... 9 2.8 Důležité termíny... 9 2.9 Bonus pro Vás... 9 2.10 Podmínky zápočtu... 9 2

1 POPIS Jedná se o tzv. programovací hru, tedy o hru, které se místo hráčů účastní jednotlivé programy/algoritmy. V této úloze je zpracována simulace letecké bitvy. Engine hry simuluje pohyby letadel v prostoru a jejich souboje. Pro jednoduchost je simulace 2D v pohledu ze shora. Simulace trvá určitou dobu, N simulačních kroků. Hráče reprezentuje funkce pro ovládání letadla. Tato funkce je volána každý krok simulace. Funkce obdrží dostupná aktuální data. Řídicí funkce vrací řídící signály nastavení směrovky, nastavení plynu, požadavek na střelbu a uživatelská data. Cílem studenta je navrhnout algoritmus letadla, který v daném čase zasáhne či úplně sestřelí, co nejvíce soupeřů, zároveň bude co nejméně zasažen a nespotřebuje přitom moc munice. Na obrázku pod textem je vizualizace simulace. Letadla se pohybují ve vymezeném prostoru dle vytvořeného algoritmu. Simuluje se několik letadel zároveň na jednom bojišti. Letadla se nesrazí, ale proletí skrz ( nad/pod ) sebou. Simulovaný prostor je periodický, takže letadla nemohou opustit vizualizovaný prostor, ale objeví se na druhé straně. Po celou dobu simulace je jednotlivým hráčům/algoritmům počítáno skóre. Jeden bod je přičten za každý zásah protivníka, dále jeden bod navíc za jeho zničení. Desetina bodu je odečtena za každý výstřel, je tedy třeba s municí nakládat rozumně. Sestřelené letadlo bez životů, je na 30 kroků simulace (cca 3 sekundy) odstaveno. Po 30 krocích, dojde opět k jeho aktivaci na náhodně vygenerovaném místě a pokračuje v souboji s plnými životy. 3

4

2 PŘILOŽENÉ FUNKCE 2.1 Hlavní funkce pro spuštění simulace 2.1.1 engine1.m Hlavní funkce simulace. Simuluje chování letadel, vyhodnocuje zásahy, počítá skóre a provádí vizualizaci soubojů. Doporučujeme tuto funkci prostudovat, než začnete psát vlastní algoritmus. [S] = engine1(ffuncs, maxtime, RT) ffuncs vektor, jednotlivá letadla (algoritmy), viz initplanes.m níže maxtime doba letu doba simulace souboje v sekundách RT koeficient rychlosti simulace. Celé číslo. 2 = 2x rychlejší simulace. Pro RT=0 bude simulace provedena zrychleně bez grafického výstupu, to se hodí pro simulaci delších soubojů, které jsou potřeba pro přesnější porovnání úspěšnosti jednotlivých algoritmů. 2.1.2 initplanes.m Makro pro inicializaci letadel jednotlivých algoritmů. V makru definujeme jednotlivá letadla a jejich barvy v RBG. Po spuštění bude vytvořen vektor letadel ffuncs. ffuncs(1).pilot = @ftestexample1; ffuncs(1).color = [0 0 128]/256; ffuncs(2).pilot = @ftestexample2; ffuncs(2).color = [0 128 0]/256; 2.1.3 run.m Spuštění simulace letecké bitvy. Spustí makro initplanes.m a pak simulaci na 20 sekund s nezrychlenou vizualizací. 2.2 Vzorová funkce letadla ftestexample1.m [throttle, steering, firing, userdata] = ftestexample1(planes, id, bullets, t, userdata) Funkce, která řídí chování letadla. Vaším úkolem je naprogramovat právě tuto funkci. Funkce musí mít výše uvedené vstupní a výstupní parametry. Jejich význam je následující: 2.2.1 Vstupní parametry: planes vektor struktur všech letadel v prostoru (včetně vašeho) id identifikační číslo vašeho letadla do vektoru planes bullets všechny aktuálně letící střely v bitevním poli vektor struktur 5

t krok simulace (celé číslo od 1 výše) userdata data z předchozího kroku simulace, která si definoval uživatel, na začátku empty 2.2.2 planes() planes(k).score - aktuální skóre planes(k).health počet zbývajících životů planes(k).damage poškození způsobené zásahem (síla zbraní) planes(k).xy souřadnice v letovém prostoru (vektor 1x2) planes(k).angle aktuální úhel natočení letadla v radiánech (směr kam letí) planes(k).v aktuální rychlost letadla planes(k).throttle - poloha plynu planes(k).steering úhel směrovky zatáčení planes(k).fire - letadlo střílí planes(k).userdata uživatelská data planes(k).color - barva hráče planes(k).setup - aktuální nastavení planes(k).death bojující/zničený 2.2.3 Výstupní parametry: throttle poloha plynu letadla v rozmezí <0, 1>, nula je nejmenší rychlost, nikoli nulová, jednička reprezentuje maximální rychlost. steering natočení směrovky v rozmezí <-1, 1>. Relativní natočení v radiánech vůči letadlu. Kladné číslo zatáčet doleva Záporné číslo zatáčet doprava Nula letět rovně 6

firing požadovaná střelba (1 střílet, 0 nestřílet) userdata uložiště pro libovolná data uživatele, která chce využít v příštím kroku simulace (univerzální paměť), na začátku je empty 2.2.4 Volitelné nastavení - setup Každé letadlo může využít jeden z bonusů: 1. Silnější střelu o 25% (větší poškození spoluhráče) 2. Zvýšené zdraví o 25% 3. Vyšší rychlost o 25% 4. Lepší manévrovatelnost o 25 % Setup se nastavuje ve funkci letadla následujícím způsobem: %SETUP MODE if length(varargin) == 1 varargout{1} = 1,2,3 nebo 4 else %DRIVER MODE Mód je aktivní po celou dobu života letadla, pokud je letadlo sestřeleno a opět se narodí, engine volá funkci setup znovu a je možné zvolit jiné nastavení. 2.3 Pomocné funkce Funkce, které můžete / nemusíte použít. Tyto funkce by Vám měly usnadnit tvorbu algoritmu vašeho letadla. Některé z těchto funkcí využívá rovněž samotný engine. 2.3.1 unwrapangle.m a = unwrapangle(a) Funkce drží úhel letadla v intervalu <-π,π >. 2.3.2 unwrapxy.m [x,y] = unwrapangle(x,y) nebo xy = unwrapangle(xy) Funkce udržuje souřadnice x,y ve velikosti okna - periodickém prostoru. Využívá globální proměnné nastavené enginem global SIZE_X SIZE_Y, ty můžete využít i vy. 7

2.3.3 anglediff.m a = anglediff(a1, a2) Funkce Vám spočte diferenci (rozdíl) mezi dvěma zadanými úhly v radiánech, respektuje periodicitu úhlů. 2.3.4 compangle.m a = compangle(dx) Funkce Vám vypočte úhel v radiánech z rozdílu xy (headingpoint - actualpoint). Například: compangle([1,1]), dostaneme π/4 (45 stupňů) 2.3.5 pointdiff.m [dx,dy] = pointdiff(xya, xyb) nebo dxy = pointdiff(xya, xyb) Funkce Vám spočte rozdíl mezi dvěma body A a B s respektováním periodického prostoru. 2.4 Příklad spuštění Rozbalte obsah přiloženého archivu do nějakého adresáře a tento adresář nastavte v Matlabu jako aktuální. Pak stačí spustit run 2.5 Bodové hodnocení Za každý výstřel je odečteno 0.1 bodu. Za každý zásah nepřítele je přičten 1 bod a za každého zničeného nepřítele je přičten další 1 bod. V případě 25% zbraňového bonusu (setup=1) je za zásah připočteno 1,25 bodu. 2.6 Testování algoritmu Jak již bylo výše uvedeno, je možné nastavit na počátku čtyři nastavení. Pro vámi vytvořený algoritmus otestujte všechny tyto nastavení, proveďte vyhodnocení, graficky zpracujte a vložte do referátu. Jelikož výsledek simulace z části ovlivňuje náhoda, bude nutné udělat několik delších simulací, které statisticky vyhodnotíte. Podobně budete postupovat v případě porovnávání různých variant vašich algoritmů během vývoje. Vše dokumentuje v referátu. 8

2.7 Rady a tipy Nezkoušejte hned naprogramovat nějakou super-funkci. Je lepší postupovat v menších krocích, a testovat jednotlivé nápady zvlášť. Začít něčím velmi jednoduchým a teprve až pochopíte lépe, jak co funguje, můžete se pustit do větších složitostí. Dělejte jednotlivé verze, které pak můžete mezi sebou porovnávat. Pro lepší pochopení co se kde děje doporučujeme použít Matlab debugger. Pro lepší pochopení úlohy můžete nahlédnout i do samotného enginu. V případě potřeby ho můžete i upravovat (sbírat různé informace či statistiky, odstranit vliv náhody pro lepší ladění), pro finální turnaj však bude použit původní oficiální engine. Neváhejte se na nás obrátit s vašimi dotazy. 2.8 Důležité termíny Povinné konzultace: V rámci jednotlivých termínů cvičení, proběhnou dvě konzultace (cvičné turnaje). Účast je povinná alespoň na jednom z nich (velmi doporučená na obou). Konkrétní termíny určí vyučující. Finální turnaj: Proběhne v druhé polovině května, konkrétní termín bude upřesněn. Kdo se nedostaví nebo alespoň nepošle své letadlo do soutěže, nebude mít nárok na zápočet. Omluveny budou pouze vážné důvody. 2.9 Bonus pro Vás Ti z vás, kteří dosáhnou nejlepší výsledků, budou odměněni mimořádným stipendiem. 2.10 Podmínky zápočtu Aktivní účast na cvičeních Účast na jedné z konzultací Vytvořit alespoň trochu inteligentní algoritmus řízení letadla Účast na finálním turnaji Vypracování referátu/dokumentace Jak má vypadat referát? Úvodní strana s názvem zadání, předmětu, jménem a číslem studenta Stručný popis zadání co bylo cílem semestrální práce Podrobný popis řešení problému o Nejlépe popsat chronologicky postupný vývoj finálního algoritmu včetně jednotlivých mezi-verzí. Popsat jednotlivé nápady a jejich výsledky, včetně problémů a nedostatků. Porovnejte vliv výběru nastavení. o Do dokumentace nekopírujte celý zdrojový kód. Pokud je některá z jeho částí velmi zajímavá, uveďte jen tu část. 9