【问题标题】:Using a custom distribution to assign states for agents when create it in Anylogic在 Anylogic 中创建代理时,使用自定义分布为代理分配状态
【发布时间】:2018-07-22 22:58:01
【问题描述】:

我正在开发一个模型来评估动物种群控制的不同干预措施。我正在尝试使用自定义分布来分配代理在创建或稍后添加到总体时应处于的状态。

我做了以下

  1. 我创建了一个选项列表,列出了我的模型中的所有状态
  2. 我已经为初始人口创建了一个自定义分布,使用选项列表来分配每个州代理的初始人口分布 3 我为移民创建了第二个自定义分布(因为在整个模拟过程中将定期将代理添加到人口中),使用相同的选项列表但具有不同的分布值。

对于前 3 个状态都有超时转换,我使用以下代码:

对于第一次超时转换: stateChart== state1 ?参数1:0

StateChart 是代理中状态图的名称 State1 是选项列表中分配给第一个状态的名称 Parameter1 是参数名称,具有用于过渡的值(例如断奶持续时间 = 2 个月)

对于我的第二次超时转换: stateChart == state1 ||状态图 == 状态 2 ?参数2:0

等等。

但是我的第四和第五个状态(stete4 和 state5)具有速率和消息转换,并且此代码不适用于此类转换。

因此,我的代理人在零时间或移民事件期间的初始人口中没有出现在第四和第五个州。

对于我的模型的最后 2 次转换,是否有不同的代码可以让我的代理出现在模型的所有不同状态中?

谢谢

【问题讨论】:

    标签: anylogic agents


    【解决方案1】:

    我必须在我负责的市场动态模型中初始化一组客户时设置一个状态,并且该状态通常由一条消息更改。为此,我为每个选定的客户使用以下代码:

    oCustomer.sc_switchingBehaviour.receiveMessage("moveOn");
    oCustomer.onChange();
    

    状态图是 sc_switchingBehaviour,通常会导致它们改变状态的消息是“moveOn”。

    我没有需要执行此操作的速率转换,因此无法直接回答该查询但是,出于状态初始化的目的,您能否(从概念上)将速率转换为概率然后用那个?

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2021-10-03
      • 2021-07-23
      • 1970-01-01
      • 2021-05-08
      • 2021-06-29
      • 2017-03-11
      • 2023-03-24
      • 2019-12-11
      相关资源
      最近更新 更多