Skip to content

Korrektes Insect Emerging (> 0 -> Wahrscheinlichkeit) sowie Vereinfachung Code Insect Emergence

Ich habe folgende Switches eingebaut:

spawn-on-all-river-patches?

  • Wenn dieser aktiviert wird, werden auf allen river patches Insekten gespawnt, sonst - default Einstellung - nur auf den river patches mit landwirtschaftlicher Nutzung (Land Use Category = 2)

spawn-caddisflies?/mayflies?/midges?

  • um anzuwählen, welche Insekten (nur einzelne oder alle gespawnt werden sollen (einzeln betrachtet ist meiner Meinung nach besser anschaulich)

Das ganze hab ich mit if... eingebaut

Frage 1: Lässt sich der Code noch vereinfachen? Ich habe schon mit set target-patches die Sache mit spawn-on-all-river-patches? reduzieren können. Ich würde gerne mit meinen drei breeds weiterarbeiten.

Frage 2: Wir hatten am Dienstag das Problem erkannt, dass, wenn die Cohort-Size < 0 ist, gar keine Insekten-Kohorten gespawnt werden. Der Vorschlag war, dass ganze dann mit Wahrscheinlichkeiten umzusetzen, also wenn z.B. 0.2 -> 1 in 5 wird eine Kohorte gespawnt. Ich habe das nun mit dem reporter to-report cohorts-to-sprout umgesetzt. Ich würde auch sagen, dass ganze funktioniert im ersten Augenschein, bin mir aber nicht 100% sicher ob das so der schlauste weg ist. Außerdem hab ich das Gefühl, dass das immer auf einen Rutsch ausgeführt wird, statt das jeden Tag im Monat dann was kommt. Meine global variable, die ich für den Plot benutze (z.B. daily-caddisfly-emerged) habe ich unter target-patches bei dem jeweiligen sprout primitive der Insekten eingefügt, z.B. set daily-caddisfly-emerged (n-caddisfly-to-sprout * count(target-patches) * cohort-size-cad_may) - ist es richtig, dass jetzt die tatsächlichen Kohorten hierbei einfließen (auch mit der Wahrscheinlichkeit) und auch die jeweils richtige Patch Anzahl für target-patches basierend ob auf allen river patches oder nur auf den landwirtschaftlich beeinflussten river patches gespawnt wird?

Der Plot sieht jetzt nämlich so aus: image - Warum fluktuiert es immer gleich hoch und runter? Wenn ich statt den durch den Wahrscheinlichkeitsreporter veränderten Spawnraten nur die Kohorten (z.B. n-cohorts-caddisfly) plotte, sieht es so aus: image - was schon eher an das Muster rankommt, was durch set daily-emergence-caddisfly [0 0.01 0.03 0.76 1.66 2.1 2.44 1.51 0.63 0.24 0.11 0] gegeben ist...

Oder (und das könnt es eher sein?) ist die Spawning Logik mit dem reporter schon richtig, aber für den Plot sollte ich eher n-cohorts-caddisfly verwenden, da die Wahrscheinlichkeiten für jeden Patch berechnet werden, wodurch diese komischen Muster entstehen.

Frage 4: Es wird jetzt an jedem Tag im Monat die gleiche Menge gespawnt. Sollte ich hier wenigstens etwas random Varianz reinbringen?

Note: Cohort-Size für Caddisflies und Mayflies bei 10; für Midges bei 100 (sonst läuft Model bei denen langsamer)

;>>>> INSECT EMERGENCE <<<<

to set-insect-emergence
  ;Values based on Raitif et al. (2018), conversion calculations (from dry mass mg/m² per day into individual insects/m² per day) performed with parameters from Sabo et al. (2002)
  ;Unit: number of individuals per m² per day, data for each month of the year
  set daily-emergence-mayfly     [0 0 0.11 1.63 3.36 4.45 1.03 0.65 0.33 0.05 0 0]
  set daily-emergence-caddisfly  [0 0.01 0.03 0.76 1.66 2.1 2.44 1.51 0.63 0.24 0.11 0]
  set daily-emergence-midge      [0.15 2.06 4.27 6.19 8.25 9.58 8.55 7.22 6.19 4.57 2.65 0.25]
end

;>>>WICHTIG<<<
;beim Spawnen muss gesetzt werden:
;set has-dispersed? false ;WHEN ASSUMED THEY ONLY FLY TO A PATCH ONCE! DELETE IF MAXIMUM-AGE IS PURSUED
;set cohort-size X ;das muss gesetzt werden -> genaue Zahl fehlt noch, Test mit Value 1000
;set pesticide-load X;das muss gesetzt werden -> Mechanismus über river-patches fehlt noch, Test mit Value 10

to advance-time ;used for insect emergence
  let total-days ticks ;1 tick = 1 day
  let day-counter total-days
  let m 0

  while [day-counter >= item m month-days] [
    set day-counter day-counter - item m month-days
    set m m + 1
  ]

  set month m ;month 0–11
  set day-in-month day-counter + 1 ;day number within the current month
end

;versuchen, in einem code hinzubekommen: alle breeds als turtles ansprechen oder statt drei breeds eine breed; ask turtles oder ask agentset [caddisflies mayflies midges]

to-report cohorts-to-sprout [fractional-cohorts] ;reports correct insect value to sprout
  let n-int floor fractional-cohorts
  let n-frac fractional-cohorts - n-int
  if random-float 1 < n-frac [
    set n-int n-int + 1
  ]
  report n-int
end

to emerge-insects
  advance-time
  let spawn-area 10  ; m² in each 100 m² patch, 10 m² are considered for spawning
  let cohort-size-cad_may 10  ; each turtle represents 10 insects
  let cohort-size-midges 100

  ;Caddisflies
  let base-caddisfly-emergence item month daily-emergence-caddisfly
  let n-caddisfly (spawn-area * base-caddisfly-emergence)
  let n-cohorts-caddisfly (n-caddisfly / cohort-size-cad_may)
  let n-caddisfly-to-sprout cohorts-to-sprout n-cohorts-caddisfly

  ;Mayflies
  let base-mayfly-emergence item month daily-emergence-mayfly
  let n-mayflies (spawn-area * base-mayfly-emergence)
  let n-cohorts-mayflies (n-mayflies / cohort-size-cad_may)
  let n-mayfly-to-sprout cohorts-to-sprout n-cohorts-mayflies

  ;Midges
  let base-midge-emergence item month daily-emergence-midge
  let n-midges (spawn-area * base-midge-emergence)
  let n-cohorts-midges (n-midges / cohort-size-midges)
  let n-midges-to-sprout cohorts-to-sprout n-cohorts-midges
  
  
  

  let target-patches nobody
  ifelse spawn-on-all-river-patches? [
    set target-patches patches with [is-river?]
  ] [
    set target-patches patches with [is-river? and land-use-category = 2]
  ]

  ask target-patches [
    if spawn-caddisflies? and n-caddisfly-to-sprout > 0 [
      sprout-caddisflies n-caddisfly-to-sprout [
        set shape "caddisfly_adult"
        set size 10
        set just-spawned? true
        set has-dispersed? false
        set cohort-size cohort-size-cad_may
        set daily-caddisfly-emerged (n-caddisfly-to-sprout * count(target-patches) * cohort-size-cad_may)
    ]

    if spawn-mayflies? and n-mayfly-to-sprout > 0 [
      sprout-mayflies n-mayfly-to-sprout [
        set shape "mayfly_adult"
        set size 10
        set just-spawned? true
        set has-dispersed? false
        set cohort-size cohort-size-cad_may
        set daily-mayflies-emerged (n-mayfly-to-sprout * count(target-patches) * cohort-size-cad_may)
      ]
    ]

    if spawn-midges? and n-midges-to-sprout > 0 [
      sprout-midges n-midges-to-sprout [
        set shape "midge_adult"
        set size 10
        set just-spawned? true
        set has-dispersed? false
        set cohort-size cohort-size-midges
        set daily-midges-emerged (n-midges-to-sprout * count(target-patches) * cohort-size-midges)
      ]
    ]
  ]
end
Edited by Justin Büchel