@Override public Id chooseNextLinkId() { return delegate.chooseNextLinkId(); }
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()); } } }
@Override public void addFromUpstream(QVehicle veh) { double now = context.getSimTimer().getTimeOfDay() ; Id<Link> nextL = veh.getDriver().chooseNextLinkId(); Id<Node> leaveId = toQNode.getNode().getId() ; // e.addFromUpstream( getLink().getFromNode().getId(), leaveId, veh); e.addFromUpstream( veh); em.processEvent(new LinkEnterEvent(now, veh.getId(), getLink().getId())); }
for (HybridSimProto.Trajectory tr : trs.getTrajectoriesList()) { QVehicle veh = this.vehicles.get(tr.getId()); Id<Link> nextLinkId = veh.getDriver().chooseNextLinkId(); if (veh.getDriver().chooseNextLinkId().toString().equals(tr.getLinkId())) { QLinkInternalIAdapter ql = this.adapters.get(v.getDriver().chooseNextLinkId()); if (!ql.isAcceptingFromUpstream()) { throw new RuntimeException("DS link is full, spill-back to external is not yet implemented!");
/** * @param mobsimAgent * @param now * @return <code>true</code> if the agent was successfully moved over the node, <code>false</code> * otherwise (e.g. in case where the next link is jammed - not yet implemented) */ boolean moveAgentOverNode(final MobsimAgent mobsimAgent, final double now) { Id<Link> currentLinkId = mobsimAgent.getCurrentLinkId(); Id<Link> nextLinkId = ((MobsimDriverAgent) mobsimAgent).chooseNextLinkId(); Link currentLink = this.simEngine.getMultiModalQLinkExtension(currentLinkId).getLink(); if (nextLinkId != null) { Link nextLink = this.simEngine.getMultiModalQLinkExtension(nextLinkId).getLink(); if ( this.checkNextLinkSemantics(currentLink, nextLink, mobsimAgent) == false ) { moveToAbort(mobsimAgent, now, currentLink, nextLink); } else { // move Agent over the Node ((MobsimDriverAgent)mobsimAgent).notifyMoveOverNode(nextLinkId); this.simEngine.getMultiModalQLinkExtension(nextLinkId).addAgentFromIntersection(mobsimAgent, now); } } // --> nextLink == null else { moveToAbort(mobsimAgent, now, currentLink, null); } return true; }
Id<Link> nextLinkId = veh.getDriver().chooseNextLinkId(); Link currentLink = fromLink.getLink() ;