Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/msmobility/mito
Browse files Browse the repository at this point in the history
� Conflicts:
�	pom.xml
  • Loading branch information
nkuehnel committed May 10, 2021
2 parents dae3f4a + c83df29 commit 751c025
Show file tree
Hide file tree
Showing 143 changed files with 12,811 additions and 3,934 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Java CI

on: [push]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven
run: mvn test -Dhdf5lib-absolute-path=`pwd`/lib/linux64/libjhdf5.so --fail-at-end --batch-mode -Dmatsim.preferLocalDtds=true
8 changes: 8 additions & 0 deletions .mergify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
pull_request_rules:
- name: automatic merge when CI passes
conditions:
- status-success=continuous-integration/travis-ci/pr
- base=master
actions:
merge:
method: merge
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
language: java
dist: trusty
jdk:
- oraclejdk8
- openjdk11
jobs:
include:
- stage: test
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@ Microscopic Transportation Orchestrator
Please see [the wiki](https://wiki.tum.de/display/msmmodels/MITO) for documentation.

[![Build Status](https://travis-ci.org/msmobility/mito.svg?branch=master)](https://travis-ci.org/msmobility/mito)
[![Hosted By: Cloudsmith](https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith&style=for-the-badge)](https://cloudsmith.com)

Package repository hosting is graciously provided by [Cloudsmith](https://cloudsmith.com).
Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that
enables your organization to create, store and share packages in any format, to any place, with total
confidence.
82 changes: 60 additions & 22 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,33 +49,55 @@
</snapshots>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repository</name>
<url>http://download.java.net/maven/2</url>
<id>matsim</id>
<url>https://repo.matsim.org/repository/matsim</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>boundless</id>
<name>Boundless Maven Repository</name>
<url>http://repo.boundlessgeo.com/main</url>
<id>oss-jfrog-artifactory</id>
<name>artifactory-snapshots</name>
<url>https://oss.jfrog.org/oss-snapshot-local</url>
</repository>
<repository>
<id>matsim</id>
<url>http://dl.bintray.com/matsim/matsim</url>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repository</name>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>

<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>de.tum.bgu.msm.run.scenarios.drtNoise.RunDrtNoise</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>11</source>
<target>11</target>
<showWarnings>false</showWarnings>
<showDeprecation>false</showDeprecation>
<encoding>UTF-8</encoding>
Expand Down Expand Up @@ -166,18 +188,13 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.2-jre</version>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.14</version>
<version>24.1.1-jre</version>
</dependency>
<dependency>
<groupId>org.matsim</groupId>
Expand Down Expand Up @@ -210,6 +227,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.matsim.contrib</groupId>
<artifactId>drt</artifactId>
<version>${matsimVersion}</version>
</dependency>
<dependency>
<groupId>org.matsim.contrib</groupId>
<artifactId>accessibility</artifactId>
Expand All @@ -225,9 +247,25 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.knowm.xchart</groupId>
<artifactId>xchart</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>ca.umontreal.iro.simul</groupId>
<artifactId>ssj</artifactId>
<version>3.3.1</version>
<exclusions>
<exclusion>
<groupId>jfree</groupId>
<artifactId>jfreechart</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<matsimVersion>11.0</matsimVersion>
<matsimVersion>12.0</matsimVersion>
</properties>
</project>
2 changes: 1 addition & 1 deletion resources/log4j.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %C %p %c{2}: %m%n
5 changes: 4 additions & 1 deletion src/main/java/de/tum/bgu/msm/ExternalFlowStandAlone.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.tum.bgu.msm;

import de.tum.bgu.msm.data.DataSet;
import de.tum.bgu.msm.data.Purpose;
import de.tum.bgu.msm.modules.plansConverter.externalFlows.LongDistanceTraffic;
import de.tum.bgu.msm.resources.Properties;
import de.tum.bgu.msm.resources.Resources;
Expand All @@ -13,6 +14,8 @@
import org.matsim.core.config.ConfigUtils;
import org.matsim.core.scenario.ScenarioUtils;

import java.util.Arrays;


/*
* This class creates the matsim population for external flows and is not to be used with MITO
Expand All @@ -32,7 +35,7 @@ public static void main (String args[]){

DataSet dataSet = new DataSet();
dataSet.setYear(Resources.instance.getInt(Properties.SCENARIO_YEAR, 2011));
LongDistanceTraffic longDistanceTraffic = new LongDistanceTraffic(dataSet, scalingFactor);
LongDistanceTraffic longDistanceTraffic = new LongDistanceTraffic(dataSet, scalingFactor, Arrays.asList(Purpose.values()));

Config config = ConfigUtils.createConfig();
Scenario scenario = ScenarioUtils.createScenario(config);
Expand Down
15 changes: 10 additions & 5 deletions src/main/java/de/tum/bgu/msm/MitoModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ public static MitoModel initializeModelFromSilo(String propertiesFile, DataSet d
logger.info(" Initializing MITO from SILO");
Resources.initializeResources(propertiesFile);
MitoModel model = new MitoModel(dataSet, scenarioName);
new SkimsReader(dataSet).readOnlyTransitTravelTimes();
new SkimsReader(dataSet).readSkimDistancesNMT();
new SkimsReader(dataSet).readSkimDistancesAuto();
new OmxSkimsReader(dataSet).readOnlyTransitTravelTimes();
new OmxSkimsReader(dataSet).readSkimDistancesNMT();
new OmxSkimsReader(dataSet).readSkimDistancesAuto();
model.readAdditionalData();
return model;
}
Expand All @@ -65,7 +65,7 @@ public void run() {
long startTime = System.currentTimeMillis();
logger.info("Started the Microsimulation Transport Orchestrator (MITO)");

TravelDemandGenerator ttd = new TravelDemandGenerator(dataSet);
TravelDemandGenerator ttd = new TravelDemandGenerator.Builder(dataSet).build();
ttd.generateTravelDemand(scenarioName);
printOutline(startTime);
}
Expand All @@ -82,7 +82,7 @@ private void readStandAlone(ImplementationConfig config) {
new HouseholdsCoordReader(dataSet).read();
new PersonsReader(dataSet).read();
dataSet.setTravelTimes(new SkimTravelTimes());
new SkimsReader(dataSet).read();
new OmxSkimsReader(dataSet).read();
readAdditionalData();
}

Expand All @@ -91,6 +91,8 @@ private void readAdditionalData() {
new ModeChoiceInputReader(dataSet).read();
new EconomicStatusReader(dataSet).read();
new TimeOfDayDistributionsReader(dataSet).read();
new CalibrationDataReader(dataSet).read();
new CalibrationRegionMapReader(dataSet).read();

}

Expand All @@ -115,4 +117,7 @@ public String getScenarioName() {
public void setRandomNumberGenerator(Random random) {
MitoUtil.initializeRandomNumber(random);
}



}
123 changes: 123 additions & 0 deletions src/main/java/de/tum/bgu/msm/MitoModel2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
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 MitoModel2 {

private static final Logger logger = Logger.getLogger(MitoModel2.class);
private final String scenarioName;

private DataSet dataSet;

private MitoModel2(DataSet dataSet, String scenarioName) {
this.dataSet = dataSet;
this.scenarioName = scenarioName;
MitoUtil.initializeRandomNumber();
}

public static MitoModel2 standAloneModel(String propertiesFile, ImplementationConfig config) {
logger.info(" Creating standalone version of MITO ");
Resources.initializeResources(propertiesFile);
MitoModel2 model = new MitoModel2(new DataSet(), Resources.instance.getString(Properties.SCENARIO_NAME));
model.readStandAlone(config);
return model;
}

public static MitoModel2 initializeModelFromSilo(String propertiesFile, DataSet dataSet, String scenarioName) {
logger.info(" Initializing MITO from SILO");
Resources.initializeResources(propertiesFile);
MitoModel2 model = new MitoModel2(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)");

TravelDemandGenerator2 ttd = new TravelDemandGenerator2.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 HouseholdsReader(dataSet).read();
new HouseholdsCoordReader(dataSet).read();
new PersonsReader(dataSet).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);
}



}
Loading

0 comments on commit 751c025

Please sign in to comment.