Emergenta system, HT-05



Laboration 3: Boids
 

Introduktion

På slutet av 80-talet utvecklade Craig Reynolds en modell för hur artificiella individer, kallade boids, rör sig i flock. Varje boid följer några enkla regler vilket resulterar i ett flockbeteende. Reynolds modell bygger på följande regler:

  • Collision avoidance: undvik att kollidera med dina grannar
  • Velocity matching: försök hålla samma fart och riktning som dina grannar
  • Flock centering: försök att hålla dig nära dina grannar

Reynolds utökar också modellen till att inkludera mål som flocken strävar mot samt undvikande av hinder i omgivningen. När det gäller hinder presenterar Reynolds två modeller. Den första är baserad på kraftfält runt hinder; när en boid befinner sig nära ett hinder är kraftfältet starkt och benägenheten att svänga därifrån blir hög. I den andra, steer-to-avoid, tar en boid bara hänsyn till hinder som ligger rakt framåt och beräknar en ny kurs för att undvika hindret. ( se Reynolds, 1987)

Laborationen ska lösas självständigt i grupper om två personer.

Syfte

Det övergripande syftet är att öka förståelsen för emergenta system. Laborationen har följande delsyften:

  • Öka förståelsen för boids och självorganisering
  • Stimulera till tankar kring emergenta egenskaper i system

Uppgift

Allmänt

I NetLogos modellbibliotek finns en enkel boids-modell kallad Flocking. Varje agent i modellen följer följande enkla regler:

  • Separate: undvik att flyga för nära andra boids
  • Align: flyg i samma riktning som andra boids i flocken genom att ta ett medelvärde av flockens riktning
  • Cohere: försök flyga så nära flockens mitt som möjligt

Dessa regler resulterar i att agenterna istället för att röra sig slumpmässigt i världen rör sig i en eller flera flockar.

För att göra den befintliga modellen lite mer realistisk och intressant ska hinder som boids undviker och gemensamma mål läggas in.

I laborationen är följande uppgifter obligatoriska:

Hinder

Modellen ska utvidgas till att inkludera hinder som flockarna undviker med hjälp av någon av Reynolds metoder eller er egen. Hur hinder undviks är upp till er men era boids ska undvika hinder på ett sätt som ser naturligt ut. Ni behöver bara inkludera punkformade hinder men om ni vill får ni självklart lägga in större hinder eller lägga flera punkformade hinder nära varandra. I en bra lösning kan flocken flyga mot ett hinder, delas upp i två delflockar och när hindret är passerat fortsätta flyga i en flock med bibehållen kurs. Frågor att fundera kring är: Vad krävs för att en flock ska kunna splittras upp när de undviker ett hinder och gå ihop till en samlad flock när hindret är passerat? Vilken metod valde ni och varför? Hur skulle er metod fungera med andra hinder än punktformade? Finns det någon gräns för hur stora hindren kan vara?

Mål

Modellen ska utvidgas till att inkludera ett gemensamt mål, alltså en punkt eller yta i världen som alla boids strävar efter att nå. Minimikravet är att man ska kunna ställa in målet genom att med muspekaren välja en punkt i världen (se NetLogos dokumentation). Frågor att fundera kring: Hur bibehålls flockbeteendet när ett mål finns? Hur stor vikt bör man lägga på mål, hinder och flockbeteende för att få ett beteende som ser naturligt ut? Vilken sorts beteende anser ni är naturligt eller önskvärt?

Följande uppgifter är frivilliga:

Sagan om ringen

I ett segment av Frodo Baggins och ringens brödraskaps färd till landet Mordor måste de ta sig igenom ett stycke snårig terräng bestående av träd och berg. Använd modellen med flockar, hinderhantering och mål för att simulera gruppens resa från en startposition till ett mål. Detta är ett exempel på scripted flocking. Använd gärna NetLogos färdiga former för hinder och individer. Bland annat finns former för människor, träd och bergliknande terräng. Det går också att skapa egna former med NetLogos Shapes Editor. Kreativitet uppmuntras!

Rörliga hinder

Hinder som rör på sig blir svårare att undvika då boids måste ta hänsyn inte bara till position utan också till hindrens rörelse. En utökning med rörliga hinder kan kombineras med Sagan om ringen-scenariot för att introducera nya element som måste undvikas. Kanske en grupp orcher som jagar brödraskapet?

Viktning

På sidorna 272-275 i Flake beskrivs hur boids olika mål (separation, centering osv.) kan viktas. I NetLogos Flockingmodell kan visserligen parametrar regleras för att uppnå olika beteenden men en mer generell viktning liknande den som beskrivs av Flake skulle vara mer intressant. Implementera viktning av boids olika beteenden där er hinderhantering och gemensamma mål ingår.

Redovisning

Denna laboration ska inte redovisas med någon större rapport.

Innehåll i rapport

I er rapport ska följande punkter tas med:

  • Ett fullständigt försättsblad
  • Sökvägen till er NetLogo-kod (kan skrivas på försättsbladet)
  • En kortfattad reflektion kring de frågor som ställs ovan samt kring saker ni upptäckt själva som ni vill reflektera kring. Ta gärna hjälp av skärmdumpar.
  • Utskriven dokumenterad källkod

Datum

Rapporten ska vara inlämnad senast 18 november 10.00.


Lycka till!