public static void setLinkId(Activity activity, Id<Link> linkId) { if (activity instanceof Activity) { ((Activity) activity).setLinkId(linkId); } else if (activity instanceof LCActivity) { ((LCActivity) activity).setLinkId(linkId); } else throw new RuntimeException("Unexpected type of activity was found: " + activity.getClass().toString() + ". Aborting!"); }
@Override public Activity createActivityFromLinkId(final String actType, final Id<Link> linkId) { Activity act = new ActivityImpl(actType) ; act.setLinkId(linkId); return act ; }
public static Activity createActivityFromCoordAndLinkId(String type, Coord coord, Id<Link> linkId) { Activity act = getFactory().createActivityFromCoord(type, coord) ; act.setLinkId(linkId); return act ; }
@Override public void run(final Plan plan) { for (PlanElement pe : plan.getPlanElements()) { if (pe instanceof Activity) { ((Activity) pe).setLinkId(null); } else if (pe instanceof Leg) { ((Leg) pe).setRoute(null); } } } }
public static Activity createAndAddActivityFromLinkId( Plan plan, String type, Id<Link> linkId ) { Activity act = getFactory().createActivityFromLinkId(type, linkId) ; plan.addActivity(act); act.setLinkId(linkId); return act ; }
@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 ) ; } } } }
protected boolean modifyLocation(Activity act, Coord startCoord, Coord endCoord, double radius, int trialNr) { ArrayList<ActivityFacility> choiceSet = this.computeChoiceSetCircle(startCoord, endCoord, radius, act.getType()); if (choiceSet.size()>1) { //final Facility facility=(Facility)choiceSet.toArray()[ // MatsimRandom.random.nextInt(choiceSet.size())]; final ActivityFacility facility = choiceSet.get(super.random.nextInt(choiceSet.size())); act.setFacilityId(facility.getId()); act.setLinkId(NetworkUtils.getNearestLink(((Network) this.scenario.getNetwork()), facility.getCoord()).getId()); act.setCoord(facility.getCoord()); return true; } // else ... return false; }
private void setNewLocationForAct(Activity act, int length) { ActivityFacilityImpl facility = this.facilitiesOfType.get(act.getType())[super.random.nextInt(length)]; act.setFacilityId(facility.getId()); act.setLinkId(NetworkUtils.getNearestLink(((Network) this.scenario.getNetwork()), facility.getCoord()).getId()); act.setCoord(facility.getCoord()); } }
protected final boolean modifyLocation(Activity act, Coord startCoord, Coord endCoord, double radius) { double midPointX = (startCoord.getX() + endCoord.getX()) / 2.0; double midPointY = (startCoord.getY() + endCoord.getY()) / 2.0; ArrayList<ActivityFacility> facilitySet = (ArrayList<ActivityFacility>) this.quadTreesOfType.get(this.defineFlexibleActivities.getConverter().convertType(act.getType())). getDisk(midPointX, midPointY, radius); ActivityFacility facility = null; if (facilitySet.size() > 1) { facility = facilitySet.get(super.random.nextInt(facilitySet.size())); } else { return false; } act.setFacilityId(facility.getId()); act.setLinkId(NetworkUtils.getNearestLink(((Network) this.scenario.getNetwork()), facility.getCoord()).getId()); act.setCoord(facility.getCoord()); return true; }
private void mutateLocations( final String type, final List<Activity> activitiesToMutate) { final Coord coordBarycenter = calcBarycenterCoord( activitiesToMutate ); final double angle = random.nextDouble() * Math.PI; final double distance = nextNormalDouble() * config.getStandardDeviation(); final ActivityFacility fac = getFacility( type, coordBarycenter, angle, distance ); for ( Activity act : activitiesToMutate ) { ((Activity) act).setFacilityId( fac.getId() ); ((Activity) act).setLinkId( fac.getLinkId() ); ((Activity) act).setCoord( fac.getCoord() ); } }
private static void changeLocation( final Collection<Subchain> subchains, final ActivityFacility facility) { for ( Subchain subchain : subchains ) { ((Activity) subchain.getToMove()).setFacilityId( facility.getId() ); ((Activity) subchain.getToMove()).setLinkId( facility.getLinkId() ); ((Activity) subchain.getToMove()).setCoord( facility.getCoord() ); } }
public static void copyFromTo(Activity act, Activity newAct) { Coord coord = act.getCoord() == null ? null : new Coord(act.getCoord().getX(), act.getCoord().getY()); // (we don't want to copy the coord ref, but rather the contents!) newAct.setCoord(coord); newAct.setType( act.getType() ); newAct.setLinkId(act.getLinkId()); newAct.setStartTime(act.getStartTime()); newAct.setEndTime(act.getEndTime()); newAct.setMaximumDuration(act.getMaximumDuration()); newAct.setFacilityId(act.getFacilityId()); AttributesUtils.copyAttributesFromTo( act , newAct ); }
public void testReplanCurrentLegRouteFour() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityW1; activityW1 = (Activity) plan.getPlanElements().get(2); activityW1.setLinkId(Id.create("l2", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(firstCarLeg), plan.getPerson(), 2, 8.0*3600 )); // HW, end Link final NetworkRoute route = (NetworkRoute)((Leg)plan.getPlanElements().get(firstCarLeg)).getRoute(); assertEquals(true, checkRouteValidity(route)); } public void testReplanCurrentLegRouteFive()
public void testReplanCurrentLegRouteSix() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityH2; activityH2 = (Activity) plan.getPlanElements().get(4); activityH2.setLinkId(Id.create("l4", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(scndCarLeg), plan.getPerson(), 1, 8.0*3600 )); // WH, en-route assertEquals(true, checkRouteValidity((NetworkRoute)((Leg)plan.getPlanElements().get(scndCarLeg)).getRoute())); } public void testReplanCurrentLegRouteSeven()
public void testReplanCurrentLegRouteEight() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityH2; activityH2 = (Activity) plan.getPlanElements().get(4); activityH2.setLinkId(Id.create("l4", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(scndCarLeg), plan.getPerson(), 3, 8.0*3600 ) ); // WH, en-route assertEquals(true, checkRouteValidity((NetworkRoute)((Leg)plan.getPlanElements().get(scndCarLeg)).getRoute())); } public void testReplanCurrentLegRouteNine()
public void testReplanCurrentLegRouteNine() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityH2; activityH2 = (Activity) plan.getPlanElements().get(4); activityH2.setLinkId(Id.create("l4", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(scndCarLeg), plan.getPerson(), 4, 8.0*3600 )); // WH, end Link assertEquals(true, checkRouteValidity((NetworkRoute)((Leg)plan.getPlanElements().get(scndCarLeg)).getRoute())); } public void testReplanCurrentLegRouteTen()
public void testReplanCurrentLegRouteThree() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityW1; activityW1 = (Activity) plan.getPlanElements().get(2); activityW1.setLinkId(Id.create("l2", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(firstCarLeg), plan.getPerson(), 1, 8.0*3600 ) ); // HW, en-route final NetworkRoute route = (NetworkRoute)((Leg)plan.getPlanElements().get(firstCarLeg)).getRoute(); assertEquals(true, checkRouteValidity(route)); } public void testReplanCurrentLegRouteFour()
public void testReplanCurrentLegRouteSeven() { createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityH2; activityH2 = (Activity) plan.getPlanElements().get(4); activityH2.setLinkId(Id.create("l4", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(scndCarLeg), plan.getPerson(), 2, 8.0*3600 )); // WH, en-route assertEquals(true, checkRouteValidity((NetworkRoute)((Leg)plan.getPlanElements().get(scndCarLeg)).getRoute())); } public void testReplanCurrentLegRouteEight()
public void testReplanCurrentLegRouteFive() { // create new routes for WH-trip createScenario(); // reset scenario EditRoutes ed = new EditRoutes(scenario.getNetwork(), pathCalculator, scenario.getPopulation().getFactory()); int firstCarLeg = 1 ; // 1-->3 int scndCarLeg = 3 ; // 3-->9 if ( scenario.getConfig().plansCalcRoute().isInsertingAccessEgressWalk() ) { firstCarLeg = 3 ; // 1-->3 scndCarLeg = 9 ; // 3-->9 } Activity activityH2; activityH2 = (Activity) plan.getPlanElements().get(4); activityH2.setLinkId(Id.create("l4", Link.class)); // move Activity location assertEquals(true, ed.replanCurrentLegRoute((Leg) plan.getPlanElements().get(scndCarLeg), plan.getPerson(), 0, 8.0*3600 )); // WH, start Link assertEquals(true, checkRouteValidity((NetworkRoute)((Leg)plan.getPlanElements().get(scndCarLeg)).getRoute())); } public void testReplanCurrentLegRouteSix()
@Test public void testRouteLeg() { Fixture f = new Fixture(); FreespeedTravelTimeAndDisutility freespeed = new FreespeedTravelTimeAndDisutility(-6.0/3600, +6.0/3600, 0.0); LeastCostPathCalculator routeAlgo = new Dijkstra(f.s.getNetwork(), freespeed, freespeed); Person person = PopulationUtils.getFactory().createPerson(Id.create(1, Person.class)); Activity fromAct = PopulationUtils.createActivityFromCoord("h", new Coord(0, 0)); fromAct.setLinkId(Id.create("1", Link.class)); Activity toAct = PopulationUtils.createActivityFromCoord("h", new Coord(0, 3000)); toAct.setLinkId(Id.create("3", Link.class)); final NetworkRoutingModule routingModule = new NetworkRoutingModule( TransportMode.car, f.s.getPopulation().getFactory(), f.s.getNetwork(), routeAlgo); Facility fromFacility = new ActivityWrapperFacility( fromAct ) ; Facility toFacility = new ActivityWrapperFacility( toAct ) ; List<? extends PlanElement> result = routingModule.calcRoute(fromFacility, toFacility, 7.0*3600, person) ; Assert.assertEquals(1, result.size() ); Leg leg = (Leg)result.get(0) ; Assert.assertEquals(100.0, leg.getTravelTime(), 1e-8); Assert.assertTrue(leg.getRoute() instanceof NetworkRoute); }