2017-04-12 30 views
1

在我的模型,我有兩個不同的品種如下:netlogo:比較品種的屬性?

breeds [sheeps sheep] 
breeds [wolves wolf] 

每一個都有其改變時,他們「吃」一小塊特定大小。 我還有另一個功能,可以檢查一隻羊是否在狼的前面,然後讓狼吃羊。 當狼比羊大兩倍時,狼現在應該只能吃羊。我試圖以下:

to catch-sheep 
    ask wolves[ 
     if any? sheeps-on patch-ahead 1 [ 
     let prey sheeps-on patch-ahead 1 
     if [ size ] of wolves > [ size ] of prey) [ 
     ask [ prey [ die ]] 
     ] 
     ] 
end 

但是,這顯然不起作用,我找不到解決方案,以便如何輕鬆地比較這些尺寸。 我也試圖定義品種自己的大小變量,但我更麻煩,然後定義它們在劇情中看到的實際大小。

我很感謝任何幫助,我希望這不是一個重複

回答

3

有與您的代碼的幾個問題。 首先, [size] of wolves[ size ] of prey報告大小列表。因此,您無法將兩個列表與不等號進行比較。

第二,[ size ] of wolves > [ size ] of prey,你比較所有的狼對1只特定狼的獵物。相反,你需要使用myself爲要求的狼獲得1尺寸。相反,只要問一下它們的尺寸小於我自己尺寸的獵物就會死亡。

下面是一個正確的解決方案。本質上,你要求狼來決定他們的獵物是誰。如果有獵物,那麼殺死大小小於狼(我自己)的獵物。

to catch-sheep 
    ask wolves[ 
     let prey sheeps-on patch-ahead 1 
     ask prey with [size < [size] of myself] [die] 
    ] 
end 
+0

很好,非常感謝。 – Octopus

+1

我縮短了一些代碼。 –