【发布时间】:2017-12-07 04:05:05
【问题描述】:
我知道监视器每秒会更新几次,这在检查模型的输出时会很有帮助;但是,我的模型并非如此,它只是对其进行了权衡。
我正在尝试从监视器绘制数据。如果可能的话,我希望监视器每次只更新一次报告器。
我的模型目前可以正常运行,但每秒更新多次时陷入困境。我希望有人可以通过每次更新一次来帮助我最大程度地减少模型的计算量。
当前代码示例:
globals [initial-patch0-health patch0-health intial-patch2-health patch2-health]
patches-own [ptype penergy max-penergy alive?]
to setup
clear-all
set patch-health 0
ask-patches [
setup-patches
]
reset-ticks
end
to setup-patches
let temp random 100
if temp <= 50 [
set ptype 2
set max-penergy random-in-range 0 5
set alive? true
]
if temp > 50 and temp <= 75 [
set ptype 0
set max-penergy random 10
set alive? true
]
set penergy max-penergy
set patch2-health (ptype2-health)
set patch0-health (ptype0-health)
end
to go
ask-patches
update-patch-health
tick
end
to patch-health
if ptype = 2[
set patch2-health (ptype2-health)
]
if ptype = 0 [
set patch0-health (ptype0-health)
]
end
to-report ptype2-health
report [penergy] of patches with [ptype = 2]
end
to-report ptype0-health
report [penergy] of patches with [ptype = 0]
end
我的监视器和绘图读取(patch2-health 相同):
sum (initial-patch0-health)
和
plot sum (patch0-health)
我在这种情况下使用 sum,因为记者提供了一份清单。
对于上下文,我正在做一个简单的“羊狼捕食”样式模型,但我想监控初始草健康与草健康随着时间的推移,具有多种草类型 (ptype)。我有海龟,但这里没有包含该代码。如果您需要我提供更多代码,请告诉我。
此代码以牺牲速度为代价提供了我想要的输出。我认为每个刻度只报告一次会节省一些计算时间。有什么清洁和加速的建议吗?
【问题讨论】:
-
您是否尝试过移除/禁用显示器以查看它是否真的是您运行缓慢的原因?如果不是,您可以尝试分析器扩展来跟踪哪些部分需要很长时间来计算。如果监视器速度变慢,您是否可以改为使用输出区域,并且每次更新只更新一次?
标签: netlogo