报告是真的不合逻辑

时间:2015-01-08 15:16:39

标签: netlogo

我似乎无法得到一个我希望报告为真的逻辑条件,实际报告为真。我有几个逻辑用“和”连接,每个逻辑单独报告是真的,但是当连接时我得到假。我的代码中必须有错误,但似乎无法找到它。任何帮助都会很棒。

以下是相关代码:

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]

1 个答案:

答案 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