private void scheduleEndLegMessage(double time) { // move to first link in next leg and schedule an end leg message vehicle.moveToFirstLinkInNextLeg(); Road road = Road.getRoad(vehicle.getCurrentLinkId()); vehicle.scheduleEndLegMessage(time, road); }
@Override public void handleMessage() { // enter the next road Road road = Road.getRoad(vehicle.getCurrentLinkId()); road.enterRoad(vehicle, getMessageArrivalTime()); }
public void scheduleLeavePreviousRoadMessage(double scheduleTime) { Road previousRoad = null; Id<Link> previousLinkId = null; /* * we need to handle the first road in a leg specially, because the load * to be left is accessed over the last act performed instead of the leg */ if (this.getLinkIndex() == 0) { Plan plan = ownerPerson.getSelectedPlan(); List<? extends PlanElement> actsLegs = plan.getPlanElements(); previousLinkId = ((Activity) actsLegs.get(legIndex - 1)).getLinkId(); previousRoad = Road.getRoad(previousLinkId); } else if (this.getLinkIndex() >= 1) { previousLinkId = this.getCurrentLinkRoute()[this.getLinkIndex() - 1]; previousRoad = Road.getRoad(previousLinkId); } else { log.error("Some thing is wrong with the simulation: Why is this.getLinkIndex() negative"); } scheduleLeaveRoadMessage(scheduleTime, previousRoad); }
Road road = Road.getRoad(getCurrentLinkId());
@Override public void handleMessage() { if (vehicle.isCurrentLegFinished()) { /* * the leg is completed, try to enter the last link but do not enter * it (just wait, until you have clearance for enter and then leave * the road) */ vehicle.initiateEndingLegMode(); vehicle.moveToFirstLinkInNextLeg(); Road road = Road.getRoad(vehicle.getCurrentLinkId()); road.enterRequest(vehicle, getMessageArrivalTime()); } else if (!vehicle.isCurrentLegFinished()) { // if leg is not finished yet vehicle.moveToNextLinkInLeg(); Road nextRoad = Road.getRoad(vehicle.getCurrentLinkId()); nextRoad.enterRequest(vehicle, getMessageArrivalTime()); } }
@Override public void handleMessage() { // if current leg is in car mode, then enter request in first road if (vehicle.getCurrentLeg().getMode().equals(TransportMode.car)) { // if empty leg, then end leg, else simulate leg if (vehicle.getCurrentLinkRoute().length == 0) { // move to first link in next leg and schedule an end leg // message // duration of leg = 0 (departure and arrival time is the same) scheduleEndLegMessage(getMessageArrivalTime()); } else { // start the new leg Road road = Road.getRoad(vehicle.getCurrentLinkId()); road.enterRequest(vehicle, getMessageArrivalTime()); } } else { scheduleEndLegMessage(getMessageArrivalTime() + vehicle.getCurrentLeg().getTravelTime()); } }
Road road = Road.getRoad(this.vehicle.getCurrentLinkId());