2017-01-29 58 views
0

我閱讀了類似於我的其他問題,但我仍無法弄清楚如何處理我的模型。 讓我解釋一下。我有兩個品種。將一個品種的變量設置爲Netlogo中的另一品種

breed [distributers distributer] 
breed [suppliers supplier] 
distributers-own [dproductASales] 
suppliers-own [sproductASales] 

我需要將分銷商的變量分配給供應商,但它有一個錯誤。

to sales-decision 
set sproductASales dproductASales 

我該怎麼做? 謝謝

回答

1

你想要的上下文是sales-decision?既然你說set sProductASales你選擇了supplier上下文。好的,所以你會要求供應商把這個變量設置爲......什麼?您不能說dproductASales,因爲它既不是全局變量也不是供應商屬性。如果你想參考一個經銷商的dproductASales,那麼你必須我們of並指定他們中的哪一個(即使只有一個)。例如:

breed [distributers distributer] 
breed [suppliers supplier] 
distributers-own [dproductASales] 
suppliers-own [sproductASales] 

to sales-decision ;supplier procedure 
    set sproductASales [dproductASales] of one-of distributers 
end 

to test 
    ca 
    create-distributers 2 [ 
    set dproductASales one-of [2 4] 
    ] 
    create-suppliers 10 [ 
    sales-decision 
    ] 
end 
+0

謝謝。實際上,所有分銷商的「dproductasales」都是一樣的。他們每年都有一個價值來分析他們的銷售情況,並且他們想要告知供應商。供應商需要知道這個數字並在一些計算中使用它。它初始值爲600萬。每年都會更新。你的意思是我應該把它定義爲全球?但它只是爲分銷商 – Naha

+1

你想要一個類變量,但NetLogo沒有這個概念。所以你必須決定你想如何處理。 NetLogo編程中最常見的做法是使用全局變量。如果您(可以理解)不喜歡使用全局變量,我們可以討論替代方案。但是在這個階段,我會說是,用一個全局變量來代替。 – Alan

0

另一種選擇,如果你不想使用全局變量(這似乎是我的路要走,如果該值不通過分銷商而異),將有一個補丁資

ask patches with [count distributors-here > 0] 
    [ 
    ask one-of distributors-here 
     [set PdAs dproductASales] 
    ] 
    ask suppliers 
    [ 
    set sproductASales PdAs 
    ] 

代理訪問補丁變量,因此你的供應商可以直接查詢它,就好像它是一個全局變量,但你如果你去這有使得它在空間上明確的選擇:像「掌上電腦」和變量(假如將來你希望能夠擁有不同的分銷商產品銷售價值並讓供應商獲得其當地價值)。

+0

謝謝。讓我先問一個關於你的陳述的問題,「如果價值不隨分銷商而變化,我認爲這種方式是可行的」。我定義了dproductASales全局,然後在一個過程中他們乘以一個數字並得到更新。由於它們是全球性的,我可以「設置sproductASales dproductASales」。我假設sproductASales也得到更新,是不是正確? – Naha

+0

如果您使用全局變量,那麼您可以直接用任何代理查詢它,並在任何時候將代理值設置爲它。在我看來,你可能不想使用全局變量,那麼這就是我的答案來玩的地方。不使用全局的好處是可以用空間明確的方式改變數值。如果你不需要這種能力,那麼這是額外的不必要的複雜性。 「一切都應該儘可能簡單,但並不簡單」〜愛因斯坦 – Jesse001

+0

更多的問題(我可能錯過了這一點),如果sproductASales得到更新:這取決於你什麼時候做乘數。如果將乘數應用於dproductASales,則設置sproductASales dproductASales yes它將在整個板上更新爲相同的值。如果您希望與供應商有所不同,您需要在設置後應用乘數。如果您想用您當前的代碼更新您的問題,我們可以幫助您找到要去的地方。 – Jesse001

相關問題