netlogo - 我编码生存概率的方式有什么问题?
问题描述
我正在尝试创建一个模型,其中海龟在景观中移动,每种类型的补丁意味着海龟的不同生存概率(代表资源更多的补丁=更高的生存机会,资源更少的补丁=更低的机会生存)。然而,我所有的乌龟都死得很快,而且似乎没有遵循生存概率的差异。我唯一确定的是,只有当它们处于生存概率 = 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
谁能弄清楚我做错了什么?
解决方案
您的代理需要询问他们占用的补丁。
就像是
ask turtles [
if ([probSupervivencia] of patch-here < random-float 1.00) [die]
]
推荐阅读
- c++ - Visual Studio 无法附加到 Centos 上的 C++ 进程?
- android - Volley JSON 请求仅返回前两个值
- android - 这个表达式是否可以通过 Retrofit 获得嵌套数组?
- activemq-artemis - ActiveMQ Artemis 集群故障转移问题
- java - JAVA IF 语句将如何评估 if || (OR) 和 && (AND) 放在同一个 if 语句中
- python - python资源中的软硬限制
- spring-boot - 从 Spring Boot 主类中读取 application.properties 值
- javascript - 在显示线要素的多个标签时在 OpenLayers6 中使用整理
- node.js - 如何编写给定 mongodb 查询的 mongoose 函数?
- vb.net - 如果文本框为空,则关闭没有消息框的 VB.Net 表单