Disaster Response

Disaster Response preview image

1 collaborator

Default-person Surya Poudel (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.1.0 • Viewed 424 times • Downloaded 43 times • Run 0 times
Download the 'Disaster Response' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This model simulates a natural disaster (earthquake or flood) response scenario in a localized context. This is developed based on the experience of Nepal, but can be adapted for any situation. This model presents a community where the people are affected by a natural disaster (Earthquake or Flood) and simulates the results of management decision to the affected population.

When a disaster event strikes, people will be affected according to their exposure, vulnerability and coping capacity. As the time passes by, people will recover and continue to normal routine, However, the path to recovery is difficult and to speed-up the recovery, government and humanitarian organizations provide relief support. For efficient and effective relief works, information about the affected community is important. This model is designed to use as a learning resources on Disaster Management, particularly on response management, particularly to highlight the importance of Needs assessments.

This model is intended to play in training environment, where the participants will play with the model, with an objectives of minimizing the total cost of humanitarian action (humanitarian and financial cost)

HOW IT WORKS

The modelling environment is set at municipal environment, divided into four wards. The symbol of person indicates the people affected by the disaster events at different scale. The Red coloured symbol is for highly affected peoples, Yellow for Medium impacts and Blue is for people with low impacts. Green coloured symbol represents people with very little or no effect of the disaster.

This model places you as the key authority who manages the response, stationed at the Emergency Operations Center (EOC). When a disaster strikes, you have four options:

  1. Do nothing. Just watch, peoples are resilient and find their own way towards recovery.
  2. Send relief items to the affected area. When send the items, it will take around six hour to the affected area. The items will be distributed to the affected people.
  3. Send an assessment team. Reports will be available after around 24 hours.
  4. Ask for quick update: You will receive a brief information about the affected area, after three hours.

Each of the decisions have costs associated with them. The first type cost is humanitarian cost, which means, the cost of people being affected. Each day for a people with high, medium and low disaster impact will cost you 3, 2, and 1 unit (whatever currency you would like to call it either $, €, £, Rs. or any other) respectively. The second type of cost is financial cost, which will add-up when you make any decision (cost of each unit of relief item, cost for sending assessment team and asking for an update. The output window is assumed as the ‘Radio Room’ of the emergency Operations centre, where key alerts and information are feed-in. You will be able to see any assessment data below the radio room, if available. When you send relief items to the affected community, if you have the assessment data, the relief will be distributed according the level of affect, ie, classified as high, medium and low. But it you don’t have assessment data, relief will be distributed equally to all the people. Similarly, when you ask for update, it will give you quick update and also keep out the people in relief pool who have been recovered already. The plots at the lower part of the page will provide you information about the results of the simulation.

HOW TO USE IT

Each tick represents an hour in this model.

Setup Variables:

The POPULATION slider determines how many people to create for the simulation.

The DAYSTORUN slider is the total time period for the model to run. It will stop after that time.

The model has four variables, which determine the behaviour of disaster affect and recovery:

EXPOSURE: Exposure to hazards (1 to 10)

VULNERABILITY: Disaster Vulnerability of the people (1 to 10)

COPING CAPACITY: Capacity to cope with disaster (1 to 10)

BASERECOVERYPERIOD: A period, which will take a person to recover form disaster affect, in optimum condition.

Location and Events:

TargetDistirct and Municipality: Names of the target district and municipality. EVENT: Earthquake or Flood, which you would like to simulation for. The selection does not have any effect in model behaviours.

COST PER UNIT: Variables as a unit rate to calculate total costs.

HOW TO PLAY:

Choose the setup variables and click on go button. In the meantime, choose your decision commands. Whether you wish to send relief items to all or specific wards, send assessment team or ask for an update. You need to keep an eye in the radio room.

After the simulation, you may review how your decisions impacted the people’s conditions.

THINGS TO NOTICE

Please see, if there is any impact of Relief support to the recovery. Similarly, the timing of the relief has any impact or not.

Does Relief support with assessment or without assessment has any impact?

THINGS TO TRY

Try changing setup variables, particularly CopingCapacity and vulnerability and see if there is any changes in the recovery process.

Try sending relief with or without assessment in different wards, and see whether there are any differences in behaviours.

EXTENDING THE MODEL

You may add additional features such as aftershocks or secondary hazards at different timings and see how the model behaves.

NETLOGO FEATURES

This model uses Random-Poisson distribution to allocate variable units for copingcapacities, exposures and vulnerability.

RELATED MODELS

CREDITS AND REFERENCES

Developed by Surya Poudel. Contact: suryapoudel@outlook.com

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals [
  totalaffected   totallowaffected   totalmidaffected   totalhighlyaffected   ;; variables to report affected population

  aidperpeople   reliefeffectiveness   ;; relief distribition
  w1  w2  w3  w4   ;; patches for each wards
  humancost financialcost   TotalCost    ;; humanitarian and financial cost
  todolist  todonow donow  workingward  reliefitems   worknow   ;; variables to execute commands

  ah am al at  dr  ;; temporary variables
  peoplesw1 peoplesw2 peoplesw3 peoplesw4   ;; peoples in each wwards

  affectedward1 affecthw1 affectmw1 affectlw1      ;; variables that store assessment results for each ward
  affectedward2 affecthw2 affectmw2 affectlw2
  affectedward3 affecthw3 affectmw3 affectlw3
  affectedward4 affecthw4 affectmw4 affectlw4

  raffectedward1 raffecthw1 raffectmw1 raffectlw1  ;; actual affected people in each ward (for reporting)
  raffectedward2 raffecthw2 raffectmw2 raffectlw2
  raffectedward3 raffecthw3 raffectmw3 raffectlw3
  raffectedward4 raffecthw4 raffectmw4 raffectlw4
  raffected1 raffected2 raffected3 raffected
  reliefneedw1  reliefneedw2   reliefneedw3  reliefneedw4   reliefneedtotal  ;; estimated relief needs (from assessment)
  ]

breed [peoples people]
breed [works workt]


works-own[
  timetodo
  worktodo
  wardno
  reliefunit


]



patches-own [
  ward

]


peoples-own [
  energy
  copingcapacity
  vulnerability
  exposure
  aidreceived
  assessedcategory
]

to Setup
  set-default-shape peoples "person"
   clear-all
    setupward
  create-peoples  population
  [
    set color Green
    setxy random-xcor random-ycor
  ]
  reset-ticks

           ;; setup properties for affected people.
  ask peoples [
    set exposure random-poisson ExposureMean
    set copingcapacity random-poisson CopingCapacityMean
    set vulnerability random-poisson VulnerabilityMean
    if exposure < 1   [ set exposure 1]    ;; minimum value for expopsure, vulnerability and coping capacity is 1.
     if vulnerability < 1      [ set vulnerability 1]
    if copingcapacity < 1 [set copingcapacity 1]
    if exposure > 10    [ set exposure 10]    ;; maximum value for expopsure, vulnerability and coping capacity is 10.
     if vulnerability > 10       [ set vulnerability 10]
    if copingcapacity > 10  [set copingcapacity 10]



   set energy exposure / 3 * vulnerability / 3 * (10 - copingcapacity + 1) / 3  ;; according to the definition of risk on inform methodology. The the coping capacity is divided by 10 to make it lack of coping capacity.

changecolor
set reliefeffectiveness 1
  ]
end 

to goslow
go
wait 1
end 

to go
if ticks >= daystorun * 24
  [ stop ]

  changecolor
  calculatecost
  calculateaffect
  recover
  tick

executecommands
end 

to sendrelief
  let txt  "Relief Items Dispached on: "
  let txt1 (ticks - remainder ticks 24) / 24
  set txt word txt txt1
  set txt word txt " Days and "
  set txt1 remainder ticks 24
  set txt word txt txt1
  set txt word txt " Hours. Expected to reach in 6 hours"
  output-print txt   ;; Display a message on output window

 if Ward-1 = true [
  create-works 1 [
    set worktodo "Relief"
    set timetodo ticks + 3 + random 3
      set reliefunit reliefunits
     set wardno 1
    hide-turtle
  ]
  set totalcost totalcost + (reliefunits * reliefcost)
  set financialcost financialcost + (reliefunits * reliefcost)

  ]

 if Ward-2 = true [
  create-works 1 [
    set worktodo "Relief"
    set timetodo ticks + 3 + random 3
        set reliefunit reliefunits
          set wardno 2
    hide-turtle
  ]
  set totalcost totalcost + reliefunits * reliefcost
      set financialcost financialcost + (reliefunits * reliefcost)
  ]

   if Ward-3 = true [
  create-works 1 [
    set worktodo "Relief"
    set timetodo ticks + 3 + random 3
        set reliefunit reliefunits

      set wardno 3
    hide-turtle
  ]
  set totalcost totalcost + reliefunits * reliefcost
      set financialcost financialcost + (reliefunits * reliefcost)
  ]

   if Ward-4 = true [
  create-works 1 [
    set worktodo "Relief"
    set timetodo ticks + 3 + random 3
        set reliefunit reliefunits
         set wardno 4
    hide-turtle
  ]
  set totalcost totalcost + reliefunits * reliefcost
    set financialcost financialcost + (reliefunits * reliefcost)
  ]
end 

to IRA   ;; assessment
  let txt  "Team deployed for Rapid Assessment on: "
  let txt1 (ticks - remainder ticks 24) / 24
  set txt word txt txt1
  set txt word txt " Days and "
  set txt1 remainder ticks 24
  set txt word txt txt1
  set txt word txt " Hours. Expect to get report by 24 hours"
  output-print txt




 if Ward-1 = true [

   create-works 1 [
    set worktodo "CIRA"
    set timetodo ticks + 19 + random 5
      set wardno 1
    hide-turtle
  ]
    set totalcost totalcost + assessment
      set financialcost financialcost + assessment
]

 if Ward-2 = true [

    create-works 1 [
    set worktodo "CIRA"
    set timetodo ticks + 19 + random 5
      set wardno 2
    hide-turtle
  ]
  set totalcost totalcost + assessment
  set financialcost financialcost + assessment
  ]

   if Ward-3 = true [

      create-works 1 [
    set worktodo "CIRA"
    set timetodo ticks + 19 + random 5
      set wardno 3
    hide-turtle
    ]
  set totalcost totalcost + assessment
set financialcost financialcost + assessment
  ]

   if Ward-4 = true [

         create-works 1 [
    set worktodo "CIRA"
    set timetodo ticks + 19 + random 5
      set wardno 4
    hide-turtle
    ]
  set totalcost totalcost + assessment
  set financialcost financialcost + assessment
  ]
end 

to getupdate

  let txt  "Requested for updates on : "
  let txt1 (ticks - remainder ticks 24) / 24
  set txt word txt txt1
  set txt word txt " Days and "
  set txt1 remainder ticks 24
  set txt word txt txt1
  set txt word txt " Hours. Expected to get in 3 hours"
  output-print txt


  if Ward-1 = true [
  create-works 1 [
    set worktodo "Update"
    set timetodo ticks + 1 + random 2
      set wardno 1
    hide-turtle
  ]
    set totalcost totalcost + updates
  set financialcost financialcost + updates
  ]

 if Ward-2 = true [
  create-works 1 [
    set worktodo "Update"
    set timetodo ticks + 1 + random 2
      set wardno 2
    hide-turtle
  ]
  set totalcost totalcost + updates
    set financialcost financialcost + updates
  ]

   if Ward-3 = true [
  create-works 1 [
    set worktodo "Update"
    set timetodo ticks + 1 + random 2
      set wardno 3
      hide-turtle
  ]
  set totalcost totalcost + updates
    set financialcost financialcost + updates
  ]

   if Ward-4 = true [
  create-works 1 [
    set worktodo "Update"
    set timetodo ticks + 1 + random 2
      set wardno 4
      hide-turtle ]
  set totalcost totalcost + updates
    set financialcost financialcost + updates
    ]
end 

to recover
  ask peoples
  [
    set energy  energy + ((copingcapacity / (baserecoveryperiod * vulnerability) ) / 24 )  ;; people will recovery themselves.
  ]
  let peopleswithaid peoples with [aidreceived >= 1]

    ask peopleswithaid

    [set energy energy + ((copingcapacity * aidreceived ) / (24 * baserecoveryperiod ) * reliefeffectiveness)  ;; The affected people are expected to use the available relief for the base recovery period and they will recover according to their coping capacity and vulnerability. divided by 24 to change make the change in in hour.
      set aidreceived aidreceived - (aidreceived / baserecoveryperiod)  ;;
      ]

  ;; if they have relief units
end 

to radiomessage
let txt "ALERT: "


  ifelse event = "Earthquake" [
  Set txt word txt "An earthquake of Magnitude "
 let mag 7 + random 10 / 10
    set txt word txt mag
  set txt word txt " occured near "]

[

  Set txt word txt "A huge flood has affected part of "]
   set txt word txt targetdistrict
    set txt word txt " District today. Four wards of "
    set txt word txt municipality
    set txt word txt " are highly affected."

    output-print txt
end 

to changecolor    ;; change the colour of the agents based on their energy ; Red- high, yellow - medium, blue - low. Green: not affected
  ask peoples [
  set color Green
  if energy <= 9
  [set color Blue]
   if energy <= 6
  [set color Yellow]
    if energy <= 3
  [set color Red]
  ]

  set totalaffected count peoples with [energy <= 9 ]    ;; count total
  set totallowaffected count peoples with [(energy <= 9) and (energy > 6)]
  set totalmidaffected count peoples with [(energy <= 6) and (energy > 3)]
  set totalhighlyaffected count peoples with [energy <= 3]
end 

to calculateaffect

  calculateaffected [ 1 ]
      set raffectedward1 raffected
  set  raffecthw1 raffected1
  set raffectmw1 raffected2
  set raffectlw1 raffected3

  calculateaffected [ 2 ]
      set raffectedward2 raffected
  set  raffecthw2 raffected1
  set raffectmw2 raffected2
  set raffectlw2 raffected3

  calculateaffected [ 3 ]
      set raffectedward3 raffected
  set  raffecthw3 raffected1
  set raffectmw3 raffected2
  set raffectlw3 raffected3


  calculateaffected [ 4 ]
      set raffectedward4 raffected
  set  raffecthw4 raffected1
  set raffectmw4 raffected2
  set raffectlw4 raffected3
end 

to calculatecost
  let cost (totalhighlyaffected * humcost * 1.5 + totalmidaffected * humcost + totallowaffected * .5) / 24
  set humancost humancost + cost
  set totalcost totalcost + cost
end 

to calculateaffected [ wardn ]


 let w item 0 wardn

  let peoplesaffected peoples-on patches with [ward = w]

    ; peoples clafficied according to enrgy and coping capacity.


    if any? peoplesaffected [
  ask peoplesaffected
    [
        set raffected1 count peoplesaffected with [energy <= 3]
         set raffected2 count peoplesaffected with [energy > 3 and energy <= 6 ]
         set raffected3 count peoplesaffected with [energy > 6 and energy <= 9 ]
        set raffected (raffected1 + raffected2 + raffected3)
    ]    ]
end 

to setupward
  clear-patches
   ask patches with [pycor > 0.1 and pxcor < 0.1 ]
 [ set ward 1  ]
ask patches with [pycor > 0.1 and pxcor > 0.1]
 [set ward 2 ]
ask patches with [pycor < 0.1  and pxcor < 0.1]
 [set ward 3  ]
ask patches with [pycor < 0.1  and pxcor > 0.1 ]
 [set ward 4 ]

create-turtles 1  ;; draw a border line between the wards
 ask turtles  [
   setxy 0 16
  pen-down
    set heading 180
    fd 32
    pen-up
    setxy -16 0
    set heading 90
    pen-down
    fd 32
    die
  ]
                        ;; name the wards
   set w1 patches with [ward = 1 ]
      set w2 patches with [ward = 2 ]
     set w3 patches with [ward = 3 ]
   set w4 patches with [ward = 1 ]

  set peoplesw1 peoples-on w1
  set peoplesw2 peoples-on w2
    set peoplesw3 peoples-on w3
  set peoplesw4 peoples-on w4
  radiomessage   ;; send the message for initial event.
end 

to executecommands
                                ;; relief today
  set todonow works with [worktodo = "Relief" and timetodo = ticks and wardno = 1]
  if any? todonow
  [  distributerelief [ 1 ]]

  set todonow works with [worktodo = "Relief" and timetodo = ticks and wardno = 2]
  if any? todonow
  [ distributerelief [2]]

   set todonow works with [worktodo = "Relief" and timetodo = ticks and wardno = 3]
  if any? todonow
  [distributerelief [ 3 ]]

   set todonow works with [worktodo = "Relief" and timetodo = ticks and wardno = 4]
  if any? todonow
  [  distributerelief [4]]


  ;; collect Assessment  data

  set todonow works with [worktodo = "CIRA" and timetodo = ticks and wardno = 1]
  if any? todonow
  [  collectIRA [ 1 ]
  set affecthw1 ah
    set affectmw1 am
    set affectlw1 al
    set affectedward1 at
      set reliefneedw1 dr
  ]

  set todonow works with [worktodo = "CIRA" and timetodo = ticks and wardno = 2]
  if any? todonow
  [ collectIRA [2]
  set affecthw2 ah
    set affectmw2 am
    set affectlw2 al
    set affectedward2 at
      set reliefneedw2 dr
  ]

   set todonow works with [worktodo = "CIRA" and timetodo = ticks and wardno = 3]
  if any? todonow
  [collectIRA [ 3 ]
  set affecthw3 ah
    set affectmw3 am
    set affectlw3 al
    set affectedward3 at
      set reliefneedw3 dr
  ]

   set todonow works with [worktodo = "CIRA" and timetodo = ticks and wardno = 4]
  if any? todonow
  [  collectIRA [4]
  set affecthw4 ah
    set affectmw4 am
    set affectlw4 al
    set affectedward4 at
  set reliefneedw4 dr

  ]
  ;; collect udpates
set todonow works with [worktodo = "Update" and timetodo = ticks and wardno = 1]
  if any? todonow
  [  askupdate [ 1 ]]

  set todonow works with [worktodo = "Update" and timetodo = ticks and wardno = 2]
  if any? todonow
  [ askupdate [2]]

   set todonow works with [worktodo = "Update" and timetodo = ticks and wardno = 3]
  if any? todonow
  [askupdate [ 3 ]]


   set todonow works with [worktodo = "Update" and timetodo = ticks and wardno = 4]
  if any? todonow
  [ askupdate [4]]
end 

to askupdate [wardn]
  let w item 0 wardn
    ask todonow [

    let peoplesaffected peoples-on patches with [ward = w]
        if any? peoplesaffected [
  ask peoplesaffected

    [
        set ah count peoplesaffected with [energy <= 9]
    ]]



  let recoveredpeople peoplesaffected with [energy > 9]
  ask recoveredpeople [
    set assessedcategory 4
  ]

  let newpeople peoplesaffected with [energy <= 9 and assessedcategory = 4]  ;; check there are if any new peopole still affected (reserved for additional inject after initial event
  ask newpeople [
  if energy <= 3 [set assessedcategory 1]
  if (energy > 3 and energy <= 6) [set assessedcategory 2]
  if (energy > 6 ) [set assessedcategory 3]

  ]]


 let txt "Update: "
  let txt1 ah
  set txt word txt txt1
  set txt word txt " Peoples still remain affected in ward "
  set txt word txt w

  output-print txt
end 

to collectIRA [wardn]

 let w item 0 wardn
  ask todonow [
  let peoplesaffected peoples-on patches with [ward = w]

    ; peoples clafficied according to enrgy and coping capacity.


    if any? peoplesaffected [
  ask peoplesaffected
    [



        set ah count peoplesaffected with [energy <= 3]
         set am count peoplesaffected with [energy > 3 and energy <= 6 ]
         set al count peoplesaffected with [energy > 6 and energy <= 9 ]
        set at (ah + am + al)
        set dr (((baserecoveryperiod  / (copingcapacitymean * reliefeffectiveness)) * al * 1 ) + ((baserecoveryperiod  / (copingcapacitymean * reliefeffectiveness)) * am * 2 ) + (baserecoveryperiod / (copingcapacitymean * reliefeffectiveness)) * ah * 3 )


        if energy <= 3 [set assessedcategory 1]
        if (energy > 3 and energy <= 6) [set assessedcategory 2]
        if (energy > 6 and energy <= 9) [set assessedcategory 3]
        if (energy > 9) [set assessedcategory 4]




    ]



    ]

  ]
end 

to distributerelief  [ wardn ]
  let w item 0 wardn
;;      if wardn > 0 [
  ask todonow [
  let peoplereceiving peoples-on patches with [ward = w]



    if any? peoplereceiving [
   ;; check if assessment is done already
      let ifassessed count peoplereceiving with [assessedcategory > 0]
    ifelse ifassessed < 1 [

    let aidpercapita reliefunit / count peoplereceiving
  ask peoplereceiving
    [
      set aidreceived aidreceived + aidpercapita
    ]]

      [
        let hiap peoplereceiving with [assessedcategory = 1]
        let meap peoplereceiving with [assessedcategory = 2]
        let loap peoplereceiving with [assessedcategory = 3]
        let denominator (count hiap * 3 + count meap * 2 + count loap * 1)
        let aidhigh  reliefunit * 3 / denominator
         let aidmid  reliefunit * 2 / denominator
         let aidlow  reliefunit * 1 / denominator

        ask hiap [set aidreceived aidreceived + aidhigh]
        ask meap [set aidreceived aidreceived + aidmid]
          ask loap [set aidreceived aidreceived + aidlow]


    ]]



  ]
 ;; ]

;; priortized relief : High 50%, medium .33 low .17
end 

There is only one version of this model, created over 5 years ago by Surya Poudel.

Attached files

File Type Description Last updated
Disaster Response.png preview Preview for 'Disaster Response' over 5 years ago, by Surya Poudel Download

This model does not have any ancestors.

This model does not have any descendants.