代理当时不能在多个流程图中。至少有两个流程图块存在冲突:

Posted

技术标签:

【中文标题】代理当时不能在多个流程图中。至少有两个流程图块存在冲突:【英文标题】:Agent can't be in several flowcharts at the time. At least two flowchart blocks are in conflict: 【发布时间】:2021-11-14 16:38:16 【问题描述】:

假设我有以下供应链模型,参见模型model1

    代理通过定义的网络相互通信,并通过端口相互发送消息。例如,客户的需求通过他们的港口产生并作为“订单”向上游发送到设施。上游设施向下游设施发送“货物” 并在每个节点收集统计信息。

    该模型似乎适用于 2 个梯队,但是当一个设施根据需要连接到下游的两个设施时,我收到以下错误“代理当时不能在多个流程图中。至少两个流程图块发生冲突” see error。根据描述,代理“货物”似乎同时发送到两个设施。

我的问题是如何避免这种冲突?

关于每个节点的更多信息:

    代理的“订单”通过每个节点的端口进入,并作为 Enter 捕获。采取(msg),按照流程图,并作为代理“运送”到每个目的地退出。每个代理“订单”都有双倍数量和端口目的地。 see facility node

有什么建议吗?

【问题讨论】:

同时向多个地点发货的逻辑是什么?这是预期的行为还是错误? 【参考方案1】:

您必须确保不要将代理发送到已经在另一个流程图中的流程图中,正确。这是糟糕的模型设计。

调试和查找根本问题的一种方法:在发送任何消息代理之前,检查currentBlock()!=null 并跟踪代理和块。同时暂停模型。

然后,您可以看到您想要(重新)发送已经在某个其他流程图块中的代理。

您可能会发送仍在其他地方的消息代理。

PS:对于消息,您可能根本不想使用流程图,而是使用正常的消息传递。这避免了这些麻烦,因为您可以轻松地将相同的消息发送给多个代理。检查示例代理模型中的消息传递方式

【讨论】:

感谢@benjamin 您的及时回复。进行一些调试后:-agent "Shipment" 被发送到下游所有连接的设施,这是当前的问题。代理应该去请求的设施或客户节点。这就是代理“order:”具有目标参数“port”的原因。我试图通过使用 msg 来纠正它。接收方法,但它给出了与“不适用于参数”相关的错误。即使我不按照您的建议使用流程图,我仍然必须将消息发送到两个独立的连接设施。有什么建议吗? 如果您对问题进行了改进,请打开一个新问题(这不是一个论坛,而是一个问答场所:))。不知道您现在在说什么,添加一些图片和说明以帮助我们帮助您,请参阅benjamin-schumann.com/blog/2021/4/1/…。另外,如果有用,请点赞答案,请参阅***.com/help/why-vote 谢谢@benjamin。我能够解决我的问题。正如您所建议的,我查看了 anylogic 消息传递,并提出了这篇关于定义自定义联系网络/链接的文章:anylogic.help/anylogic/agentbased/… 它准确地解释了我需要向特定代理发送消息的内容。谢谢你的帮助,我已经赞成答案:D 显然,我还不能投票,需要 15 个声望才能投票:(

以上是关于代理当时不能在多个流程图中。至少有两个流程图块存在冲突:的主要内容,如果未能解决你的问题,请参考以下文章

在windows vm上部署Azure Pipelines Agent

线程与进程的区别以及对多线程并发的理解

反序列化错误 : 不能构造Dto的实例(尽管至少有一个Creator存在):不能从对象值反序列化。

Shiro learning - 认证流程

进程与线程

线程与进程的区别