2016-02-12 82 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