【发布时间】:2016-02-22 16:02:16
【问题描述】:
我创建的模型非常慢。我是 Netlogo 的初学者,不确定是我的代码效率低下还是我的系统配置有问题。
我有一个 35 x 35 的网格,我的大部分操作都是基于补丁的,即每个补丁必须找到最近和最远的海龟以及它们的距离,并在此基础上执行额外的操作。此外,在基于 if-else 逻辑的每个滴答声中,不满足条件的补丁使用 scale-color 函数以渐变方式变为白色,而满足条件的补丁必须采用最近的海龟的颜色。
我可以发布代码但不想发送垃圾邮件,请告知。谢谢。
以下代码似乎有问题。
to update-support
ask patches [
set closest-party min-one-of parties [distance myself]
set closest-party-dist [distance myself] of closest-party
set farthest-party max-one-of parties [distance myself]
set farthest-party-dist [distance myself] of farthest-party
set f 0
set h 0
set f ( -1 / ( [my-old-size] of closest-party / sum[my-old-size] of parties )) * (closest-party-dist ^ 2)
set h ( [my-old-size] of farthest-party / sum[my-old-size] of parties ) * (farthest-party-dist ^ 2)
set b-c (f + h)
ifelse (b-c <= threshold)
[ set votes-with-benefit 0 set pcolor scale-color white citizen-share 0 max-citizen-share ]
[ set votes-with-benefit citizens set pcolor scale-color ([color] of closest-party) citizen-share 0 max-citizen-share]
]
ask parties [ set my-size sum [votes-with-benefit] of patches with [closest-party = myself]
;set my-benefit mean[b] of patches with [closest-party = myself]
set my-benefit-chen mean[b-c] of patches with [closest-party = myself]
]
set largest-party max-one-of parties [my-size]
end
参与方的数量是动态的 - 可以在 2 到 10 之间。更新支持模块在 set & go 中都被调用。以下是该代码:
to setup
clear-all
setup-citizens
setup-parties
update-support
setup-plot
reset-ticks
end
to go
ask parties [ adapt set my-old-size my-size ]
update-support
plot-voter-support
plot-voter-turnout
tick
end
问候 尤瓦拉杰
【问题讨论】:
-
最可能的问题是您在另一个
ask中有一个ask ...,但继续发布代码 -
我已经包含了我认为导致问题的代码部分,当我在没有与“b-c”计算相关的脚本的情况下运行模型时,模型运行良好,没有任何延迟并且是快。
-
有多少个聚会?
-
我们能否也请查看调用此过程的代码(例如
go代码) -
@JenB - 您好 JenB,感谢您在下面的评论。我将把该更改包含在模型中。但是您是否认为这会导致模型运行缓慢,因为我在模型的先前版本中有相同的部分,它不那么复杂并且运行良好。只有在我包含“f”、“h”和“b-c”组件之后,模型才变得非常沉重和缓慢。感谢你的帮助。谢谢