Göm menyn

TDDD92 AI-projekt


Projekt i grupp (3 hp)

Här följer information om olika aspekter av projektarbetet under höstterminen. Sidan är ny; fråga gärna om något saknas.

HT1: En grundläggande agent för StarCraft II

Ett par veckor innan slutet av HT1 börjar det bli dags att gå över till att skapa en enkel gemensam agent. Information om detta finns i vår wiki och här är några viktiga punkter:

  • Den gemensamma agenten bör vara klar innan HT2 börjar.

  • Den ska vara en enkel grundagent där man senare (under HT2) integrerar AI-tekniker.

  • Den kan baseras på era implementationer från labbarna eller på en nyligen implementerad "basagent" som kan ge ytterligare inspiration och hjälp, men som å andra sidan kräver att man sätter sig in i den nya koden.

Varje grupp får ett eget Git-repo som är en kopia (fork) av den nya basagenten. Gruppen väljer om ni vill använda den eller om ni föredrar att jobba vidare på er tidigare kod -- läs genom repots README och titta lite på koden för att bestämma er. Oavsett vilket ni väljer att göra ska ni ändå arbeta i det Git-repo som vi har skapat åt er!

Ju längre ni har kommit med detta när HT2 börjar, desto större chanser att ni kan implementera AI-teknikerna på ett bra sätt. Grupper som inte är klara med basen förrän ett par veckor in i HT2 får ofta problem att hinna implementera, testa och utvärdera ordentligt.

Arbetet under HT2

Under HT2 behöver alla i gruppen arbeta på bland annat följande punkter:

  • Implementera den egna funktionaliteten, det egna ansvarsområdet (till exempel "byggnadsordning"). Detta behöver komma igång direkt i HT2 – man behöver lite marginaler för att t.ex. kunna ta ett avbrott i några dagar för att tänka över saker, eller för att man kanske blir sjuk ett tag.

  • Samarbeta med övriga i gruppen för att fortsätta med den gemensamma funktionalitet som man upptäcker att man behöver. Mycket bör redan vara klart i och med basagenten som skrevs i HT1, men man upptäcker säkerligen några fler behov när man arbetar i HT2. Detta arbete behöver fördelas jämnt inom gruppen.

  • Testa den egna funktionaliteten, men även testa att integrera flera olika funktionaliteter tillsammans. Vi ser ibland att olika gruppmedlemmar arbetar på helt egna grenar i Git och att integreringen inte sker förrän på slutet, och det kan vara ett stort misstag. Integrera så tidigt ni kan.

    Ett tips är att skapa ett antal featureflaggor där man kan slå av och på olika funktionaliteter, med "fallback" till en väldigt grundläggande funktionalitet om någon flagga är falsk. Exempel: Om FIND_SAFE_PATHS är True används någons "hitta-säker-väg-implementation". Om flaggan är False (kanske för att funktionen inte är färdig eller för att man vill testa om det är den funktionen som orsakar en bugg) anropas automatiskt en fallback som använder den inbyggda förflyttningen istället.

  • Planera arbetet och hålla en tidplan (mer om det senare).

  • Rapportera hur det går och diskutera frågor och problem (mer om det senare).

  • Arbeta på projektdelen av rapporten när du har material, och arbeta vidare med polering av utredningsdelen när du har fått kommentarer.

Planering av arbetet

För att hålla reda på hur det går och vem som gör vad, och se till att inget faller mellan stolarna, är det viktigt att ha en viss planering. Det är också bra om handledarna kan titta på planeringen och hjälpa er följa upp det som har gjorts, inte minst när det gäller tidsplaneringen under periodens 7 veckor.

Vi har därför skapat ett enkelt Google-dokument (spreadsheet) där man kan planera arbetet på hög nivå. Detta kommer vi att diskutera med er vid första redovisningstillfället, och ni kommer att få fylla i planen inför andra tillfället (men skulle ni göra det redan till första tillfället är det också väldigt välkommet). Gruppen bör därför skapa en egen kopia av detta dokument, fylla i medlemmarnas namn, och börja planera!

Dokumentet behöver delas med samtliga gruppmedlemmar, så samtliga kan skriva i dokumentet. Se de allmänna delningsinstruktionerna. Det behöver också delas med båda handledarna och examinatorn, men det räcker att vi är "läsbehöriga" och vi behöver bara en gemensam läslänk.

I dokumentet finns en kolumn för gruppen som helhet och en för varje gruppmedlem.

För varje vecka skriver man i förväg in en ungefärlig plan för vad man tänker göra. Det är då naturligt att man har en tydligare och mer konkret plan för de närmaste veckorna veckor framöver (med flera tydliga att-göra-punkter), medan planen blir mer "ungefärlig" ju längre in i framtiden man kommer. Även de mindre detaljerade delarna är dock viktiga för att man ska kunna se att planen i sin helhet verkar rimlig!

När veckan har gått skriver man också in vad man faktiskt har gjort, vilket ofta inte stämmer exakt med planen. Sedan är det dags att lägga några minuter på att uppdatera och förtydliga den framtida planen inför nästa redovisningstillfälle.

Redovisningstillfällen

I princip varje vecka under HT2 har vi ett redovisningstillfälle. Vid frånvaro, se kursinfo.

Vid första redovisningstillfället 2021-11-01 har vi ännu inte riktigt kommit igång. Då kommer varje grupp att få 30 minuter till att diskutera nuläget med er handledare. Ni behöver då vara förberedda på att t.ex. förklara hur det har gått med basagenten och diskutera lite om hur ni tänker fortsätta ert arbete under första veckan.

Övriga redovisningstillfällen planerar vi att dela upp i:

  • 20 minuter för grupp A (enskilda diskussioner), 15 minuter för grupp A+B tillsammans (titta på en eller flera matcher mellan gruppernas agenter), 20 minuter för grupp B (enskilda diskussioner)

  • Samma för grupp C/D

...där grupperna A/B/C/D är olika projektgrupper varje gång, så att vi varierar vem man träffar (vi skickar ut exakt information inför varje tillfälle!). Vid varje redovisningstillfälle ska gruppen alltså närvara i cirka 35 minuter enligt vår nuvarande plan. Det kan hända att detta justeras under kursens gång om vi ser behov av lite mer tid för att t.ex. ställa frågor.

Inför dessa tillfällen (alla utom det första) behöver ni uppdatera planeringen (Google-dokumentet) senast dagen före redovisningen så att handledaren kan titta på planeringen i förväg. Under själva redovisningen (gruppens "privata" tid minuter) används planeringen som en bas för att varje enskild gruppmedlem ska kunna prata kort om hur det har gått under förra veckan och vad man tänker göra under den kommande veckan. Här finns bara cirka 2 minuter för varje gruppmedlem, så det är viktigt att förbereda planeringsdokumentet så att man vet vad man vill säga!

Efter detta finns cirka 5 minuter kvar av grupptiden till att t.ex. ta upp frågor från gruppens sida eller från någon medlem.

När första gruppens "privata" tid är slut släpper handledaren själv in nästa grupp för den gemensamma redovisningstiden. Då tittar man som sagt på matcher mellan de två gruppernas agenter, vilket kan ge en hel del matnyttig information. För att vi ska kunna förbereda och köra matcherna kommer ni varje vecka att behöva lägga en Git-tag på en agentversion som ni vill att vi ska använda; mer information kommer när det blir dags!

Seminarier och labbar

Under HT2 har vi också ett seminarium varje vecka, normalt dagen efter redovisningarna. På det seminariet kan ni ta upp frågor som ni inte hann diskutera under redovisningen, eller som handledaren inte kunde besvara. Precis som vanligt kan vi inte heller garantera att vi kan svara på rak arm på seminariet, utan vissa frågor kan få skjutas upp.

Slutligen har vi också labbtillfällen där det finns mer tid att ställa praktiska frågor till handledarna; seminarierna är t.ex. inte till för programmeringsfrågor.

Slutredovisningar 15-17 december

Vid slutredovisningarna kommer ni att ha lite mer tid att redovisa vad ni har åstadkommit under terminen. Varje grupp kommer att redovisa separat under ett eget pass, där varje individ får en viss tid tilldelad att presentera sitt eget resultat. Varje grupp kommer att vara närvarande i högst en timme.

Mer detaljer skickas via epost.

Rapportinlämning i januari

I tentamensperioden i januari 2022 lämnas den slutliga rapporten in. Se deadlinesidan samt information som skickas ut via epost.


Sidansvarig: Jonas Kvarnström
Senast uppdaterad: 2021-12-06