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