20 package org.matsim.core.config.groups;
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
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 " +
145 public static final String
SET_TYPE =
"teleportedModeParameters";
146 public static final String
MODE =
"mode";
160 "Travel time = teleportedModeFreespeedFactor * <freespeed car travel time>. Insert a line like this for every such mode. " +
161 "Please do not set teleportedModeFreespeedFactor as well as teleportedModeSpeed for the same mode, but if you do, +" +
162 "teleportedModeFreespeedFactor wins over teleportedModeSpeed.";
165 +
"Link travel time will be $= factor * [ min( link_freespeed, freespeed_limit) ]" ;
178 if ( mode == null )
throw new RuntimeException(
"mode for parameter set "+
this+
" is null!" );
180 if ( teleportedModeSpeed == null && teleportedModeFreespeedFactor == null ) {
181 throw new RuntimeException(
"no teleported mode speed nor freespeed factor defined for mode "+mode );
184 if ( teleportedModeSpeed != null && teleportedModeFreespeedFactor != null ) {
186 throw new RuntimeException(
"both teleported mode speed or freespeed factor are set for mode "+mode );
192 final Map<String, String> map = super.getComments();
194 map.put(
"teleportedModeSpeed" ,
195 "Speed for a teleported mode. " +
196 "Travel time = (<beeline distance> * beelineDistanceFactor) / teleportedModeSpeed. Insert a line like this for every such mode.");
197 map.put( TELEPORTED_MODE_FREESPEED_FACTOR, TELEPORTED_MODE_FREESPEED_FACTOR_CMT);
242 throw new IllegalStateException(
"cannot set both speed and freespeed factor for "+
getMode() );
264 throw new IllegalStateException(
"cannot set both speed and freespeed factor for "+
getMode() );
353 throw new IllegalArgumentException( type );
366 throw new IllegalArgumentException( module.
getName() );
376 throw new RuntimeException(
"you cannot set the clearing of the default mode routing (= teleportation mode) params to false after you have already cleared once." ) ;
403 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 " );
448 if ( key.equals(mode) ) {
454 log.warn(
"You have removed the last mode routing (= teleported mode) parameter with the removeModeRoutingParams method. If you wrote the resulting config to " ) ;
455 log.warn(
" file, and read it back in, all default teleported modes would be resurrected. The code will therefore also call " );
456 log.warn(
" \"clearTeleportedModeParams()\". It would be better if you did this yourself." ) ;
467 final Map<String, TeleportedModeParams> map =
new LinkedHashMap< >();
475 if ( old != null )
throw new IllegalStateException(
"several parameter sets for mode "+mode );
484 if ( pars == null ) {
498 throw new IllegalArgumentException(key +
": getValue access disabled; use direct getter");
502 public void addParam(
final String key,
final String value) {
503 if( value.equals(
"null" ) )
return;
533 throw new IllegalArgumentException(key);
539 Map<String, String> map = super.getParams();
542 map.put(
RANDOMNESS, Double.toString(
this.routingRandomness ) ) ;
550 Map<String,String> map = super.getComments();
553 "are multiplied in order to obtain an estimate of the network distances/times. Default is something like 1.3") ;
554 map.put(
NETWORK_MODES,
"All the modes for which the router is supposed to generate network routes (like car)") ;
555 map.put(
RANDOMNESS,
"strength of the randomness for the utility of money in routing under toll. " 556 +
"Leads to Pareto-optimal route with randomly drawn money-vs-other-attributes tradeoff. " 557 +
"Technically the width parameter of a log-normal distribution. 3.0 seems to be a good value. " ) ;
573 final Map<String, Double> map =
new LinkedHashMap< >();
579 final Double speed = pars.getTeleportedModeSpeed();
580 if ( speed != null ) map.put( pars.getMode() , speed );
586 final Map<String, Double> map =
new LinkedHashMap< >();
592 final Double speed = pars.getTeleportedModeFreespeedFactor();
593 if ( speed != null ) map.put( pars.getMode() , speed );
599 final Map<String,Double> map =
new LinkedHashMap<>() ;
605 final Double val = pars.getBeelineDistanceFactor() ;
606 if ( val != null ) map.put( pars.getMode() , val ) ;
640 params.setBeelineDistanceFactor( val );
675 super.checkConsistency(config);
679 for( String
mode : modesRoutedAsTeleportation ){
680 if ( modesRoutedAsNetworkModes.contains(
mode ) ) {
681 throw new RuntimeException(
"mode \"" +
mode +
"\" is defined both as teleportation (mode routing param) and for network routing. You need to remove " +
682 "one or the other.") ;
690 log.warn(
"key=" + entry.getKey() +
"; value=" + entry.getValue() );
ConfigGroup createParameterSet(final String type)
static final String SET_TYPE
TeleportedModeParams setBeelineDistanceFactor(Double val)
void removeTeleportedModeParams(String key)
AccessEgressType getAccessEgressType()
static final String TELEPORTED_MODE_FREESPEED_FACTOR
TeleportedModeParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
void removeModeRoutingParams(String key)
static final String CLEAR_MODE_ROUTING_PARAMS_CMT
void addParameterSet(final ConfigGroup set)
static final String TELEPORTED_MODE_FREESPEED_LIMIT_CMT
static final String RANDOMNESS
Map< String, TeleportedModeParams > getModeRoutingParams()
static final String NETWORK_ROUTE_CONSISTENCY_CHECK
void setClearingDefaultModeRoutingParams(boolean val)
static final String PT_SPEED
void setBeelineDistanceFactor(double val)
void setTeleportedModeSpeed(String mode, double speed)
static String [] stringToArray(final String values)
static final String UNDEFINED_MODE_SPEED
NetworkRouteConsistencyCheck getNetworkRouteConsistencyCheck()
final Collection<? extends ConfigGroup > clearParameterSetsForType(final String type)
boolean clearingDefaultModeRoutingParams
Map< String, Double > getBeelineDistanceFactors()
Double getBeelineDistanceFactor()
static final String TELEPORTED_MODE_SPEEDS
void printModeRoutingParams()
ModeRoutingParams setMode(String mode)
Double teleportedModeFreespeedFactor
double getRoutingRandomness()
TeleportedModeParams setMode(String mode)
Map< String, Double > getTeleportedModeFreespeedFactors()
ModeRoutingParams(String mode)
ModeRoutingParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
static final String TELEPORTED_MODE_FREESPEED_FACTORS
void setRoutingRandomness(double routingRandomness)
void setTeleportedModeFreespeedFactor(String mode, double freespeedFactor)
void checkConsistency(Config config)
static final String CLEAR_MODE_ROUTING_PARAMS
Double beelineDistanceFactor
Collection< String > networkModes
boolean acceptModeParamsWithoutClearing
void addParameterSet(final ConfigGroup set)
void setNetworkRouteConsistencyCheck(NetworkRouteConsistencyCheck networkRouteConsistencyCheck)
static final String WALK_SPEED
NetworkRouteConsistencyCheck networkRouteConsistencyCheck
ModeRoutingParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)
String getValue(final String key)
TeleportedModeParams setTeleportedModeSpeed(Double teleportedModeSpeed)
TeleportedModeParams(final String mode)
void addTeleportedModeParams(final TeleportedModeParams pars)
void addParam(final String key, final String value)
void addModeRoutingParams(final TeleportedModeParams pars)
static final String ACCESSEGRESSTYPE
ModeRoutingParams setTeleportedModeSpeed(Double teleportedModeSpeed)
Double getTeleportedModeSpeed()
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
static final String UNDEFINED
static final String GROUP_NAME
AccessEgressType accessEgressType
Double teleportedModeSpeed
static final String BIKE_SPEED
Double beelineDistanceFactorForMode
static final String ACCESSEGRESSTYPE_CMT
void setNetworkModes(Collection< String > networkModes)
static final String BEELINE_DISTANCE_FACTOR
final TreeMap< String, String > params
static final String PT_SPEED_FACTOR
static final String non_network_walk
boolean removeParameterSet(final ConfigGroup set)
static String arrayToString(final String[] values)
Map< String, TeleportedModeParams > getTeleportedModeParams()
ModeRoutingParams setBeelineDistanceFactor(Double beelineDistanceFactor)
ConfigGroup createParameterSet(final String type)
Double getTeleportedModeFreespeedFactor()
void checkParameterSet(final ConfigGroup module)
Map< String, String > getComments()
void setAccessEgressType(AccessEgressType accessEgressType)
TeleportedModeParams getOrCreateModeRoutingParams(final String mode)
static final String NETWORK_MODES
final void testForLocked()
Collection< String > getNetworkModes()
Map< String, Double > getTeleportedModeSpeeds()
void clearModeRoutingParams()
final Map< String, String > getComments()
TeleportedModeParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)
static final String TELEPORTED_MODE_FREESPEED_FACTOR_CMT
final Double getTeleportedModeFreespeedLimit()
void clearTeleportedModeParams()
Double teleportedModeFreespeedLimit
void checkConsistency(Config config)
final Map< String, String > getParams()