2015-08-18 64 views
1

在我的模型中,我有一些代理人作爲一個設定能量的食物。這些都是由許多烏龜品種餵養,每個品種的食物能量都低於食物的能量。如何讓代理商因多個代理商而衰減?

供料劑中的代碼如下:

to eat 
    ifelse [food-energy] of myfood > 1.5 [ 
    set food-energy 1.5] 
end 

和用於食品項目衰減相關聯的代碼是:

to decay 
    if any? turtles-here [set food-energy 
    (1.5 * count feeders-here with [myfood = myself] 
end 

的問題時,如果食物的能量是不是供料器可以消耗的能量的確切倍數。例如,它可以下降到1,並且這導致饋線取1.5單位,這應該是不可能的。當我有不同的食物能量不同的品種(即<或> 1.5)時,這會加劇。

所以我的問題是我怎麼能得到這個東西來平衡?

+1

我不完全確定衰變應該做什麼,因爲它似乎創造能量而不是減少它。然而,我最好的猜測是你想要一個像'set out-value min(列表1.5 in-value)'這樣的構造。也就是說,如果輸入值已經超過1.5,那麼輸出值將與輸入值相同,但是如果輸入值更大,則輸出值將是1.5。 – JenB

+0

我應該說我正在運行衰減功能。如果你看看下面的答案,你可能會明白這是如何工作的,因爲我有兩個變量,肉類和食物能量。 –

回答

0

感謝您的答覆。我會盡力實施它們。這是一個不雅的解決辦法爲我工作:

to eat 
ifelse (food-energy/capacity) < 1 and [meat] of myfood > capacity [ 
set food-energy 1.5] [set food-energy [meat] of myfood 
ask myfood [set shape "square"]] 
if (food-energy/capacity) = 1 [ 
set color white] 
if (food-energy > 0 and food-energy/capacity < 1) 
[ set color white ] 
end 

這是最初導致這樣的問題:當食物的能量下降到0,我問了它的死去任何動物myfood的看[肉]丟這是目標,我得到了一個錯誤。所以我讓動物一旦顏色變白就打破了這種聯繫。

to ignore 
set myfood nobody 
set food-energy food-energy * 1 
end 
0
  1. 你需要研究狼 - 狼捕食模型。這是第一個NetLogo教程:http://ccl.northwestern.edu/netlogo/docs/tutorial1.html在NetLogo模型庫中有五個日益複雜的版本,這些版本在Wilensky和Rand(2015)的第4章中有介紹,您應該閱讀它。
  2. 在這裏看到一些相關的資料: http://jasss.soc.surrey.ac.uk/14/2/5.html

一些提示遵循,但許多細節需要填補

breed [feeders feeder] 
patches-own [ food-energy ] 
feeders-own [ myfood ] 
to setup 
    ca 
    ask patches [set food-energy random 50] 
    create-feeders 500 [ 
    move-to one-of patches 
    set myfood one-of patches 
    ] 
end 

to go 
    ask feeders [move] 
    ask feeders [feed] 
    ask patches [growback] 
end 

to move ;how shd they move? 
    rt random 20 
    left random 40 
    fd 1 
    ;shd movement cost energy? 
end 

to feed 
    if (patch-here = myfood) [ 
    let _extracted min (list food-energy 1.5) 
    set food-energy (food-energy - _extracted) 
    ] 
end 

to growback 
    ;do you want growback? 
end