MATSIM
InitRoutes.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.*
3  * XY2Links.java
4  * *
5  * *********************************************************************** *
6  * *
7  * copyright : (C) 2007, 2008 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 
21 package org.matsim.run;
22 
23 import java.util.Arrays;
24 import java.util.Iterator;
25 
26 import org.matsim.core.config.Config;
30 import org.matsim.core.gbl.Gbl;
49 
57 public class InitRoutes {
58 
60  // member variables
62 
63  private Config config;
64  private String configfile = null;
65  private String plansfile = null;
66 
68  // parse methods
70 
76  private void parseArguments(final String[] args) {
77  if (args.length == 0) {
78  System.out.println("Too few arguments.");
79  printUsage();
80  System.exit(1);
81  }
82  Iterator<String> argIter = new ArgumentParser(args).iterator();
83  String arg = argIter.next();
84  if (arg.equals("-h") || arg.equals("--help")) {
85  printUsage();
86  System.exit(0);
87  } else {
88  this.configfile = arg;
89  this.plansfile = argIter.next();
90  if (argIter.hasNext()) {
91  System.out.println("Too many arguments.");
92  printUsage();
93  System.exit(1);
94  }
95  }
96  }
97 
99  // print methods
101 
102  private void printUsage() {
103  System.out.println();
104  System.out.println("InitRoutes");
105  System.out.println("Reads a plans-file and assignes each leg in each plan of each person");
106  System.out.println("a an initial route (freespeed) based on the given netowrk. The modified plans/");
107  System.out.println("persons are then written out to file again.");
108  System.out.println();
109  System.out.println("usage: InitRoutes [OPTIONS] configfile");
110  System.out.println(" The following parameters must be given in the config-file:");
111  System.out.println(" - network.inputNetworkFile");
112  System.out.println(" - plans.inputPlansFile");
113  System.out.println(" - plans.outputPlansFile");
114  System.out.println();
115  System.out.println("Options:");
116  System.out.println("-h, --help: Displays this message.");
117  System.out.println();
118  System.out.println("----------------");
119  System.out.println("2008, matsim.org");
120  System.out.println();
121  }
122 
124  // run method
126 
127  public void run(final String[] args) {
128  parseArguments(args);
129  this.config = ConfigUtils.loadConfig(this.configfile);
131  final MutableScenario scenario = ScenarioUtils.createMutableScenario(config);
132 // final Population plans = PopulationUtils.createStreamingPopulation( config.plans(), null );
133  StreamingPopulationReader reader = new StreamingPopulationReader( scenario ) ;
134 
135  new MatsimNetworkReader(scenario.getNetwork()).readFile(config.network().getInputFile());
136 
137  final StreamingPopulationWriter plansWriter = new StreamingPopulationWriter();
138  Gbl.assertNotNull(this.plansfile);
139  plansWriter.startStreaming(this.plansfile);
141  com.google.inject.Injector injector = Injector.createInjector(scenario.getConfig(), new AbstractModule() {
142  @Override
143  public void install() {
144  install(AbstractModule.override(Arrays.asList(new TripRouterModule()), new AbstractModule() {
145  @Override
146  public void install() {
147  install(new ScenarioByInstanceModule(scenario));
148  install(new TimeInterpretationModule());
149  addTravelTimeBinding("car").toInstance(timeCostCalc);
150  addTravelDisutilityFactoryBinding("car").toInstance(new TravelDisutilityFactory() {
151  @Override
152  public TravelDisutility createTravelDisutility(TravelTime timeCalculator) {
153  return timeCostCalc;
154  }
155  });
156  }
157  }));
158  }
159  });
160  reader.addAlgorithm(new PlanRouter(injector.getInstance(TripRouter.class), null, injector.getInstance(TimeInterpretation.class)));
161  reader.addAlgorithm(plansWriter);
162  reader.readFile(this.config.plans().getInputFile());
164  plansWriter.closeStreaming();
165 
166  System.out.println("done.");
167  }
168 
170  // main method
172 
173  public static void main(final String[] args) {
174  new InitRoutes().run(args);
175  }
176 
177 }
final NetworkConfigGroup network()
Definition: Config.java:411
static Config loadConfig(final String filename, ConfigGroup... customModules)
void run(final String[] args)
static MutableScenario createMutableScenario(final Config config)
final ScoringConfigGroup scoring()
Definition: Config.java:407
void parseArguments(final String[] args)
Definition: InitRoutes.java:76
static void printPlansCount(Population population)
static void main(final String[] args)
final PlansConfigGroup plans()
Definition: Config.java:415
static void assertNotNull(Object obj)
Definition: Gbl.java:212
static com.google.inject.Injector createInjector(final Config config, Module... modules)
Definition: Injector.java:58
final GlobalConfigGroup global()
Definition: Config.java:395
static AbstractModule override(final Iterable<? extends AbstractModule > modules, final AbstractModule abstractModule)