Anylogic 的 Agent 人口和 SD 住房示例中的 Add_people() 函数

Posted

技术标签:

【中文标题】Anylogic 的 Agent 人口和 SD 住房示例中的 Add_people() 函数【英文标题】:Add_people() function in Agent population and SD housing example of anylogic 【发布时间】:2018-10-13 23:36:03 【问题描述】:

我曾尝试在运行 Anylogic 的代理人口和 SD 住房示例期间的事件中使用 add_people(),以便在模拟期间向模型添加更多代理,但我遇到了这个错误。 我该如何解决这个问题?

 [Exception during discrete event execution:
-1
java.lang.ArrayIndexOutOfBoundsException: -1
  at com.anylogic.engine.Dimension.getIndexPosition(Unknown Source)
  at com.anylogic.engine.HyperArray.getPosOf(Unknown Source)
  at com.anylogic.engine.HyperArray.get(Unknown Source)
  at agent_population_and_sd_housing.Person.makeDecision(Person.java:428)
  at agent_population_and_sd_housing.Person.executeActionOf(Person.java:408)
  at com.anylogic.engine.EventRate.execute(Unknown Source)
  at com.anylogic.engine.Engine.m(Unknown Source)
  at com.anylogic.engine.Engine.jd(Unknown Source)
  at com.anylogic.engine.Engine.h(Unknown Source)
  at com.anylogic.engine.Engine$g.run(Unknown Source)]

【问题讨论】:

【参考方案1】:

这是因为在 Person 代理中,有一个名为 District 的变量,其初始值为 -1...(意味着它没有分配的区域)。

要解决此问题,您需要为您正在创建的新人分配一个地区: 这段代码:

Person p=add_people();
p.district=3;

将创建一个人并分配一个等于 3 的区...我任意选择了 3,您必须自己弄清楚您想要该人的哪个区。

【讨论】:

以上是关于Anylogic 的 Agent 人口和 SD 住房示例中的 Add_people() 函数的主要内容,如果未能解决你的问题,请参考以下文章

启动时的 Anylogic Agent 创建顺序

Q: [Anylogic] 如何计算在seize block队列中等待的所有agent的变量总和?

基于两个参数的 AnyLogic 优先级队列作为 Java 代码

anylogic 是哪个国家的

系统动力学中累积和的 AnyLogic 变量

使用 Anylogic 对能源供应链进行通用建模