我似乎无法得到一个我希望报告为真的逻辑条件,实际报告为真。我有几个逻辑用“和”连接,每个逻辑单独报告是真的,但是当连接时我得到假。我的代码中必须有错误,但似乎无法找到它。任何帮助都会很棒。
以下是相关代码:
globals [
GF-Threshold
GF-Probablility]
turtles own [ GF+?]
patches own [ GF ]
to setup [
ask patches [ set GF 30]
ask turtles [ set GF+? false]
set GF-threshold 20
set GF-Probability .9
to go [
ask turtles [ check phenotype ]
to check phenotype
[ if GF+? = false and GF > GF-threshold and random-float 1 < GF-Probability [ set GF+? true]
我有GF +的海龟数量监测器? =真。当我使用上面的代码时,监视器显示0。但我希望逻辑应报告为真,因此监视器将显示大于0的值。我自己尝试了每个逻辑,并且当我这样做时监视器显示非零值。你的代码有什么问题吗?我也试过在这里使用补丁,认为问题可能是补丁和乌龟之间的沟通。
to check phenotype
[ if GF+? = false and [GF] of patch-here > GF-threshold and random-float 1 < GF-Probability [ set GF+? true]
答案 0 :(得分:2)
我对代码没有任何问题。这是我使用的(我修复了语法,因此它会运行,我假设你在创建示例代码时删除了一些行)。这意味着有两种可能性。首先是你没有创建任何海龟(我必须在设置中添加该行)。
globals [
GF-Threshold
GF-Probability]
turtles-own [ GF+?]
patches-own [ GF ]
to setup
clear-all
create-turtles 50
ask patches [ set GF 30]
ask turtles [ set GF+? false]
set GF-threshold 20
set GF-Probability .9
end
to go
ask turtles [ check-phenotype ]
end
to check-phenotype
if GF+? = false and GF > GF-threshold and random-float 1 < GF-Probability
[ set GF+? true]
end
第二个是您的监视器代码是问题所在。这是我使用的代码。
count turtles with [GF+? = true]
只是一个额外的注释,我用你的语法来检查布尔值(GF +?)是真还是假。您也可以if GF+?
代替if GF+? = true
代替if not GF+?
代替if GF+? = false
。