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



所以我有三种不同的代理类型:PatientType1、PatientType2和PatientType3。这三种代理类型都连接到一个QueueBlock,因此它们都成为一个代理。此外,该队列块连接到selectoutput5块,该块再次进一步连接到三种不同的车辆:救护车、面包车和公共汽车。因此,基本上,这里的目标是优先考虑所有类型1的患者,以便用救护车将其运送到一个地点,完成后,救护车也可以运送类型2和类型3的患者。与此同时,公共汽车和面包车应该优先运送2型患者,当没有2型患者时,可以运送3型患者。总结一下:

所有类型1的救护车运输,直到没有类型1,然后选择类型2或类型3。同时,公共汽车和面包车应该携带2型,直到没有2型了,然后再携带3型。

流程如下:

  • 患者类型1----------------------------------------------------------->救护车(接送区(
  • 患者类型2->队列->选择输出5(仅使用三个(->面包车(皮卡车(
  • 患者类型3----------------------------------------------------------->总线(拾取块(

感谢您抽出时间!

我认为这对单个队列不起作用。甚至通过";代理人比较";使用诸如agent1 instanceof PatientType1 ? ...之类的代码将无法帮助您实现这些次要功能。

您可以使用Wait块。它不区分优先级,而是将所有患者集中在一起。

然后,您的车辆会主动按类型查找患者。你循环通过等待区中的所有病人;"拉";那些尊重你规则的人(所以救护车先拉所有类型1,然后拉类型2…(。

然而,由于每次都需要根据患者的类型对其进行分类,这可能会很慢。

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

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

最新更新