【问题标题】:How to kill and regenerate turtles every set number of ticks如何在每设定数量的滴答声中杀死和再生海龟
【发布时间】:2020-11-28 00:48:09
【问题描述】:

我正在研究的模型模拟了一组工作在团队项目中的工人。我正在尝试添加一个名为“替换”的开/关开关。预期结果是:

开启时: 现有海龟品种员工的 30% 死亡,并引入相同数量的新海龟。

当它关闭时: 没有海龟死亡,并且在设置时生成的所有海龟都将在项目中从头到尾工作。

杀死乌龟的目的是乌龟自己的变量“技能”。我正在尝试模拟人们从公司辞职并雇用新人的场景,这将导致技能水平发生变化。

如果每 20 刻更改 30% 的海龟的技能等级而不是杀死/再生更容易,那将是完美的,但我无法弄清楚。

我在这个问题上的尝试如下所示。它运行时没有任何错误,但我确认它不会在每设定数量的滴答声中杀死/重生 30% 的海龟。任何有用的指导将不胜感激。

to go
  if all? patches [ workload = 0 ] [ stop ]
  ifelse replacement [hire] [continue]
  recolor
  tick
end

to hire
  if ticks > 0 and ticks mod 20 = 0 [
    ask n-of (count employees * 0.30) employees [die]
    create-turtles number_of_workers * 0.30 [
        set breed employees
        setxy random-xcor random-ycor
        set shape "person"
        set color black
        set size 1
        set skills random-float 1]
  ]
    ask employees [move]
    ask leaders [move]
end

to continue
  ask employees [move]
  ask leaders [move]

end

【问题讨论】:

  • 那是什么语言
  • 这是 Netlogo。我在发布后不久就解决了这个问题。感谢您的提问!

标签: netlogo


【解决方案1】:

我最终自己找到了答案。从租用函数中删除“ticks > 0 and”解决了它:)

【讨论】:

    【解决方案2】:

    根据您对问题的描述,我不确定为什么删除 if ticks > 0 and 可以解决问题。我想知道您是否可能将“替换”变量设置为false,并且不会调用租用程序。

    不管怎样,你还问过关于每 20 刻更改技能集的问题。你可以这样做:

    to go
      if all? patches [ workload = 0 ] [ stop ]
      if replacement? and ticks mod 20 = 0 [hire]
      move-people
      recolor
      tick
    end
    
    to hire
      ask n-of (count employees * 0.30) employees
      [ set breed employees
        set skills random-float 1
      ]
    end
    
    to move-people
      ask employees [move]
      ask leaders [move]
    end
    

    我还以一种更容易调试的方式进行了轻微的重组。您在“雇用”和“继续”程序中都取得了进展。显然你希望这种情况总是发生,所以现在在“go”过程中是明确的(我将名称更改为更具描述性)。

    现在,“雇用”程序只是改变了现有员工的技能。但是请注意,任何其他变量(例如引线、大小、颜色和位置)都不会受到影响。如果您采用这种方法,您可能希望以某种方式表明他们是新员工。

    “聘用”程序现在明确称为“更换?”开关打开,也是 20 个刻度的倍数。如果您在调用过程中有部分条件(“go”)并在过程本身中有部分条件(“hire”),那么很容易忘记你没有看到的那一半的存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      相关资源
      最近更新 更多