public TripsToLegsAlgorithm(final TripRouter router) { this( router.getStageActivityTypes(), router.getMainModeIdentifier() ); }
@Override public void notifyStartup(final StartupEvent event) { this.minIteration = controlerConfigGroup.getFirstIteration(); TripRouter tripRouter = tripRouterFactory.get(); this.stageActivities = tripRouter.getStageActivityTypes() ; this.mainModeIdentifier = tripRouter.getMainModeIdentifier() ; }
private String identifyMainMode(final Trip t) { return tripRouter.getMainModeIdentifier().identifyMainMode( t.getTripElements() ); }
@Override public String identifyMainMode( final List<? extends PlanElement> tripElements) { for ( PlanElement pe : tripElements ) { if ( pe instanceof Leg && ((Leg) pe).getMode().equals( JointActingTypes.PASSENGER ) ) { return TransportMode.pt; } if ( pe instanceof Leg && ((Leg) pe).getMode().equals( JointActingTypes.DRIVER ) ) { return TransportMode.car; } } return router.getMainModeIdentifier().identifyMainMode( tripElements ); } }) );
private boolean containsMode( final Subtour s ) { for ( Trip t : s.getTrips() ) { if ( tripRouter.getMainModeIdentifier().identifyMainMode( t.getTripElements() ).equals( mode ) ) { return true; } } return false; } }
@Override public PlanAlgorithm getPlanAlgoInstance() { final TripRouter tripRouter = tripRouterProvider.get(); final ChooseRandomLegModeForSubtour chooseRandomLegMode = new ChooseRandomLegModeForSubtour( tripRouter.getStageActivityTypes(), tripRouter.getMainModeIdentifier(), this.permissibleModesCalculator, this.modes, this.chainBasedModes, MatsimRandom.getLocalInstance(), behavior, probaForChangeSingleTripMode); return chooseRandomLegMode; }
/** * Convenience method, clarifying that this can be called without giving the mode. */ public void insertActivity(MobsimAgent agent, int index, Activity activity ) { String mode = tripRouter.getMainModeIdentifier().identifyMainMode( editTrips.findCurrentTrip(agent).getTripElements() ) ; insertActivity( agent, index, activity, mode, mode ) ; }
@Override public PlanAlgorithm getPlanAlgoInstance() { TripRouter router = tripRouterProvider.get(); StageActivityTypes blackListToUse = router.getStageActivityTypes(); if (additionalBlackList != null) { CompositeStageActivityTypes composite = new CompositeStageActivityTypes(); composite.addActivityTypes( blackListToUse ); composite.addActivityTypes( additionalBlackList ); blackListToUse = composite; } return new TripsToLegsAlgorithm( blackListToUse, router.getMainModeIdentifier() ); } }
public String getModeOfCurrentOrNextTrip(MobsimAgent agent) { Trip trip ; if ( isAtRealActivity( agent ) ) { Activity activity = (Activity) WithinDayAgentUtils.getCurrentPlanElement(agent) ; trip = editTrips.findTripAfterActivity(WithinDayAgentUtils.getModifiablePlan(agent), activity) ; } else { trip = editTrips.findCurrentTrip(agent) ; } return tripRouter.getMainModeIdentifier().identifyMainMode(trip.getTripElements()) ; } public void flushEverythingBeyondCurrent(MobsimAgent agent) {
public JointTripInsertorAndRemoverAlgorithm( final Scenario scenario, final TripRouter tripRouter, final Random random, final boolean iterative) { this.tripRouter = tripRouter; this.random = random; this.insertor = new JointTripInsertorAlgorithm( random, (SocialNetwork) scenario.getScenarioElement( SocialNetwork.ELEMENT_NAME ), (JointTripInsertorConfigGroup) scenario.getConfig().getModule( JointTripInsertorConfigGroup.GROUP_NAME ), tripRouter); this.remover = new JointTripRemoverAlgorithm( random, tripRouter.getStageActivityTypes(), tripRouter.getMainModeIdentifier()); this.iterative = iterative; }
public PlanElement removeActivity(MobsimAgent agent, int index, String mode) { Plan plan = WithinDayAgentUtils.getModifiablePlan(agent) ; List<PlanElement> planElements = plan.getPlanElements() ; checkIfNotInPastOrCurrent(agent, index); final Trip tripBefore = TripStructureUtils.findTripEndingAtActivity( (Activity) planElements.get(index),plan,tripRouter.getStageActivityTypes() ); final Trip tripAfter = TripStructureUtils.findTripStartingAtActivity( (Activity)planElements.get(index),plan,tripRouter.getStageActivityTypes() ); if ( mode==null ) { final String mainModeBefore = tripRouter.getMainModeIdentifier().identifyMainMode( tripBefore.getTripElements() ); final String mainModeAfter = tripRouter.getMainModeIdentifier().identifyMainMode( tripAfter.getTripElements() ); if ( mainModeBefore.equals( mainModeAfter ) ) { mode = mainModeBefore ; } else { throw new ReplanningException("mode not given and mode before removed activity != mode after removed activity; don't know which mode to use") ; } } PlanElement pe = planElements.remove(index) ; if ( checkIfTripHasAlreadyStarted( agent, tripBefore.getTripElements() ) ) { editTrips.replanCurrentTrip(agent, mobsim.getSimTimer().getTimeOfDay() , mode); } else { editTrips.insertEmptyTrip(plan, tripBefore.getOriginActivity(), tripAfter.getDestinationActivity(), mode ) ; } WithinDayAgentUtils.resetCaches(agent); this.mobsim.rescheduleActivityEnd(agent); return pe ; } public final void rescheduleActivityEndtime( MobsimAgent agent, int index, double newEndTime ) {
@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()); } } }
router.getMainModeIdentifier() );
@Override public boolean doReplanning(MobsimAgent withinDayAgent) { Plan executedPlan = WithinDayAgentUtils.getModifiablePlan(withinDayAgent); // If we don't have an executed plan if (executedPlan == null) return false; // Get the activity currently performed by the agent as well as the subsequent trip. Activity currentActivity = (Activity) WithinDayAgentUtils.getCurrentPlanElement(withinDayAgent); Trip trip = TripStructureUtils.findTripStartingAtActivity(currentActivity, executedPlan, this.tripRouter.getStageActivityTypes() ); // If there is no trip after the activity. if (trip == null) return false; String mainMode = this.tripRouter.getMainModeIdentifier().identifyMainMode(trip.getTripElements()); double departureTime = TripStructureUtils.getDepartureTime(trip); new EditTrips(this.tripRouter, scenario).replanFutureTrip(trip, executedPlan, mainMode, departureTime); return true; }
final String currentMode = this.tripRouter.getMainModeIdentifier().identifyMainMode( currentTripElements ) ; final String currentMainMode = this.tripRouter.getMainModeIdentifier().identifyMainMode( tripAfterAct.getTripElements() ); EditTrips.insertEmptyTrip(plan, newAct, tripAfterAct.getDestinationActivity(), currentMainMode, pf); } else {
@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()); } }