同时使用netlogo互斥代理集

时间:2016-02-01 22:51:27

标签: netlogo agentset

我有300名工人,并希望根据两个排名将它们分成3组100个(现在,最终我将它们或许不平等地划分)。我写了一些变化来完成以下任务:

在X上选择前100,为变量A指定值1.在Y上选择过100(在A上没有为ALREADY分配值1)并将值2分配给变量A.选择余数并将值3分配给甲

我尝试过十几种方法,但没有成功。我最接近的是获得前100名。但是,因为有关系,有一些工人在X上排在第100位.Netlogo随机选择一个在变量A上接收值1,这很好。问题是,因为我还没有能够弄清楚如何使用2个标准同时构建三个互斥的代理集,我最终将工作人员从值1重新分配到值为2.我可以手动修复它现在,但最终还是不可能。

这是进行第一次赋值的代码:

询问100名工人的最大n [LPAdv] [设置AWeight 1]

问题似乎是我无法找到引用剩余200的Y的前100名的方法。我也不能参考其余200的底部100,因为工人可能在顶部X上有100但不在Y上的前100中,在这种情况下,除非我从操作中删除它们,否则它们(错误地)属于顺序识别的代理集。我尝试过使用会员?和男人其他的可能性。基本上,我不知道如何同时转储300中的前100个而且只有"排序"剩下的200人来完成任务。

我已经查看了多个来源的答案,到目前为止无济于事。自星期六以来,我的代码取得了很大的进步,但这是一个绊脚石。

非常感谢任何帮助!

谢谢! SLuke

2 个答案:

答案 0 :(得分:0)

解决! (YAY!)

如果其他人有问题,我做的是以下内容:

someclass.method1()

请注意,LPMid2将AWeight = 1设置为-1000,这超出了我稍后需要的实际LPMid变量的范围。

很抱歉打扰清单;我希望如果他们遇到类似的问题,答案对别人有用。

答案 1 :(得分:0)

这里的一些代码可能更易于阅读且更易于扩展(未经测试),希望能够在您尝试从子集中进行选择时为您提供有关如何排除某些海龟的一些想法。

ask max-n-of 100 workers [LPAdv] [set AWeight 1]
ask max-n-of 100 workers with [AWeight != 1] [LPMid2] [set MWeight 2]

另外,你不需要两个问题陈述和(并且要求两次效率较低):

ask workers
[ set PreWeight ( AWeight + MWeight )
  if PreWeight = 0 [set RWeight 1]
]