Netlogo使用Countdown临时修改代理行为

时间:2015-08-13 12:50:49

标签: netlogo

感谢您阅读本文,感谢任何建议:)

启用时,我有一个开关(一个应急按钮),所有的代理值都被更改,并且启动了倒计时(全局变量)。当倒计时达到1时,所有代理值都会重新设置并且恐慌结束。

问题是恐慌永远不会结束!通过监视器,我可以看到我的倒计时不是10,9,8等(如预期的那样),但是10,-9181,-198187等(随机数,总是负数)。

我必须遗漏一些非常简单的东西!我的程序(从go开始):

to start-panic 

    ask generals
    [ if panic = true and countdown = 10
       [ set fear fear + 1 
         set probability probability + 1
         set canchat? true
         set conversation 10 
         set countdown countdown - 1 ] ]
end

to continue-panic

    ask generals
    [ if panic = true
     [ set countdown countdown - 1 ] ]
end

to stop-panic

    ask generals
    [ if panic = true and countdown = 1
     [ set panic false
       set fear fear - 1
       set probability probability - 1
       set canchat? false
       set conversation 5 
       set countdown 10 ] ]
end

2 个答案:

答案 0 :(得分:1)

谢谢Seth。你的回复让我想到了背景。

我发现我将继续恐慌的程序称为:

ask turtles [ continue-panic ] 

而正确的逻辑是

if panic [ continue-panic ]

这个倒计时现在工作正常,恐慌结束了(我和代理人)

答案 1 :(得分:0)

set countdown countdown - 1内有ask generals,所以每个将军都会减少倒计时。但你只希望它减少一次。

start-panic为例,我认为你的逻辑更像是:

to start-panic 
    if panic and countdown = 10 [
      ask generals
       [ set fear fear + 1 
         set probability probability + 1
         set canchat? true
         set conversation 10 ]
      set countdown countdown - 1 ]
end