Animation Anylogic,设置队列动画

Animation Anylogic,设置队列动画,animation,queue,anylogic,Animation,Queue,Anylogic,这总是让我恼火,所以我通常忽略它,但这一次它促使我问这个问题 我正在使用路径来表示队列,为排队等待资源的代理设置动画。我使用moveTo块将代理移动到队列前面的节点。当队列为空且某个代理到达以接受服务时,当代理移动到队列路径的末尾并沿路径平滑地前进到节点所在的队列前端时,该队列看起来非常棒。 但是,如果队列中有多个代理,则新代理将移动到队列路径,并一直移动到队列前面(节点所在的位置),然后跳回队列路径上的正确位置 如果我将节点放在队列的后端,那么当代理到达队列时,动画看起来很棒,因为他们在其他已

这总是让我恼火,所以我通常忽略它,但这一次它促使我问这个问题

我正在使用路径来表示队列,为排队等待资源的代理设置动画。我使用moveTo块将代理移动到队列前面的节点。当队列为空且某个代理到达以接受服务时,当代理移动到队列路径的末尾并沿路径平滑地前进到节点所在的队列前端时,该队列看起来非常棒。
但是,如果队列中有多个代理,则新代理将移动到队列路径,并一直移动到队列前面(节点所在的位置),然后跳回队列路径上的正确位置

如果我将节点放在队列的后端,那么当代理到达队列时,动画看起来很棒,因为他们在其他已在队列后面加入队列,但当队列前端的代理抓住正在等待的资源时,他们会跳到队列的后端,然后沿着队列前进到资源节点


关于如何正确设置动画,您有什么想法吗?

这无法用流程建模库的现有块修复

不过,如果你使用行人图书馆,这个问题不会发生,也许你可以考虑使用它,如果动画是那么重要,以你的模型

的处理速度为代价的话。 真正做到这一点的唯一其他方法是创建自己的基于代理的模型来处理队列中代理的行为,但这并不是很直接


现在,如果您考虑操作时间,那么如果代理像它那样移动,或者如果它移动到行的末尾,那么流程统计信息没有区别,因此就结果而言,您不必担心它

这不能用流程建模库的现有块来修复

不过,如果你使用行人图书馆,这个问题不会发生,也许你可以考虑使用它,如果动画是那么重要,以你的模型

的处理速度为代价的话。 真正做到这一点的唯一其他方法是创建自己的基于代理的模型来处理队列中代理的行为,但这并不是很直接


现在,如果您考虑操作时间,如果代理像它那样移动或移动到队列的末尾,那么流程统计数据没有区别,因此就结果而言,您不必担心它

您可以通过使用传送块来表示“随机移动”队列来实现这一点(有一些特定的配置),但值得考虑更广泛的情况(这也有助于理解为什么尝试将MoveTo块添加到服务中,并使其队列沿着路径,无法实现您想要的结果)

流程模型可以包括模型相关的空间性,其中移动时间非常重要。(以及MoveTo块,隐式选中“发送占用资源”的RackPick/Store和Service块等块也包括移动。)但是,通常情况下,您不会这样做:一个队列沿着路径的服务块使用该路径只是为了提供队列的一些可视化表示。在底层模型中,代理从上游块“立即”到达队列,并在资源空闲时“立即”输入延迟-这是模型的流程抽象。因此,尝试使用以前的MoveTo块或类似的块“修复动画”将不起作用,因为服务块不应表示其队列的这种概念(因此代理将“跳回”到您观察到的底层行为的实际情况)。此外,“适当设置动画的队列”将模糊模型的基本基础(使其看起来好像该运动是显式建模的,而不是显式建模的)

输送机在概念上捕获必须保持一定距离的代理,并且(对于累积式输送机)在有空闲空间时显式地对移动的代理进行建模。因此,尽管这看起来可能违反直觉,但实际上这是移动的人类队列的“正确”详细概念(当然也与实际输送机匹配)

要使其按您的意愿工作,您需要调整代理的大小(仅从传送带的角度),以便您的队列中只有所需的人数(现在是传送带),而下面的服务块只有一个容量为1的队列(因此仅代表“队列前面的人”)-服务块不能有容量为0的队列。您可以使用一个点节点作为该单入口队列的位置,该队列刚好位于输送机路径的末端之外(因此这实际上代表了队列中的最终位置)-见下文

然后,您希望传送带上的代理长度表示“队列插槽长度”,这需要指定队列容量(在我的示例中是一个变量),例如

路径长度(米)/(队列容量-1)

其中
path
是您的传送带路径。(传送带表示除最后一个以外的所有队列“插槽”)

您还可以使用MovingQueue块或类似工具将所有这些封装为自定义服务

请注意,如果输送机没有空间容纳到达的代理(即,“概念队列”已满),则需要输送机前的队列。如果您想特别现实,您必须决定现实生活中会发生什么,并明确建模(例如,溢出队列、代理离开等)

另外,另一种选择是使用行人库,其中带有行空间标记的服务旨在对此进行建模(下面的部分示例流)。但是,这意味着将代理切换为行人(参与行人建模,作为运动的基本物理模型),然后再切换回来(在某些情况下,这可能会导致一些奇怪的运动,因为