20 package org.matsim.core.config.groups;
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
47 public static final String
GROUP_NAME =
"planscalcroute";
60 private static final String
PT_SPEED =
"ptSpeed";
90 accessEgressModeToLinkPlusTimeConstant
94 private static final String
ACCESSEGRESSTYPE_CMT =
"Defines how access and egress to main mode is simulated. Either of [none, accessEgressModeToLink, walkConstantTimeToLink, accessEgressModeToLinkPlusTimeConstant], Current default=none which means no access or egress trips are simulated.";
98 private static final String
RANDOMNESS =
"routingRandomness" ;
103 "Setting this switch to \"true\" will clear them. Note that this will also clear " +
138 public static final String
SET_TYPE =
"teleportedModeParameters";
139 public static final String
MODE =
"mode";
153 "Travel time = teleportedModeFreespeedFactor * <freespeed car travel time>. Insert a line like this for every such mode. " +
154 "Please do not set teleportedModeFreespeedFactor as well as teleportedModeSpeed for the same mode, but if you do, +" +
155 "teleportedModeFreespeedFactor wins over teleportedModeSpeed.";
158 +
"Link travel time will be $= factor * [ min( link_freespeed, freespeed_limit) ]" ;
171 if ( mode == null )
throw new RuntimeException(
"mode for parameter set "+
this+
" is null!" );
173 if ( teleportedModeSpeed == null && teleportedModeFreespeedFactor == null ) {
174 throw new RuntimeException(
"no teleported mode speed nor freespeed factor defined for mode "+mode );
177 if ( teleportedModeSpeed != null && teleportedModeFreespeedFactor != null ) {
179 throw new RuntimeException(
"both teleported mode speed or freespeed factor are set for mode "+mode );
185 final Map<String, String> map = super.getComments();
187 map.put(
"teleportedModeSpeed" ,
188 "Speed for a teleported mode. " +
189 "Travel time = (<beeline distance> * beelineDistanceFactor) / teleportedModeSpeed. Insert a line like this for every such mode.");
190 map.put( TELEPORTED_MODE_FREESPEED_FACTOR, TELEPORTED_MODE_FREESPEED_FACTOR_CMT);
235 throw new IllegalStateException(
"cannot set both speed and freespeed factor for "+
getMode() );
257 throw new IllegalStateException(
"cannot set both speed and freespeed factor for "+
getMode() );
346 throw new IllegalArgumentException( type );
359 throw new IllegalArgumentException( module.
getName() );
369 throw new RuntimeException(
"you cannot set the clearing of the default mode routing (= teleportation mode) params to false after you have already cleared once." ) ;
396 log.warn(
"The first mode routing (= teleported mode) params that are explicitly defined clear the default mode routing (= teleported mode) params. If you want to avoid this " );
441 if ( key.equals(mode) ) {
447 log.warn(
"You have removed the last mode routing (= teleported mode) parameter with the removeModeRoutingParams method. If you wrote the resulting config to " ) ;
448 log.warn(
" file, and read it back in, all default teleported modes would be resurrected. The code will therefore also call " );
449 log.warn(
" \"clearTeleportedModeParams()\". It would be better if you did this yourself." ) ;
460 final Map<String, TeleportedModeParams> map =
new LinkedHashMap< >();
468 if ( old != null )
throw new IllegalStateException(
"several parameter sets for mode "+mode );
477 if ( pars == null ) {
491 throw new IllegalArgumentException(key +
": getValue access disabled; use direct getter");
495 public void addParam(
final String key,
final String value) {
496 if( value.equals(
"null" ) )
return;
524 throw new IllegalArgumentException(key);
530 Map<String, String> map = super.getParams();
533 map.put(
RANDOMNESS, Double.toString(
this.routingRandomness ) ) ;
540 Map<String,String> map = super.getComments();
543 "are multiplied in order to obtain an estimate of the network distances/times. Default is something like 1.3") ;
544 map.put(
NETWORK_MODES,
"All the modes for which the router is supposed to generate network routes (like car)") ;
545 map.put(
RANDOMNESS,
"strength of the randomness for the utility of money in routing under toll. " 546 +
"Leads to Pareto-optimal route with randomly drawn money-vs-other-attributes tradeoff. " 547 +
"Technically the width parameter of a log-normal distribution. 3.0 seems to be a good value. " ) ;
562 final Map<String, Double> map =
new LinkedHashMap< >();
568 final Double speed = pars.getTeleportedModeSpeed();
569 if ( speed != null ) map.put( pars.getMode() , speed );
575 final Map<String, Double> map =
new LinkedHashMap< >();
581 final Double speed = pars.getTeleportedModeFreespeedFactor();
582 if ( speed != null ) map.put( pars.getMode() , speed );
588 final Map<String,Double> map =
new LinkedHashMap<>() ;
594 final Double val = pars.getBeelineDistanceFactor() ;
595 if ( val != null ) map.put( pars.getMode() , val ) ;
629 params.setBeelineDistanceFactor( val );
654 super.checkConsistency(config);
658 for( String
mode : modesRoutedAsTeleportation ){
659 if ( modesRoutedAsNetworkModes.contains(
mode ) ) {
660 throw new RuntimeException(
"mode \"" +
mode +
"\" is defined both as teleportation (mode routing param) and for network routing. You need to remove " +
661 "one or the other.") ;
669 log.warn(
"key=" + entry.getKey() +
"; value=" + entry.getValue() );
ConfigGroup createParameterSet(final String type)
static final String PT_SPEED
Double getBeelineDistanceFactor()
Double teleportedModeFreespeedFactor
void clearModeRoutingParams()
final Map< String, String > getParams()
void clearTeleportedModeParams()
AccessEgressType accessEgressType
void printModeRoutingParams()
static final String CLEAR_MODE_ROUTING_PARAMS
AccessEgressType getAccessEgressType()
void addParameterSet(final ConfigGroup set)
Map< String, Double > getBeelineDistanceFactors()
void checkConsistency(Config config)
TeleportedModeParams setMode(String mode)
Double teleportedModeFreespeedLimit
final Map< String, String > getComments()
ModeRoutingParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)
Map< String, String > getComments()
static String [] stringToArray(final String values)
final Collection<? extends ConfigGroup > clearParameterSetsForType(final String type)
Double teleportedModeSpeed
void setRoutingRandomness(double routingRandomness)
Map< String, Double > getTeleportedModeSpeeds()
ModeRoutingParams setTeleportedModeSpeed(Double teleportedModeSpeed)
String getValue(final String key)
static final String CLEAR_MODE_ROUTING_PARAMS_CMT
void setTeleportedModeSpeed(String mode, double speed)
void setNetworkModes(Collection< String > networkModes)
static final String UNDEFINED
Collection< String > networkModes
ModeRoutingParams setBeelineDistanceFactor(Double beelineDistanceFactor)
void checkParameterSet(final ConfigGroup module)
static final String UNDEFINED_MODE_SPEED
ConfigGroup createParameterSet(final String type)
Double getTeleportedModeSpeed()
double getRoutingRandomness()
void setBeelineDistanceFactor(double val)
static final String GROUP_NAME
void addModeRoutingParams(final TeleportedModeParams pars)
static final String PT_SPEED_FACTOR
TeleportedModeParams getOrCreateModeRoutingParams(final String mode)
ModeRoutingParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
boolean acceptModeParamsWithoutClearing
static final String SET_TYPE
static final String WALK_SPEED
void addParameterSet(final ConfigGroup set)
TeleportedModeParams setBeelineDistanceFactor(Double val)
Map< String, TeleportedModeParams > getModeRoutingParams()
ModeRoutingParams setMode(String mode)
void setAccessEgressType(AccessEgressType accessEgressType)
static final String TELEPORTED_MODE_FREESPEED_LIMIT_CMT
static final String ACCESSEGRESSTYPE
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
TeleportedModeParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
TeleportedModeParams setTeleportedModeSpeed(Double teleportedModeSpeed)
static final String TELEPORTED_MODE_SPEEDS
static final String TELEPORTED_MODE_FREESPEED_FACTOR
static final String RANDOMNESS
void addParam(final String key, final String value)
void removeModeRoutingParams(String key)
static final String BIKE_SPEED
final TreeMap< String, String > params
static final String non_network_walk
boolean removeParameterSet(final ConfigGroup set)
Map< String, Double > getTeleportedModeFreespeedFactors()
static String arrayToString(final String[] values)
Collection< String > getNetworkModes()
static final String NETWORK_MODES
final Double getTeleportedModeFreespeedLimit()
Double beelineDistanceFactor
void setClearingDefaultModeRoutingParams(boolean val)
static final String ACCESSEGRESSTYPE_CMT
void setTeleportedModeFreespeedFactor(String mode, double freespeedFactor)
static final String TELEPORTED_MODE_FREESPEED_FACTORS
TeleportedModeParams(final String mode)
Map< String, TeleportedModeParams > getTeleportedModeParams()
final void testForLocked()
void addTeleportedModeParams(final TeleportedModeParams pars)
TeleportedModeParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)
Double beelineDistanceFactorForMode
void checkConsistency(Config config)
ModeRoutingParams(String mode)
boolean clearingDefaultModeRoutingParams
Double getTeleportedModeFreespeedFactor()
PlansCalcRouteConfigGroup()
static final String BEELINE_DISTANCE_FACTOR
static final String TELEPORTED_MODE_FREESPEED_FACTOR_CMT
void removeTeleportedModeParams(String key)