用于设置变量的移动参数-模型行为更改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于设置变量的移动参数-模型行为更改相关的知识,希望对你有一定的参考价值。
这个绊倒我...
我有一个ABM,它可以在一个贴片上通过随机泊松产生新患者到达医院单位(喷口程序)。根据该区域和其他分配的变量,为每个患者分配一个要去的区域和一个在该单元花费的时间。当我使用嵌入在过程或报告程序中的分布来创建它时,每次都可以正常工作,但是当我将随机变量编码到设置中以使其更易于操作时,它会定期产生严重异常的低/高值(在以原始格式运行),有时即使模型仍在运行,也根本不会创建新的患者。唯一改变的是变量在set中的放置,而不是在代码正文中。
我不知道为什么它会随机地没有病人进入系统,这使我对它产生的任何其他东西都不信任。这只是Netlogo不喜欢的格式样式吗?还是我错过了什么?
感谢您提供解决此问题的任何建议/帮助
原始代码:
if ticks = 1000 [stop]
ask arrivals
[
assess
crowding-check
relocate
]
end
to assess
sprout-patients random-poisson 1.5
[set time_arrived ticks
set condition random-float 1.0
set NEWS2 random-float 7.0
set shape "person"
]
end
to-report AEC_treatment_time ;; gamma dist
let result random-gamma 3.478 0.525
if result < 2 [ report 2 ]
if result > 20 [ report 20]
report result
end
to-report AMU_treatment_time ; gamma dist
let result random-gamma 5.7716 0.3
if result < 4 [ report 4]
if result > 48 [ report 48]
report result
end
新代码:
ca
set new-patients random-poisson 1.5
set AEC-los random-gamma 3.478 0.525
set AMU-los random-gamma 5.7716 0.3
reset-ticks
end
to go
if ticks = 1000 [stop]
ask arrivals
[
sprout-patients new-patients
assess
crowding-check
relocate
]
end
to assess
ask patients-here
[set time_arrived ticks
set condition random-float 1.0
set NEWS2 random-float 7.0
set shape "person"
]
end
...
to-report AEC_treatment_time ;; gamma dist
let los-AEC AEC-los
if los-AEC < 2 [ report 2 ]
if los-AEC > 20 [ report 20]
report los-AEC
end
to-report AMU_treatment_time ; gamma dist ;; reports treatment time for patients in AMU
let los-AMU AMU-los
if los-AMU < 4 [ report 4]
if los-AMU > 48 [ report 48]
report los-AMU
end
ps尝试多次迭代,这似乎是引起问题的随机泊松变化
答案
没有完整的代码很难看到,因为看起来过程连接方式存在问题,但是您的新结构在ask patients-here
循环内有ask arrivals
(在评估过程的开始)(转到程序)。到来的是品种吗?
通常,嵌套ask turtles
类型的结构是一件坏事,因为每只海龟都会询问所有满足条件的海龟,这样您就可以得到微妙的错误。无论如何,这可能会让您回到以前的工作:
to go
if ticks = 1000 [stop]
ask arrivals
[ sprout-patients new-patients [assess]
crowding-check
relocate
]
end
to assess
set time_arrived ticks
set condition random-float 1.0
set NEWS2 random-float 7.0
set shape "person"
end
此结构使评估程序成为从乌龟的角度(或上下文)运行的过程,并在创建乌龟时立即运行它。
以上是关于用于设置变量的移动参数-模型行为更改的主要内容,如果未能解决你的问题,请参考以下文章