2016-04-13 87 views
0

我試圖做一個考古模型,在這個模型中,獵人在收容所裏進行繪畫,這取決於它們的質量。不同品種的變量

breed [shelters shelter] 
breed [hunters hunter] 
shelters-own [quality paintings] 

在設置中設置每個遮蔽物質量的值(使用實際遮蔽物數量的滑塊)。

create-shelters number-shelters [set quality random 100] 

的繪畫有或沒有,然後通過隨機對各住房的質量定義的動作:

to make-painting 
    ask shelters [ 
    if any? hunters-on patch-here [ 
     if random 100 < quality [set paintings paintings + 1] 
    ] 
    ] 
end 

現在,我想complexify有點多:質量止跌」不是由避難所本身來定義的(對每個獵人來說都是一樣的),而是由獵人來定義的:他們每個人都會爲每個避難所賦予不同的質量。繪畫或不繪畫的行爲仍然是一個隨機測試,但由每個單獨的獵人定義這個新的變量...

但我找不到一個方法來正確編寫它。

有沒有人有建議?

+0

獵人搬到不同的庇護所嗎?你想讓一個給定的獵人總是將相同的質量分配給給定的收容所嗎?如果您希望評估持續存在,那麼如果它有任何隨機組件,則需要將其存儲。 (不幸的是,桌子不能使用補丁作爲按鍵,但是你可以在補丁位置鍵入一個整數列表。) – Alan

+0

獵人隨機移動並訪問不同的庇護所(當一個庇護所得到100幅畫時,我讓模型停止)。事實上,這個想法是,如果有一個例子是10個庇護所,每個獵人都會有一個不同的10個質量值變量,從設置上來看是持久的。你如何從補丁存儲和檢索這些值? – gvanhavre

+0

那麼爲什麼不給每個獵人一個長度爲10的避難所屬性(或者你擁有的避難所),並將每個避難所的質量存儲在列表中。爲了使會計更容易,您可以爲每個避難所分配一個避難所索引(例如0到9),並使用它來索引該列表。 – Alan

回答

0

我想我說得對。基本上,我讓每個獵手都創建一個填充隨機數字的矩陣。尺寸爲33x33,因此它遍佈世界各地(必須將其設置爲從一個角落開始,或者它獲得負座標)。

create-hunters number-hunters [ 
    set color white 
    set size 1 
    setxy random-xcor random-ycor 
    set hunter-matrix matrix:make-constant 33 33 random 10 
] 
ask n-of number-shelters patches [ 
    sprout-shelters 1 [ 
    set color one-of base-colors 
    set size 1 
    set xpatch xcor set ypatch ycor 
] 

然後,當他們會達到一個住所,對應於該貼片位置的值將被提取並用於繪製有或沒有。

ask patches [ 
    ask hunters-here [set quality matrix:get hunter-matrix xpatch ypatch] 
    let paintings-here sum [paintings] of shelters-here 
    if any? hunters-here and any? shelters-here [ 
    if random 10 < quality [ 
     ask shelters-here [ 
     set paintings paintings + 1] 
    ] 
    ] 
] 

我仍然不完全確定它實際上做了我認爲它在做什麼,壽。