在我的模型中,我有两个不同的品种如下:
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
但这显然不起作用,我找不到如何轻松比较这些尺寸的解决方案。 我也试图定义品种 - 自己的大小变量,但我更难以定义它们的实际大小,这可以在情节中看到。
我会感激任何帮助,我希望这不是重复的
答案 0 :(得分: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