在事件上使用代理的方法

时间:2017-12-21 00:10:37

标签: events anylogic

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

我使用事件是错误的还是别的什么?

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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

your car agent

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

extends Car agent

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

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

generate theCar

第三:在您的活动中,您现在可以: carsLane = thecars.get(0).getLaneIndex();

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