@Override public double getDepartureTime() { return this.delegate.getDepartureTime() ; }
@Override public void handleLeg(Leg leg) { startTime = leg.getDepartureTime(); score = score - (leg.getDepartureTime() + leg.getTravelTime() - startTime); startTime = Double.NaN; }
/** * @param trip * @return the departure time of the first leg of the trip */ public static double getDepartureTime(Trip trip) { // does this always make sense? Leg leg = (Leg) trip.getTripElements().get(0); return leg.getDepartureTime(); }
@Override public void handleLeg(Leg leg) { double legScore = calcLegScore(leg.getDepartureTime(), leg.getDepartureTime() + leg.getTravelTime(), leg); this.score += legScore; }
public static void setArrivalTime(Leg leg, double arrivalTime) { if (leg instanceof Leg) { final double arrTime = arrivalTime; Leg r = ((Leg) leg); r.setTravelTime( arrTime - r.getDepartureTime() ); } else if (leg instanceof LCLeg) { ((LCLeg) leg).setArrivalTime(arrivalTime); } else throw new RuntimeException("Unexpected type of leg was found: " + leg.getClass().toString() + ". Aborting!"); }
@Override public final void handleLeg(Leg leg) { startLeg(leg.getDepartureTime(), leg); endLeg(leg.getDepartureTime() + leg.getTravelTime()); }
public final void handleLeg(Leg leg) { startLeg(leg.getDepartureTime(), leg); endLeg(leg.getDepartureTime() + leg.getTravelTime()); }
@Override public void startLeg(final Leg leg, final BufferedWriter out) throws IOException { out.write("\t\t\t<leg"); out.write(" mode=\"" + leg.getMode() + "\""); if (leg.getDepartureTime() != Integer.MIN_VALUE) out.write(" dep_time=\"" + Time.writeTime(leg.getDepartureTime()) + "\""); if (leg.getTravelTime() != Integer.MIN_VALUE) out.write(" trav_time=\"" + Time.writeTime(leg.getTravelTime()) + "\""); // if (leg instanceof LegImpl){ // LegImpl l = (LegImpl)leg; // if (l.getDepartureTime() + l.getTravelTime() != Time.UNDEFINED_TIME) // out.write(" arr_time=\"" + Time.writeTime(l.getDepartureTime() + l.getTravelTime()) + "\""); // } // arrival time is in dtd, but no longer evaluated in code (according to not being in API). kai, jun'16 out.write(">\n"); }
private void startLeg(final Leg leg, final BufferedWriter out) throws IOException { out.write("\t\t\t<leg mode=\""); out.write(leg.getMode()); out.write("\""); if (!Time.isUndefinedTime(leg.getDepartureTime())) { out.write(" dep_time=\""); out.write(Time.writeTime(leg.getDepartureTime())); out.write("\""); } if (!Time.isUndefinedTime(leg.getTravelTime())) { out.write(" trav_time=\""); out.write(Time.writeTime(leg.getTravelTime())); out.write("\""); } // if (leg instanceof LegImpl) { // LegImpl l = (LegImpl)leg; // if (l.getDepartureTime() + l.getTravelTime() != Time.UNDEFINED_TIME) { // out.write(" arr_time=\""); // out.write(Time.writeTime(l.getDepartureTime() + l.getTravelTime())); // out.write("\""); // } // } // arrival time is in dtd, but no longer evaluated in code (according to not being in API). kai, jun'16 out.write(">\n"); this.attributesWriter.writeAttributes( "\t\t\t\t" , out , leg.getAttributes() ); }
/** * Removes the specified leg <b>and</b> the following act, too! If the following act is not the last one, * the following leg will be emptied to keep consistency (i.e. for the route) * * @param index */ public final void removeLeg(final int index) { if ((index % 2 == 0) || (index < 1) || (index >= getPlanElements().size() - 1)) { log.warn(this + "[index=" + index + " is wrong. nothing removed]"); } else { if (index != getPlanElements().size() - 2) { // not the last leg Leg next_leg = (Leg) getPlanElements().get(index + 2); next_leg.setDepartureTime(Time.UNDEFINED_TIME); next_leg.setTravelTime(Time.UNDEFINED_TIME); next_leg.setTravelTime( Time.UNDEFINED_TIME - next_leg.getDepartureTime() ); next_leg.setRoute(null); } getPlanElements().remove(index + 1); // following act getPlanElements().remove(index); // leg } }
public AbstractFeatureType createLegFeature(Leg leg, StyleType style) { FolderType folder = this.kmlObjectFactory.createFolderType(); folder.setName(leg.getMode() + "_" + Time.writeTime(leg.getDepartureTime())); for (Id<Link> linkId : ((NetworkRoute) leg.getRoute()).getLinkIds()) { Link l = this.network.getLinks().get(linkId); AbstractFeatureType abstractFeature = this.createLinkFeature(l, style); if (abstractFeature.getClass().equals(FolderType.class)) { folder.getAbstractFeatureGroup().add(this.kmlObjectFactory.createFolder((FolderType) abstractFeature)); } else { log.warn("Not yet implemented: Adding link KML features of type" + abstractFeature.getClass()); } } for (Node n : RouteUtils.getNodes((NetworkRoute) leg.getRoute(), this.network)) { AbstractFeatureType abstractFeature = this.createNodeFeature(n, style); if (abstractFeature.getClass().equals(PlacemarkType.class)) { folder.getAbstractFeatureGroup().add(this.kmlObjectFactory.createPlacemark((PlacemarkType) abstractFeature)); } else { log.warn("Not yet implemented: Adding node KML features of type" + abstractFeature.getClass()); } } return folder; }
public LegSerializable(Leg leg) { departureTime = leg.getDepartureTime(); mode = leg.getMode(); travelTime = leg.getTravelTime(); if (leg.getRoute() != null) { if (leg.getMode().equals(TransportMode.car)) route = new NetworkRouteSerializable((NetworkRoute) leg.getRoute()); else route = new GenericRouteSerializable(leg.getRoute()); } }
protected double computeTravelTime(Person person, Activity fromAct, Activity toAct) { Leg leg = PopulationUtils.createLeg(TransportMode.car); leg.setDepartureTime(0.0); leg.setTravelTime(0.0); leg.setTravelTime( 0.0 - leg.getDepartureTime() ); PlanRouterAdapter.handleLeg(router, person, leg, fromAct, toAct, fromAct.getEndTime()); return leg.getTravelTime(); }
private static void fillInLegTravelTimes( final double departureTime, final List<? extends PlanElement> trip ) { double time = departureTime; for ( PlanElement pe : trip ) { if ( !(pe instanceof Leg) ) continue; final Leg leg = (Leg) pe; if ( leg.getDepartureTime() == Time.UNDEFINED_TIME ) { leg.setDepartureTime( time ); } if ( leg.getTravelTime() == Time.UNDEFINED_TIME ) { leg.setTravelTime( leg.getRoute().getTravelTime() ); } time += leg.getTravelTime(); } }
@Deprecated // use TripRouter instead. kai, dec'13 public static double handleLeg(TripRouter tripRouter, final Person person, final Leg leg, final Activity fromAct, final Activity toAct, final double depTime) { List<? extends PlanElement> trip = tripRouter.calcRoute( leg.getMode(), new ActivityWrapperFacility( fromAct ), new ActivityWrapperFacility( toAct ), depTime, person); if ( trip.size() != 1 ) { throw new IllegalStateException( "This method can only be used with "+ "routing modules returning single legs. Got the following trip "+ "for mode "+leg.getMode()+": "+trip ); } Leg tripLeg = (Leg) trip.get( 0 ); leg.setRoute( tripLeg.getRoute() ); leg.setTravelTime( tripLeg.getTravelTime() ); leg.setDepartureTime( tripLeg.getDepartureTime() ); return tripLeg.getRoute() != null && tripLeg.getRoute().getTravelTime() != Time.UNDEFINED_TIME ? tripLeg.getRoute().getTravelTime() : tripLeg.getTravelTime(); }
public static void copyFromTo(Leg in, Leg out) { out.setMode( in.getMode() ); out.setDepartureTime(in.getDepartureTime()); out.setTravelTime(in.getTravelTime()); if (in.getRoute() != null) { out.setRoute(in.getRoute().clone()); } AttributesUtils.copyAttributesFromTo( in , out ); }
private static void copyPlanFieldsToFrom(Plan planTarget, LCPlan planTemplate) { planTarget.setScore(planTemplate.getScore()); int actLegIndex = 0; for (PlanElement pe : planTarget.getPlanElements()) { if (pe instanceof Activity) { LCActivity actTemplate = ((LCActivity) planTemplate.getPlanElements().get(actLegIndex)); ((Activity) pe).setEndTime(actTemplate.getEndTime()); ((Activity) pe).setCoord(actTemplate.getCoord()); ((Activity) pe).setFacilityId(actTemplate.getFacilityId()); ((Activity) pe).setLinkId(actTemplate.getLinkId()); ((Activity) pe).setMaximumDuration(actTemplate.getMaximumDuration()); ((Activity) pe).setStartTime(actTemplate.getStartTime()); ((Activity) pe).setType(actTemplate.getType()); } else if (pe instanceof Leg) { LCLeg legTemplate = ((LCLeg) planTemplate.getPlanElements().get(actLegIndex)); Leg r = ((Leg) pe); r.setTravelTime( legTemplate.getArrivalTime() - r.getDepartureTime() ); ((Leg) pe).setDepartureTime(legTemplate.getDepartureTime()); ((Leg) pe).setMode(legTemplate.getMode()); ((Leg) pe).setRoute(legTemplate.getRoute()); ((Leg) pe).setTravelTime(legTemplate.getTravelTime()); } else throw new RuntimeException("Unexpected PlanElement type was found: " + pe.getClass().toString() + ". Aborting!"); actLegIndex++; } }
/* package */ double routeLeg(Person person, Leg leg, Activity fromAct, Activity toAct, double depTime) { // make simple assumption about distance and walking speed final Coord fromActCoord = fromAct.getCoord(); Gbl.assertNotNull( fromActCoord ); final Coord toActCoord = toAct.getCoord(); Gbl.assertNotNull( toActCoord ); double dist = CoordUtils.calcEuclideanDistance( fromActCoord, toActCoord ); // create an empty route, but with realistic travel time Route route = this.populationFactory.getRouteFactories().createRoute(Route.class, fromAct.getLinkId(), toAct.getLinkId()); double estimatedNetworkDistance = dist * this.beelineDistanceFactor; int travTime = (int) (estimatedNetworkDistance / this.networkTravelSpeed); route.setTravelTime(travTime); route.setDistance(estimatedNetworkDistance); leg.setRoute(route); leg.setDepartureTime(depTime); leg.setTravelTime(travTime); Leg r = (leg); r.setTravelTime( depTime + travTime - r.getDepartureTime() ); // yy something needs to be done once there are alternative implementations of the interface. kai, apr'10 return travTime; }
@Test public void testCreatesLeg() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, Id.create("1", Person.class), Id.create("l1", Link.class), "walk")); eventsToLegs.handleEvent(new TeleportationArrivalEvent(30.0, Id.create("1", Person.class), 50.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, Id.create("1", Person.class), Id.create("l2", Link.class), "walk")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0, lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0, lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(50.0, lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }
@Test public void testCreatesLegWithRoute() { Scenario scenario = createTriangularNetwork(); EventsToLegs eventsToLegs = new EventsToLegs(scenario); RememberingLegHandler lh = new RememberingLegHandler(); eventsToLegs.addLegHandler(lh); Id<Person> agentId = Id.create("1", Person.class); Id<Vehicle> vehId = Id.create("veh1", Vehicle.class); eventsToLegs.handleEvent(new PersonDepartureEvent(10.0, agentId, Id.createLinkId("l1"), "car")); eventsToLegs.handleEvent(new PersonEntersVehicleEvent(10.0, agentId, vehId)); eventsToLegs.handleEvent(new VehicleEntersTrafficEvent(10.0, agentId, Id.createLinkId("l1"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new LinkLeaveEvent(10.0, vehId, Id.createLinkId("l1"))); eventsToLegs.handleEvent(new LinkEnterEvent(11.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkLeaveEvent(15.0, vehId, Id.createLinkId("l2"))); eventsToLegs.handleEvent(new LinkEnterEvent(16.0, vehId, Id.createLinkId("l3"))); eventsToLegs.handleEvent(new VehicleLeavesTrafficEvent(30.0, agentId, Id.createLinkId("l3"), vehId, "car", 1.0)); eventsToLegs.handleEvent(new PersonArrivalEvent(30.0, agentId, Id.createLinkId("l3"), "car")); Assert.assertNotNull(lh.handledLeg); Assert.assertEquals(10.0,lh.handledLeg.getLeg().getDepartureTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getTravelTime(), 1e-9); Assert.assertEquals(20.0,lh.handledLeg.getLeg().getRoute().getTravelTime(), 1e-9); Assert.assertEquals(550.0,lh.handledLeg.getLeg().getRoute().getDistance(), 1e-9); }