@Override public void setVehicleId(final Id vehicleId) { netRoute.setVehicleId(vehicleId); }
private void changeLegModeTo(final List<PlanElement> tour, final String newMode) { for (PlanElement pe : tour) { if (pe instanceof Leg) { Leg leg = ((Leg) pe); leg.setMode(newMode); Route route = leg.getRoute(); if(route!=null && route instanceof NetworkRoute) { ((NetworkRoute) route).setVehicleId(null); } } } }
private static void transmitVehicleInformation( final List<Trip> oldTrips, final List<Trip> newTrips) { assert oldTrips.size() == newTrips.size(); final Iterator<Trip> oldIter = oldTrips.iterator(); final Iterator<Trip> newIter = newTrips.iterator(); while ( oldIter.hasNext() ) { final Trip old = oldIter.next(); final Trip young = newIter.next(); final Id oldVeh = getVehicleId( old ); for (Leg l : young.getLegsOnly()) { if ( !(l.getRoute() instanceof NetworkRoute) ) continue; ((NetworkRoute) l.getRoute()).setVehicleId( oldVeh ); } } }
@Override public void run(final Plan plan) { final List<Id> vehs = new ArrayList<Id>( vehicleRessources.identifyVehiclesUsableForAgent( plan.getPerson().getId() ) ); // make sure order is deterministic Collections.sort( vehs ); final List<Subtour> rootSubtours = getRootSubtoursWithMode( plan ); if ( rootSubtours.isEmpty() ) return; final Subtour toHandle = rootSubtours.get( random.nextInt( rootSubtours.size() ) ); final Id veh = vehs.get( random.nextInt( vehs.size() ) ); for ( Trip t : toHandle.getTrips() ) { if ( !identifyMainMode( t ).equals( mode ) ) continue; for ( Leg l : t.getLegsOnly() ) { if ( !(l.getRoute() instanceof NetworkRoute) ) continue; final NetworkRoute route = (NetworkRoute) l.getRoute(); route.setVehicleId( veh ); } } }
private void setRandomLegMode(final Leg leg, final boolean forbidCar) { leg.setMode(chooseModeOtherThan(leg.getMode(), forbidCar)); Route route = leg.getRoute() ; if ( route != null && route instanceof NetworkRoute) { ((NetworkRoute)route).setVehicleId(null); } }
((NetworkRoute)this.currRoute).setVehicleId(Id.create(atts.getValue("vehicleRefId"), Vehicle.class));
((NetworkRoute)this.currRoute).setVehicleId(Id.create(vehicleRefId, Vehicle.class));
@Override public Route getRoute(String mode) { Id<Link> startLinkId = Id.createLinkId(startLinkIdString); Id<Link> endLinkId = Id.createLinkId(endLinkIdString); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(startLinkId, endLinkId); route.setDistance(distance); List<Id<Link>> linkIds = new ArrayList<>(); for (String linkId : linkIdStrings) linkIds.add(Id.createLinkId(linkId)); route.setLinkIds(startLinkId, linkIds, endLinkId); route.setTravelCost(travelCost); route.setTravelTime(travelTime); route.setVehicleId(vehicleIdString == null ? null : Id.create(vehicleIdString, Vehicle.class)); return route; }
private void allocateOneVehiclePerPlan( final List<Plan> plansWithVehicles, final Map<Id, Integer> preservedVehiclesCounts) { // make the allocation random by shuffling the order in which the plans // are examined Collections.shuffle( plansWithVehicles , random ); final Map<Id, Id> allocation = new LinkedHashMap<Id, Id>(); allocate( plansWithVehicles , allocation , preservedVehiclesCounts ); for ( Plan p : plansWithVehicles ) { final Id v = allocation.get( p.getPerson().getId() ); assert v != null; for ( PlanElement pe : p.getPlanElements() ) { if ( !(pe instanceof Leg) ) continue; final Leg leg = (Leg) pe; if ( !modes.contains( leg.getMode() ) ) continue; if ( allowNullRoutes && leg.getRoute() == null ) { // this is not so nice... leg.setRoute( new VehicleOnlyNetworkRoute() ); } if ( !( leg.getRoute() instanceof NetworkRoute ) ) { throw new RuntimeException( "route for mode "+leg.getMode()+" has non-network route "+leg.getRoute() ); } ((NetworkRoute) leg.getRoute()).setVehicleId( v ); } } }
private void processAllocation(final List<SubtourRecord> vehicularTours) { for ( final SubtourRecord r : vehicularTours ) { for ( final Trip t : r.subtour.getTrips() ) { for ( final Leg leg : t.getLegsOnly() ) { if ( !vehicularModes.contains( leg.getMode() ) ) continue; if ( allowNullRoutes && leg.getRoute() == null ) { // this is not so nice... leg.setRoute( new VehicleOnlyNetworkRoute() ); } if ( !( leg.getRoute() instanceof NetworkRoute ) ) { throw new RuntimeException( "route for mode "+leg.getMode()+" has non-network route "+leg.getRoute() ); } ((NetworkRoute) leg.getRoute()).setVehicleId( r.allocatedVehicle ); } } } }
vehicleId = PrepareForSimImpl.obtainAutomaticVehicleId(person.getId(), leg.getMode(), qsim.getScenario().getConfig().qsim() ); if(route!=null) { route.setVehicleId( vehicleId ); if (vehicleId == null && route != null) { vehicleId = seenModes.get(leg.getMode()); route.setVehicleId(vehicleId);
/** * If the old trip had vehicles set in its network routes, and it used a single vehicle, * and if the new trip does not come with vehicles set in its network routes, * then put the vehicle of the old trip into the network routes of the new trip. * @param oldTrip The old trip * @param newTrip The new trip */ private static void putVehicleFromOldTripIntoNewTripIfMeaningful(Trip oldTrip, List<? extends PlanElement> newTrip) { Id<Vehicle> oldVehicleId = getUniqueVehicleId(oldTrip); if (oldVehicleId != null) { for (Leg leg : TripStructureUtils.getLegs(newTrip)) { if (leg.getRoute() instanceof NetworkRoute) { if (((NetworkRoute) leg.getRoute()).getVehicleId() == null) { ((NetworkRoute) leg.getRoute()).setVehicleId(oldVehicleId); } } } } }
/** * * @param event */ public void handleEvent(PersonArrivalEvent event) { currentLeg.setTravelTime( event.getTime() - currentLeg.getDepartureTime() ); double travelTime = currentLeg.getDepartureTime() + currentLeg.getTravelTime() - currentLeg.getDepartureTime(); currentLeg.setTravelTime(travelTime); if (currentRoute.size() > 1) { NetworkRoute networkRoute = RouteUtils.createNetworkRoute(currentRoute, null); networkRoute.setTravelTime(travelTime); networkRoute.setVehicleId(getVehicle().getVehicleId()); currentLeg.setRoute(networkRoute); currentRoute = null; } else { Id<Link> startLink; if(currentRoute.size() != 0){ startLink = currentRoute.get(0); } else{ startLink = event.getLinkId(); } Route genericRoute = RouteUtils.createGenericRouteImpl(startLink, event.getLinkId()); genericRoute.setDistance(0.0); currentLeg.setRoute(genericRoute); } scoringFunction.handleLeg(currentLeg); }
@Test public void testVehicleId() { Network network = createTestNetwork(); Id<Link> link0 = Id.create("0", Link.class); Id<Link> link15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(link0, link15, network); Assert.assertNull(route.getVehicleId()); Id<Vehicle> id = Id.create("8134", Vehicle.class); route.setVehicleId(id); Assert.assertEquals(id, route.getVehicleId()); route.setVehicleId(null); Assert.assertNull(route.getVehicleId()); }
@Override public List<? extends PlanElement> calcRoute(Facility fromFacility, Facility toFacility, double departureTime, Person person) { List<? extends PlanElement> trip = DefaultRoutingModules.createPureNetworkRouter("car", scenario.getPopulation().getFactory(), scenario.getNetwork(), leastCostAlgoFactory.createPathCalculator(scenario.getNetwork(), disutilityFactory.createTravelDisutility(travelTime), travelTime) ).calcRoute(fromFacility, toFacility, departureTime, person); ((NetworkRoute) TripStructureUtils.getLegs(trip).get(0).getRoute()).setVehicleId(newVehicleId); return trip; }
@Test public void passesVehicleFromOldPlan() { final Config config = ConfigUtils.loadConfig(IOUtils.newUrl(ExamplesUtils.getTestScenarioURL("equil"), "config.xml")); config.plans().setInputFile("plans1.xml"); final Scenario scenario = ScenarioUtils.loadScenario(config); com.google.inject.Injector injector = Injector.createInjector(scenario.getConfig(), new AbstractModule() { @Override public void install() { install(new TripRouterModule()); install(new ScenarioByInstanceModule(scenario)); addTravelTimeBinding("car").toInstance(new FreespeedTravelTimeAndDisutility(config.planCalcScore())); addTravelDisutilityFactoryBinding("car").toInstance(new OnlyTimeDependentTravelDisutilityFactory()); } }); TripRouter tripRouter = injector.getInstance(TripRouter.class); PlanRouter testee = new PlanRouter(tripRouter); Plan plan = scenario.getPopulation().getPersons().get(Id.createPersonId(1)).getSelectedPlan(); Id<Vehicle> vehicleId = Id.create(1, Vehicle.class); ((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).setVehicleId(vehicleId); testee.run(plan); if ( !config.plansCalcRoute().isInsertingAccessEgressWalk() ) { Assert.assertEquals("Vehicle Id transferred to new Plan", vehicleId, ((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).getVehicleId()); } else { Assert.assertEquals("Vehicle Id transferred to new Plan", vehicleId, ((NetworkRoute) TripStructureUtils.getLegs(plan).get(1).getRoute()).getVehicleId()); // yy I changed get(0) to get(1) since in the input file there is no intervening walk leg, but in the output there is. kai, feb'16 } }
((NetworkRoute) TripStructureUtils.getLegs(plan).get(0).getRoute()).setVehicleId(oldVehicleId);
private Person createPerson2(Id<Person> personId, Fixture f) { final Id<Person> id = personId; Person p = PopulationUtils.getFactory().createPerson(id); Plan plan = PopulationUtils.createPlan(); p.addPlan(plan); plan.addActivity(PopulationUtils.createActivityFromLinkId("home", f.link1.getId())); Leg leg = PopulationUtils.createLeg(TransportMode.car); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.link1.getId(), f.link2.getId()); route.setVehicleId(f.basicVehicle.getId()); leg.setRoute(route); plan.addLeg(leg); plan.addActivity(PopulationUtils.createActivityFromLinkId("work", f.link2.getId())); return p; }
Leg leg = PopulationUtils.createLeg(TransportMode.car); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(f.link1.getId(), f.link2.getId()); route.setVehicleId(f.basicVehicle.getId()); leg.setRoute(route); plan.addLeg(leg);
NetworkRoute route1 = f.scenario.getPopulation().getFactory().getRouteFactories().createRoute(NetworkRoute.class, f.link2.getId(), f.link3.getId()); route1.setLinkIds(f.link2.getId(), f.linkIdsNone, f.link3.getId()); route1.setVehicleId(Id.create(2, Vehicle.class)); l1.setRoute(route1); PopulationUtils.createAndAddActivityFromLinkId(plan, "w", f.link3.getId());