Göm menyn

TDDD92 AI-projekt


Slutrapporter

Här följer instruktionerna för projektgruppernas slutrapporter i TDDD92. Ställ frågor om något är oklart!

Deadlines

Deadline för slutrapporten är söndag 2020-01-12. Vi kommer inte att läsa rapporter förrän då. Om någon gruppmedlem inte är färdig, men den gemensamma gruppdelen är klar: Lämna ändå in rapporten i sitt existerande skick och indikera vilka medlemmar som inte är färdiga, så att vi kan examinera resten av gruppen. (Deadline för uppdaterade individuella rapporter är söndag 2020-01-19.)

Nästa inlämningstillfälle blir i omtentaperioden i mars.

Varför en slutrapport?

Slutrapporten har en viktig roll i examinationen för projektmomentet. Givetvis tittar vi även på annat, som t.ex. resultatet av den implementation ni har gjort, men det är i rapporten som ni kan ge oss mycket av den information vi kan basera betyget på. Det är också här som ni kan dra vår uppmärksamhet till det ni vill visa upp som en bas för ett högre individuellt betyg på projektet! (Detta kan även gälla sådant som t.ex. redan har diskuterats på seminarier eller liknande.)

Slutrapporten ska skrivas gruppvis med hjälp av samma grundmall som användes i utredningsrapporten, och ska bestå av följande delar:

  • En inledande beskrivning av arbetet på gruppnivå, typiskt 2-3 sidor
  • En individuell beskrivning av arbetet för varje gruppmedlem, typiskt upp till 2 sidor per person

Det går utmärkt att lägga in nya underavsnitt för att dela upp de existerande avsnitten. I övrigt ska rapporten följa den givna strukturen.

Tänk på att göra en ärlig utvärdering i er rapport. Vi väntar oss inte att alla har valt den bästa tekniken redan från början, eller att alla har hunnit göra den perfekta implementationen. En viss miniminivå på implementationen är nödvändig enligt kursmålen, men det är minst lika viktigt att visa insikter om t.ex. vilka försök som fungerade, vilka som inte fungerade (kanske AI-tekniken inte var lämplig trots allt?), och varför det var så.

Hur formell är slutrapporten?

Denna rapport är mindre formell än den individuella rapporten på så sätt att den inte ska språk- och strukturgranskas. Det är helt enkelt en rapport över era projektresultat. Tänk ändå på att det ska vara klart och tydligt vad ni menar med det ni skriver, och att det ska framgå vad ni har gjort i projektet. Återigen: Detta är en av era viktigaste möjligheter att visa upp era kunskaper och framsteg, vilket ni på ett eller annat sätt behöver visa oss för att vi ska kunna motivera ett godkännande eller ett högre betyg.

Precis som i den individuella rapporten behöver man inte beskriva allmänna egenskaper hos StarCraft, eller det allmänna syftet med grupparbetet i TDDD92, då detta kan antas vara känt av läsaren (examinatorn och handledarna). Det går så klart bra att beskriva specifika delar av StarCraft som man vill koppla sina resonemang till!

Gruppdelen

I gruppdelen av rapporten förväntar vi oss följande information i egna rubriksatta avsnitt:

  • (Kurskod, årtal, samtal gruppmedlemmar med namn och LiU-ID)
  • Mål: En beskrivning av det mål gruppen har satt upp. Vi förutsätter att läsaren redan känner till det generella målet med kursen! Det vi vill veta är: Vad har gruppen valt att fokusera på av alla de möjligheter som finns inom kursen (hur har ni profilerat er agent)? Vad har ni valt att hoppa över och inte fokusera på, och varför har ni tillsammans gjort dessa val?
  • AI-tekniker: En mycket kortfattad punktlista på de AI-tekniker ni har valt att implementera. Detta kan vara på formen "Applicerat FOO-learning tillsammans med XYZ-search för att bestämma var och hur ABC ska utföras". Var och en får mer utrymme att beskriva detta i den individuella delen, så håll det översiktligt.
  • Struktur och integration: En konceptuell beskrivning av den övergripande strukturen hos agenten som har utvecklats.

    Detta handlar alltså inte alls om kod, funktioner, klasser och källkodsfiler, utan vi vill förstå på en hög nivå hur allt är tänkt att fungera, hur de olika funktionaliteterna (AI och andra) är integrerade, och hur agenten egentligen tar sina beslut.

    Några exempel på frågor som kan besvaras av rapporten: Hur "drivs" agerandet framåt så att agenten faktiskt gör något? Hur och av vem används / anropas de olika individuella funktionaliteterna? Hur är alla funktionaliteter "kopplade" till varandra, hur interagerar de? "Vem" tar olika beslut? Hur och var skapas, hanteras och används olika sorters information? Diagram är mycket välkomna som en del i förklaringarna. När man har läst beskrivningen ska man förstå, på en hög abstraktionsnivå, att "aha, det är agenten jobbar när den gör det jag ser i demonstrationen". En direkt koppling till olika funktioner, klasser, filer och andra implementationsdetaljer är inte nödvändig eller önskvärd.

  • Slutsatser: Slutsatser kring resultatet. Detta gäller alltså helheten, medan de enskilda teknikerna snarare kan utvärderas i de individuella delarna av rapporten. Exempel på frågor att dra slutsatser om: Vad har vår agent för styrkor och svagheter? Varifrån kommer dessa styrkor och svagheter? Vad hade kunnat krävas för att slå den inbyggda motståndaren på nästa svårighetsnivå? Hur gick det i turneringen och varför (styrkor och svagheter)? Vad hade gruppen gjort annorlunda om man påbörjade projektet idag med de kunskaper man har fått? Tänk på att motivera slutsatserna och kom ihåg att våra frågor bara är exempel för er inspiration, inte ett frågeformulär.

Den individuella delen

I den individuella delen av rapporten vill vi inte se information om hur de allmänna teknikerna fungerar, såsom Q-Learning eller Bayesian Networks, eftersom detta redan har diskuterats i utredningsrapporten. Istället ligger fokus på följande information:

  • (Namn, LiU-ID) – på en ny sida för varje person, så blir det lättare för oss att läsa! I LaTeX finns t.ex. \clearpage.
  • Problem och teknik: Vilket StarCraft-relaterat problem är det som just du har tacklat, och vilken eller vilka AI-tekniker har du implementerat och applicerat? Ange teknikernas namn och referenser. Var lagom kortfattad: Påminn läsaren om vad du skulle göra och varför, men hänvisa till den tidigare individuella rapporten för detaljer. Ett undantag är så klart om du har gjort större ändringar i din inriktning jämfört med den ursprungliga i rapporten. I så fall behöver du ge mer information här, och detta avsnitt räknas då inte in i riktmärket för antalet sidor.
  • Användning i StarCraft: Hur har du applicerat dessa tekniker i StarCraft? Detta är en viktig del av betygsunderlaget!

    Här bör du beskriva hur du har modellerat problemet för att den valda tekniken ska lösa relevanta problem i StarCraft-världen. Till exempel kan detta inkludera val eller utveckling av features, variabler, nätstrukturer för BN, tillståndsrymder, rewardfunktioner, heuristiker, fältstyrkor, med mera. Var tydlig! Exempel: Om du använder ett sökträd, vad är då rotnoden, vad motsvarar bågarna, och vilka barn finns till en nod? Om du använder Bayesianska nätverk, vad motsvarar noderna? Om du använder potentialfält, vad motsvarar potentialerna, när räknas de ut och uppdateras, och så vidare?

    Om du har undersökt andra alternativ för hur du kunde ha applicerat algoritmen bör det också framgå, speciellt om du faktiskt har utvärderat de olika alternativen. Om du har fått delar av modelleringen från en StarCraft-artikel, istället för att välja och utveckla en modellering själv utifrån en generell funktionalitet (såsom A* som är mycket generell), ska detta framgå tydligt.

    Om du har använt replays eller andra data, tala då om både var de kommer från och vilka replays du har använt. (Om detta tar mycket plats går det bra att ta extra sidor till en tabell på slutet.)

    Var noga med att tala om vad resultatet blir. Exempel: Om du arbetar med byggnadsordning, talar du då om vad som ska byggas i nästa steg, eller vad som ska byggas i flera steg framåt? Eller talar du inte bara om vad som ska byggas, utan ser även till att det faktiskt blir byggt?

    Små diagram och figurer kan vara mycket användbara för att förklara.

    Förtydligande: Intuitioner är viktiga, men det är också tydlighet och precision. Om du beräknar något med hjälp av ett avstånd, vad är då den exakta formeln du har använt? Om du skapar en heuristik, hur beräknas den?

    Delar av detta kan vara en repetition från den ursprungliga individuella rapporten, där användningen i StarCraft också diskuterades. Tanken är att den rapporten bara innehöll de inledande tankarna från den rent teoretiska studien. Nu har du haft en möjlighet att applicera en eller flera AI-tekniker i praktiken och har sett mer om vad som faktiskt fungerade. Diskutera då gärna om dina inledande idéer fungerade eller om/varför/hur du har behövt tänka om / modellera om efter dina praktiska erfarenheter.

  • Kopplingar: En beskrivning av kopplingar till den övriga implementationen. Detta är viktigt då implementation och integration ingår i kursmålen!

    Är din implementation (alternativt dess in/utdata) mer eller mindre tätt kopplad till andra tekniker eller andra gruppmedlemmars individuella arbete? I så fall, hur? Vilka data får du från vem? Vilken information ger du till vem? Eller är den i princip fristående från övriga specifika AI-tekniker?

    Hur är den i övrigt inkopplad i agenten som en helhet, så att den faktiskt används när agenten spelar?

    Notera att "hur" är tänkt att tolkas på en högre abstraktionsnivå. Vi är inte intresserade av vilka Python-funktioner som anropar varandra, utan av hur teknikerna fungerar ihop, hur de hjälper varandra, hur de beror på varandra, vilken sorts information de ger och får – eller som ett alternativ, hur och varför de kan användas helt oberoende av varandra utan att den ena behöver känna till den andra. Ett enkelt diagram kan ofta vara bra för förståelsen.

    En övergripande beskrivning finns i gruppdelen, men där är fokus på helheten, så att säga. Här får du lite mer plats att diskutera just din egen integrering.

    Diskutera gärna hur integration och "inkoppling av funktionaliteterna" har påverkat ditt arbete. Finns det till exempel ytterligare krav som ställs på din teknik för att integrationen ska fungera? Har förenklingar skett genom att fler personer kan dela på implementerad funktionalitet?

  • Resultat: En beskrivning, analys och utvärdering av resultatet för just din specifika AI-teknik.

    Detta är också en mycket viktig del: Att kunna utvärdera tekniska lösningar är ett av de uttryckliga kursmålen som måste examineras! Tänk också på att inte bara ge subjektiva värderingar utan fokusera på en motiverad och objektiv bedömning av det tekniska resultatet.

    Utvärderingen kan inkludera jämförelser mellan olika tekniker eller handla om resultatet när man applicerade en specifik teknik. Vad blev resultatet när du applicerade din teknik i StarCraft? Blev det bättre eller sämre när din funktionalitet aktiverades, jämfört med om man körde agenten utan din funktionalitet? Hur mycket, på vilket sätt, varför?

    Förtydligande: Vi pratar här om resultatet för agenten. Det handlar alltså inte bara om att t.ex. "byggnadsordningen blev annorlunda", även om det också är intressant att se detta (och på vilket sätt den blev annorlunda). Det vi är ute efter i projektet är en agent som spelar StarCraft II på ett bra sätt, och frågan är alltså på vilket sätt den valda tekniken bidrog till att nå närmare detta mål. "I och med att vi bygger i en bättre ordning händer X och det hjälper oss mot fienden genom Y".

    Förtydligande: Den huvudsakliga meningen med detta avsnitt är inte att man ska motivera sin egen "prestation", alltså varför man nådde dit man nådde. Vi är medvetna om att kurstiden inte alltid räcker för att man ska uppnå den perfekta implementationen, och mycket kan hända som man inte har kontroll över. Det handlar mer om att analysera varför den allmänna tekniken och den specifika implementationen gav vissa resultat, än om att analysera varför man själv kom dit man kom.

    Förtydligande: När vi säger "hur mycket, på vilket sätt, varför?" menar vi också att vi vill se tydliga beskrivningar av resultaten och hur de yttrade sig i spelet. Går det att se hur mycket oftare man vinner? "Lite oftare", är det 10% oftare eller 50% oftare? Ofta går det att beskriva mer kring skillnaderna: "förut gjorde den så här men med den nya tekniken beter den sig så här istället"... med en del detaljer som gör att man förstår det hela, och varför det inträffar. Det handlar alltså inte bara om en allmän slutsats om att "det gick väl bra", utan om att visa hur man uppfyller lärandemålet att kunna utvärdera AI-tekniker och hur de påverkar ett system.

    Vissa kanske också har delresultat att rapportera: Gör man på sätt A blir resultatet X, gör man på sätt B blir resultatet Y. Varför blev det så?

  • Slutsatser kring AI-tekniker: Individuella slutsatser kring ditt arbete med AI-tekniker i projektet. Hur svårt var det att applicera en viss teknik? Gick det som du förväntade dig?
  • Gemensamt arbete: En kort beskrivning / sammanfattning av vad du har gjort i den gemensamma implementationen och ungefär hur stor del av tiden du har lagt på den aspekten av agenten.
  • Övrigt: Om du vill kan du även ta upp annat som du tycker kan vara relevant för bedömningen av hur du har uppnått kursens mål.

Tyngdpunkten i den individuella delen ska vara på det du själv har gjort inom dessa områden (modellering, utvärdering, eventuell algoritmutveckling, med mera). Ju mer du har fått från en artikel, desto större tyngd behöver läggas på andra områden. Har man till exempel fått både algoritm och modellering från en StarCraft-specifik artikel behöver man lägga extra mycket arbete på utvärderingen.


Sidansvarig: Jonas Kvarnström
Senast uppdaterad: 2020-02-13