public void addFromUpstream(QVehicle veh) { this.ql.getAcceptingQLane().addFromUpstream(veh); } }
private void moveBufferToNextLane(QLaneI qlane) { QVehicle veh; while (!qlane.isNotOfferingVehicle()) { veh = qlane.getFirstVehicle(); Id<Link> toLinkId = veh.getDriver().chooseNextLinkId(); QLaneI nextQueue = this.chooseNextLane(qlane, toLinkId); if (nextQueue != null) { if (nextQueue.isAcceptingFromUpstream()) { qlane.popFirstVehicle(); nextQueue.addFromUpstream(veh); } else { break; } } else { StringBuilder b = new StringBuilder(); b.append("Person Id: ").append(veh.getDriver().getId()); b.append(" is on Lane Id ").append(qlane.getId()); b.append(" on Link Id ").append(this.getLink().getId()); b.append(" and wants to drive to Link Id ").append(toLinkId); b.append(" but there is no Lane leading to that Link!"); log.error(b.toString()); throw new IllegalStateException(b.toString()); } } }
private void moveVehicleFromInlinkToOutlink(final QVehicle veh, Id<Link> currentLinkId, final QLaneI fromLane, Id<Link> nextLinkId, QLaneI nextQueueLane) { double now = this.context.getSimTimer().getTimeOfDay() ; fromLane.popFirstVehicle(); // --> // network.simEngine.getMobsim().getEventsManager().processEvent(new LaneLeaveEvent(now, veh.getId(), currentLinkId, fromLane.getId())); this.context.getEventsManager().processEvent(new LinkLeaveEvent(now, veh.getId(), currentLinkId)); // <-- veh.getDriver().notifyMoveOverNode( nextLinkId ); // --> this.context.getEventsManager().processEvent(new LinkEnterEvent(now, veh.getId(), nextLinkId )); // <-- nextQueueLane.addFromUpstream(veh); }
@Test public void testAdd() { Fixture f = new Fixture(isUsingFastCapacityUpdate); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); QVehicle v = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create("1", Person.class)); p.addPlan(PopulationUtils.createPlan()); v.setDriver(createAndInsertPersonDriverAgentImpl(p, f.sim)); f.qlink1.getAcceptingQLane().addFromUpstream(v); assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertFalse(f.qlink1.getAcceptingQLane().isAcceptingFromUpstream()); assertTrue(f.qlink1.isNotOfferingVehicle()); }
f.qlink2.getAcceptingQLane().addFromUpstream(veh5); // used vehicle equivalents: 5 assertTrue(f.qlink2.getAcceptingQLane().isAcceptingFromUpstream()); f.qlink2.getAcceptingQLane().addFromUpstream(veh5); // used vehicle equivalents: 10 assertFalse(f.qlink2.getAcceptingQLane().isAcceptingFromUpstream()); assertTrue(f.qlink2.isNotOfferingVehicle()); f.qlink2.getAcceptingQLane().addFromUpstream(veh25); // used vehicle equivalents: 7.5 f.qlink2.getAcceptingQLane().addFromUpstream(veh1); // used vehicle equivalents: 8.5 f.qlink2.getAcceptingQLane().addFromUpstream(veh1); // used vehicle equivalents: 9.5 assertTrue(f.qlink2.getAcceptingQLane().isAcceptingFromUpstream()); f.qlink2.getAcceptingQLane().addFromUpstream(veh1); // used vehicle equivalents: 10.5 assertFalse(f.qlink2.getAcceptingQLane().isAcceptingFromUpstream()); f.qlink2.getAcceptingQLane().addFromUpstream(veh1); // used vehicle equivalents: 6.5 f.qlink2.getAcceptingQLane().addFromUpstream(veh25); // used vehicle equivalents: 9.0 f.qlink2.getAcceptingQLane().addFromUpstream(veh1); // used vehicle equivalents: 10.0 assertFalse(f.qlink2.getAcceptingQLane().isAcceptingFromUpstream());
f.qlink1.getAcceptingQLane().addFromUpstream(veh); assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size());
assertEquals(0, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); qlink.getAcceptingQLane().addFromUpstream(v1); assertEquals(1, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertTrue(qlink.isNotOfferingVehicle()); assertFalse(qlink.isNotOfferingVehicle()); qlink.getAcceptingQLane().addFromUpstream(v2); assertEquals(2, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertFalse(qlink.isNotOfferingVehicle());