2016-02-12 41 views
1

我试图在netlogo中建模一个电池存储。我需要将剩余电量从一个滴答滴答计算到下一个滴答滴答作为初始值,直到模拟结束。 我尝试使用亚瑟建议的方法(NETLOGO: Using variable from previous tick),但没有奏效。有没有办法在netlogo(版本5.3)中做到这一点? 谢谢!更新变量为下一个刻度

我的代码如下所示:

globals[ remaining-electricity-last-tick] 
to go 
ifelse tick = 1 [ set remaining-electricity 0 ;; set initial storage zero ] 
       [set remaining-electricity remaining-electricity-last-tick ] 
... 
... 
... 
set remaining-electricity-last-tick remaining-electricity 
end 
+0

这是正确的做法。你是什​​么意思“它没有工作”?如果问题是你有多个“电池”,只需使用添加属性而不是全局变量。 另外,请参阅http://stackoverflow.com/help/how-to-ask – Alan

+0

感谢您的回复Alan.My代码如下所示:'globals [remaining-electricity-last-tick] 要去 ifelse tick = 1 [ 设置剩余电量0 ;;设定的初始存储零 ] [ 组剩余电量剩余电力-最后蜱 ] ... ... ... 组剩余电力-最后蜱剩余电力 端'如果我运行该模型,剩余电量仍为零。是否使用ifelse? –

+0

代码很难在评论中阅读 - 请编辑您的原始问题以包含代码。 –

回答

3

你永远也从零。现在我们来重写一下你的内容:

to setup 
    ;note: remaining-electricity-last-tick = 0 (default value) 
    set remaining-electricity 0 ;; set initial storage zero 
end 

to go 
    ;therefore you set remaining-electricity to 0 
    set remaining-electricity remaining-electricity-last-tick 
    ;therefore you set remaining-electricity-last-tick to 0 
    set remaining-electricity-last-tick remaining-electricity 
end 
+0

感谢艾伦,当“剩余电量”和“剩余电量最后滴答”被定义为全局变量时,它运行良好;然而,当我将'remaining-ele'定义为像''品种[batterys battery] batterys-own [remaining-ele] globals [remaining-ele-last-tick]这样的代理变量来设置ca问问batterys [set remaining-ele 0 ]结束,让ele-local 0询问batterys [set remaining-ele ele-last-tick set ele-local remaining-ele] .....(某程序)..........设定剩余-ele-last-tick ele-local' –

+0

其余的ele只是没有更新,可能会导致什么?@alan –

+0

你正在纠结你的程序逻辑。这是一个建议。除非绝对必要,否则不要使用全局变量。尽可能使用记者程序而不是命令程序。如果在进行这些更改后问题仍然存在,请发布新问题。 – Alan