/** * A pointer to material in TripStructureUtils * */ public static List<Activity> getActivities( Plan plan, StageActivityTypes stageActivities ) { return TripStructureUtils.getActivities(plan, stageActivities ) ; }
public static List<Activity> getActivities( final Plan plan, final StageActivityTypes stageActivities) { return getActivities( plan.getPlanElements(), stageActivities); }
@Override public void run(final Plan plan) { final List<Activity> activities = TripStructureUtils.getActivities( plan , stageTypes ); // we need at least two activities in addition to the first/last if ( activities.size() < 4 ) return; // first act: not first nor last final int firstActIndex = 1 + random.nextInt( activities.size() - 2 ); // second act: not first, last, nor first act final int secondActIndex = 1 + random.nextInt( activities.size() - 3 ); swap( plan, activities.get( firstActIndex ), activities.get( secondActIndex < firstActIndex ? secondActIndex : secondActIndex + 1 ) ); }
public ChoiceSet( final Population population, final String type) { this.type = type; // XXX this is ugly! Long term solution would be to use Andreas LC final Map<Id, Set<Facility>> map = new HashMap<Id, Set<Facility>>(); final ObjectPool<Facility> pool = new ObjectPool<Facility>(); for ( Person person : population.getPersons().values() ) { final Set<Facility> facilities = new HashSet<Facility>(); map.put( person.getId() , facilities ); for ( Plan plan : person.getPlans() ) { for ( Activity act : TripStructureUtils.getActivities( plan , filter ) ) { assert act.getType().equals( type ); facilities.add( pool.getPooledInstance( new BasicFacility( act ) ) ); } } } this.choiceSetPerPerson = Collections.unmodifiableMap( map ); }
/* package-private, for testing */ double similarity( Plan plan1, Plan plan2 ) { double simil = 0. ; { List<Activity> activities1 = TripStructureUtils.getActivities(plan1, stageActivities) ; List<Activity> activities2 = TripStructureUtils.getActivities(plan2, stageActivities) ; simil += PopulationUtils.calculateSimilarity(activities1, activities2, actTypeWeight, locationWeight, actTimeWeight ) ; if ( Double.isNaN(simil) ) { log.warn("simil is NaN; id: " + plan1.getPerson().getId() ) ; } } { List<Leg> legs1 = TripStructureUtils.getLegs(plan1 ) ; List<Leg> legs2 = TripStructureUtils.getLegs(plan2 ) ; simil += PopulationUtils.calculateSimilarity(legs1, legs2, network, this.sameModePenalty, this.sameRoutePenalty ) ; if ( Double.isNaN(simil) ) { log.warn("simil is NaN; id: " + plan1.getPerson().getId() ) ; } } return simil ; }
@Override public void run(final GroupPlans plans) { final List<Facility> groupChoiceSet = choiceSet.getGroupChoiceSet( plans ); for ( Plan plan : plans.getAllIndividualPlans() ) { for ( Activity act : TripStructureUtils.getActivities( plan , choiceSet.filter ) ) { assert act.getType().equals( choiceSet.type ); final Facility choice = groupChoiceSet.get( random.nextInt( groupChoiceSet.size() ) ); ((Activity) act).setCoord( choice.getCoord() ); ((Activity) act).setLinkId( choice.getLinkId() ); if ( choice instanceof Identifiable ) { ( (Activity) act ).setFacilityId( ((Identifiable)choice).getId() ); } else { throw new RuntimeException( Facility.FACILITY_NO_LONGER_IDENTIFIABLE ) ; } } } }
private void mutateJointly( final Collection<Plan> plans) { final AgentAndTypeActivityMap actsPerType = new AgentAndTypeActivityMap(); for ( Plan p : plans ) { for ( Activity act : TripStructureUtils.getActivities( p , activityFilter ) ) { actsPerType.addActivity( p.getPerson().getId() , act ); } } if ( actsPerType.getTypes().isEmpty() ) return; final String type = actsPerType.getType( random.nextInt( actsPerType.getTypes().size() ) ); assert config.getTypes().contains( type ); final Map<Id, List<Activity>> activitiesPerPerson = actsPerType.getActivitiesOfType( type ); final List<Activity> activitiesToMutate = new ArrayList<Activity>(); for ( List<Activity> activitiesOfAgent : activitiesPerPerson.values() ) { assert !activitiesOfAgent.isEmpty(); activitiesToMutate.add( activitiesOfAgent.get( random.nextInt( activitiesOfAgent.size() ) ) ); } mutateLocations( type, activitiesToMutate ); }
private void setActivityCoords () { StageActivityTypes stages = new StageActivityTypesImpl(PtConstants.TRANSIT_ACTIVITY_TYPE); for (Person person: scenario.getPopulation().getPersons().values()) { for(Activity activity: TripStructureUtils.getActivities(person.getSelectedPlan(), stages)){ if (this.consideredActivitiesForSpatialFunctionality.contains(activity.getType()) || consideredActivityPrefix(activity.getType(), this.consideredActivitiesForSpatialFunctionality)) { List<Coord> activityCoordinates = personId2consideredActivityCoords.get(person.getId());//new ArrayList<Coord>(); if (activityCoordinates == null) { activityCoordinates = new ArrayList<>(); personId2consideredActivityCoords.put(person.getId(), activityCoordinates); } activityCoordinates.add(activity.getCoord()); consideredActivityCoordsForSpatialFunctionality.add(activity.getCoord()); } if (this.consideredActivitiesForReceiverPointGrid.contains(activity.getType()) || consideredActivityPrefix(activity.getType(), consideredActivitiesForReceiverPointGrid)) { consideredActivityCoordsForReceiverPointGrid.add(activity.getCoord()); } } } }
private void assertPlanCorrectlyTransformed( final Plan originalPlan, final Plan reprojectedPlan) { final List<Activity> originalActivities = TripStructureUtils.getActivities( originalPlan , EmptyStageActivityTypes.INSTANCE ); final List<Activity> reprojectedActivities = TripStructureUtils.getActivities( reprojectedPlan , EmptyStageActivityTypes.INSTANCE ); Assert.assertEquals( "unexpected number of activities in reprojected plan", originalActivities.size(), reprojectedActivities.size() ); final Iterator<Activity> originalIterator = originalActivities.iterator(); final Iterator<Activity> reprojectedIterator = reprojectedActivities.iterator(); while ( originalIterator.hasNext() ) { final Activity o = originalIterator.next(); final Activity r = reprojectedIterator.next(); assertIsCorrectlyTransformed( o.getCoord() , r.getCoord() ); } }
private void fillEvents( final Plan plan, final Queue<LocationEvent> events) { final Id personId = plan.getPerson().getId(); double lastEnd = 0; int ind = 0; for ( Activity act : TripStructureUtils.getActivities( plan , stages ) ) { final Id loc = act.getFacilityId(); final LocationEvent event = new LocationEvent( ind++, personId, act.getType(), loc, lastEnd ); // correct times if inconsistent lastEnd = Math.max( lastEnd, act.getEndTime() != Time.UNDEFINED_TIME ? act.getEndTime() : lastEnd + act.getMaximumDuration() ); if ( log.isTraceEnabled() ) { log.trace( "add event "+event+" to queue" ); } events.add( event ); } }
@Override public void run(final Plan plan) { final List<Activity> activities = TripStructureUtils.getActivities( plan , blackList ); final int nActs = activities.size();
@Test public void testActivities() throws Exception { for (Fixture fixture : fixtures) { final List<Activity> acts = TripStructureUtils.getActivities( fixture.plan, stageActivities); assertEquals( "unexpected number of activities in "+acts+" for fixture "+fixture.name, fixture.expectedNActs, acts.size() ); for (Activity act : acts) { assertFalse( "found a dummy act in "+acts+" for fixture "+fixture.name, stageActivities.isStageActivity( act.getType() )); } } }
public static void enrichScenario(final Scenario scenario) { final Config config = scenario.getConfig(); final GroupReplanningConfigGroup weights = (GroupReplanningConfigGroup) config.getModule( GroupReplanningConfigGroup.GROUP_NAME ); if ( config.households().getInputFile()!=null && weights.getUseLimitedVehicles() ) { scenario.addScenarioElement( VehicleRessources.ELEMENT_NAME, new HouseholdBasedVehicleRessources( scenario.getHouseholds() ) ); } for (Person person : scenario.getPopulation().getPersons().values()) { for (Plan plan : person.getPlans()) { for (Activity act : TripStructureUtils.getActivities( plan , EmptyStageActivityTypes.INSTANCE )) { if (act.getCoord() != null) continue; if (act.getLinkId() == null) throw new NullPointerException(); act.setCoord( scenario.getNetwork().getLinks().get( act.getLinkId() ).getCoord() ); } } } }
@Override public void run(final Plan plan) { for ( Activity act : TripStructureUtils.getActivities( plan , blackList ) ) { // this is deliberately simplistic. Cleanup up of the time information should be done somewhere else. if ( !Time.isUndefinedTime( act.getEndTime() ) ) { act.setEndTime(mutateTime(act.getEndTime())); } if ( affectingDuration ) { if ( !Time.isUndefinedTime( act.getMaximumDuration() ) ) { act.setMaximumDuration(mutateTime(act.getMaximumDuration())); } } } // the legs are not doing anything. kai, jun'12 }
for ( Activity act : TripStructureUtils.getActivities( plan , EmptyStageActivityTypes.INSTANCE ) ) { final int planElementIndex = plan.getPlanElements().indexOf( act ); if ( isFirstActivity ) {
final Person internalPerson = scenario.getPopulation().getPersons().get( id ); final List<Activity> originalActivities = TripStructureUtils.getActivities( originalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final List<Activity> reprojectedActivities = TripStructureUtils.getActivities( internalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final Person dumpedPerson = dumpedScenario.getPopulation().getPersons().get( id ); final List<Activity> internalActivities = TripStructureUtils.getActivities( internalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final List<Activity> reprojectedActivities = TripStructureUtils.getActivities( dumpedPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE );
final Person internalPerson = scenario.getPopulation().getPersons().get( id ); final List<Activity> originalActivities = TripStructureUtils.getActivities( originalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final List<Activity> reprojectedActivities = TripStructureUtils.getActivities( internalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final Person dumpedPerson = dumpedScenario.getPopulation().getPersons().get( id ); final List<Activity> internalActivities = TripStructureUtils.getActivities( internalPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE ); final List<Activity> reprojectedActivities = TripStructureUtils.getActivities( dumpedPerson.getSelectedPlan() , EmptyStageActivityTypes.INSTANCE );