在Anylogic中创建代理时,使用自定义分发为代理分配状态

时间:2018-02-12 17:26:16

标签: anylogic agents

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

我做了以下

  1. 我创建了一个选项列表,列出了我的模型中的所有状态
  2. 我已经为初始填充创建了自定义分布,使用选项列表为每个州分配代理的初始种群分布 3我为移民创建了第二个自定义分发(因为代理将在整个模拟过程中定期添加到人口中),使用相同的选项列表但具有不同的分发值。
  3. 对于所有都有超时转换的前3个状态,我使用以下代码:

    对于第一次超时转换: stateChart == state1? parameter1:0

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

    我的第二次超时转换: stateChart == state1 || stateChart == state2?参数2:0

    等等。

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

    作为结果,我的代理人在零时间或移民事件期间不会出现在初始人口的第四和第五州。

    我的模型的最后两次转换是否有不同的代码可以使我的代理出现在我模型的所有不同状态中?

    谢谢

1 个答案:

答案 0 :(得分:0)

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

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

“状态图”为sc_switchingBehaviour,通常会导致其更改“状态”的消息为“ moveOn”。

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