netlogo:比较品种的属性?
netlogo: comparing attributes of breeds?
在我的模型中,我有以下两个不同的品种:
breeds [sheeps sheep]
breeds [wolves wolf]
并且每个都有特定的大小,当它们 "eat" 一个补丁时会发生变化。
我有另一个功能,它检查羊是否在狼之前的补丁中,然后让狼吃掉羊。
现在狼应该只有在狼比羊大两倍的情况下才能吃羊。我试过以下:
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
但这显然行不通,而且我找不到如何轻松比较这些尺寸的解决方案。
我也尝试过定义品种自己的大小变量,但我在定义它们在图中看到的实际大小时遇到了更多麻烦。
如果有任何帮助,我将不胜感激,希望这不是重复的
您的代码存在一些问题。
第一的,
[size] of wolves
和 [ size ] of prey
报告尺寸列表。所以,你不能用不等号来比较两个列表。
其次,[ size ] of wolves > [ size ] of prey
,您正在将所有狼与一只特定狼的所有猎物进行比较。相反,您需要使用 myself
让要求的狼获得 1 个尺寸。而是让体型比自己小的猎物去死。
下面是一个正确的解决方案。本质上,你要求狼确定他们的猎物是谁。如果有猎物,则将体型小于求狼(本人)体型的猎物杀死。
to catch-sheep
ask wolves[
let prey sheeps-on patch-ahead 1
ask prey with [size < [size] of myself] [die]
]
end
在我的模型中,我有以下两个不同的品种:
breeds [sheeps sheep]
breeds [wolves wolf]
并且每个都有特定的大小,当它们 "eat" 一个补丁时会发生变化。 我有另一个功能,它检查羊是否在狼之前的补丁中,然后让狼吃掉羊。 现在狼应该只有在狼比羊大两倍的情况下才能吃羊。我试过以下:
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
但这显然行不通,而且我找不到如何轻松比较这些尺寸的解决方案。 我也尝试过定义品种自己的大小变量,但我在定义它们在图中看到的实际大小时遇到了更多麻烦。
如果有任何帮助,我将不胜感激,希望这不是重复的
您的代码存在一些问题。
第一的,
[size] of wolves
和 [ size ] of prey
报告尺寸列表。所以,你不能用不等号来比较两个列表。
其次,[ size ] of wolves > [ size ] of prey
,您正在将所有狼与一只特定狼的所有猎物进行比较。相反,您需要使用 myself
让要求的狼获得 1 个尺寸。而是让体型比自己小的猎物去死。
下面是一个正确的解决方案。本质上,你要求狼确定他们的猎物是谁。如果有猎物,则将体型小于求狼(本人)体型的猎物杀死。
to catch-sheep
ask wolves[
let prey sheeps-on patch-ahead 1
ask prey with [size < [size] of myself] [die]
]
end