MATSIM
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.run.CreateSelectedPlansTables Class Reference

Classes

class  PseudoScenario
 

Public Member Functions

void setTwoPlans (final boolean twoPlans)
 

Static Public Member Functions

static void main (final String[] args)
 

Private Member Functions

void init (final String networkPath)
 
void readPlansFile (final String plansfilePath, final Population plans)
 
void writeAvgFile ()
 
void writeSummaryFile ()
 
double getTravelTime (final Person person)
 
double getTravelDist (final Person person)
 
int getNumberOfTrips (final Person person)
 
void run (final String networkPath, final String plansfilePath0, final String plansfilePath1)
 

Static Private Member Functions

static void printUsage ()
 

Private Attributes

Population plans0
 
Population plans1
 
boolean twoPlans
 
MutableScenario scenario
 
final double [] sumPlanTraveltime ={0.0, 0.0}
 
final double [] sumPlanTraveldistance ={0.0, 0.0}
 
final double [] sumLegTraveltime ={0.0, 0.0}
 
final double [] sumLegTraveldistance ={0.0, 0.0}
 
final int [] sumNrLegs ={0, 0}
 

Static Private Attributes

static final String outfileTable ="./output/analyseSelectedPlansTable.txt"
 
static final String outfileAverages ="./output/analyseSelectedPlansTableAverages.txt"
 

Detailed Description

Creates a table

Author
anhorni

Definition at line 61 of file CreateSelectedPlansTables.java.

Member Function Documentation

◆ main()

static void org.matsim.run.CreateSelectedPlansTables.main ( final String []  args)
static
Parameters
argsarray with 2 or 3 entries:
  • path to network file: required
  • path to plans file 0: required
  • path to plans file 1: optional

Definition at line 88 of file CreateSelectedPlansTables.java.

References org.matsim.core.gbl.Gbl.printElapsedTime(), org.matsim.run.CreateSelectedPlansTables.printUsage(), org.matsim.run.CreateSelectedPlansTables.run(), org.matsim.run.CreateSelectedPlansTables.setTwoPlans(), and org.matsim.core.gbl.Gbl.startMeasurement().

88  {
89 
90  if (args.length < 2 || args.length > 3 ) {
91  System.out.println("Too few arguments.");
92  printUsage();
93  System.exit(1);
94  }
95 
96  Gbl.startMeasurement();
97  final CreateSelectedPlansTables table=new CreateSelectedPlansTables();
98 
99 
100  if (args.length==3) {
101  table.setTwoPlans(true);
102  table.run(args[0], args[1], args[2]);
103 
104 
105  }
106  else {
107  table.setTwoPlans(false);
108  table.run(args[0], args[1], "");
109 
110  }
111 
112  Gbl.printElapsedTime();
113  }
Here is the call graph for this function:

◆ init()

void org.matsim.run.CreateSelectedPlansTables.init ( final String  networkPath)
private

Definition at line 115 of file CreateSelectedPlansTables.java.

References org.matsim.core.config.ConfigUtils.createConfig(), org.matsim.core.scenario.ScenarioUtils.createScenario(), and org.matsim.core.scenario.MutableScenario.getNetwork().

Referenced by org.matsim.run.CreateSelectedPlansTables.run().

115  {
116  this.scenario = (MutableScenario) ScenarioUtils.createScenario(ConfigUtils.createConfig());
117 
118  this.plans0= ScenarioUtils.createScenario(ConfigUtils.createConfig()).getPopulation();
119  this.plans1= ScenarioUtils.createScenario(ConfigUtils.createConfig()).getPopulation();
120 
121  System.out.println(" reading the network...");
122  new MatsimNetworkReader(this.scenario.getNetwork()).readFile(networkPath);
123  }
Here is the call graph for this function:

◆ readPlansFile()

void org.matsim.run.CreateSelectedPlansTables.readPlansFile ( final String  plansfilePath,
final Population  plans 
)
private

Definition at line 125 of file CreateSelectedPlansTables.java.

References org.matsim.core.api.internal.MatsimReader.readFile().

Referenced by org.matsim.run.CreateSelectedPlansTables.run().

125  {
126  System.out.println(" reading file "+plansfilePath);
127  final MatsimReader plansReader = new PopulationReader(new PseudoScenario(this.scenario, plans));
128  plansReader.readFile(plansfilePath);
129  }
Here is the call graph for this function:

◆ writeAvgFile()

void org.matsim.run.CreateSelectedPlansTables.writeAvgFile ( )
private

Definition at line 131 of file CreateSelectedPlansTables.java.

References org.matsim.core.utils.io.IOUtils.getBufferedWriter(), and org.matsim.api.core.v01.population.Population.getPersons().

Referenced by org.matsim.run.CreateSelectedPlansTables.run().

131  {
132 
133  try {
134 
135  final String header="plansfile_nr\tplantraveltime\tplantraveldistance\t" +
136  "legtraveltime\tlegtraveldistance\tnumberoflegs";
137 
138  final BufferedWriter out = IOUtils.getBufferedWriter(outfileAverages);
139  out.write(header);
140  out.write('\n');
141 
142  final int nr_selectedplans=this.plans0.getPersons().size();
143 
144  int i_max=1;
145  if (this.twoPlans) {
146  i_max=2;
147  }
148 
149  for (int i=0; i<i_max; i++) {
150  out.write(i + "\t");
151  out.write(this.sumPlanTraveltime[i]/nr_selectedplans+"\t");
152  out.write(this.sumPlanTraveldistance[i]/nr_selectedplans+"\t");
153  out.write(this.sumLegTraveltime[i]/nr_selectedplans+"\t");
154  out.write(this.sumLegTraveldistance[i]/nr_selectedplans+"\t");
155  out.write(this.sumNrLegs[i]/nr_selectedplans+"\t");
156  out.write('\n');
157  out.flush();
158  }
159  out.close();
160  }
161  catch (final IOException e) {
162  throw new RuntimeException(e);
163  }
164  }
Map< Id< Person >,? extends Person > getPersons()
Here is the call graph for this function:

◆ writeSummaryFile()

void org.matsim.run.CreateSelectedPlansTables.writeSummaryFile ( )
private

Definition at line 167 of file CreateSelectedPlansTables.java.

References org.matsim.core.population.PersonUtils.getAge(), org.matsim.core.utils.io.IOUtils.getBufferedWriter(), org.matsim.core.population.PersonUtils.getCarAvail(), org.matsim.api.core.v01.population.Activity.getCoord(), org.matsim.core.population.PopulationUtils.getFirstActivity(), org.matsim.core.population.PersonUtils.getLicense(), org.matsim.api.core.v01.population.Activity.getLinkId(), org.matsim.run.CreateSelectedPlansTables.getNumberOfTrips(), org.matsim.api.core.v01.population.Population.getPersons(), org.matsim.api.core.v01.population.BasicPlan.getScore(), org.matsim.api.core.v01.population.HasPlansAndId< T extends BasicPlan, I >.getSelectedPlan(), org.matsim.core.population.PersonUtils.getSex(), org.matsim.run.CreateSelectedPlansTables.getTravelDist(), org.matsim.run.CreateSelectedPlansTables.getTravelTime(), org.matsim.api.core.v01.population.Activity.getType(), org.matsim.api.core.v01.Coord.getX(), org.matsim.api.core.v01.Coord.getY(), and org.matsim.core.population.PersonUtils.isEmployed().

Referenced by org.matsim.run.CreateSelectedPlansTables.run().

167  {
168  try {
169 
170  String header="personid\tsex\tage\tlicense\tcaravail\temployed\thomex\thomey\thomelink\t" +
171  "score0\tplantraveltime0\tplantraveldistance0\tnumberoftrips0\t";
172 
173  if (this.twoPlans) {
174  header=header.concat("score1\tplantraveltime1\tplantraveldistance1\tnumberoftrips1");
175  }
176 
177 
178  final BufferedWriter out = IOUtils.getBufferedWriter(outfileTable);
179  out.write(header);
180  out.write('\n');
181 
182  for (final Id<Person> person_id : this.plans0.getPersons().keySet()) {
183 
184  // method person.toString() not appropriate
185  out.write(person_id.toString()+"\t");
186  final Person person= this.plans0.getPersons().get(person_id);
187  out.write(PersonUtils.getSex(person)+"\t");
188  out.write(PersonUtils.getAge(person)+"\t");
189  out.write(PersonUtils.getLicense(person)+"\t");
190  out.write(PersonUtils.getCarAvail(person)+"\t");
191  if (PersonUtils.isEmployed(person) != null)
192  out.write((PersonUtils.isEmployed(person) ? "yes" : "no"));
193  out.write("\t");
194 
195  Plan selectedPlan = person.getSelectedPlan();
196  Plan selectedPlanImpl = (Plan) selectedPlan;
197  Activity firstActivity = PopulationUtils.getFirstActivity( selectedPlanImpl );
198  Coord c = null;
199  String link_id = "-";
200 
201  if (firstActivity.getType().substring(0,1).equals("h")) {
202  // no home activity in the plan -> no home activity in the knowledge
203  c = firstActivity.getCoord();
204  link_id = firstActivity.getLinkId().toString();
205  }
206 
207  if (c != null) {
208  out.write(c.getX()+"\t");
209  out.write(c.getY()+"\t");
210  }
211  else {
212  out.write("-\t-\t");
213  }
214  out.write(link_id+"\t");
215 
216  // plan0 ----------------------------------------------
217  out.write(selectedPlan.getScore()+"\t");
218  out.write(this.getTravelTime(person)+"\t");
219  this.sumPlanTraveltime[0]+=this.getTravelTime(person);
220 
221  out.write(this.getTravelDist(person)+"\t");
222  this.sumPlanTraveldistance[0]+=this.getTravelDist(person);
223 
224  out.write(this.getNumberOfTrips(person)+"\t");
225  this.sumNrLegs[0]+=this.getNumberOfTrips(person);
226  this.sumLegTraveltime[0]+=(this.getTravelTime(person)/this.getNumberOfTrips(person));
227  this.sumLegTraveldistance[0]+=(this.getTravelDist(person)/this.getNumberOfTrips(person));
228 
229  // plan1 ----------------------------------------------
230  if (this.twoPlans) {
231 
232  final Person person_comp=this.plans1.getPersons().get(person_id);
233  out.write(person_comp.getSelectedPlan().getScore()+"\t");
234  out.write(this.getTravelTime(person_comp)+"\t");
235  this.sumPlanTraveltime[1]+=this.getTravelTime(person_comp);
236 
237  out.write(this.getTravelDist(person_comp)+"\t");
238  this.sumPlanTraveldistance[1]+=this.getTravelDist(person_comp);
239 
240  out.write(this.getNumberOfTrips(person_comp)+"\t");
241  this.sumNrLegs[1]+=this.getNumberOfTrips(person_comp);
242  this.sumLegTraveltime[1]+=(this.getTravelTime(person_comp)/this.getNumberOfTrips(person_comp));
243  this.sumLegTraveldistance[1]+=(this.getTravelDist(person_comp)/this.getNumberOfTrips(person_comp));
244  }
245  out.write('\n');
246  out.flush();
247  }
248  out.close();
249  }
250  catch (final IOException e) {
251  throw new RuntimeException(e);
252  }
253  }
Map< Id< Person >,? extends Person > getPersons()
Here is the call graph for this function:

◆ getTravelTime()

double org.matsim.run.CreateSelectedPlansTables.getTravelTime ( final Person  person)
private

Definition at line 258 of file CreateSelectedPlansTables.java.

References org.matsim.api.core.v01.population.HasPlansAndId< T extends BasicPlan, I >.getSelectedPlan().

Referenced by org.matsim.run.CreateSelectedPlansTables.writeSummaryFile().

258  {
259  double travelTime=0.0;
260  for (PlanElement pe : person.getSelectedPlan().getPlanElements()) {
261  if (pe instanceof Leg) {
262  travelTime+= ((Leg)pe).getTravelTime().seconds();
263  }
264  }
265  return travelTime;
266  }
Here is the call graph for this function:

◆ getTravelDist()

double org.matsim.run.CreateSelectedPlansTables.getTravelDist ( final Person  person)
private

Definition at line 268 of file CreateSelectedPlansTables.java.

References org.matsim.api.core.v01.population.HasPlansAndId< T extends BasicPlan, I >.getSelectedPlan().

Referenced by org.matsim.run.CreateSelectedPlansTables.writeSummaryFile().

268  {
269  double travelDist=0.0;
270  for (PlanElement pe : person.getSelectedPlan().getPlanElements()) {
271  if (pe instanceof Leg) {
272  travelDist+=((Leg) pe).getRoute().getDistance();
273  }
274  }
275  return travelDist;
276  }
Here is the call graph for this function:

◆ getNumberOfTrips()

int org.matsim.run.CreateSelectedPlansTables.getNumberOfTrips ( final Person  person)
private

Definition at line 278 of file CreateSelectedPlansTables.java.

References org.matsim.api.core.v01.population.HasPlansAndId< T extends BasicPlan, I >.getSelectedPlan().

Referenced by org.matsim.run.CreateSelectedPlansTables.writeSummaryFile().

278  {
279  int numberOfLegs=0;
280  for (PlanElement pe : person.getSelectedPlan().getPlanElements()) {
281  if (pe instanceof Leg) {
282  numberOfLegs++;
283  }
284  }
285  return numberOfLegs;
286  }
Here is the call graph for this function:

◆ run()

void org.matsim.run.CreateSelectedPlansTables.run ( final String  networkPath,
final String  plansfilePath0,
final String  plansfilePath1 
)
private

Definition at line 290 of file CreateSelectedPlansTables.java.

References org.matsim.run.CreateSelectedPlansTables.init(), org.matsim.run.CreateSelectedPlansTables.readPlansFile(), org.matsim.run.CreateSelectedPlansTables.writeAvgFile(), and org.matsim.run.CreateSelectedPlansTables.writeSummaryFile().

Referenced by org.matsim.run.CreateSelectedPlansTables.main().

290  {
291  this.init(networkPath);
292  this.readPlansFile(plansfilePath0, this.plans0);
293 
294  System.out.println(this.twoPlans);
295 
296  if (this.twoPlans) {
297  this.readPlansFile(plansfilePath1, this.plans1);
298  }
299 
301  writeAvgFile();
302  System.out.println("finished");
303  }
void readPlansFile(final String plansfilePath, final Population plans)
Here is the call graph for this function:

◆ printUsage()

static void org.matsim.run.CreateSelectedPlansTables.printUsage ( )
staticprivate

Definition at line 305 of file CreateSelectedPlansTables.java.

Referenced by org.matsim.run.CreateSelectedPlansTables.main().

305  {
306  System.out.println();
307  System.out.println("CreateSelectedPlansTables:");
308  System.out.println();
309  System.out.println( "Creates an agent-based table including all agent \n" +
310  "attributes, the selected plan score and the plan and \n" +
311  "leg travel times and distances and \n" +
312  "another table containing the aggregated values.");
313  System.out.println();
314  System.out.println("usage: CompareSelectedPlansTable args");
315  System.out.println(" arg 0: path to network file (required)");
316  System.out.println(" arg 1: path to plans file 0 (required)");
317  System.out.println(" arg 2: path to plans file 1 (optional)");
318 
319  System.out.println("----------------");
320  System.out.println("2008, matsim.org");
321  System.out.println();
322  }

◆ setTwoPlans()

void org.matsim.run.CreateSelectedPlansTables.setTwoPlans ( final boolean  twoPlans)

Member Data Documentation

◆ plans0

Population org.matsim.run.CreateSelectedPlansTables.plans0
private

Definition at line 63 of file CreateSelectedPlansTables.java.

◆ plans1

Population org.matsim.run.CreateSelectedPlansTables.plans1
private

Definition at line 64 of file CreateSelectedPlansTables.java.

◆ outfileTable

final String org.matsim.run.CreateSelectedPlansTables.outfileTable ="./output/analyseSelectedPlansTable.txt"
staticprivate

Definition at line 66 of file CreateSelectedPlansTables.java.

◆ outfileAverages

final String org.matsim.run.CreateSelectedPlansTables.outfileAverages ="./output/analyseSelectedPlansTableAverages.txt"
staticprivate

Definition at line 67 of file CreateSelectedPlansTables.java.

◆ twoPlans

boolean org.matsim.run.CreateSelectedPlansTables.twoPlans
private

◆ scenario

MutableScenario org.matsim.run.CreateSelectedPlansTables.scenario
private

Definition at line 71 of file CreateSelectedPlansTables.java.

◆ sumPlanTraveltime

final double [] org.matsim.run.CreateSelectedPlansTables.sumPlanTraveltime ={0.0, 0.0}
private

Definition at line 74 of file CreateSelectedPlansTables.java.

◆ sumPlanTraveldistance

final double [] org.matsim.run.CreateSelectedPlansTables.sumPlanTraveldistance ={0.0, 0.0}
private

Definition at line 75 of file CreateSelectedPlansTables.java.

◆ sumLegTraveltime

final double [] org.matsim.run.CreateSelectedPlansTables.sumLegTraveltime ={0.0, 0.0}
private

Definition at line 76 of file CreateSelectedPlansTables.java.

◆ sumLegTraveldistance

final double [] org.matsim.run.CreateSelectedPlansTables.sumLegTraveldistance ={0.0, 0.0}
private

Definition at line 77 of file CreateSelectedPlansTables.java.

◆ sumNrLegs

final int [] org.matsim.run.CreateSelectedPlansTables.sumNrLegs ={0, 0}
private

Definition at line 78 of file CreateSelectedPlansTables.java.


The documentation for this class was generated from the following file: