在事件上使用代理的方法

问题描述 投票:0回答:1

我使用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

我使用错误的事件还是其他的事情?

谢谢你的帮助。

events anylogic
1个回答
0
投票

这会让你感到困惑,但是你在模型中定义的Agent Car不是或者不包含在carSource模块中创建的代理,所以做carLane = Car.anything会给你一个错误,因为Car代理可能是空的或不在任何车道。

要解决这个问题,你需要做一些事情(我会假设你在你的汽车资源中生成汽车的方式,在路上最多可以有1辆汽车...如果有更多,你必须做点别的事。

首先:创建一个拥有汽车群的新汽车代理,让我们称之为汽车(使用代理调色板中的代理...而不是“汽车类型”),初始人口为0。

your car agent

此代理将是您创建的Car类型的扩展:

extends Car agent

第二:在汽车来源中,将您的汽车添加到自定义人口:

car population此外,您的汽车来源将生成汽车类型的汽车:

generate theCar

第三:现在你可以做:carsLane = thecars.get(0).getLaneIndex();

我为你创建了这个模型......在这里找到它:https://ufile.io/5jkqu

© www.soinside.com 2019 - 2024. All rights reserved.