首页 > 解决方案 > 车辆位置跟踪

问题描述

我一直在尝试跟踪特定道路上车辆的速度,这条道路有停车场。这是我为跟踪特定人群中的每辆车而编写的代码,该代码在每 15 秒运行一次的事件块中运行。

for (i = 0 ;i < car.size(); i++){
	if(car(i).isCarOn(road1)){
		car(i).id.setText(String.valueOf(i));
		vCar = autos(i).getSpeed();
		text = text + System.lineSeparator() + "Car (" + i + "):" + vCar;	
	}else if (car(i).isCarOn(road)){
		car(i).id.setText(String.valueOf(i));
		vCar = car(i).getSpeed();
		text2 = text2 + System.lineSeparator() + "Car (" + i + "):" + vCar;		
	}
}

问题是,当汽车从道路换到停车场时,它会抛出 NullPointerException 错误,有没有办法解决这个问题跟踪这些车辆的速度?如果对此错误有解释,那就太好了。

提前致谢

标签: anylogic

解决方案


好的,在您的澄清之后,几乎可以肯定会发生错误,因为汽车进入道路的速度太快并且一直在 carSource 的队列中。

当汽车在这个队列中时,即使它们存在于汽车群体中,它们也不能作为汽车被访问......这可能很奇怪,但事情就是这样。

现在,如果您想知道特定道路上的速度,您应该让汽车在该道路上行驶:

for (Car c : road.getCars(true)){//true means forward lane
    vCar=c.getSpeed();
}
for (Car c : road.getCars(false)){//false means backwards lane
    vCar=c.getSpeed();
}

尽管如此,为了继续做你正在做的事情,我很久以前就这个话题做了一个视频。不幸的是,这个视频有点长(7 分钟)而且很无聊(我正在测试我的 youtube 能力),但这与你有关问题...这是避免此 carSource 队列出现问题的技巧: https ://www.youtube.com/watch?v=EgYqraEibD4


推荐阅读