Netlogo我怎么能每1000个滴答发生一次

时间:2013-12-18 11:18:19

标签: netlogo

我有一种逃税模式,应该每周缴纳税款,例如:每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中,我会设置类似的东西:

FOR I IN 1..3000 LOOP   向交易者询问ticks = I * 1000

Netlogo中是否有类似的功能?关于如何使每1000个蜱发生一些事情的任何其他提示?

3 个答案:

答案 0 :(得分:4)

您自己的解决方案可行,但不是最佳解决方案。

由于ticks是全局NetLogo报告者,而不是traders变量,因此ticks mod 1000 = 0返回的值不会因每个交易者而异。对于所有这些,它将是true或者对于所有这些都是false,所以没有使用with子句(将为每个交易者重新评估它) )。

这样做会更快(更清晰):

if ticks mod 1000 = 0 [
  ask traders [
    do-something
  ]
]

答案 1 :(得分:2)

最后把头包裹在一个简单的溶液中:

 ask traders with [ticks mod 1000 = 0]

答案 2 :(得分:1)

这个问题的一个非常简单的解决方案,甚至可以在以后跟踪,就像这样的代码

turtles-own [tradetime] ;;用于计算时间或可以更改任何变量

去;;或者去哪里 设置交易时间交易时间+ 1 询问交易员[if(tradetime = 1000)[do-something] 端

或者如果您只想为交易者提供该值,那么您可以这样做

海龟自己[交易时间]

去吧 询问交易员[设置交易时间交易时间+ 1] 询问交易员[if(tradetime = 1000)[do-something] 结束 希望这有帮助