当前位置: 首页 > 知识库问答 >
问题:

AnyLogic中来自2个源的优先级队列

费德宇
2023-03-14

很好的一天!我尝试在AnyLogic 8.7.6中构建网络模型。我有两个具有不同优先级的源(来自第一个源的数据包获得优先级2,来自第二个源的数据包获得优先级1)。来自源的数据包被传输到队列。队列应按优先级对其进行排序。

优先级参数在源代理中定义。

我做了一个简单的实验。源1每秒生成1个代理,源2每秒生成10个代理。我们看到队列是空的:(

我不知道为什么。队列没有根据它们的优先级对它们进行排序。

P、 对不起,我有俄文版的Anylogic。

共有1个答案

艾焱
2023-03-14

在看不到队列容量的情况下,如果两个队列相互连接,代理将进入第一个队列并立即转到下一个队列。。。所以它们从来没有被优先排序,因为它们从来没有在第一个队列中排队,我假设您在第一个队列中设置了优先顺序。

尝试删除两个队列之间的连接,只需查看代理是否根据您的优先级排序。

看下面一个小测试

我有一个自定义代理类型,具有一个变量优先级,一个简单的流程图,有两个源和一个队列

根据您的示例,我正在将Source1中生成的代理的优先级变量设置为2,而在Source2中,它们被设置为1。

在队列中,我将排序设置为基于优先级,并告诉块在代理内部使用优先级变量(优先级越高)

例如,我将source1设置为每分钟生成代理,将Source2设置为每秒生成代理。

我们的期望是,一旦source1中的代理生成,它就会跳转队列并首先内联

当我运行模型并单击以查看队列的详细信息时,我可以看到一旦源1中的代理被创建,它就会跳线。

您始终可以创建一个自定义toString()函数,以确定单击队列块时必须显示的内容

 类似资料:
  • 我有一个AnyLogic模型,有3个连接到队列的源。如何为每个源设置其优先级(或者可以是明显的参数?)以及应该向field Agent priority写入什么(默认值为零)。在此处输入图像描述

  • 非常感谢您抽出时间!

  • 我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。

  • 我试图实现Dijkstra算法的一个版本,以找到公共汽车从起点到终点的最短路线。不幸的是,我似乎找不到swift提供优先级队列类型的库或其他方式,所以我似乎必须自己编写代码。 话虽如此,有人能指出我做这件事的正确方向吗? 目前我的想法如下: 到目前为止这是我的代码。似乎太短太残忍了...我一定是在概念上漏掉了什么。

  • 注意:我知道可以用比较器创建优先级队列,然后重复调用Add。

  • 考虑下面的优先级类声明<代码>类优先级队列 我的想法: 我能想到的一件事是,这将强制优先级队列使用对象比较器,并且不会提供实现其自定义比较器的能力,因为类的用户可能希望基于某个不同的比较器构建队列。