netlogo:如果满足条件(补丁变量值),则使海龟停止

标签 netlogo

我正在尝试对海龟寻找工作进行编程。他们按年龄组分开。

补丁是工作,有两个随机生成的变量,名为“salary-here”和“hours-worked”。

我试图让我的乌龟(人)在找到工资/工作时间最高的补丁(工作)时停止移动(寻找),但他们总是继续移动。

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'

想法是:如果条件满足(周围区域奖励比例最大),则保留工作(留在补丁中),如果不满足,则搜索工作。

预先感谢您的帮助。

最佳答案

我们的想法是,如果海​​龟应该留下来,就不要移动它们。

随心所欲,

ask turtles with [should-stay = false] [search-job]

然后我会编写一个名为“should-stay”的函数,并在其中插入您的停留逻辑。

to-report should-stay
   report [reward-ratio] of patch-here >= max [reward-ration] of neighbors4
end

还有其他方法,包括存储海龟变量,如果性能存在问题,这可以帮助提高速度。

关于netlogo:如果满足条件(补丁变量值),则使海龟停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693790/

相关文章:

patch - 对不在上方的补丁进行操作(更改一个变量的值)的代理

netlogo - 如何在补丁上下文中使用在海龟上下文中定义的变量?

netlogo - 如何创建它们之间不重叠的集群补丁

foreach - NetLogo:跳出嵌套的 foreach 循环

random - 如何随机选择 netlogo 中具有较高海拔的邻居补丁

netlogo - 视线 NetLogo

netlogo - 为什么 Agentset 按钮的行为与询问 agentset 的观察者按钮不同?

netlogo - 我可以为每个补丁存储一个变量还是应该使用海龟?

simulation - NetLogo 4.1 - 高速公路的实现(造成汽车碰撞的问题)

java - 如何使 NetLogo 5.x 中的扩展返回值 "nobody"?