MATSIM
TransitScheduleModifier.java
Go to the documentation of this file.
1 /* *********************************************************************** *
2  * project: org.matsim.*
3  * RunEmissionToolOffline.java
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 tutorial.programming.example21tutorialTUBclass.transit;
21 
22 import org.matsim.api.core.v01.Id;
23 import org.matsim.api.core.v01.Scenario;
31 import org.matsim.vehicles.Vehicle;
37 
38  public static void main(String[] args) {
39  Scenario scenario = ScenarioUtils.loadScenario(ConfigUtils.loadConfig("input/hapt/config.xml"));
40 
41  Id<TransitLine> lineNo = Id.create("1", TransitLine.class);
42  TransitLine line1 = scenario.getTransitSchedule().getTransitLines().get(lineNo);
43  Id<TransitRoute> routeNo = Id.create("1", TransitRoute.class);
44  TransitRoute route1 = line1.getRoutes().get(routeNo);
45  System.out.println(route1.getRoute());
46  TransitScheduleFactory transitScheduleFactory = scenario.getTransitSchedule().getFactory();
47  TransitRoute route1a = transitScheduleFactory.createTransitRoute(Id.create("1a",TransitRoute.class), route1.getRoute(), route1.getStops(), route1.getTransportMode());
48  Departure lastDeparture = null;
49  int i = 0;
50  for (Departure currentDeparture : route1.getDepartures().values()){
51  double newDepartureTime = currentDeparture.getDepartureTime()-i*5*60;
52  Departure newDeparture = transitScheduleFactory.createDeparture(Id.create("1_"+newDepartureTime, Departure.class), newDepartureTime);
53  newDeparture.setVehicleId(currentDeparture.getVehicleId());
54  route1a.addDeparture(newDeparture);
55  lastDeparture = newDeparture;
56  System.out.println(lastDeparture);
57  i++;
58  }
59  Id<Vehicle> lastTransitVehicle = lastDeparture.getVehicleId();
60 
61 
62  for (double j = lastDeparture.getDepartureTime()+15*60; j < 22*3600; j = j+15*60){
63  Id<Departure> departureId = Id.create("1_"+j, Departure.class);
64  Departure nextDeparture = transitScheduleFactory.createDeparture(departureId, j);
65  Id<Vehicle> nextTransitVehicle =getNextTransitVehicle(lastTransitVehicle);
66  lastTransitVehicle = nextTransitVehicle;
67  nextDeparture.setVehicleId(nextTransitVehicle);
68  route1a.addDeparture(nextDeparture);
69  System.out.println(lastDeparture);
70  lastDeparture = nextDeparture;
71  }
72 
73  line1.removeRoute(route1);
74  line1.addRoute(route1a);
75 
76  new TransitScheduleWriter(scenario.getTransitSchedule()).writeFile("input/hapt/newschedule.xml");
77 
78 
79  }
80  private static Id<Vehicle> getNextTransitVehicle(Id<Vehicle> currentTransitVehicle){
81  String[] vehicle = currentTransitVehicle.toString().split("_");
82  String line = vehicle[0];
83  String lastVehicleNo = vehicle[1];
84  int lastVehicle = Integer.parseInt(lastVehicleNo);
85  lastVehicle++;
86  if (lastVehicle == 5) {
87  lastVehicle = 0;
88  }
89  Id<Vehicle> nextVehicle = Id.create(line+"_"+lastVehicle, Vehicle.class);
90  return nextVehicle;
91  }
92 }
abstract void addDeparture(final Departure departure)
static Id< Vehicle > getNextTransitVehicle(Id< Vehicle > currentTransitVehicle)
abstract Map< Id< TransitRoute >, TransitRoute > getRoutes()
abstract void addRoute(final TransitRoute transitRoute)
abstract List< TransitRouteStop > getStops()
abstract boolean removeRoute(final TransitRoute route)
abstract void setVehicleId(final Id< Vehicle > vehicleId)
static Config loadConfig(final String filename, ConfigGroup...customModules)
abstract Map< Id< TransitLine >, TransitLine > getTransitLines()
static Scenario loadScenario(final Config config)
TransitSchedule getTransitSchedule()
abstract TransitRoute createTransitRoute(final Id< TransitRoute > routeId, final NetworkRoute route, final List< TransitRouteStop > stops, final String mode)
abstract Map< Id< Departure >, Departure > getDepartures()
abstract Departure createDeparture(final Id< Departure > departureId, final double time)
abstract TransitScheduleFactory getFactory()