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

Priority queue from 2 sources in AnyLogic

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

优先级参数在 Agents at the Sources 中定义。

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

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

P.S。抱歉,我有俄语版本的 Anylogic。

在看不到队列容量的情况下,如果您有两个队列相互连接,代理将进入第一个队列并立即转到下一个队列...因此它们永远不会被优先考虑,因为它们从不在第一个队列中排队,我假设您设置了优先级。

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

看下面的小测试

我有一个带有变量的自定义代理类型 priority 和一个带有 2 个源和一个队列的简单流程图

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

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

例如,我将source1设置为每分钟生成一次代理,将source 2设置为每秒生成一次。

预期一旦生成来自 source1 的代理,它就会插队并排在第一位内联

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

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