Netlogo 隔离模式的适应:如何避免在这里的斑块中出现其他品种密度

Netlogo 隔离模式的适应:如何避免在这里的斑块中出现其他品种密度,netlogo,agent,Netlogo,Agent,我的子模型的目标是模拟狼避开人类密度大于其耐受阈值的斑块。人类代理仅在城市斑块(灰色)上创建,但NetLogo world中也有草地斑块(棕色)和森林斑块(绿色)(请参见下面的界面选项卡链接以了解视觉效果)。人类特工处于静止状态,而狼特工可以选择逃跑,如果他们对当前位置[不满意?]的话,可以选择[寻找新的地点] 我如何编写ifelse happy的代码?代表一只单独的狼问自己:“我所在区域的人类密度是多少,是否超过了我对人类的容忍度?” 此外,当我检查一个斑块时,所有城市斑块的人类密度变量都为

我的子模型的目标是模拟狼避开人类密度大于其耐受阈值的斑块。人类代理仅在城市斑块(灰色)上创建,但NetLogo world中也有草地斑块(棕色)和森林斑块(绿色)(请参见下面的界面选项卡链接以了解视觉效果)。人类特工处于静止状态,而狼特工可以选择逃跑,如果他们对当前位置[不满意?]的话,可以选择[寻找新的地点]

我如何编写ifelse happy的代码?代表一只单独的狼问自己:“我所在区域的人类密度是多少,是否超过了我对人类的容忍度?”


此外,当我检查一个斑块时,所有城市斑块的人类密度变量都为零(即使斑块上有人类)。我怎样才能纠正这个问题

好的,我可以看到一些问题。第一个是:

ask urban-patches [set human-density human-density = pop-density]
我不知道为什么这不是一个错误。但无论如何,您不能使用“=”来设置NetLogo中的变量值。假设您希望将pop密度的计算值指定给名为human density的面片变量,则该行应为:

ask urban-patches [set human-density pop-density]
关于你的实际错误。你有:

ifelse (patch-here human-density >= anthro_tolerance)
检索属于某个模型实体的变量值的正确语法使用的原语
,因此您可以编写(未测试):

但是你也可以利用海龟可以访问他们所在区域的补丁变量这一事实。请注意,这不适用于反向-海龟到补丁是唯一的,因为海龟一次只能在一个地方。但是,一个补丁上可能有许多海龟,因此补丁不知道访问变量的海龟

使用该技巧可以让您:

ifelse human-density >= anthro_tolerance
还有一个技巧可以使用,因为
ifelse
将变量设置为true或false。这有点微妙,所以有些人不使用它,因为它有点难读,特别是如果你对NetLogo还不熟悉的话。但您可以替换:

ifelse human-density >= anthro_tolerance
[set happy? FALSE]
[set happy? TRUE]
与:

快乐吗?人类密度<耐炭疽性

从右到左读这个。首先,它应用比较运算符“好的,我可以看到这里有几个问题。第一个是:

ask urban-patches [set human-density human-density = pop-density]
我不知道为什么这不是一个错误。但无论如何,您不能使用“=”来设置NetLogo中的变量值。假设您希望将pop密度的计算值指定给名为human density的面片变量,则该行应为:

ask urban-patches [set human-density pop-density]
关于你的实际错误。你有:

ifelse (patch-here human-density >= anthro_tolerance)
检索属于某个模型实体的变量值的正确语法使用
的原语
,因此您可以编写(未测试):

但是你也可以利用海龟可以访问他们所在区域的补丁变量这一事实。请注意,这不适用于反向-海龟到补丁是唯一的,因为海龟一次只能在一个地方。但是,一个补丁上可能有许多海龟,因此补丁不知道访问变量的海龟

使用该技巧可以让您:

ifelse human-density >= anthro_tolerance
还有一个技巧可以使用,因为
ifelse
将变量设置为true或false。这有点微妙,所以有些人不使用它,因为它有点难读,特别是如果你对NetLogo还不熟悉的话。但您可以替换:

ifelse human-density >= anthro_tolerance
[set happy? FALSE]
[set happy? TRUE]
与:

快乐吗?人类密度<耐炭疽性

从右到左读这个。首先,它应用了比较运算符“我自己回答了问题的最后一部分,但如果有人对NetLogo感兴趣或像我这样的新手,我想发布我是如何解决这个问题的

当我检查一个单独的城市斑块时,该斑块的可变“人类密度”将为0,即使该斑块上有人类因素(非常明显)。我通过在[setup]和[go]过程结束时添加[update patches]解决了这个问题

to update-patches
  ask urban-patches [set human-density pop-density]
end

通过在[setup]和[go]过程结束时调用此更新补丁命令,我在检查补丁时准确显示了人类密度。

我自己回答了问题的最后一部分,但如果有人对NetLogo感兴趣或像我这样的新手,我想发布我是如何解决问题的

当我检查一个单独的城市斑块时,该斑块的可变“人类密度”将为0,即使该斑块上有人类因素(非常明显)。我通过在[setup]和[go]过程结束时添加[update patches]解决了这个问题

to update-patches
  ask urban-patches [set human-density pop-density]
end

通过在[setup]和[go]程序结束时调用此更新补丁命令,我在检查补丁时准确显示了人体密度。

请编辑您的问题。既然问题是检查幸福的代码不起作用,那就是我们需要的代码。您需要将其复制到问题中(您可以使用大括号将其格式化为代码)。StackOverflow上不接受代码图像。如果我们需要编辑您的代码以使其正常工作,我们不能从图像中进行编辑。@JenB,感谢您在StackOverflow中提供的指导。谢谢你的耐心请编辑你的问题。既然问题是检查幸福的代码不起作用,那就是我们需要的代码。您需要将其复制到问题中(您可以使用大括号将其格式化为代码)。StackOverflow上不接受代码图像。如果我们需要编辑您的代码以使其正常工作,我们不能从图像中进行编辑。@JenB,感谢您在StackOverflow中提供的指导。我很感激你的耐心
set human density human density=pop density
不会出错,因为它是合法代码-
human density=pop density
报告
true
false
,然后
set
将该值存储在
human density
中。谢谢你,@JenB!你的解释对我很有帮助