Netlogo 如何杀死和再生海龟每一组蜱

Netlogo 如何杀死和再生海龟每一组蜱,netlogo,Netlogo,我正在使用的模型模拟了一组在团队项目中工作的工人。我试图添加一个名为“替换”的开/关开关。预期结果如下: 打开时: 30%的现有海龟雇员死亡,并引入同等数量的新海龟 关闭时: 没有海龟死亡,在安装时生成的所有海龟将从头到尾在项目中工作 杀死海龟的目的是海龟自己的变量“技能”。我试图模拟一个场景,人们从一家公司辞职,雇用新员工,这将导致技能水平的变化 如果每20蜱改变30%海龟的技能水平比杀死/再生更容易,那就太完美了,但我无法理解 我对这个问题的尝试如下所示。它运行时没有任何错误,但我确认它不会

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

打开时: 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

最后我自己找到了答案。从hire函数中删除“ticks>0和”解决了这个问题:)

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

从您对问题的描述中,我不确定为什么删除
如果ticks>0和
解决了它。我想知道您是否将“replacement”变量设置为
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”)中有一部分条件,那么很容易忘记您没有看到的那一半条件的存在。

从您对问题的描述中,我不确定为什么要删除
If ticks>0并解决它。我想知道您是否将“replacement”变量设置为
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”)中有一部分条件,那么很容易忘记您没有看到的那一半条件的存在。

这是什么语言的Netlogo。我在发布这篇文章后很快就解决了这个问题。谢谢你的邀请!这是什么语言?这是Netlogo。我在发布这篇文章后很快就解决了这个问题。谢谢你的邀请!