微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何将同一队列中不同类型的代理优先分配给不同的车辆?

如何解决我如何将同一队列中不同类型的代理优先分配给不同的车辆?

所以我有三种不同的代理类型:PatientType1、PatientType2 和 PatientType3。这三种代理类型都连接到一个 QueueBlock,这样它们都成为一个代理。此外,这个队列块连接到一个 selectoutput5 块,该块又进一步连接到三种不同的车辆:救护车、货车和公共汽车。所以基本上,这里的目标是确定优先级,以便所有的患者类型 1 都被救护车运送到一个位置,完成后救护车还可以携带患者类型 2 和患者类型 3。同时,公交车和厢式货车应优先运送患者类型2并携带它们,当没有患者类型2时,可以运送患者类型3。总结一下:

所有type1的救护车运输,直到没有type1为止,然后去type2或type3。同时,公共汽车和面包车应该携带type2,直到没有type2为止,然后再走type3。

流程如下:

  • 患者类型 1 ---------------------------------------------- ------------> 救护车(接送区)
  • PatientType2 -> Queue -> SelectOutput5(只使用三个) -> Vans (Pick-up Block)
  • PatientType3 ---------------------------------------------- --------------> 巴士(上车区)

感谢您的宝贵时间!

解决方法

我认为这不适用于单个队列。即使使用 agent1 instanceof PatientType1 ? ... 之类的代码通过“代理比较”来确定优先级,也无法帮助您处理这些次要功能。

您可以改用 Wait 块。它不会优先考虑所有患者,而是将所有患者放在一起。

然后,您的车辆会按类型主动寻找患者。您遍历 Wait 块中的所有患者并“拉出”那些遵守您规则的患者(因此救护车首先拉出所有类型 1,然后是类型 2...)。

但是,由于您每次都需要按类型对所有患者进行排序,这可能会很慢。

更好的是将它们放入 PriorityQueue 类型的集合中,该集合会根据您的患者类型自动排序。但这将是更高级的 Java...

否则,只需在当前设置中使用 3 个队列(每个患者类型 1 个)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。