MATSIM
RoutingConfigGroup.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.*
3  * PlansCalcRouteConfigGroup
4  * *
5  * *********************************************************************** *
6  * *
7  * copyright : (C) 2009 by the members listed in the COPYING, *
8  * LICENSE and WARRANTY file. *
9  * email : info at matsim dot org *
10  * *
11  * *********************************************************************** *
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * See also COPYING, LICENSE and WARRANTY file *
18  * *
19  * *********************************************************************** */
20 package org.matsim.core.config.groups;
21 
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
26 import org.matsim.core.config.Config;
32 
33 import java.util.*;
34 
43 public final class RoutingConfigGroup extends ConfigGroup {
44  // yy There is a certain degree of messiness in this class because of retrofitting, e.g. making beelineDistance mode-specific while
45  // being backwards compatible. This could eventually be cleaned up, maybe about a year after introducing it. kai, jun'15
46 
47  public static final String GROUP_NAME = "routing";
48 
49  private static final String BEELINE_DISTANCE_FACTOR = "beelineDistanceFactor";
50  private static final String NETWORK_MODES = "networkModes";
51  private static final String TELEPORTED_MODE_SPEEDS = "teleportedModeSpeed_";
52  private static final String TELEPORTED_MODE_FREESPEED_FACTORS = "teleportedModeFreespeedFactor_";
53 
54 
55  public static final String UNDEFINED = "undefined";
56 
57  // For config file backward compatibility.
58  // These are just hardcoded versions of the options above.
59  private static final String PT_SPEED_FACTOR = "ptSpeedFactor";
60  private static final String PT_SPEED = "ptSpeed";
61  private static final String WALK_SPEED = "walkSpeed";
62  private static final String BIKE_SPEED = "bikeSpeed";
63  private static final String UNDEFINED_MODE_SPEED = "undefinedModeSpeed";
64 
65  private static final Logger log = LogManager.getLogger(RoutingConfigGroup.class) ;
66 
67  private Collection<String> networkModes = Collections.singletonList( TransportMode.car );
68 
70 
71  private Double beelineDistanceFactor = 1.3 ;
72 
73  public enum AccessEgressType {
74  @Deprecated none,
75 
81 
86 
90  accessEgressModeToLinkPlusTimeConstant
91  }
92 
93  private static final String ACCESSEGRESSTYPE = "accessEgressType";
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.";
96 
97  // ---
98  private static final String RANDOMNESS = "routingRandomness" ;
99  private double routingRandomness = 3. ;
100  // ---
101  private static final String CLEAR_MODE_ROUTING_PARAMS = "clearDefaultTeleportedModeParams";
102  private static final String CLEAR_MODE_ROUTING_PARAMS_CMT = "Some typical teleportation routing params are set by default, such as for walk and bike. " +
103  "Setting this switch to \"true\" will clear them. Note that this will also clear " +
104  "settings for helper modes such as for " + TransportMode.non_network_walk;
105  private boolean clearingDefaultModeRoutingParams = false ;
106 
107  private static final String NETWORK_ROUTE_CONSISTENCY_CHECK = "networkRouteConsistencyCheck";
109 
111  disable, abortOnInconsistency
112  }
113 
117  public final static class ModeRoutingParams extends TeleportedModeParams{
118  public ModeRoutingParams( String mode ){
119  super( mode );
120  }
121 
122  // repeating the setters so that they return the right type with chaining. kai, jan'23
123  @Override public ModeRoutingParams setMode( String mode ) {
124  super.setMode( mode );
125  return this;
126  }
128  super.setTeleportedModeSpeed( teleportedModeSpeed );
129  return this;
130  }
132  super.setTeleportedModeFreespeedLimit( teleportedModeFreespeedLimit );
133  return this;
134  }
136  super.setTeleportedModeFreespeedFactor( teleportedModeFreespeedFactor );
137  return this;
138  }
139  @Override public ModeRoutingParams setBeelineDistanceFactor( Double beelineDistanceFactor ) {
140  super.setBeelineDistanceFactor( beelineDistanceFactor );
141  return this;
142  }
143  }
144  public static class TeleportedModeParams extends ReflectiveConfigGroup implements MatsimParameters {
145  public static final String SET_TYPE = "teleportedModeParameters";
146  public static final String MODE = "mode";
147  public static final String TELEPORTED_MODE_FREESPEED_FACTOR = "teleportedModeFreespeedFactor";
148 
149  private String mode = null;
150 
151  // beeline teleportation:
152  private Double teleportedModeSpeed = null;
153  private Double beelineDistanceFactorForMode = null ;
154 
155  // route computed on network:
156  private Double teleportedModeFreespeedFactor = null;
157  private Double teleportedModeFreespeedLimit = Double.POSITIVE_INFINITY ;
158 
159  private static final String TELEPORTED_MODE_FREESPEED_FACTOR_CMT = "Free-speed factor for a teleported 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.";
163 
164  private static final String TELEPORTED_MODE_FREESPEED_LIMIT_CMT = "When using freespeed factor, a speed limit on the free speed. "
165  + "Link travel time will be $= factor * [ min( link_freespeed, freespeed_limit) ]" ;
166 
167  public TeleportedModeParams( final String mode ) {
168  super( SET_TYPE );
169  setMode( mode );
170  }
171 
173  super( SET_TYPE );
174  }
175 
176  @Override
177  public void checkConsistency(Config config) {
178  if ( mode == null ) throw new RuntimeException( "mode for parameter set "+this+" is null!" );
179 
180  if ( teleportedModeSpeed == null && teleportedModeFreespeedFactor == null ) {
181  throw new RuntimeException( "no teleported mode speed nor freespeed factor defined for mode "+mode );
182  }
183 
184  if ( teleportedModeSpeed != null && teleportedModeFreespeedFactor != null ) {
185  // this should not happen anyway as the setters forbid it
186  throw new RuntimeException( "both teleported mode speed or freespeed factor are set for mode "+mode );
187  }
188  }
189 
190  @Override
191  public Map<String, String> getComments() {
192  final Map<String, String> map = super.getComments();
193 
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);
198 
199  return map;
200  }
201 
207  public final Double getTeleportedModeFreespeedLimit() {
208  return this.teleportedModeFreespeedLimit;
209  }
210 
216  public TeleportedModeParams setTeleportedModeFreespeedLimit( Double teleportedModeFreespeedLimit ) {
217  this.teleportedModeFreespeedLimit = teleportedModeFreespeedLimit;
218  return this;
219  }
220 
221  @StringGetter(MODE)
222  public String getMode() {
223  return mode;
224  }
225 
227  public TeleportedModeParams setMode( String mode ) {
228  testForLocked() ;
229  this.mode = mode;
230  return this ;
231  }
232 
233  @StringGetter( "teleportedModeSpeed" )
234  public Double getTeleportedModeSpeed() {
235  return teleportedModeSpeed;
236  }
237 
238  @StringSetter( "teleportedModeSpeed" )
240  testForLocked() ;
241  if ( getTeleportedModeFreespeedFactor() != null && teleportedModeSpeed != null ) {
242  throw new IllegalStateException( "cannot set both speed and freespeed factor for "+getMode() );
243  }
244  this.teleportedModeSpeed = teleportedModeSpeed;
245  return this;
246  }
247 
254  }
255 
262  testForLocked() ;
263  if ( getTeleportedModeSpeed() != null && teleportedModeFreespeedFactor != null ) {
264  throw new IllegalStateException( "cannot set both speed and freespeed factor for "+getMode() );
265  }
267  return this;
268  }
269 
270  @StringSetter("beelineDistanceFactor")
272  testForLocked() ;
273  this.beelineDistanceFactorForMode = val ;
274  return this ;
275  }
276  @StringGetter("beelineDistanceFactor")
277  public Double getBeelineDistanceFactor() {
278  return this.beelineDistanceFactorForMode ;
279  }
280 
281  }
282 
284  super(GROUP_NAME);
285 
287  {
289  bike.setTeleportedModeSpeed( 15.0 / 3.6 ); // 15.0 km/h --> m/s
290  addParameterSet( bike );
291  }
292 
293  {
295  walk.setTeleportedModeSpeed( 3.0 / 3.6 ); // 3.0 km/h --> m/s
296  addParameterSet( walk );
297  }
298 
299  // the following two are deliberately different from "walk" since "walk" may become a network routing mode, but these two
300  // will not. kai, dec'15
301  {
303  walk.setTeleportedModeSpeed( 3.0 / 3.6 ); // 3.0 km/h --> m/s
304  addParameterSet( walk );
305  }
306 // {
307 // final ModeRoutingParams walk = new ModeRoutingParams( TransportMode.egress_walk );
308 // walk.setTeleportedModeSpeed( 3.0 / 3.6 ); // 3.0 km/h --> m/s
309 // addParameterSet( walk );
310 // }
311 
312  // I'm not sure if anyone needs the "undefined" mode. In particular, it doesn't do anything for modes which are
313  // really unknown, it is just a mode called "undefined". michaz 02-2012
314  //
315  // The original design idea was that some upstream module would figure out expected travel times and travel distances
316  // for any modes, and the simulation would teleport all those modes it does not know anything about.
317  // With the travel times and travel distances given by the mode. In practice, it seems that people can live better
318  // with the concept that mobsim figures it out by itself. Although it is a much less flexible design. kai, jun'2012
319 // {
320 // final ModeRoutingParams undefined = new ModeRoutingParams( UNDEFINED );
321 // undefined.setTeleportedModeSpeed( 50. / 3.6 ); // 50.0 km/h --> m/s
322 // addParameterSet( undefined );
323 // }
324 
325  {
328  addParameterSet( ride );
329  }
330 
331  {
334  addParameterSet( pt );
335  }
336 
337  // {
338 // final ModeRoutingParams transit_walk = new ModeRoutingParams( TransportMode.transit_walk ) ;
339 // transit_walk.setTeleportedModeSpeed( 3.0 / 3.6 ); // 3.0 km/h --> m/s
340 // addParameterSet( transit_walk );
341 // }
342  // one might add the above but it was not added in the original design. Not sure about the reason. kai, feb'15
343 
344  this.acceptModeParamsWithoutClearing = false;
345  }
346 
347  @Override
348  public ConfigGroup createParameterSet( final String type ) {
349  switch ( type ) {
351  return new TeleportedModeParams();
352  default:
353  throw new IllegalArgumentException( type );
354  }
355  }
356 
357  @Override
358  protected void checkParameterSet( final ConfigGroup module ) {
359  switch ( module.getName() ) {
361  if ( !(module instanceof TeleportedModeParams) ) {
362  throw new RuntimeException( "unexpected class for module "+module );
363  }
364  break;
365  default:
366  throw new IllegalArgumentException( module.getName() );
367  }
368  }
372  public void setClearingDefaultModeRoutingParams( boolean val ) {
373  if ( val ) {
375  } else if ( clearingDefaultModeRoutingParams ) {
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." ) ;
377  }
378  }
380  this.clearModeRoutingParams();
381  }
385  public void clearModeRoutingParams( ) {
386  // This is essentially a config switch, except that it cannot be set back to false once it was set to true.
387 
388  // from now on, we will accept without clearing:
390 
391  // do the clearing:
393 
394  // memorize that we have cleared; this is what will be written into the output config (once we have one):
396  }
397 
398  @Override
399  public void addParameterSet(final ConfigGroup set) {
400  if ( set.getName().equals( TeleportedModeParams.SET_TYPE ) && !this.acceptModeParamsWithoutClearing ) {
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 " );
404  log.warn( " warning, use clearTeleportedModeParams(true) in code, and \"" + CLEAR_MODE_ROUTING_PARAMS + "\"=true in xml config.");
405 
406 // "This functionality was removed for " );
407 // log.warn( " some weeks in the development head, after release 11.x, and before release 12.x; it is now back. " +
408 
409  // A bit more info:
410  //
411  // (1) I wanted to keep the default teleportation routers ... since for novice users I find it better if they all use the same teleportation
412  // speeds. kai, nov'19
413  //
414  // (2) The result of "add" and "remove" in code evidently depends on the sequence. In contrast, our "config" object
415  // is a state ... as one notices when we write it out, since there we cannot play back additions and removal. So if
416  // we add to and remove from the default entries, and write the final result to file, then re-reading these entries
417  // needs to trigger removal of the defaults since otherwise they will exist in addition. kai, nov'19
418  }
420  // for the time being pushing the "global" factor into the local ones if they are not initialized by
421  // themselves. Necessary for some tests; maybe we should eventually disable them. kai, feb'15
422  if ( pars.getBeelineDistanceFactor()== null ) {
424  }
425  super.addParameterSet( set );
426  }
427 
428  public void addTeleportedModeParams( final TeleportedModeParams pars ) {
429  testForLocked() ;
430  addParameterSet( pars );
431  }
435  public void addModeRoutingParams(final TeleportedModeParams pars ) {
436  this.addTeleportedModeParams( pars );
437  }
438  public void removeTeleportedModeParams( String key ){
439  this.removeModeRoutingParams( key );
440  }
444  public void removeModeRoutingParams( String key ) {
445  testForLocked() ;
447  final String mode = ((TeleportedModeParams) pars).getMode();
448  if ( key.equals(mode) ) {
449  this.removeParameterSet(pars) ;
450  break ;
451  }
452  }
453  if ( getParameterSets( TeleportedModeParams.SET_TYPE ).isEmpty() ) {
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." ) ;
457  this.clearModeRoutingParams();
458  }
459  }
460  public Map<String, TeleportedModeParams> getTeleportedModeParams() {
461  return getModeRoutingParams();
462  }
466  public Map<String, TeleportedModeParams> getModeRoutingParams() {
467  final Map<String, TeleportedModeParams> map = new LinkedHashMap< >();
468 
470  if ( this.isLocked() ) {
471  pars.setLocked();
472  }
473  final String mode = ((TeleportedModeParams) pars).getMode();
474  final TeleportedModeParams old = map.put( mode , (TeleportedModeParams) pars );
475  if ( old != null ) throw new IllegalStateException( "several parameter sets for mode "+mode );
476  }
477 
478  return map;
479  }
480 
482  TeleportedModeParams pars = getModeRoutingParams().get( mode );
483 
484  if ( pars == null ) {
486  pars.setMode( mode );
487  addParameterSet( pars );
488  }
489  if ( this.isLocked() ) {
490  pars.setLocked();
491  }
492 
493  return pars;
494  }
495 
496  @Override
497  public String getValue(final String key) {
498  throw new IllegalArgumentException(key + ": getValue access disabled; use direct getter");
499  }
500 
501  @Override
502  public void addParam(final String key, final String value) {
503  if( value.equals( "null" ) ) return; // old behavior of reader: keep defaults if null
504  if (PT_SPEED_FACTOR.equals(key)) {
505  setTeleportedModeFreespeedFactor(TransportMode.pt, Double.parseDouble(value));
506  } else if (BEELINE_DISTANCE_FACTOR.equals(key)) {
507  setBeelineDistanceFactor(Double.parseDouble(value));
508  } else if (PT_SPEED.equals(key)) {
509  setTeleportedModeSpeed(TransportMode.pt, Double.parseDouble(value));
510  } else if (WALK_SPEED.equals(key)) {
511  setTeleportedModeSpeed(TransportMode.walk, Double.parseDouble(value));
512  } else if (BIKE_SPEED.equals(key)) {
513  setTeleportedModeSpeed(TransportMode.bike, Double.parseDouble(value));
514  } else if (UNDEFINED_MODE_SPEED.equals(key)) {
515  setTeleportedModeSpeed(UNDEFINED, Double.parseDouble(value));
516  } else if (NETWORK_MODES.equals(key)) {
517  setNetworkModes(Arrays.asList(CollectionUtils.stringToArray(value)));
518  } else if (key.startsWith(TELEPORTED_MODE_SPEEDS)) {
519  setTeleportedModeSpeed(key.substring(TELEPORTED_MODE_SPEEDS.length()), Double.parseDouble(value));
520  } else if (key.startsWith(TELEPORTED_MODE_FREESPEED_FACTORS)){
521  setTeleportedModeFreespeedFactor( key.substring( TELEPORTED_MODE_FREESPEED_FACTORS.length() ), Double.parseDouble( value ) );
522  } else if ( CLEAR_MODE_ROUTING_PARAMS.equals( key ) ){
523  this.setClearingDefaultModeRoutingParams( Boolean.parseBoolean( value ) );
524  } else if (RANDOMNESS.equals( key ) ) {
525  this.setRoutingRandomness( Double.parseDouble( value ) );
526  }
527  else if (ACCESSEGRESSTYPE.equals( key ) ) {
528  this.setAccessEgressType(AccessEgressType.valueOf(value));
529  } else if (NETWORK_ROUTE_CONSISTENCY_CHECK.equals(key)){
531  }
532  else {
533  throw new IllegalArgumentException(key);
534  }
535  }
536 
537  @Override
538  public final Map<String, String> getParams() {
539  Map<String, String> map = super.getParams();
540  map.put( NETWORK_MODES, CollectionUtils.arrayToString(this.networkModes.toArray( new String[0] ) ) );
541  map.put( CLEAR_MODE_ROUTING_PARAMS, Boolean.toString( this.clearingDefaultModeRoutingParams ) ) ;
542  map.put( RANDOMNESS, Double.toString( this.routingRandomness ) ) ;
545  return map;
546  }
547 
548  @Override
549  public final Map<String, String> getComments() {
550  Map<String,String> map = super.getComments();
551 
552  map.put(BEELINE_DISTANCE_FACTOR, "factor with which beeline distances (and therefore times) " +
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. " ) ;
560  map.put(NETWORK_ROUTE_CONSISTENCY_CHECK, "Defines whether the network consistency should be checked.");
561  return map;
562  }
563 
564  public Collection<String> getNetworkModes() {
565  return this.networkModes;
566  }
567 
568  public void setNetworkModes(Collection<String> networkModes) {
569  this.networkModes = networkModes;
570  }
571 
572  public Map<String, Double> getTeleportedModeSpeeds() {
573  final Map<String, Double> map = new LinkedHashMap< >();
574  for ( TeleportedModeParams pars : getModeRoutingParams().values() ) {
575  if ( this.isLocked() ) {
576  pars.setLocked();
577  }
578 
579  final Double speed = pars.getTeleportedModeSpeed();
580  if ( speed != null ) map.put( pars.getMode() , speed );
581  }
582  return map;
583  }
584 
585  public Map<String, Double> getTeleportedModeFreespeedFactors() {
586  final Map<String, Double> map = new LinkedHashMap< >();
587  for ( TeleportedModeParams pars : getModeRoutingParams().values() ) {
588  if ( this.isLocked() ) {
589  pars.setLocked();
590  }
591 
592  final Double speed = pars.getTeleportedModeFreespeedFactor();
593  if ( speed != null ) map.put( pars.getMode() , speed );
594  }
595  return map;
596  }
597 
598  public Map<String,Double> getBeelineDistanceFactors() {
599  final Map<String,Double> map = new LinkedHashMap<>() ;
600  for ( TeleportedModeParams pars : getModeRoutingParams().values() ) {
601  if ( this.isLocked() ) {
602  pars.setLocked();
603  }
604 
605  final Double val = pars.getBeelineDistanceFactor() ;
606  if ( val != null ) map.put( pars.getMode() , val ) ;
607  }
608  return map ;
609  }
610 
611  @Deprecated // rather use addModeRoutingParams(...), since that allows further params (e.g. beeline distance factor). kai, nov'19
612  public void setTeleportedModeFreespeedFactor(String mode, double freespeedFactor) {
613  testForLocked() ;
614  // re-create, to trigger erasing of defaults (see acceptModeParamsWithoutClearing)
615  final TeleportedModeParams pars = new TeleportedModeParams( mode );
616  pars.setTeleportedModeFreespeedFactor( freespeedFactor );
617  addParameterSet( pars );
618  }
619 
620  @Deprecated // rather use addModeRoutingParams(...), since that allows further params (e.g. beeline distance factor). kai, nov'19
621  public void setTeleportedModeSpeed(String mode, double speed) {
622  testForLocked() ;
623  // re-create, to trigger erasing of defaults (see acceptModeParamsWithoutClearing)
624  final TeleportedModeParams pars = new TeleportedModeParams( mode );
625  pars.setTeleportedModeSpeed( speed );
626  addParameterSet( pars );
627  }
628 
629  @Deprecated // use mode-specific beeline distance factors! kai, apr'15
630  public void setBeelineDistanceFactor(double val) {
631  testForLocked() ;
632  // yyyy thinking about this: this should in design maybe not be different from the other teleportation factors (reset everything
633  // if one is set; or possibly disallow setting it at all). kai, feb'15
634 
635  // memorize the global factor for ModeRoutingParams that are added later:
636  this.beelineDistanceFactor = val ;
637 
638  // push the global factor to the local ones for all ModeRoutingParams that are already there:
639  for ( TeleportedModeParams params : this.getModeRoutingParams().values() ) {
640  params.setBeelineDistanceFactor( val );
641  }
642  }
643 
644 
647  return this.accessEgressType;
648  }
649 
653  }
654 
656  public double getRoutingRandomness() {
657  return routingRandomness;
658  }
662  }
663 
667  }
668 
672  }
673 
674  @Override protected void checkConsistency(Config config) {
675  super.checkConsistency(config);
676  Set<String> modesRoutedAsTeleportation = this.getModeRoutingParams().keySet();
677  Collection<String> modesRoutedAsNetworkModes = this.getNetworkModes();
678 
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.") ;
683  }
684  }
685 
686  }
687 
688  public void printModeRoutingParams(){
689  for( Map.Entry<String, TeleportedModeParams> entry : this.getModeRoutingParams().entrySet() ){
690  log.warn( "key=" + entry.getKey() + "; value=" + entry.getValue() );
691  }
692  }
693 
694 }
ConfigGroup createParameterSet(final String type)
TeleportedModeParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
void addParameterSet(final ConfigGroup set)
Map< String, TeleportedModeParams > getModeRoutingParams()
void setTeleportedModeSpeed(String mode, double speed)
static String [] stringToArray(final String values)
NetworkRouteConsistencyCheck getNetworkRouteConsistencyCheck()
final Collection<? extends ConfigGroup > clearParameterSetsForType(final String type)
ModeRoutingParams setTeleportedModeFreespeedFactor(Double teleportedModeFreespeedFactor)
void setTeleportedModeFreespeedFactor(String mode, double freespeedFactor)
void setNetworkRouteConsistencyCheck(NetworkRouteConsistencyCheck networkRouteConsistencyCheck)
ModeRoutingParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)
TeleportedModeParams setTeleportedModeSpeed(Double teleportedModeSpeed)
void addTeleportedModeParams(final TeleportedModeParams pars)
void addParam(final String key, final String value)
void addModeRoutingParams(final TeleportedModeParams pars)
ModeRoutingParams setTeleportedModeSpeed(Double teleportedModeSpeed)
final Map< String, ? extends Collection<? extends ConfigGroup > > getParameterSets()
void setNetworkModes(Collection< String > networkModes)
final TreeMap< String, String > params
boolean removeParameterSet(final ConfigGroup set)
static String arrayToString(final String[] values)
Map< String, TeleportedModeParams > getTeleportedModeParams()
ModeRoutingParams setBeelineDistanceFactor(Double beelineDistanceFactor)
void setAccessEgressType(AccessEgressType accessEgressType)
TeleportedModeParams getOrCreateModeRoutingParams(final String mode)
TeleportedModeParams setTeleportedModeFreespeedLimit(Double teleportedModeFreespeedLimit)