首页 > 解决方案 > 我编码生存概率的方式有什么问题?

问题描述

我正在尝试创建一个模型,其中海龟在景观中移动,每种类型的补丁意味着海龟的不同生存概率(代表资源更多的补丁=更高的生存机会,资源更少的补丁=更低的机会生存)。然而,我所有的乌龟都死得很快,而且似乎没有遵循生存概率的差异。我唯一确定的是,只有当它们处于生存概率 = 1 的补丁中时,它们才能生存。如果不是(即使概率是 0.96),它们也会死亡。每种类型的补丁所代表的生存概率由滑块确定。

extensions [
  gis
  palette
]

patches-own [
  TipoRaster
  tipoDeUso 
  **probSupervivencia** 
]

breed [bichos bicho]

to go
  if not any? turtles [stop]
  if ticks = 120 [stop] ;; representa un ciclo de vida de las hembras adultas (donde cada tick = 1 dia). ***180
  ask turtles [
    **move
    if random-float 1.00 > probSupervivencia [die]**
  ]

tick
end

to initHabitat

  if Habitat = "bichos" [
    ask patches with [ tipoDeUso = "Urbano" ][
    set probSupervivencia probabilidad-supervivencia-urbano
  ]
    ask patches with [ tipoDeUso = "Nada" ][
    set probSupervivencia probabilidad-supervivencia-nada
  ]
    ask patches with [ tipoDeUso = "Bosque" ][
    set probSupervivencia probabilidad-supervivencia-bosque
  ]
    ask patches with [ tipoDeUso = "CuerposDeAgua" ][
    set probSupervivencia probabilidad-supervivencia-agua
  ]
    ask patches with [ tipoDeUso = "Pastizal" ][
    set probSupervivencia probabilidad-supervivencia-pastizal
  ]
    if calidad-matriz = "actual" [
    ask patches with [ tipoDeUso = "AgriculturaTemporal" ][
      ifelse random-float 1.00 < 0.32 [ set probSupervivencia probabilidad-supervivencia-agricultura-calidad-baja ][ set probSupervivencia probabilidad-supervivencia-agricultura-calidad-alta ]
    ]
    ask patches with [ tipoDeUso = "AgriculturaRiego" ][
      ifelse random-float 1.00 < 0.63 [ set probSupervivencia probabilidad-supervivencia-agricultura-calidad-baja ][ set probSupervivencia probabilidad-supervivencia-agricultura-calidad-alta ]
    ]
  ]
    if calidad-matriz = "alta" [
    ask patches with [ tipoDeUso = "AgriculturaTemporal" or tipoDeUso = "AgriculturaRiego" ][
      set probSupervivencia probabilidad-supervivencia-agricultura-calidad-alta
    ]
  ]
    if calidad-matriz = "baja" [
    ask patches with [ tipoDeUso = "AgriculturaTemporal" or tipoDeUso = "AgriculturaRiego" ][
      set probSupervivencia probabilidad-supervivencia-agricultura-calidad-baja
    ]
  ]
    if calidad-matriz = "contrastante" [
    ask patches with [ tipoDeUso = "AgriculturaTemporal"][
      set probSupervivencia probabilidad-supervivencia-agricultura-calidad-alta
    ]
    ask patches with [ tipoDeUso = "AgriculturaRiego" ][
      set probSupervivencia probabilidad-supervivencia-agricultura-calidad-baja
    ]
  ]
  ]
end

**to move**
     if random 100 < 10 [move-to one-of patches in-radius (tasa-movimiento / longitud-step)]
end

谁能弄清楚我做错了什么?

标签: netlogo

解决方案


您的代理需要询问他们占用的补丁。

就像是

ask turtles [
  if ([probSupervivencia] of patch-here < random-float 1.00) [die]
]

推荐阅读