我使用anylogic来构建随机移动汽车的模型。 在该模型中,我想使用变量和事件块收集有关代理(汽车)的一些信息。
在模型上,我希望事件将变量 carsLane 设置为当前在路上的汽车的车道,并且每2秒进行一次。
事情是,每次事件发生时都会发生“ NullpointerException ”错误,并且它会在我试图使用的 Car 的每个方法上发生使用事件。
事件位于主选项卡上,代码即时使用操作框:
carsLane=Car.getLaneIndex();
On the image you can see the formation of the blocks and the code on the event's action box
我使用事件是错误的还是别的什么?
感谢您提供任何帮助。
答案 0 :(得分:0)
这会让您感到困惑,但您在模型中定义的Agent Car不包含或不包含在carSource模块中创建的代理,因此执行carLane = Car.anything会给您一个错误,因为汽车代理商可能是空的或不在任何车道。
要解决这个问题,你需要做一些事情(我会假设你在你的汽车资源中生成汽车的方式,在路上最多只有1辆汽车......如果还有更多,你必须做些不同的事情。
首先:创建一个拥有汽车总数的新汽车代理商,让我们称之为汽车(使用代理调色板中的代理商......而不是“汽车类型”),初始人口为0。
此代理将是您创建的Car类型的扩展名:
第二:在汽车来源中,将您的汽车添加到自定义人群中:
第三:在您的活动中,您现在可以: carsLane = thecars.get(0).getLaneIndex();
我为你创建了这个模型......在这里找到它: https://ufile.io/5jkqu