public Map<String, ModeRoutingParams> getModeRoutingParams() { final Map<String, ModeRoutingParams> map = new LinkedHashMap< >(); for ( ConfigGroup pars : getParameterSets( ModeRoutingParams.SET_TYPE ) ) { if ( this.isLocked() ) { pars.setLocked(); } final String mode = ((ModeRoutingParams) pars).getMode(); final ModeRoutingParams old = map.put( mode , (ModeRoutingParams) pars ); if ( old != null ) throw new IllegalStateException( "several parameter sets for mode "+mode ); } return map; }
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; }
public Map<String, Double> getTeleportedModeSpeeds() { final Map<String, Double> map = new LinkedHashMap< >(); for ( ModeRoutingParams pars : getModeRoutingParams().values() ) { if ( this.isLocked() ) { pars.setLocked(); } final Double speed = pars.getTeleportedModeSpeed(); if ( speed != null ) map.put( pars.getMode() , speed ); } return map; }
comparisonPSet = ((ScoringParameterSet) comparisonModule).getOrCreateActivityParams(((ActivityParams) pSet).getActivityType()); } else if ( pSet instanceof ModeRoutingParams ) { comparisonPSet = ((PlansCalcRouteConfigGroup) comparisonModule).getOrCreateModeRoutingParams(((ModeRoutingParams) pSet).getMode()) ; } else { try {
private static boolean sameType(ConfigGroup pSet, ConfigGroup cg) { if ( ! ( pSet.getName().equals( cg.getName() ) ) ) { return false; } if ( pSet instanceof ModeRoutingParams ) { // (these are the "teleportedRouteParameters" in config.xml) if ( ((ModeRoutingParams)pSet).getMode().equals( ((ModeRoutingParams)cg).getMode() ) ) { return true ; } } if ( pSet instanceof ScoringParameterSet ) { return true ; } if ( pSet instanceof ModeParams ) { if ( ((ModeParams)pSet).getMode().equals( ((ModeParams)cg).getMode() ) ) { return true ; } } if ( pSet instanceof ActivityParams ) { if ( ((ActivityParams)pSet).getActivityType().equals( ((ActivityParams)cg).getActivityType() ) ) { return true ; } } if ( pSet instanceof StrategySettings ) { return true ; // yy this will not work since there is no corresponding default entry! kai, may'18 } return false ; }
@Override public RoutingModule get() { // FreespeedTravelTimeAndDisutility ptTimeCostCalc = new FreespeedTravelTimeAndDisutility(-1.0, 0.0, 0.0); // I wanted to introduce the freespeed limit. Decided to locally re-implement rather than making the FreespeedTravelTimeAndDisutility // class longer. kai, nov'16 // yyyy the following might be improved by including additional disutility parameters. But the original one I found was also // just doing fastest time (see commented out version above). kai, nov'16 final TravelTime travelTime = new TravelTime(){ @Override public double getLinkTravelTime(Link link, double time, Person person, Vehicle vehicle) { return link.getLength() / Math.min( link.getFreespeed(time) , params.getTeleportedModeFreespeedLimit() ) ; } } ; TravelDisutility travelDisutility = new TravelDisutility(){ @Override public double getLinkTravelDisutility(Link link, double time, Person person, Vehicle vehicle) { return travelTime.getLinkTravelTime(link, time, person, vehicle) ; } @Override public double getLinkMinimumTravelDisutility(Link link) { return link.getLength() / Math.min( link.getFreespeed() , params.getTeleportedModeFreespeedLimit() ) ; } } ; Gbl.assertNotNull(leastCostPathCalculatorFactory); LeastCostPathCalculator routeAlgoPtFreeFlow = leastCostPathCalculatorFactory.createPathCalculator( network, travelDisutility, travelTime); return DefaultRoutingModules.createPseudoTransitRouter(params.getMode(), populationFactory, network, routeAlgoPtFreeFlow, params); } }
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; }
public Map<String,Double> getBeelineDistanceFactors() { final Map<String,Double> map = new LinkedHashMap<>() ; for ( ModeRoutingParams pars : getModeRoutingParams().values() ) { if ( this.isLocked() ) { pars.setLocked(); } final Double val = pars.getBeelineDistanceFactor() ; if ( val != null ) map.put( pars.getMode() , val ) ; } return map ; }
public void removeModeRoutingParams( String key ) { testForLocked() ; for ( ConfigGroup pars : getParameterSets( ModeRoutingParams.SET_TYPE ) ) { final String mode = ((ModeRoutingParams) pars).getMode(); if ( key.equals(mode) ) { this.removeParameterSet(pars) ; break ; } } }
@Override public RoutingModule get() { return DefaultRoutingModules.createTeleportationRouter(params.getMode(), populationFactory, params); } }
@StringSetter( "teleportedModeSpeed" ) public void setTeleportedModeSpeed(Double teleportedModeSpeed) { testForLocked() ; if ( getTeleportedModeFreespeedFactor() != null && teleportedModeSpeed != null ) { throw new IllegalStateException( "cannot set both speed and freespeed factor for "+getMode() ); } this.teleportedModeSpeed = teleportedModeSpeed; }
/** * @param teleportedModeFreespeedFactor -- {@value #TELEPORTED_MODE_FREESPEED_FACTOR_CMT} */ @StringSetter(TELEPORTED_MODE_FREESPEED_FACTOR) public void setTeleportedModeFreespeedFactor( Double teleportedModeFreespeedFactor) { testForLocked() ; if ( getTeleportedModeSpeed() != null && teleportedModeFreespeedFactor != null ) { throw new IllegalStateException( "cannot set both speed and freespeed factor for "+getMode() ); } this.teleportedModeFreespeedFactor = teleportedModeFreespeedFactor; }