private PtMatrix(PlansCalcRouteConfigGroup plansCalcRoute, QuadTree<PtStop> ptStops, Matrix originDestinationTravelTimeMatrix, Matrix originDestinationTravelDistanceMatrix){ this.meterPerSecWalkSpeed = plansCalcRoute.getTeleportedModeSpeeds().get(TransportMode.walk) ; this.ptStops = ptStops; this.originDestinationTravelTimeMatrix = originDestinationTravelTimeMatrix; this.originDestinationTravelDistanceMatrix = originDestinationTravelDistanceMatrix; }
@Override public void addParam(final String key, final String value) { if( value.equals( "null" ) ) return; // old behavior of reader: keep defaults if null if (PT_SPEED_FACTOR.equals(key)) { setTeleportedModeFreespeedFactor(TransportMode.pt, Double.parseDouble(value)); } else if (BEELINE_DISTANCE_FACTOR.equals(key)) { setBeelineDistanceFactor(Double.parseDouble(value)); } else if (PT_SPEED.equals(key)) { setTeleportedModeSpeed(TransportMode.pt, Double.parseDouble(value)); } else if (WALK_SPEED.equals(key)) { setTeleportedModeSpeed(TransportMode.walk, Double.parseDouble(value)); } else if (BIKE_SPEED.equals(key)) { setTeleportedModeSpeed(TransportMode.bike, Double.parseDouble(value)); } else if (UNDEFINED_MODE_SPEED.equals(key)) { setTeleportedModeSpeed(UNDEFINED, Double.parseDouble(value)); } else if (NETWORK_MODES.equals(key)) { setNetworkModes(Arrays.asList(CollectionUtils.stringToArray(value))); } else if (key.startsWith(TELEPORTED_MODE_SPEEDS)) { setTeleportedModeSpeed(key.substring(TELEPORTED_MODE_SPEEDS.length()), Double.parseDouble(value)); } else if (key.startsWith(TELEPORTED_MODE_FREESPEED_FACTORS)) { setTeleportedModeFreespeedFactor(key.substring(TELEPORTED_MODE_FREESPEED_FACTORS.length()), Double.parseDouble(value)); } else { throw new IllegalArgumentException(key); } }
public PSim(Scenario sc, EventsManager eventsManager, Collection<Plan> plans, TravelTime carLinkTravelTimes) { Logger.getLogger(getClass()).warn("Constructing PSim"); this.scenario = sc; this.endTime = sc.getConfig().qsim().getEndTime(); this.eventManager = eventsManager; int numThreads = Integer.parseInt(sc.getConfig().getParam("global", "numberOfThreads")); threads = new SimThread[numThreads]; for (int i = 0; i < numThreads; i++) threads[i] = new SimThread(); PlansCalcRouteConfigGroup pcrConfig = sc.getConfig().plansCalcRoute(); this.beelineDistanceFactor = pcrConfig.getModeRoutingParams().get( TransportMode.walk ).getBeelineDistanceFactor(); this.walkSpeed = pcrConfig.getTeleportedModeSpeeds().get(TransportMode.walk) ; this.carLinkTravelTimes = carLinkTravelTimes; this.plans = plans; }
public UnknownTravelTimeFactory(String mode, PlansCalcRouteConfigGroup plansCalcRouteConfigGroup) { this.mode = mode; this.plansCalcRouteConfigGroup = plansCalcRouteConfigGroup; Double speed = plansCalcRouteConfigGroup.getTeleportedModeSpeeds().get(mode); Double speedFactor = plansCalcRouteConfigGroup.getTeleportedModeFreespeedFactors().get(mode); if (speed != null && speedFactor != null) { throw new RuntimeException("Speed as well as speed factor was found for mode " + mode + "! Don't know which should be used. Aborting."); } else if (speed == null && speedFactor == null) { throw new RuntimeException("Neither speed nor speed factor was found for mode " + mode + "! Aborting."); } }
public ModeRoutingParams getOrCreateModeRoutingParams(final String mode) { ModeRoutingParams pars = getModeRoutingParams().get( mode ); if ( pars == null ) { pars = (ModeRoutingParams) createParameterSet( ModeRoutingParams.SET_TYPE ); pars.setMode( mode ); addParameterSet( pars ); } if ( this.isLocked() ) { pars.setLocked(); } return pars; }
@Deprecated // use mode-specific beeline distance factors! kai, apr'15 public void setBeelineDistanceFactor(double val) { testForLocked() ; // yyyy thinking about this: this should in design maybe not be different from the other teleportation factors (reset everything // if one is set; or possibly disallow setting it at all). kai, feb'15 // memorize the global factor for ModeRoutingParams that are added later: this.beelineDistanceFactor = val ; // push the global factor to the local ones for all ModeRoutingParams that are already there: for ( ModeRoutingParams params : this.getModeRoutingParams().values() ) { params.setBeelineDistanceFactor( val ); } }
public NetworkRoutingInclAccessEgressModule( final String mode, final PopulationFactory populationFactory, final Network network, final LeastCostPathCalculator routeAlgo, PlansCalcRouteConfigGroup calcRouteConfig) { Gbl.assertNotNull(network); Gbl.assertIf( network.getLinks().size()>0 ) ; // otherwise network for mode probably not defined this.network = network; this.routeAlgo = routeAlgo; this.mode = mode; this.populationFactory = populationFactory; this.stageActivityType = this.mode + " interaction"; if ( !calcRouteConfig.isInsertingAccessEgressWalk() ) { throw new RuntimeException("trying to use access/egress but not switched on in config. " + "currently not supported; there are too many other problems") ; } }
bind(SingleModeNetworksCache.class).asEagerSingleton(); PlansCalcRouteConfigGroup routeConfigGroup = getConfig().plansCalcRoute(); for (String mode : routeConfigGroup.getTeleportedModeFreespeedFactors().keySet()) { if (getConfig().transit().isUseTransit() && getConfig().transit().getTransitModes().contains(mode)) { addRoutingModuleBinding(mode).toProvider(new FreespeedFactorRouting(getConfig().plansCalcRoute().getModeRoutingParams().get(mode))); for (String mode : routeConfigGroup.getTeleportedModeSpeeds().keySet()) { addRoutingModuleBinding(mode).toProvider(new BeelineTeleportationRouting(getConfig().plansCalcRoute().getModeRoutingParams().get(mode))); bind(NetworkTurnInfoBuilderI.class).to(NetworkTurnInfoBuilder.class) ; for (String mode : routeConfigGroup.getNetworkModes()) {
private static void assertIdentical( final String msg, final PlansCalcRouteConfigGroup initialGroup, final PlansCalcRouteConfigGroup inputConfigGroup) { Assert.assertEquals( "unexpected beelineDistanceFactor", // initialGroup.getBeelineDistanceFactor(), // inputConfigGroup.getBeelineDistanceFactor(), initialGroup.getBeelineDistanceFactors(), inputConfigGroup.getBeelineDistanceFactors() ) ; // MatsimTestUtils.EPSILON ); Assert.assertEquals( "unexpected networkModes", initialGroup.getNetworkModes(), inputConfigGroup.getNetworkModes() ); Assert.assertEquals( "unexpected teleportedModeFreespeedFactors", initialGroup.getTeleportedModeFreespeedFactors(), inputConfigGroup.getTeleportedModeFreespeedFactors() ); Assert.assertEquals( "unexpected teleportedModeSpeeds", initialGroup.getTeleportedModeSpeeds(), inputConfigGroup.getTeleportedModeSpeeds() ); }
public TransitRouterConfig(final PlanCalcScoreConfigGroup pcsConfig, final PlansCalcRouteConfigGroup pcrConfig, final TransitRouterConfigGroup trConfig, final VspExperimentalConfigGroup vspConfig ) pcsConfig.setLocked(); pcrConfig.setLocked() ; trConfig.setLocked() ; vspConfig.setLocked() ; this.beelineDistanceFactor = pcrConfig.getModeRoutingParams().get( TransportMode.walk ).getBeelineDistanceFactor(); this.beelineWalkSpeed = pcrConfig.getTeleportedModeSpeeds().get(TransportMode.walk) / beelineDistanceFactor ;
@Test public void testBackwardsCompatibility() { PlansCalcRouteConfigGroup group = new PlansCalcRouteConfigGroup(); // test default Assert.assertEquals("different default than expected.", 3.0 / 3.6, group.getTeleportedModeSpeeds().get(TransportMode.walk), MatsimTestUtils.EPSILON); try { group.addParam("walkSpeedFactor", "1.5"); } catch (IllegalArgumentException e) { log.info("catched expected exception: " + e.getMessage()); Assert.assertFalse("Exception-Message should not be empty.", e.getMessage().isEmpty()); } Assert.assertEquals("value should not have changed.", 3.0 / 3.6, group.getTeleportedModeSpeeds().get(TransportMode.walk), MatsimTestUtils.EPSILON); group.addParam("walkSpeed", "1.5"); Assert.assertEquals("value should have changed.", 1.5, group.getTeleportedModeSpeeds().get(TransportMode.walk), MatsimTestUtils.EPSILON); }
@Test public void testDefaultsAreCleared() { PlansCalcRouteConfigGroup group = new PlansCalcRouteConfigGroup(); group.setTeleportedModeSpeed( "skateboard" , 20 / 3.6 ); group.setTeleportedModeSpeed( "longboard" , 20 / 3.6 ); Assert.assertEquals( "unexpected number of modes after adding new mode in "+group.getModeRoutingParams(), 2, group.getModeRoutingParams().size() ); }
double dist = CoordUtils.calcEuclideanDistance(fromCoord, toCoord); if ( this.scenario.getConfig().plansCalcRoute(). getModeRoutingParams().containsKey( this.currleg.getMode() ) ) { double estimatedNetworkDistance = dist * this.scenario.getConfig().plansCalcRoute(). getModeRoutingParams().get( this.currleg.getMode() ).getBeelineDistanceFactor() ; this.currRoute.setDistance(estimatedNetworkDistance);
public BestResponseLocationMutator( TreeMap<String, QuadTree<ActivityFacilityWithIndex>> quad_trees, TreeMap<String, ActivityFacilityImpl []> facilities_of_type, ObjectAttributes personsMaxDCScoreUnscaled, DestinationChoiceContext lcContext, DestinationSampler sampler, TripRouter tripRouter, MultiNodeDijkstra forwardMultiNodeDijkstra, BackwardFastMultiNodeDijkstra backwardMultiNodeDijkstra, ScoringFunctionFactory scoringFunctionFactory, int iteration, Map<Id<ActivityFacility>, Id<Link>> nearestLinks) { // TODO: first null argument should be quad_trees... super(lcContext.getScenario(), tripRouter, null, facilities_of_type, null); this.facilities = lcContext.getScenario().getActivityFacilities(); this.personsMaxDCScoreUnscaled = personsMaxDCScoreUnscaled; this.scaleEpsilon = lcContext.getScaleEpsilon(); this.actTypeConverter = lcContext.getConverter(); this.sampler = sampler; this.lcContext = lcContext; this.forwardMultiNodeDijkstra = forwardMultiNodeDijkstra; this.backwardMultiNodeDijkstra = backwardMultiNodeDijkstra; this.scoringFunctionFactory = scoringFunctionFactory; this.iteration = iteration; this.nearestLinks = nearestLinks; // Cache maps since otherwise they would be created on the fly every time when accessing them via the config object. this.teleportedModeSpeeds = this.lcContext.getScenario().getConfig().plansCalcRoute().getTeleportedModeSpeeds(); this.beelineDistanceFactors = this.lcContext.getScenario().getConfig().plansCalcRoute().getBeelineDistanceFactors(); this.quadTreesOfType = quad_trees; }
public Map<String, Double> getTeleportedModeFreespeedFactors() { final Map<String, Double> map = new LinkedHashMap< >(); for ( ModeRoutingParams pars : getModeRoutingParams().values() ) { if ( this.isLocked() ) { pars.setLocked(); } final Double speed = pars.getTeleportedModeFreespeedFactor(); if ( speed != null ) map.put( pars.getMode() , speed ); } return map; }
config.plansCalcRoute().setNetworkModes(Arrays.asList(modes));
Collection<String> modes = config.plansCalcRoute().getNetworkModes(); Set<String> newModes = new TreeSet<>( modes ) ; for ( RoutingMode mode : RoutingMode.values() ) { newModes.add( mode.name() ) ; config.plansCalcRoute().setNetworkModes( newModes );
if (config.plansCalcRoute().isInsertingAccessEgressWalk()) { for (String mode : config.plansCalcRoute().getNetworkModes()) { String interactionActivityType = mode + " interaction"; ActivityParams set = scoringParameterSet.getActivityParamsPerType().get(interactionActivityType);
private static ConfigGroup toUnderscoredModule(final PlansCalcRouteConfigGroup initialGroup) { final ConfigGroup module = new ConfigGroup( initialGroup.getName() ); for ( Map.Entry<String, String> e : initialGroup.getParams().entrySet() ) { log.info( "add param="+e.getKey() + " with value=" + e.getValue() ); module.addParam( e.getKey() , e.getValue() ); } for ( ModeRoutingParams settings : initialGroup.getModeRoutingParams().values() ) { final String mode = settings.getMode(); module.addParam( "teleportedModeSpeed_"+mode , ""+settings.getTeleportedModeSpeed() ); module.addParam( "teleportedModeFreespeedFactor_"+mode , ""+settings.getTeleportedModeFreespeedFactor() ); } Double val = null ; boolean first = true ; for ( ModeRoutingParams settings : initialGroup.getModeRoutingParams().values() ) { if ( first ) { first = false ; val = settings.getBeelineDistanceFactor() ; } else if ( !settings.getBeelineDistanceFactor().equals( val ) ) { throw new RuntimeException( "beeline distance factor varies by mode; this cannot be covered by this test" ) ; } } module.addParam( "beelineDistanceFactor", ""+val ); return module; }
@Test public void testConstructor() { PlanCalcScoreConfigGroup planScoring = new PlanCalcScoreConfigGroup(); PlansCalcRouteConfigGroup planRouting = new PlansCalcRouteConfigGroup(); TransitRouterConfigGroup transitRouting = new TransitRouterConfigGroup(); VspExperimentalConfigGroup vspConfig = new VspExperimentalConfigGroup() ; planRouting.setTeleportedModeSpeed(TransportMode.walk, 1.37); planRouting.setBeelineDistanceFactor(1.2);