Java 验证moveTo()方法中的异常
我的车辆在无事可做时会随机移动,并寻找新的工作,但有时,在碰撞之前,会出现以下例外情况:Java 验证moveTo()方法中的异常,java,rinsim,Java,Rinsim,我的车辆在无事可做时会随机移动,并寻找新的工作,但有时,在碰撞之前,会出现以下例外情况: Exception in thread "Thread-0" com.google.common.base.VerifyException: [(14.11111111111111,0.0), (16.0,0.0), -0.36111111111111116] at com.google.common.base.Verify.verify(Verify.java:462) at com.g
Exception in thread "Thread-0" com.google.common.base.VerifyException: [(14.11111111111111,0.0), (16.0,0.0), -0.36111111111111116]
at com.google.common.base.Verify.verify(Verify.java:462)
at com.github.rinde.rinsim.core.model.road.CollisionGraphRoadModelImpl.computeTravelableDistance(CollisionGraphRoadModelImpl.java:138)
at com.github.rinde.rinsim.core.model.road.GraphRoadModelImpl.doFollowPath(GraphRoadModelImpl.java:178)
at com.github.rinde.rinsim.core.model.road.CollisionGraphRoadModelImpl.doFollowPath(CollisionGraphRoadModelImpl.java:82)
at com.github.rinde.rinsim.core.model.road.AbstractRoadModel.moveTo(AbstractRoadModel.java:133)
at com.github.rinde.rinsim.core.model.road.AbstractRoadModel.moveTo(AbstractRoadModel.java:102)
at project.agents.AgvAgent.movementTick(AgvAgent.java:281)
at project.agents.AgvAgent.tickImpl(AgvAgent.java:213)
at com.github.rinde.rinsim.core.model.pdp.Vehicle.tick(Vehicle.java:55)
at com.github.rinde.rinsim.core.model.time.TimeModel.tickImpl(TimeModel.java:139)
at com.github.rinde.rinsim.core.model.time.SimulatedTimeModel.doStart(SimulatedTimeModel.java:32)
at com.github.rinde.rinsim.core.model.time.TimeModel.start(TimeModel.java:94)
at com.github.rinde.rinsim.ui.SimulationViewer$5.run(SimulationViewer.java:401)
以下是移动到目的地(tickImpl方法的一部分)以及选择新目的地和路径的代码:
CollisionGraphRoadModelImpl model = (CollisionGraphRoadModelImpl) getRoadModel();
if (!randomDestination.isPresent()) {
nextRandomDestination(model);
}
getRoadModel().moveTo(this, randomDestination.get(), time);
if (model.getPosition(this).equals(randomDestination.get())) {
nextRandomDestination(model);
}
void nextRandomDestination(CollisionGraphRoadModelImpl model) {
randomDestination = Optional.of(model.getRandomPosition(rng));
Point end = randomDestination.get();
Point start = model.getPosition(this);
if (model.getConnection(this).isPresent()) {
start = model.getConnection(this).get().to();
}
randomPath = new LinkedList<>(model.getShortestPathTo(start, end));
}
CollisionGraphRoadModelImpl模型=(CollisionGraphRoadModelImpl)getRoadModel();
如果(!randomDestination.isPresent()){
nextRandomDestination(模型);
}
getRoadModel().moveTo(这是randomDestination.get(),时间);
if(model.getPosition(this.equals)(randomDestination.get()){
nextRandomDestination(模型);
}
void nextRandomDestination(碰撞图加载模型Impl模型){
randomDestination=可选的.of(model.getRandomPosition(rng));
Point end=randomDestination.get();
点开始=model.getPosition(此);
if(model.getConnection(this.isPresent()){
start=model.getConnection(this.get().to();
}
randomPath=newLinkedList(model.getShortestPathTo(start,end));
}
我尝试移动到该点,并使用
RoadModel.followPath()
跟随路径。我还从AgvAgent
和AgvExample
类复制了一些代码,但即使对它们有效,在我的情况下也不起作用。我确实在GraphRoadModelImpl.doFollowPath()
中找到了一些关于一些bug的评论。我想知道有没有什么解决办法?还是有什么明显的东西我遗漏了 结果是,在RinSim中有一个bug与导致这种行为的舍入错误有关。此错误已于修复。您是否可以发布一些代码(即一个最小的工作示例)来演示您描述的问题?下面是一个最小的工作示例:运行main应该会产生错误。