netlogostoring-data

keeping variable results after turtle dies netlogo


Looking for a way to store a turtle length of stay in the model after they have left the model. My model runs for several months and a few thousand turtles enter, undergo process then leave the area. It's complicate model (it's a hybrid DES and ABM) so I've tried to reproduce the simple bit below.

Turtles will be created at every tick and given a random length of stay but will only be able to begin process when they move to the right area (area-name) and when their time is up they leave the area. Their time-in-system reflects the wait for the area and the length-of-stay which I want to save once they're complete. If I leave them in the model it starts to break down after a couple of months and I suspect this is because the model has too many turtles still in the system for calculation and is inefficient.

go

create turtles 2
 [
  set time-in-system 0
  set length-of-stay ceiling ((random-normal 48 4) + ticks)]
  set shape "person"
  if any? area-name with [not any? turtles-here]
   [move-to one-of area-name]
 ]

undergo-process

end


to-undergo-process

ask turtles with [shape = "person"]
[
set time-in-system time-in-system + 1
]

ask turtles-on area-name
[if ticks = length-of-stay
 [set shape "dot"
  move-to exit-door]

end

I can then plot and see in realtime to make sure it is working

 histogram time-in-system of turtles with [shape = "dot"]

but can't seem to figure out how to store them as unique values for plotting after the model has run and I have a dataset of outcomes without keeping them alive in the model. The real-time plot isn't necessary as long as I can store the unique values after they have left

If I ask them to die then I lose the unique values in the histogram. I don't want a tally of all values but each turtle's unique value at the end of the process after they left - at the moment the only solution I have to storing them is as an agent-set that stays alive in the exit-door patch but this takes up a lot of calculation power as the model progresses for months...

There may be a really simple command for this but I've been going round in circles through the programming manual trying to find it. Any tips appreciated


Solution

  • You should create a list storing the values of turtles that left.

    Isolating only the code that is relevant for this purpose, it would be something like:

    globals [
     times
    ]
    
    to setup
     set times (list)
    end
    
    to leave-simulation   ; This being executed by turtles.
     set times lput (time-in-system times)
     die
    end