2017-02-12 49 views
0

我有兩個代理商,客戶和製造商。這些海龜中的每一個都有許多變量,其中一些變量被全局定義爲能夠被分配給另一種類型的代理。我已經定義了這一點:如果在今年年底,產品1的採購量高於產品2和3,那麼該產品將分配到另外3家商店。問題是循環無法在邏輯上工作。當記者不真實時,命令中定義的內容正在發生!如果循環在邏輯上不起作用!在netlogo

ask manufacturers [ 
if (product1purchases > product2purchases) and (product1purchases > product3purchases) [ 



set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
] 

爲什麼當for for if中定義的條件不成立時,執行命令? 謝謝

回答

0

他們不是。您可以通過添加打印語句,這樣證明自己:

ask manufacturers [ 
    let _cond ((product1purchases > product2purchases) and (product1purchases > product3purchases)) 
    print (word "_cond is " _cond) 
    if (_cond) [ 
    print (word "within branch, _cond is " _cond) 
    set storesavailability storesavailability + 3 
    set Brandd 1 
    set color red 
    ] 
] 
+0

感謝這個偉大的方式來檢查的條件,但很奇怪的是,當我運行該程序一次,然後點擊紅色特工,我發現其中一些產品1的購買量少於產品2的購買量!或產品1購買量少於產品2購買量。印刷品上說,例如對於一些代理商(藍色代理商)來說,條件是成立的,但對於那些代理商,當我點擊進行檢查時,我注意到這種不一致性! – Naha

+0

@Naha條件將適用於每個製造商在它括號內運行代碼時。您可以添加更多的打印語句,以瞭解您的期望錯誤的原因。請確信NetLogo正在按照您所告訴的內容進行操作,並嘗試瞭解您在何處告訴其執行與您預期不同的事情。 – Alan

+0

非常感謝Alan。通過做你說的話,我可以確保如果工作正常。我無法正確讀取這些值,因爲檢查代理的窗口太小了。我通過您建議的打印代碼試了幾次,最後發現我犯了一個錯誤!非常感謝 :) – Naha