nigus21
nigus21

Reputation: 339

Accumulating per-step mortality model procedure in Netlogo

Kindly advise as to what I might be doing wrong in the following netlogo procedure for per-step mortality (I am implementing the "Pass-Away" procedure as a step in a "GO" procedure):

to Pass-Away
   ask turtles [
     let chances 1 - exp( -1 * mortality * ticks )
     let dead-count 0
     if chances >= 1 [die]
      set dead-count dead-count + 1
      ]
  end

Is the above code correct? Even if it is correct, is there a modified or better alternative means to achieve a constant (cummulative) per-time-step turtle mortality as they move through the world? Finally, how do I get the variable "dead-count" to report to a monitor on the netlogo interface?

Upvotes: 0

Views: 56

Answers (1)

Alan
Alan

Reputation: 9620

This will mostly work, except that your dead-count will always be 1. But it will probably not work as you intend. You should embark on an exploration of what you have written. The first thing to do when you get confused is to break things into smaller pieces. The second thing is to add some helpful visuals. In this case, you will learn a lot by plotting your representation of chances. I'm going to have to guess that your mortality attribute is a random float, since you did not say so. The following is a partial fix of your code, which provides enough clues to continue. You will need to add a plot in the interface tab -- see https://subversion.american.edu/aisaac/notes/netlogo-basics.xhtml#core-concepts-plotting -- and you can add a monitor in the same way if you find monitoring with print too clunky.

globals [dead-count]
turtles-own [mortality]

to setup
  ca
  set dead-count 0
  crt 100 [set mortality random-float 1]
  reset-ticks
end

to go
  ask turtles [pass-away]
  print (word "dead count = " dead-count)  ;easiest monitor
  clear-plot  ;you'll need to have added a plot
  foreach sort [chances] of turtles [
    [?] -> plot ?
  ]  ;keep an eye on the largest value in this plot ... get it?
  tick
end
to-report chances ;turtle proc
  report 1 - exp( -1 * mortality * ticks )
end

to pass-Away ;turtle proc
  if chances >= 1 [
    set dead-count dead-count + 1 ;*inside* the conditional! must come first!
    print (word "chances: " chances)
    die
  ]
end

Upvotes: 1

Related Questions