public static List<Trip> getTrips( final Plan plan, final StageActivityTypes stageActivities) { return getTrips( plan.getPlanElements(), stageActivities); }
private static Trip getTripWithLeg( final Plan plan, final Leg leg, final StageActivityTypes stages) { for ( Trip t : TripStructureUtils.getTrips( plan , stages ) ) { if ( t.getTripElements().contains( leg ) ) return t; } throw new RuntimeException( plan.getPlanElements() +" doesn't contain "+leg ); }
private void replanCurrentTripFromStageActivity(final List<PlanElement> tripElements, int tripElementsIndex, MobsimAgent agent, String mainMode) { // String mainMode = tripRouter.getMainModeIdentifier().identifyMainMode(tripElements) ; // yyyy I wonder what this will do if we are already at the egress stage. kai, oct'17 List<PlanElement> subTripPlanElements = tripElements.subList(tripElementsIndex,tripElements.size()-1) ; Trip subTrip = TripStructureUtils.getTrips(subTripPlanElements, tripRouter.getStageActivityTypes()).get(0) ; final double dpTime = agent.getActivityEndTime() ; this.replanFutureTrip(subTrip, WithinDayAgentUtils.getModifiablePlan(agent), mainMode, dpTime ) ; } // future:
@Override public void run(final Plan plan) { final List<PlanElement> planElements = plan.getPlanElements(); final List<Trip> trips = TripStructureUtils.getTrips( plan , blackList ); for ( Trip trip : trips ) { final List<PlanElement> fullTrip = planElements.subList( planElements.indexOf( trip.getOriginActivity() ) + 1, planElements.indexOf( trip.getDestinationActivity() )); final String mode = mainModeIdentifier.identifyMainMode( fullTrip ); fullTrip.clear(); fullTrip.add( PopulationUtils.createLeg(mode) ); if ( fullTrip.size() != 1 ) throw new RuntimeException( fullTrip.toString() ); } } }
private List<TripStructureUtils.Trip> getDriverTrip( final JointTrip toRemove, final Plan driverPlan) { final TripStructureUtils.Trip driverTrip = getTripWithLeg( driverPlan , toRemove.getDriverLegs().get( 0 ) , stagesWithJointTypes ); assert driverTrip.getTripElements().containsAll( toRemove.getDriverLegs() ); final List<PlanElement> elements = new ArrayList<PlanElement>(); elements.add( driverTrip.getOriginActivity() ); elements.addAll( driverTrip.getTripElements() ); elements.add( driverTrip.getDestinationActivity() ); return TripStructureUtils.getTrips( elements , stages ); }
public Trip findTripAtPlanElement(MobsimAgent agent, PlanElement pe) { log.debug("plan element to be found=" + pe ) ; List<Trip> trips = TripStructureUtils.getTrips( WithinDayAgentUtils.getModifiablePlan(agent), tripRouter.getStageActivityTypes() ) ; for ( Trip trip : trips ) { for ( PlanElement te : trip.getTripElements() ) { log.debug("trip element to be compared with=" + te ) ; if ( te==pe ) { log.debug("found trip element") ; return trip; } } } throw new ReplanningException("trip not found") ; } public Trip findTripAtPlanElementIndex( MobsimAgent agent, int index ) {
public static Trip findTripStartingAtActivity( final Activity activity, final Plan plan, StageActivityTypes stageActivities ) { Gbl.assertIf( ! stageActivities.isStageActivity( activity.getType()) ) ; List<Trip> trips = getTrips( plan, stageActivities ) ; for ( Trip trip : trips ) { if ( trip.getOriginActivity().equals( activity ) ) { return trip ; } } return null ; }
@Override public void run(final Plan plan) { final List<Trip> oldTrips = TripStructureUtils.getTrips( plan, getTripRouter().getStageActivityTypes() ); delegate.run( plan ); final List<Trip> newTrips = TripStructureUtils.getTrips( plan, getTripRouter().getStageActivityTypes() ); transmitVehicleInformation( oldTrips, newTrips); }
public static Trip findTripEndingAtActivity(Activity activity, Plan plan, StageActivityTypes stageActivities ) { Gbl.assertIf( ! stageActivities.isStageActivity( activity.getType()) ) ; List<Trip> trips = getTrips(plan.getPlanElements(), stageActivities ) ; for ( Trip trip : trips ) { if ( activity.equals( trip.getDestinationActivity() ) ) { return trip; } } return null ; } public static Trip findTripStartingAtActivity( final Activity activity, final Plan plan, StageActivityTypes stageActivities ) {
public static Trip findCurrentTrip( PlanElement currentPlanElement, Plan plan, StageActivityTypes stageActivities ) { if ( currentPlanElement instanceof Activity ) { Gbl.assertIf( stageActivities.isStageActivity( ((Activity)currentPlanElement).getType() ) ) ; } List<Trip> trips = getTrips(plan.getPlanElements(), stageActivities ) ; for ( Trip trip : trips ) { int index = trip.getTripElements().indexOf( currentPlanElement ) ; if ( index != -1 ) { return trip ; } } return null ; } public static Trip findTripEndingAtActivity(Activity activity, Plan plan, StageActivityTypes stageActivities ) {
private Subchain getRandomSubchain( final Plan plan, final Collection<String> types) { final List<Subchain> potentialSubchains = new ArrayList<Subchain>(); Trip accessTrip = null; for ( Trip trip : TripStructureUtils.getTrips( plan , stages ) ) { if ( accessTrip != null ) { assert accessTrip.getDestinationActivity() == trip.getOriginActivity() : accessTrip.getDestinationActivity()+" != "+trip.getOriginActivity(); potentialSubchains.add( new Subchain( accessTrip.getOriginActivity(), accessTrip.getDestinationActivity(), trip.getDestinationActivity() ) ); } accessTrip = types.contains( trip.getDestinationActivity().getType() ) ? trip : null; } return potentialSubchains.isEmpty() ? null : potentialSubchains.get( random.nextInt( potentialSubchains.size() ) ); }
determineChoiceSet( homeLocation, TripStructureUtils.getTrips(plan, stageActivityTypes), TripStructureUtils.getSubtours( plan,
private double getProbRemoval( final JointPlan plan, final List<Id<Person>> agentsToIgnore) { int countPassengers = 0; int countEgoists = 0; final CompositeStageActivityTypes stageTypes = new CompositeStageActivityTypes(); stageTypes.addActivityTypes( tripRouter.getStageActivityTypes() ); stageTypes.addActivityTypes( JointActingTypes.JOINT_STAGE_ACTS ); for (Plan indivPlan : plan.getIndividualPlans().values()) { if ( agentsToIgnore.contains( indivPlan.getPerson().getId() ) ) continue; // parse trips, and count "egoists" (non-driver non-passenger) and // passengers. Some care is needed: joint trips are not identified as // trips by the router! for ( Trip trip : TripStructureUtils.getTrips( indivPlan , stageTypes ) ) { if ( tripContainsOneOfThoseModes( trip , Collections.singleton( JointActingTypes.PASSENGER ) ) ) countPassengers++; if ( !tripContainsOneOfThoseModes( trip , JointActingTypes.JOINT_MODES ) ) countEgoists++; } } return ((double) countPassengers) / (countEgoists + countPassengers); }
@Test public void testLegs() throws Exception { for (Fixture fixture : fixtures) { final List<Trip> trips = TripStructureUtils.getTrips( fixture.plan, stageActivities); int countLegs = 0; for (Trip trip : trips) { countLegs += trip.getLegsOnly().size(); } assertEquals( "getLegsOnly() does not returns the right number of legs", fixture.expectedNLegs, countLegs); } }
private void analyzePlan(Plan plan) { List<Trip> trips = TripStructureUtils.getTrips(plan , stageActivityTypes);
private static boolean containsCoTraveler( final Plan plan, final Id cotraveler) { for ( Trip t : TripStructureUtils.getTrips( plan , EmptyStageActivityTypes.INSTANCE ) ) { for ( Leg l : t.getLegsOnly() ) { if ( l.getRoute() instanceof DriverRoute ) { if ( ((DriverRoute) l.getRoute()).getPassengersIds().contains( cotraveler ) ) { return true; } } else if ( l.getRoute() instanceof PassengerRoute ) { if ( ((PassengerRoute) l.getRoute()).getDriverId().equals( cotraveler ) ) { return true; } } } } return false; } }
private static Iterable<Record> countTrips(final Population population) { final QueryableSet records = new QueryableSet(); for ( Person person : population.getPersons().values() ) { final Plan plan = person.getSelectedPlan(); for ( Trip trip : TripStructureUtils.getTrips( plan , STAGES ) ) { final Record r = records.getOrAddIfNotThere( new Record( trip.getOriginActivity().getType(), trip.getDestinationActivity().getType(), MODE_IDENTIFIER.identifyMainMode( trip.getTripElements() ) ) ); r.count++; } } return records; }
@Test public void testGetTripsWithoutSubSubtours() throws Exception { for (Fixture f : allFixtures( useFacilitiesAsAnchorPoint )) { final int nTrips = TripStructureUtils.getTrips( f.plan , CHECKER ).size(); final Collection<Subtour> subtours = TripStructureUtils.getSubtours( f.plan, CHECKER ); int countTrips = 0; for (Subtour s : subtours) { countTrips += s.getTripsWithoutSubSubtours().size(); } assertEquals( "[anchorAtFacilities="+f.useFacilitiesAsAnchorPoint+"] "+ "unexpected total number of trips in subtours without subsubtours", countTrips, nTrips); } }
@Override public void run(final Plan plan) { final List<Trip> trips = TripStructureUtils.getTrips( plan , routingHandler.getStageActivityTypes() ); for (Trip trip : trips) { /** That's the only check that got added.... **/ if (routingHandler.getMainModeIdentifier().identifyMainMode(trip.getTripElements()).equals(TransportMode.pt)) { final List<? extends PlanElement> newTrip = routingHandler.calcRoute( routingHandler.getMainModeIdentifier().identifyMainMode( trip.getTripElements() ), toFacility( trip.getOriginActivity() ), toFacility( trip.getDestinationActivity() ), calcEndOfActivity( trip.getOriginActivity() , plan ), plan.getPerson() ); TripRouter.insertTrip( plan, trip.getOriginActivity(), newTrip, trip.getDestinationActivity()); } } }
@Override public void run(final Plan plan) { final List<Trip> trips = TripStructureUtils.getTrips( plan , tripRouter.getStageActivityTypes() ); for (Trip oldTrip : trips) { final List<? extends PlanElement> newTrip = tripRouter.calcRoute( tripRouter.getMainModeIdentifier().identifyMainMode( oldTrip.getTripElements() ), toFacility( oldTrip.getOriginActivity() ), toFacility( oldTrip.getDestinationActivity() ), calcEndOfActivity( oldTrip.getOriginActivity() , plan, tripRouter.getConfig() ), plan.getPerson() ); putVehicleFromOldTripIntoNewTripIfMeaningful(oldTrip, newTrip); TripRouter.insertTrip( plan, oldTrip.getOriginActivity(), newTrip, oldTrip.getDestinationActivity()); } }