22
33import de .tum .bgu .msm .data .DataSet ;
44import de .tum .bgu .msm .io .output .*;
5+ import de .tum .bgu .msm .modules .Module ;
56import de .tum .bgu .msm .modules .modeChoice .ModeChoice ;
67import de .tum .bgu .msm .modules .personTripAssignment .PersonTripAssignment ;
78import de .tum .bgu .msm .modules .plansConverter .MatsimPopulationGenerator ;
2122 * @author Rolf Moeckel
2223 * Created on Sep 18, 2016 in Munich, Germany
2324 */
24- public class TravelDemandGenerator {
25+ public final class TravelDemandGenerator {
2526
2627 private static final Logger logger = Logger .getLogger (TravelDemandGenerator .class );
2728 private final DataSet dataSet ;
2829
29- TravelDemandGenerator (DataSet dataSet ) {
30+ private final Module tripGeneration ;
31+ private final Module personTripAssignment ;
32+ private final Module travelTimeBudget ;
33+ private final Module distribution ;
34+ private final Module modeChoice ;
35+ private final Module timeOfDayChoice ;
36+ private final Module tripScaling ;
37+ private final Module matsimPopulationGenerator ;
38+ private final Module longDistanceTraffic ;
39+
40+ private TravelDemandGenerator (
41+ DataSet dataSet ,
42+ Module tripGeneration ,
43+ Module personTripAssignment ,
44+ Module travelTimeBudget ,
45+ Module distribution ,
46+ Module modeChoice ,
47+ Module timeOfDayChoice ,
48+ Module tripScaling ,
49+ Module matsimPopulationGenerator ,
50+ Module longDistanceTraffic ) {
51+
3052 this .dataSet = dataSet ;
53+
54+ this .tripGeneration = tripGeneration ;
55+ this .personTripAssignment = personTripAssignment ;
56+ this .travelTimeBudget = travelTimeBudget ;
57+ this .distribution = distribution ;
58+ this .modeChoice = modeChoice ;
59+ this .timeOfDayChoice = timeOfDayChoice ;
60+ this .tripScaling = tripScaling ;
61+ this .matsimPopulationGenerator = matsimPopulationGenerator ;
62+ this .longDistanceTraffic = longDistanceTraffic ;
63+ }
64+
65+
66+ public static class Builder {
67+
68+ private final DataSet dataSet ;
69+
70+ private Module tripGeneration ;
71+ private Module personTripAssignment ;
72+ private Module travelTimeBudget ;
73+ private Module distribution ;
74+ private Module modeChoice ;
75+ private Module timeOfDayChoice ;
76+ private Module tripScaling ;
77+ private Module matsimPopulationGenerator ;
78+ private Module longDistanceTraffic ;
79+
80+ public Builder (DataSet dataSet ) {
81+ this .dataSet = dataSet ;
82+ tripGeneration = new TripGeneration (dataSet );
83+ personTripAssignment = new PersonTripAssignment (dataSet );
84+ travelTimeBudget = new TravelTimeBudgetModule (dataSet );
85+ distribution = new TripDistribution (dataSet );
86+ modeChoice = new ModeChoice (dataSet );
87+ timeOfDayChoice = new TimeOfDayChoice (dataSet );
88+ tripScaling = new TripScaling (dataSet );
89+ matsimPopulationGenerator = new MatsimPopulationGenerator (dataSet );
90+ if (Resources .instance .getBoolean (Properties .ADD_EXTERNAL_FLOWS , false )) {
91+ longDistanceTraffic = new LongDistanceTraffic (dataSet , Double .parseDouble (Resources .instance .getString (Properties .TRIP_SCALING_FACTOR )));
92+ }
93+ }
94+
95+ public TravelDemandGenerator build () {
96+ return new TravelDemandGenerator (dataSet ,
97+ tripGeneration ,
98+ personTripAssignment ,
99+ travelTimeBudget ,
100+ distribution ,
101+ modeChoice ,
102+ timeOfDayChoice ,
103+ tripScaling ,
104+ matsimPopulationGenerator ,
105+ longDistanceTraffic );
106+ }
107+
108+ public void setTripGeneration (Module tripGeneration ) {
109+ this .tripGeneration = tripGeneration ;
110+ }
111+
112+ public void setPersonTripAssignment (Module personTripAssignment ) {
113+ this .personTripAssignment = personTripAssignment ;
114+ }
115+
116+ public void setTravelTimeBudget (Module travelTimeBudget ) {
117+ this .travelTimeBudget = travelTimeBudget ;
118+ }
119+
120+ public void setDistribution (Module distribution ) {
121+ this .distribution = distribution ;
122+ }
123+
124+ public void setModeChoice (Module modeChoice ) {
125+ this .modeChoice = modeChoice ;
126+ }
127+
128+ public void setTimeOfDayChoice (Module timeOfDayChoice ) {
129+ this .timeOfDayChoice = timeOfDayChoice ;
130+ }
131+
132+ public void setTripScaling (Module tripScaling ) {
133+ this .tripScaling = tripScaling ;
134+ }
135+
136+ public void setMatsimPopulationGenerator (Module matsimPopulationGenerator ) {
137+ this .matsimPopulationGenerator = matsimPopulationGenerator ;
138+ }
139+
140+ public void setLongDistanceTraffic (Module longDistanceTraffic ) {
141+ this .longDistanceTraffic = longDistanceTraffic ;
142+ }
143+
144+ public DataSet getDataSet () {
145+ return dataSet ;
146+ }
147+
148+ public Module getTripGeneration () {
149+ return tripGeneration ;
150+ }
151+
152+ public Module getPersonTripAssignment () {
153+ return personTripAssignment ;
154+ }
155+
156+ public Module getTravelTimeBudget () {
157+ return travelTimeBudget ;
158+ }
159+
160+ public Module getDistribution () {
161+ return distribution ;
162+ }
163+
164+ public Module getModeChoice () {
165+ return modeChoice ;
166+ }
167+
168+ public Module getTimeOfDayChoice () {
169+ return timeOfDayChoice ;
170+ }
171+
172+ public Module getTripScaling () {
173+ return tripScaling ;
174+ }
175+
176+ public Module getMatsimPopulationGenerator () {
177+ return matsimPopulationGenerator ;
178+ }
179+
180+ public Module getLongDistanceTraffic () {
181+ return longDistanceTraffic ;
182+ }
31183 }
32184
33- void generateTravelDemand (String scenarioName ) {
185+ public void generateTravelDemand (String scenarioName ) {
34186
35187 logger .info ("Running Module: Microscopic Trip Generation" );
36- TripGeneration tg = new TripGeneration (dataSet );
37- tg .run ();
188+ tripGeneration .run ();
38189 if (dataSet .getTrips ().isEmpty ()) {
39190 logger .warn ("No trips created. End of program." );
40191 return ;
41192 }
42193
43-
44194 logger .info ("Running Module: Person to Trip Assignment" );
45- PersonTripAssignment personTripAssignment = new PersonTripAssignment (dataSet );
46195 personTripAssignment .run ();
47196
48197 logger .info ("Running Module: Travel Time Budget Calculation" );
49- TravelTimeBudgetModule ttb = new TravelTimeBudgetModule (dataSet );
50- ttb .run ();
198+ travelTimeBudget .run ();
51199
52200 logger .info ("Running Module: Microscopic Trip Distribution" );
53- TripDistribution distribution = new TripDistribution (dataSet );
54201 distribution .run ();
55202
56203 logger .info ("Running Module: Trip to Mode Assignment (Mode Choice)" );
57- ModeChoice modeChoice = new ModeChoice (dataSet );
58204 modeChoice .run ();
59205
60206 logger .info ("Running time of day choice" );
61- TimeOfDayChoice timeOfDayChoice = new TimeOfDayChoice (dataSet );
62207 timeOfDayChoice .run ();
63208
64209 logger .info ("Running trip scaling" );
65- TripScaling tripScaling = new TripScaling (dataSet );
66210 tripScaling .run ();
67211
68- MatsimPopulationGenerator matsimPopulationGenerator = new MatsimPopulationGenerator (dataSet );
69212 matsimPopulationGenerator .run ();
70213
71214 if (Resources .instance .getBoolean (Properties .ADD_EXTERNAL_FLOWS , false )) {
72- LongDistanceTraffic longDistanceTraffic = new LongDistanceTraffic (dataSet , Double .parseDouble (Resources .instance .getString (Properties .TRIP_SCALING_FACTOR )));
73215 longDistanceTraffic .run ();
74216 }
75217
@@ -85,5 +227,8 @@ void generateTravelDemand(String scenarioName) {
85227 ModeChoicePlots .writeModeChoice (dataSet , scenarioName );
86228 SummarizeData .writeCharts (dataSet , scenarioName );
87229 }
230+ if (Resources .instance .getBoolean (Properties .WRITE_MATSIM_POPULATION , true )) {
231+ SummarizeData .writeMatsimPlans (dataSet , scenarioName );
232+ }
88233 }
89234}
0 commit comments