我有一个逃税模型,每一轮都要交税,例如每1000个刻度。作为占位符,我有以下代码
ask traders with [ticks = 1000 or ticks = 2000 or ticks = 3000];; Can this be set using a seed?
[reset-parameters
pay-taxes
revise-behavior
reset-turnover]在SQL中,我会设置这样做:
对于i IN 1..3000循环,请使用ticks = I*1000询问交易员。
Netlogo中有没有类似的功能?关于如何让某件事每1000个滴答发生一次,还有其他的提示吗?
发布于 2013-12-19 05:09:08
您自己的解决方案可以工作,但不是最优的。
由于ticks是全局NetLogo报告器,而不是traders变量,因此ticks mod 1000 = 0返回的值不会因每个交易者而异。它要么是所有交易者的true,要么是所有交易者的false,所以在with子句中放入没有任何用处(将为每个交易者重新计算它)。
这样做会更快(也更清晰):
if ticks mod 1000 = 0 [
ask traders [
do-something
]
]发布于 2013-12-18 19:28:45
最后我想出了一个简单的解决方案:
ask traders with [ticks mod 1000 = 0]发布于 2016-02-26 01:10:45
这个问题的一个非常简单的解决方案,甚至可以在以后跟踪,就是这样的代码
海龟-自己的交易时间;;用于计算时间或可以更改任何变量
to go;;或者在哪里设置交易时间tradetime +1询问交易员[if (tradetime =1000)做某事结束
或者,如果您只想为交易员提供该值,那么您可以这样做
乌龟-自己的交易时间
去询问交易员设置交易时间tradetime +1询问交易员[if (tradetime =1000)做点什么结束希望这会有所帮助
https://stackoverflow.com/questions/20656679
复制相似问题