我使用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
我使用错误的事件还是其他的事情?
谢谢你的帮助。
这会让你感到困惑,但是你在模型中定义的Agent Car不是或者不包含在carSource模块中创建的代理,所以做carLane = Car.anything会给你一个错误,因为Car代理可能是空的或不在任何车道。
要解决这个问题,你需要做一些事情(我会假设你在你的汽车资源中生成汽车的方式,在路上最多可以有1辆汽车...如果有更多,你必须做点别的事。
首先:创建一个拥有汽车群的新汽车代理,让我们称之为汽车(使用代理调色板中的代理...而不是“汽车类型”),初始人口为0。
此代理将是您创建的Car类型的扩展:
第二:在汽车来源中,将您的汽车添加到自定义人口:
第三:现在你可以做:carsLane = thecars.get(0).getLaneIndex();
我为你创建了这个模型......在这里找到它:https://ufile.io/5jkqu