【问题标题】:Changing a main class parameter for select agents in AnyLogic更改 AnyLogic 中选择代理的主类参数
【发布时间】:2019-01-01 06:13:00
【问题描述】:

我有一个基于代理的流行病模拟,其中我使用标准 SEIR 模型。我在主类中定义感染参数。我现在希望能够在模型运行时更改一些代理。

例如:我已将“联系率”定义为“主”类中的参数。我现在想说的是,一旦代理住院,它的联系率现在变为 0。我尝试在“代理”类中编写一个函数,它说:

if (hospitalise == true) {
main.ContactsPerDay = 0.0;
}

但这只是在第一次住院时将整体接触率设置为0,这显然是错误的。

我如何在代理中编写一个只修改特定代理的联系率的函数?

【问题讨论】:

    标签: class parameters simulation anylogic agent-based-modeling


    【解决方案1】:

    我认为您不想这样做...这是一个结构性错误...联系人数由联系率定义,您不应该更改它(除非您要隔离那些永远住院,所以他们再也不能和其他人说话了)

    我认为您真正想要做的是使代理对感染免疫...这意味着在您的患者状态图中,当患者康复时,他永远不应该回到易感状态。

    或者另一种方法是在暴露或感染状态图中,当你随机感染另一个代理时,你有send( "Infection", RANDOM_CONNECTED );的动作 您可以将其替换为

    if(!hospitalise)//same as hospitalize==false
        send( "Infection", RANDOM_CONNECTED );
    

    【讨论】:

      【解决方案2】:

      结构正确性,或逻辑/推理,main.ContactsPerDay 指的是 Main 中的参数。这就是您发布的代码将整体联系率设置为零的原因。

      使用this.ContactsPerDay = 0 应该会产生您描述的结果。

      【讨论】:

        猜你喜欢
        • 2018-08-25
        • 2021-02-13
        • 2017-12-29
        • 2021-04-08
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 2018-07-17
        相关资源
        最近更新 更多