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

优先权和移动

卫弘义
2023-03-14

我正在尝试建模一个使用静态资源的船舶队列,该资源是单个码头(使用流程图)。该队列有三种类型的代理A、B和C,它们分别具有优先级1、2和3(这意味着船C在队列中具有利用码头的优先级)。现在,我需要对以下两种与抢占相关的行为进行建模:

  1. 卸载船舶的任务(码头被扣押时的任务)必须在船舶C到达时抢占,但在船舶A或B到达时不抢占。这意味着“任务优先级”字段中定义的优先级对定义队列注意顺序有效,但对抢占无效。抢占的优先级应该是:优先级为1的船舶A和B以及优先级为2的船舶C。如何将队列的优先级“评级”与用于确定抢占的优先级分开?

显示了队列和抢占具有相同优先级的问题

在此处输入图像描述

共有1个答案

唐照
2023-03-14

为什么不将两者分开呢?您可以做的是在Seize之前放置一个Queue对象,排序为A=1、B=2、C=3,然后将Seize对象的队列大小设置为0,并将抢占优先级(A, B=1;C=2)放入Seize任务优先级字段,就像您在这里所做的那样。

此外,在输入时,锁止块的动作包含以下代码:

java prettyprint-override">List<TestTwoSeizes_Demand> toFree = new ArrayList<>();

// there should be one agent in 'wait' and this will 
// mark it for removal
wait.forEach(waitingAgent -> {
    if (!waitingAgent.agent_type.equalsIgnoreCase("C")) {
        waitingAgent.preempted_by_C = true;
        toFree.add(waitingAgent);
    }
});

if (!toFree.isEmpty())
    toFree.forEach(a -> wait.free(a));

此外,流经该过程的代理具有2个属性:

  1. agent_type-字符串A、B或C
  2. preempted_by_C-boolean,初始设置为false

这就是它的工作原理:

  1. 选择Output对代理进行排序,使“C”进入抓取,A、B进入抓取1

希望这能奏效。这不是最干净的解决方案,但似乎不可能使用标准配置选项进行队列抢占优先级分离。

 类似资料:
  • 我的卡块有问题。现在,代理正在按照我设置的优先级访问资源。然而,如果有多个代理以相同的优先级到达,并请求相同的资源,那么Anylogic是否可能停止不知道向谁授予资源?

  • 在之前已经了解了什么是响应式,其实响应式设计可以有两条道走,一条是移动优先的响应式设计(Mobile First RWD),一种是通常的响应式设计。像 Bootstrap 这样的前端 CSS 框架,就声称自己是 Mobile First 。 那什么是 “移动优先的响应式设计”?它的优势在哪里呢? 1.移动优先的响应式设计 Luke Wroblewski 在2009年写得一篇名为 Mobile Fi

  • 主要内容:深度优先搜索(简称“深搜”或DFS),广度优先搜索,总结前边介绍了有关图的 4 种存储方式,本节介绍如何对存储的图中的顶点进行遍历。常用的遍历方式有两种: 深度优先搜索和 广度优先搜索。 深度优先搜索(简称“深搜”或DFS) 图 1 无向图 深度优先搜索的过程类似于树的先序遍历,首先从例子中体会深度优先搜索。例如图 1 是一个无向图,采用深度优先算法遍历这个图的过程为: 首先任意找一个未被遍历过的顶点,例如从 V1 开始,由于 V1 率先访问过了,所以

  • 图 图是一种数据结构,其中节点可以具有零个或者多个相邻的元素,两个节点之间的连接成为边。节点也可以成为顶点。 邻接表: 邻接表一般采用数组+链表的形式,数组表示各个顶点,链表中的元素表示该顶点与链表中的元素相连,与链表本身的指针没有关系。如上图 数组0 对应的链表1->3->4 表示0这个顶点与1 3 4这个顶点连接 数组1 表示1这个顶点与 0 2 4顶点相连以此类推 邻接矩阵和邻接表的区别 邻

  • 问题内容: 我正在尝试根据文档中提供的示例实现优先级队列。文件:priorityQueue 简而言之,它看起来像这样(不包括所有内容): 该文件中: 如您所见,在与示例进行比较时,我不使用指针,因为这样做会给我一个编译错误,告诉我我的优先级队列未正确实现接口。 这会给我带来以下问题: 该项目未附加到队列中。 我试图写出队列指针地址,它显示了不同的地址。这就解释了为什么它不起作用,但是切片不是地图长

  • 问题内容: 我想知道如何或/和如何工作? 例如,如果我想获取display = 1的所有行 我可以做 如果我想要显示= 1或2的所有行 我可以做 但是,如果我想获取display = 1或2的所有行,并且其中 任何 内容,标签或标题包含 逻辑将如何发挥作用? 是我的猜测。但是我可以通过几种方式阅读。 它的读数是否为: 或作为 等等 问题答案: MySQL文档有一个很好的页面,其中包含有关哪些运算符