public static Collection<Subtour> getSubtours( final Plan plan, final StageActivityTypes stageActivityTypes) { return getSubtours( plan.getPlanElements(), stageActivityTypes ); }
private List<Subtour> getRootSubtoursWithMode(final Plan plan) { final Collection<Subtour> allSubtours = TripStructureUtils.getSubtours( plan , tripRouter.getStageActivityTypes() ); final List<Subtour> roots = new ArrayList<Subtour>(); for ( Subtour s : allSubtours ) { if ( s.getParent() != null ) continue; if ( !containsMode( s ) ) continue; roots.add( s ); } return roots; }
private static void performTest(final Fixture fixture) { final Collection<Subtour> subtours = TripStructureUtils.getSubtours( fixture.plan, CHECKER ); assertEquals( "[anchorAtFacilities="+fixture.useFacilitiesAsAnchorPoint+"] "+ "unexpected number of subtours in "+subtours, fixture.expectedSubtours.size(), subtours.size() ); assertEquals( "[anchorAtFacilities="+fixture.useFacilitiesAsAnchorPoint+"] "+ "uncompatible subtours", // do not bother about iteration order, // but ensure you get some information on failure new HashSet<Subtour>( fixture.expectedSubtours ), new HashSet<Subtour>( subtours ) ); }
homeLocation, TripStructureUtils.getTrips(plan, stageActivityTypes), TripStructureUtils.getSubtours( plan, stageActivityTypes
@Test public void testInconsistentPlan() throws Exception { final Fixture fixture = createInconsistentTrips( useFacilitiesAsAnchorPoint ); boolean hadException = false; try { TripStructureUtils.getSubtours( fixture.plan, CHECKER ); } catch (RuntimeException e) { hadException = true; } assertTrue( "[anchorAtFacilities="+fixture.useFacilitiesAsAnchorPoint+"] "+ "no exception was thrown!", hadException); }
@Override public void run(final Plan plan) { for ( Subtour subtour : TripStructureUtils.getSubtours( plan , stages ) ) { // not clear what we should do with open tours if ( !subtour.isClosed() ) continue; // only consider "root" tours: tours without (closed) parent if ( subtour.getParent() != null && subtour.getParent().isClosed() ) continue; final String mode = modeIdentifier.identifyMode( subtour ); for ( Trip trip : subtour.getTrips() ) { TripRouter.insertTrip( plan, trip.getOriginActivity(), Collections.singletonList( PopulationUtils.createLeg(mode) ), trip.getDestinationActivity() ); } } }
@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); } }
final boolean useFacilities) { final Collection<Subtour> originalSubtours = TripStructureUtils.getSubtours( originalPlan, EmptyStageActivityTypes.INSTANCE ); final Collection<Subtour> mutatedSubtours = TripStructureUtils.getSubtours( plan, EmptyStageActivityTypes.INSTANCE
TripStructureUtils.getSubtours( p, stageActs
final Plan plan = f.createNewPlanInstance(); final int initNTrips = TripStructureUtils.getTrips( plan , stagesActivities ).size(); final Collection<Subtour> initSubtours = TripStructureUtils.getSubtours( plan , stagesActivities ); testee.run( plan ); newTrips.size()); final Collection<Subtour> newSubtours = TripStructureUtils.getSubtours( plan , stagesActivities );
final Plan plan = f.createNewPlanInstance(); final int initNTrips = TripStructureUtils.getTrips( plan , stagesActivities ).size(); final Collection<Subtour> initSubtours = TripStructureUtils.getSubtours( plan , stagesActivities ); testee.run( plan ); newTrips.size()); final Collection<Subtour> newSubtours = TripStructureUtils.getSubtours( plan , stagesActivities );
@Test public void testFatherhood() throws Exception { for (Fixture f : allFixtures( useFacilitiesAsAnchorPoint )) { final Collection<Subtour> subtours = TripStructureUtils.getSubtours( f.plan , CHECKER); for (Subtour s : subtours) { for ( Subtour child : s.getChildren() ) { assertEquals( "[anchorAtFacilities="+f.useFacilitiesAsAnchorPoint+"] "+ "wrong father!", child.getParent(), s); } if ( s.getParent() != null ) { assertTrue( "[anchorAtFacilities="+f.useFacilitiesAsAnchorPoint+"] "+ "father does not have subtour has a child", s.getParent().getChildren().contains( s )); } } } }
@Test( expected=NullPointerException.class ) public void testNPEWhenLocationNullInSubtourAnalysis() { // this may sound surprising, but for a long time the algorithm // was perfectly fine with that if assertions were disabled... final Plan plan = populationFactory.createPlan(); // link ids are null plan.addActivity( populationFactory.createActivityFromCoord( "type", new Coord((double) 0, (double) 0)) ); plan.addLeg( populationFactory.createLeg( "mode" ) ); plan.addActivity( populationFactory.createActivityFromCoord( "type", new Coord((double) 0, (double) 0)) ); TripStructureUtils.getSubtours( plan , EmptyStageActivityTypes.INSTANCE ); } }