我在运行代理填充和任何逻辑的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)]
答案 0 :(得分:0)
这是因为在Person代理中,有一个名为district的变量,其初始值为-1 ...(意味着它没有指定的分区)。
要解决此问题,您需要为您正在创建的新人分配一个分区: 这段代码:
Person p=add_people();
p.district=3;
创建一个人并指定一个等于3的区域......我任意选择3个,你必须自己想出你想要的那个区域。