【问题标题】:How to set a probability of death for each tick如何为每个刻度设置死亡概率
【发布时间】:2019-05-09 02:05:17
【问题描述】:

我想设置我的代码,以便每个觅食者(一种乌龟)在每一个易受攻击的蜱虫中都有 10% 的几率死亡。我正在构建 Netlogo 模型库中名为 Ants 的代码。

当我使用 use [if random 100 > 98 [ die ]](或任何低于 98 的值)时,几乎我所有的海龟都会在开始时死亡,并在一百个左右的滴答声过去后存活得更多。但是,如果我使用 [if random 100 > 98 [ die ]] 没有海龟会死。这很奇怪。

    to go  ;; forever button
      ask foragers
      [ if who >= ticks [ stop ]
        ifelse color = red
        [ look-for-food  ]    
        [ return-to-nest ]      
        check-death
        wiggle
        fd 1 ]


    to check-death
      ask foragers [
        if vulnerable?
        [if random 100 > 99
          [ die ]]]
    end

我希望 [if random 100 > 98 [ die ]] 能够做到这一点,这样一只脆弱的海龟每次跳动只有 2% 的几率死亡,而不是立即消灭。

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    这里的问题是由于嵌套的ask 语句造成的。您有一个包含 check-deathask foragers [ ... 语句,其中包含另一个 ask foragers 语句。因此,每个觅食者都会向所有觅食者(包括自己)询问check-death。所以,如果你有 10 个 foragers,每个 foragers 将运行check-death 10 次/tick。

    您应该能够从您的 check-death 过程中删除 ask foragers 块来解决您的问题 - 看看这个玩具模型示例:

    turtles-own [ vulnerable? ]
    
    to setup
      ca
      crt 100 [ set vulnerable? one-of [ true false ] ]
      reset-ticks
    end
    
    to go
      ask turtles [
        rt random 61 - 30 
        fd 1
        check-death
      ]
      if not any? turtles with [ vulnerable? ] [
        print count turtles
        stop
      ]
      tick
    end
    
    to check-death 
      if vulnerable? and random-float 1 > 0.90 [
        die
      ]
    end
    

    这会将vulnerable? 随机分配给海龟,然后如果随机生成的浮点值大于 0.90(对于您的问题中提到的 10% 的机会),那么脆弱的海龟就会死亡。一旦没有更多的海龟,模型就会停止。

    【讨论】:

      猜你喜欢
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多