【问题标题】:Anylogic - sending message from seize to agent in DES-ABM modelAnylogic - 在 DES-ABM 模型中从抓住向代理发送消息
【发布时间】:2018-05-08 07:34:00
【问题描述】:

在我一直在 Anylogic 8 中构建的混合 DES-ABM 模型中,我正在努力发送消息。主要有几个诊所,在这些诊所中,流程建模库用于在诊所流程中建模。一旦患者代理到达“占用”块,就会占用医生代理。

现在,我想做的是,一旦那个医生-代理人被扣押,需要从那个“扣押”块向住在诊所的医生代理人发送一条消息。

我查阅了 Anylogic 帮助手册,并将这些代码 sn-ps 插入到 'seize' 块的 'On entry' 字段中:-

agent.send("Start", Clinic.doctor)

send("Start", Clinic.doctor)

错误:说明:无法对非静态字段进行静态引用

agent.send("Start", doctor)

send("Start", doctor)

错误:说明:Agent 类型中的方法 send(Object, Agent) 不适用于参数 (String, Clinic._doctor_Population)。

我该怎么做?

【问题讨论】:

    标签: java anylogic agent-based-modeling


    【解决方案1】:

    您需要在seize块的“onSeize”代码部分发送消息。在那里,输入:

    send("Start", unit)
    

    关键词“单位”会发送给被查封的医生。在此处阅读有关这些关键字的更多信息以及在哪里可以找到它们:

    http://www.benjamin-schumann.com/blog/2016/2/4/the-magic-lightbulb-and-how-it-can-help-your-anylogic-modelling

    【讨论】:

    • 谢谢,非常有帮助的博文!这似乎有效,尽管医生的状态图中没有任何反应;他们似乎不会过渡到其他州。但是,在医生的状态图上使用 traceln(),他们似乎确实收到了消息。你有什么建议吗?
    • 您需要一个真正响应“开始”消息的转换医生需要处于可以进行转换的状态。你相信这两个都是真的吗?
    • 嗨@StuartRossiter,我相信这些都是真的。医生代理有状态图,当他收到“开始”时他应该在其中转换。作为背景信息:我正在尝试重新创建本文中使用的模型结构:ieomsociety.org/ieom_2016/pdfs/554.pdf
    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2023-02-10
    • 2022-01-23
    • 2013-07-23
    • 2021-02-08
    相关资源
    最近更新 更多