首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在“准备”流程图中使用Enter和Exit块(构建资源行为流程图不支持执行错误"0“)

如何在“准备”流程图中使用Enter和Exit块(构建资源行为流程图不支持执行错误"0“)
EN

Stack Overflow用户
提问于 2019-11-27 15:53:05
回答 4查看 613关注 0票数 1

我在两个区域之间有一个气闸(称为AL_2216的小房间)。气闸有许多不同类型的代理通过它(车,产品,操作员等)。气闸两边都有排队的地方。

由于空间很小,我构建了一个简短的流程图,其中有一个队列和限制区域块,所有代理在通过这个空间时都必须通过这些块。如果受限区域的容量已满,则代理将根据其要走的方向在InsideQueueArea或OutsideQueueArea中等待。

我发送代理通过出口和输入块到这个流程图,它工作很好的顶部的流程图。

但是,如果我试图在准备流程图中使用Enter或Exit块,则会得到以下错误:

我尝试使用一个自定义块,而不是输入和退出块,但这每次都会创建一个新的代码实例,而且这些限制不能在多个自定义块之间协同工作。

在我的模型中,这个气闸只是其中之一。在不引用相同代码的情况下,我将拥有多个副本,这些副本需要相互引用对方的受限区域,流程图就变得庞大而复杂。有办法绕过这件事吗?

编辑:

我不知道这些港口该怎么办。他们没有做任何事情的属性:

EDIT2:

下面是一个查看行为的文件-- Model2.zip准备好的流程图部分被设置为“忽略”,因此代码将运行。您可以看到操作人员和大车通过AL_2216,一次只允许2辆。如果取消选中准备流程图的“忽略”,错误将触发。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-12-18 13:57:51

AnyLogic给出了正确的答案!!

所以我问了一个不同的问题,他们从这个帖子中认出了我的名字!他们给我发了个补丁,它的工作方式和它应该的一样!我收到的异常错误消息"out: 0不支持.“让我觉得出口/进入块在分离流程图中不受支持。

但是实际上,seizeCart块不知道从哪里开始准备流程图,因为它没有直接连接到资源任务启动块。在seizeCart块的高级部分下快速设置更改,定义要从哪个资源任务开始块,这就是诀窍!,这是来自AnyLogic的电子邮件:

-The错误文本和文档不足以理解这一点(错误文本令人困惑),我认为它是过时的错误文本。我们将纠正这种描述;

-Under这个问题有一个更一般性的讨论,似乎与最初的问题无关。请让我知道,如果我错过了什么,或如果您的模型不工作,即使在调整后的seizeCart块属性。

票数 1
EN

Stack Overflow用户

发布于 2019-11-27 18:47:07

我认为您应该用简单的seizeCart对象(从代理调色板)替换导致Port捕捉块底部输入的Enter和Exit块。

根据协助抢夺

因此,它需要一个到ResourceTaskStart流的直接链接,您的出入组合可能是.不够直接..。试试看。

票数 0
EN

Stack Overflow用户

发布于 2019-11-29 18:03:31

正如其他人所说,对于准备和结束流程图中可以使用的块,有一些限制(没有真正的文档),这意味着您尝试的内容将无法工作。

正如您所说,保持气闸流的单个“实例”很重要,这样当限制(队列和限制区域)代表相同的物理气闸时,就成为“全局”。(否则,重复的自定义块正是每个不同的物理气闸应该使用的。)

您最好的选择(假设您需要将购物车资源附加到产品)可能是

  • 将虚拟代理(通过源块inject调用)添加到单独的小进程中,该进程代表资源准备需求(但现在没有附加到捕捉块)。
  • 将主进程中的抢占替换为“抢占-等待-释放-抢占”组合:
代码语言:javascript
复制
- The Seize block seizes the cart as normal (_without_ moving or attaching it; no 'Send seized resources' or 'Attach seized resources' options) and then injects an agent into your mini-process (which can use Exit and Enter blocks to use the airlock sub-process). This agent _represents_ the seized resource agent (Cart) and thus should start where it starts and be animated so it looks like it. (You can make the actual Cart temporarily non-visible during this mini-process.)
- When the agent reaches the end of the mini-process (at a Sink block), instantly move the related Cart to your node (use `jumpTo`), make it visible again and `free` the Product agent from the Wait block
- Release the seized Cart and then immediately re-Seize it, but now attaching it (so the animation looks correct). If you use the Resource selection 'Nearest to the agent' option you should be guaranteed to seize the correct cart. (You can also use the 'Customise resource choice' option with some code to ensure that you absolutely always choose the same Cart.)

(如果您不关心有一个正确的动画,并且可以使用自定义块来使这个块组合可重用,因此不会太笨重,那么它就比上面简单了。)

编辑:一个非常类似的选择(也是您自己答案的基础)是在子流中有一个虚拟代理代表您的产品,它捕获(并附加)实际的购物车代理,将它留在产品的位置,就像上面提到的那样。这稍微好一点,因为您不需要担心真正的资源代理的可见性和“跳转”,而且您还可以从主流(现在只有等待-抢占)转移到子流(从而“隐藏它们”)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59073968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档