Den rödmarkerade uppgiften nedan ska redovisas. Du bör vara klar med denna laboration läsvecka 4.

Simulering av skogsbrand

Vi ska skriva ett program som simulerar en skogsbrand, dvs. hur elden sprider sig över ett område under en viss tid. (Att simulera hur en skogsbrand sprider sig är naturligtvis väldigt komplicerat, därför kommer vår modell att vara förenklad.)

Ett sätt att simulera ett förlopp över ett område över en viss tid är att dela in området i mindre delar (celler) . Varje cell motsvarar en viss area i skogen, och varje cell har en viss status (tex. brinner, brinner inte, kan inte brinna). Med hjälp av regler beskrivs hur en cell byter från en status till en annan över tiden.

Vår modell

Vi tänker oss att skogsområdet är uppdelat i nxn celler. Varje cell motsvarar en liten area i skogsområdet, och varje cell kan anta en av följande värden (status)

Exempel:

0 1 1 1 1
0 1 1 1 1
1 1 1 1 1
1 1 1 2 2
1 1 2 0 0

Området har delats in i 5x5 celler. Tre av cellerna brinner (motsvaras av de rutor som innehåller siffran 2), fyra av cellerna kan inte börja brinna (de rutor som innehåller 0) och resten av cellerna brinner inte.

I Matlab kan man enkelt representera området med en nxn matris, där varje element innehåller respektive cells status (dvs. 0, 1 eller 2).

  • Skapa en matris i Matlab som innehåller området i figuren ovan

    Området kan sedan presenteras grafiskt:

    I figuren har man använt fill för att att illustrera området som beskrevs av 5x5-matrisen ovan. Cellerna som inte kan brinna är svarta, de som brinner är gula och cellerna som inte brinner är gröna (du kan använda vilka färger du vill i dina figurer).

  • Genrera figuren ovan (Ledning Kommandot axis off kan användas för att "ta bort" koordinataxlarna).

    Regler för hur branden sprider sig över området

    Om en cell i området brinner, kommer elden att sprida sig till omgivande celler med en viss sannolikhet efter en viss tid (Hur elden sprider sig beror ju på vindhastighet, hur torrt det är, om det finns något i omkringliggande celler som kan börja brinna, etc).

    I vår (förenklade) modell gäller följande regler:

    Uppgiften Skriv ett program som skapar ett område med tex 25x25 celler, gröna och ev. några svarta och låt användaren markera vilka celler som ska brinna (använd ginput). Följ sedan förloppet tills hela skogen brunnit upp, eller tills det inte längre brinner någonstans , använd fill för att illustrera grafiskt. Använd ev. pause för att lägga in en kort paus mellan uppritning av de olika tidstegen. Låt p (sannolikheten för att en cell ska börja brinna) vara 0.9. (Om man inte använder pause behöver man ibland tvinga matlab att rita med kommandot drawnow)

    Titta igenom de föreberedande uppgifterna nedan innan du börjar lösa labben.

    Förberedande uppgifter

    Vi tittar lite extra på hur elden sprider sig i vår modell. Ta bilden ovan ovan till hjälp och tänk igenom hur skogen ser ut i nästa tidssteg. Vilka celler kommer att vara svarta, och vilka kommer ev att vara gröna/gula?

    Här följer några övningar för att komma igång.

    Övning 1: Låt n=25. Rita en grön n x n kvadrat med ett rutnät på. Använd fill, plot och axis på lämpligt sätt.

    Övning 2: Bilda lämpliga matriser för att labra information om var det brinner. Det behövs en matris för nuvarande tidssteg, och en för nästa tidssteg.

    Övning 3: Skriv en kommandosekvens som gör det möjligt att markera var det brinner, för att starta upp skogsbranden.

    Övning 4: Gör en funktion som räknar en cells brinnande grannar. Använd sum.

    Här finns lösningsförslag till förberendande uppgifter