2017-06-23 52 views
0

我有200只代表生產者的海龜。每隻烏龜都有2個變量(2個產品的銷售量),並將它們進行比較,讓產品知道哪種產品最受歡迎,因此烏龜的顏色會變成代表該產品的顏色。 我所限定的本回路:單獨或與單獨龜一起工作的海龜中的一隻或一隻不能正常工作

while [counter < 201][ 
     ask n-of 1 producers [ 
     if (product1sales > product2sales) 
     [ 
     set color green 
    ] 
if (product2sales > product1sales) 
     [ 
     set color red 
    ] 
; 
    set counter counter + 1] 

    ] 

我每次正被稱爲假定,一個龜被選擇,但這一特定的龜將不會被再次選擇。我還假設通過運行代碼,所有的龜必須是綠色或紅色,但有些既不是綠色也不是紅色,因爲n-of沒有按我的設想工作。其中一個沒有做我想要的。有任何想法嗎?

感謝

+0

'一of'和'正of'選擇1和n分別隨機劑,但對未來的選擇沒有任何影響,只是數量代理人被問到。在NetLogo中,你永遠不需要循環代理,因爲這就是'ask'的功能。 'ask []'原語不是同時發生的,它通過被詢問的代理進行迭代,並且每個(隨機順序)執行[]中的任何操作。 – JenB

+0

謝謝。我測試了這些代碼,以瞭解n-of可以更好地決定如何處理訪問csv文件。 200個生產者信息存儲在一個我導入的csv中,並將它們放入一個矩陣中,每行包含與生產者相關的內容。我想要問的是,對於每個生產者來說,我們都需要做一些marix的選擇。兩個第一列的總和存儲在一個變量中,其他三列也在另一個變量中求和。然後,完成比較。你認爲我最好把它當成一個新問題嗎? – user710

+0

如果你不能使它工作,肯定會問一個新的問題。但看看模型庫,代碼部分,有一個導入csv文件並將值分配給代理屬性的示例 – JenB

回答

0

如果你只是ask producers它會要求所有的生產商以隨機的順序,但不repeating-如果你只是想所有這些,使兩個選擇,你甚至不會需要之間的選擇櫃檯。

如果product1salesproduct2sales總是較高,則還可以使用ifelse進行微調。看看下面的例子會給你你需要的東西:

breed [ producers producer ] 

producers-own [ product1sales product2sales ] 

to setup 
    ca 
    reset-ticks 
    create-producers 200 [ 
    setxy random 30 - 15 random 30 - 15 
    set product1sales random-float 11 
    set product2sales random-float 11 
    set color white 
    ] 

end 

to choose 

    ask producers [ 
    ifelse product1sales > product2sales [ 
     set color green 
    ] 
    [ 
     set color red 
    ] 
    ]  

end