|
Smarta
rymdraketen
Programmera i Java en självstyrd
rymdraket som i en två-dimensionell rymd klarar av att rädda
(fånga upp) austronauter, som råkat på
villovägar från sin rymdstation och för dem tillbaka
till basen (rymdstationen). Raketen har begränsad mängd
bränsle så det är därför viktigt att den
rör sej kortaste möjliga sträcka när den plockar
upp astronauterna. Astronauterna har också begränsad
mängd syre så en mellantankning vore ödesdiger!
Kravspecifikation
- Astronauternas positioner
är slumpmässiga
- Astronauterna behöver inte röra sej
- Astronauternas antal bestäms via en
variabel i programkoden
- När spelet börjar och astronauterna
ritats ut skall en algoritm räkna ut vilken rutt som är
kortast
- När rutten beräknats animeras raketen
genom den beräknade rutten, dvs. den startar från basen,
plockar upp alla astronauter och återvänder till basen
- Slumpmässiga meteoriter kan även
förekomma
- Meteoriternas startpunkt, hastighet och
riktning är slumpmässiga (de startar dock alltid utanför
spelområdet)
- Metoriternas hastighet och riktning är
konstanta
- Raketen skall klara av att undvika kollision
med eventuella metoriter, dvs. om en meteorit kommer i vägen skall
raketen göra något av följande:
- stanna och vänta på att metoriten
passerar
- göra en väjningsrörelse och
beräkna ny rutt
- Programkoden skall optimeras för
multi-processor arkitekturer, dvs:
- Sök "hotspots" i programkoden och
parallellisera där det är möjligt
- Gör dock inga onödiga
parallelliseringar!
- Koden skall parallelliseras beroende på
hur många processorer/processorkärnor som är
tillgängliga för virtualmaskinen när programmet
körs.
Tips
Principer för
bedömmning
- Vitsord 1
- Minst 10 punkter med slumpmässiga
kordinater ritas på skärmen
- Alla punkterna sammanbinds m.h.a. "sök
närmaste granne" metoden genom att t.ex. rita linjer mellan dem
(observera att denna metod resulterar inte i kortaste totala rutt!)
- Den mest resurskrävande
algoritmen/funktionaliteten i koden är optimerad för 2
processorkärnor
- Vitsord 5
- Programmet uppfyller kravspecifikationen till
100% med följande "flexibilitet":
- Kortaste rutten löses med "testa alla
möjliga lösningar" metoden
- Raketen klarar av att undvika krock med
meteoriter
- Kortaste rutten beräknas med en
matematiskt optimerad metod och klarar på så sätt av
flera astronauter än "testa alla möjliga lösningar"
metoden
- Raketen behöver i detta fall inte
kunna undvika krock med meteoriter
|
|
|
|