-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #121 from msmobility/mito_Germany_carlos
Mito germany carlos
- Loading branch information
Showing
26 changed files
with
2,485 additions
and
192 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
package de.tum.bgu.msm; | ||
|
||
import de.tum.bgu.msm.data.DataSet; | ||
import de.tum.bgu.msm.data.travelTimes.SkimTravelTimes; | ||
import de.tum.bgu.msm.io.input.readers.*; | ||
import de.tum.bgu.msm.resources.Properties; | ||
import de.tum.bgu.msm.resources.Resources; | ||
import de.tum.bgu.msm.util.ImplementationConfig; | ||
import de.tum.bgu.msm.util.MitoUtil; | ||
import org.apache.log4j.Logger; | ||
|
||
import java.util.Random; | ||
|
||
/** | ||
* Implements the Microsimulation Transport Orchestrator (MITO) | ||
* | ||
* @author Rolf Moeckel | ||
* Created on Sep 18, 2016 in Munich, Germany | ||
* <p> | ||
* To run MITO, the following data need either to be passed in from another program or | ||
* need to be read from files and passed in (using method initializeStandAlone): | ||
* - zones | ||
* - autoTravelTimes | ||
* - transitTravelTimes | ||
* - timoHouseholds | ||
* - retailEmplByZone | ||
* - officeEmplByZone | ||
* - otherEmplByZone | ||
* - totalEmplByZone | ||
* - sizeOfZonesInAcre | ||
*/ | ||
public final class MitoModelGermany { | ||
|
||
private static final Logger logger = Logger.getLogger(MitoModelGermany.class); | ||
private final String scenarioName; | ||
|
||
private DataSet dataSet; | ||
|
||
private MitoModelGermany(DataSet dataSet, String scenarioName) { | ||
this.dataSet = dataSet; | ||
this.scenarioName = scenarioName; | ||
MitoUtil.initializeRandomNumber(); | ||
} | ||
|
||
public static MitoModelGermany standAloneModel(String propertiesFile, ImplementationConfig config) { | ||
logger.info(" Creating standalone version of MITO "); | ||
Resources.initializeResources(propertiesFile); | ||
MitoModelGermany model = new MitoModelGermany(new DataSet(), Resources.instance.getString(Properties.SCENARIO_NAME)); | ||
model.readStandAlone(config); | ||
return model; | ||
} | ||
|
||
public static MitoModelGermany initializeModelFromSilo(String propertiesFile, DataSet dataSet, String scenarioName) { | ||
logger.info(" Initializing MITO from SILO"); | ||
Resources.initializeResources(propertiesFile); | ||
MitoModelGermany model = new MitoModelGermany(dataSet, scenarioName); | ||
new OmxSkimsReader(dataSet).readOnlyTransitTravelTimes(); | ||
new OmxSkimsReader(dataSet).readSkimDistancesNMT(); | ||
new OmxSkimsReader(dataSet).readSkimDistancesAuto(); | ||
model.readAdditionalData(); | ||
return model; | ||
} | ||
|
||
public void run() { | ||
long startTime = System.currentTimeMillis(); | ||
logger.info("Started the Microsimulation Transport Orchestrator (MITO)"); | ||
|
||
TravelDemandGeneratorGermany ttd = new TravelDemandGeneratorGermany.Builder(dataSet).build(); | ||
ttd.generateTravelDemand(scenarioName); | ||
printOutline(startTime); | ||
} | ||
|
||
private void readStandAlone(ImplementationConfig config) { | ||
dataSet.setYear(Resources.instance.getInt(Properties.SCENARIO_YEAR)); | ||
new ZonesReader(dataSet).read(); | ||
if (Resources.instance.getBoolean(Properties.REMOVE_TRIPS_AT_BORDER)) { | ||
new BorderDampersReader(dataSet).read(); | ||
} | ||
//new JobReader(dataSet, config.getJobTypeFactory()).read(); | ||
new SchoolsReader(dataSet).read(); | ||
new HouseholdsReaderGermany(dataSet).read(); | ||
//new HouseholdsCoordReader(dataSet).read(); | ||
//new PersonsReader(dataSet).read(); | ||
//the class called Synthetic population reader: could it be renamed to PersonJobReader? | ||
new SyntheticPopulationReaderGermany(dataSet, config.getJobTypeFactory()).read(); | ||
dataSet.setTravelTimes(new SkimTravelTimes()); | ||
new OmxSkimsReader(dataSet).read(); | ||
readAdditionalData(); | ||
} | ||
|
||
private void readAdditionalData() { | ||
new TripAttractionRatesReader(dataSet).read(); | ||
new ModeChoiceInputReader(dataSet).read(); | ||
new EconomicStatusReader(dataSet).read(); | ||
new TimeOfDayDistributionsReader(dataSet).read(); | ||
new CalibrationDataReader(dataSet).read(); | ||
new CalibrationRegionMapReader(dataSet).read(); | ||
|
||
} | ||
|
||
private void printOutline(long startTime) { | ||
String trips = MitoUtil.customFormat(" " + "###,###", dataSet.getTrips().size()); | ||
logger.info("A total of " + trips.trim() + " microscopic trips were generated"); | ||
logger.info("Completed the Microsimulation Transport Orchestrator (MITO)"); | ||
float endTime = MitoUtil.rounder(((System.currentTimeMillis() - startTime) / 60000.f), 1); | ||
int hours = (int) (endTime / 60); | ||
int min = (int) (endTime - 60 * hours); | ||
logger.info("Runtime: " + hours + " hours and " + min + " minutes."); | ||
} | ||
|
||
public DataSet getData() { | ||
return dataSet; | ||
} | ||
|
||
public String getScenarioName() { | ||
return scenarioName; | ||
} | ||
|
||
public void setRandomNumberGenerator(Random random) { | ||
MitoUtil.initializeRandomNumber(random); | ||
} | ||
|
||
|
||
|
||
} |
Oops, something went wrong.