netlogo:如果满足条件(补丁变量值),则使海龟停止
我正在给海龟们编找工作的程序。他们按年龄分组 这些补丁就是工作,随机生成了两个变量,分别称为“netlogo:如果满足条件(补丁变量值),则使海龟停止,netlogo,Netlogo,我正在给海龟们编找工作的程序。他们按年龄分组 这些补丁就是工作,随机生成了两个变量,分别称为“此处的工资”和“工作小时数” 我试图让我的乌龟(人们)在这里找到最高工资/工作时间的补丁(工作)时停止移动(寻找),但他们总是不断移动 patches-own [salary-here ; amount of salary paid in one specific job (patch) hours-worked ; time working and leisure rew
此处的工资
”和“工作小时数
”
我试图让我的乌龟(人们)在这里找到最高工资/工作时间的补丁(工作)时停止移动(寻找),但他们总是不断移动
patches-own
[salary-here ; amount of salary paid in one specific job (patch)
hours-worked ; time working and leisure
reward-ratio ; ratio between salary and hours ]
turtles-own [age]
to search-job ; they can only find jobs according to age "zones"
if age = 1 [ move-to one-of patches with [ pxcor > 10 and pxcor < 40 ] ]
if age = 2 [ move-to one-of patches with [ pxcor > 40 and pxcor < 70 ] ]
if age = 3 [ move-to one-of patches with [ pxcor > 70 and pxcor < 100 ] ]
end
to go
ask turtles [ search-job ]
ask turtles [ keep-job ]
tick
end'
自己的补丁程序
[此处的薪资;在一个特定工作(补丁)中支付的薪资金额]
工作时间;工作和休闲时间
报酬比率;工资与工时的比率]
海龟自己[年龄]
找工作;他们只能根据年龄“区域”找到工作
如果年龄=1[移动到[pxcor>10和pxcor<40]的其中一个贴片]
如果年龄=2[移动到[pxcor>40和pxcor<70]的贴片之一]
如果年龄=3[移动到[pxcor>70和pxcor<100]的贴片之一]
结束
外带
问海龟[找工作]
问海龟[保住工作]
打上钩
结束'
这样做的目的是:在条件允许的情况下(周围区域的报酬率最大),保留工作(保持补丁状态),否则,搜索工作
提前感谢您的帮助。我们的想法是,如果海龟应该留下,就不要移动它们 在你的旅途中
ask turtles with [should-stay = false] [search-job]
然后我将编写一个名为should stay的函数,并在其中插入您的stay逻辑
to-report should-stay
report [reward-ratio] of patch-here >= max [reward-ration] of neighbors4
end
还有其他方法,包括存储一个turtle变量,如果性能有问题,可以帮助提高速度。非常感谢@mattsap