From c5fb4d8286544fbc392710a6444eff958b3ffc2c Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Fri, 16 Feb 2024 14:51:59 +0100 Subject: [PATCH 1/7] First run :) --- .../vsp/freight/food/UpdateRunOutputs.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java diff --git a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java new file mode 100644 index 0000000..1408214 --- /dev/null +++ b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java @@ -0,0 +1,91 @@ +package org.matsim.vsp.freight.food; + +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import org.matsim.api.core.v01.Id; +import org.matsim.api.core.v01.Scenario; +import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; +import org.matsim.core.controler.Controler; +import org.matsim.core.controler.OutputDirectoryHierarchy; +import org.matsim.core.scenario.ScenarioUtils; +import org.matsim.freight.carriers.Carrier; +import org.matsim.freight.carriers.CarrierPlanWriter; +import org.matsim.freight.carriers.Carriers; +import org.matsim.freight.carriers.CarriersUtils; +import org.matsim.freight.carriers.FreightCarriersConfigGroup; +import org.matsim.freight.carriers.analysis.RunFreightAnalysisEventBased; +import org.matsim.freight.carriers.controler.CarrierModule; + +/** + * Diese Klasse soll den Output von "alten" runs derart updaten, + * dass nun die heutigen Event-based Analysen genutzt werden können. + * D.h. insbesondere, dass die ganzen Carrier-Events nachgeworfen werden. + * @author Kai Martins-Turner (kturner) + */ +public class UpdateRunOutputs { + + public static void main(String[] args) throws InterruptedException, ExecutionException { + run(args, false); + } + public static void run( String[] args, boolean runWithOTFVis ) + throws InterruptedException, ExecutionException { + + // Path to public repo: +// String pathToInput = "https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/projects/freight/foodRetailing_wo_rangeConstraint/input/"; + String pathToInput = "https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/projects/freight/foodRetailing_wo_rangeConstraint/71_ICEVBEV_NwCE_BVWP_10000it_DCoff_noTax/"; + // ### config stuff: ### + Config config; + if ( args==null || args.length==0 || args[0]==null ){ + config = ConfigUtils.createConfig(); + config.network().setInputFile("https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/berlin-v5.5-10pct/output-berlinv5.5/berlin-v5.5.3-10pct.output_network.xml.gz"); + config.controller().setOutputDirectory( "./output/freightUpdate71-1" ); + config.controller().setLastIteration( 0 ); // no iterations; for iterations see RunFreightWithIterationsExample. kai, jan'23 + config.controller().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); + config.global().setCoordinateSystem("EPSG:31468"); + + FreightCarriersConfigGroup freightConfigGroup = ConfigUtils.addOrGetModule( config, FreightCarriersConfigGroup.class ); + freightConfigGroup.setCarriersFile( pathToInput + "output_carriers.xml.gz" ); + freightConfigGroup.setCarriersVehicleTypesFile( pathToInput + "output_vehicleTypes.xml.gz" ); + } else { + config = ConfigUtils.loadConfig( args, new FreightCarriersConfigGroup() ); + } + + // load scenario (this is not loading the freight material): + Scenario scenario = ScenarioUtils.loadScenario( config ); + + //load carriers according to freight config + CarriersUtils.loadCarriersAccordingToFreightConfig( scenario ); + + // output before jsprit run (not necessary) + new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/unmodifiedCarriers.xml" ) ; + // (this will go into the standard "output" directory. note that this may be removed if this is also used as the configured output dir.) + + // Solving the VRP (generate carrier's tour plans) +// CarriersUtils.runJsprit( scenario ); +// +// // Output after jsprit run (not necessary) +// new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/jsprit_plannedCarriers.xml" ) ; +// // (this will go into the standard "output" directory. note that this may be removed if this is also used as the configured output dir.) +// + + //TODO: Unify TourIds ..... + //Write it out again. + + // ## MATSim configuration: ## + final Controler controler = new Controler( scenario ) ; + controler.addOverridingModule(new CarrierModule() ); + + + // ## Start of the MATSim-Run: ## + controler.run(); + +// var analysis = new RunFreightAnalysisEventBased(config.controller().getOutputDirectory()+"/", config.controller().getOutputDirectory()+"/analysis", "EPSG:31468"); +// try { +// analysis.runAnalysis(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } + } + +} From 2081ff31e7bd6b77841b4318b5910fa343a501ea Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Fri, 16 Feb 2024 16:17:22 +0100 Subject: [PATCH 2/7] add TourIds, move score value to the correct place --- .../vsp/freight/food/UpdateRunOutputs.java | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java index 1408214..8cccc7a 100644 --- a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java +++ b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java @@ -1,21 +1,21 @@ package org.matsim.vsp.freight.food; -import java.io.IOException; +import java.util.Collection; +import java.util.LinkedList; import java.util.concurrent.ExecutionException; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; -import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.freight.carriers.Carrier; +import org.matsim.freight.carriers.CarrierPlan; import org.matsim.freight.carriers.CarrierPlanWriter; -import org.matsim.freight.carriers.Carriers; import org.matsim.freight.carriers.CarriersUtils; import org.matsim.freight.carriers.FreightCarriersConfigGroup; -import org.matsim.freight.carriers.analysis.RunFreightAnalysisEventBased; -import org.matsim.freight.carriers.controler.CarrierModule; +import org.matsim.freight.carriers.ScheduledTour; +import org.matsim.freight.carriers.Tour; /** * Diese Klasse soll den Output von "alten" runs derart updaten, @@ -61,24 +61,36 @@ public static void run( String[] args, boolean runWithOTFVis ) new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/unmodifiedCarriers.xml" ) ; // (this will go into the standard "output" directory. note that this may be removed if this is also used as the configured output dir.) - // Solving the VRP (generate carrier's tour plans) -// CarriersUtils.runJsprit( scenario ); -// -// // Output after jsprit run (not necessary) -// new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/jsprit_plannedCarriers.xml" ) ; -// // (this will go into the standard "output" directory. note that this may be removed if this is also used as the configured output dir.) -// + for (Carrier carrier : CarriersUtils.addOrGetCarriers(scenario).getCarriers().values()) { + final CarrierPlan selectedPlan = carrier.getSelectedPlan(); - //TODO: Unify TourIds ..... - //Write it out again. - - // ## MATSim configuration: ## - final Controler controler = new Controler( scenario ) ; - controler.addOverridingModule(new CarrierModule() ); + //Add meaningful TourIds. + int tourIdIndex = 1; + Collection updatedScheduledTours = new LinkedList<>(); + for (ScheduledTour scheduledTour : selectedPlan.getScheduledTours().stream().toList()) { + updatedScheduledTours.add(ScheduledTour.newInstance( + scheduledTour.getTour().duplicateWithNewId(Id.create(tourIdIndex, Tour.class)), + scheduledTour.getVehicle(), + scheduledTour.getDeparture() )); + tourIdIndex++; + } + selectedPlan.getScheduledTours().clear(); + selectedPlan.getScheduledTours().addAll(updatedScheduledTours); + //put score into JspritScore and Set MATSimscore to -INF. + selectedPlan.setJspritScore(selectedPlan.getScore()); + selectedPlan.setScore(Double.NEGATIVE_INFINITY); + } - // ## Start of the MATSim-Run: ## - controler.run(); + new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/updatedCarriersWithTourIds.xml" ); +// +// // ## MATSim configuration: ## +// final Controler controler = new Controler( scenario ) ; +// controler.addOverridingModule(new CarrierModule() ); +// +// +// // ## Start of the MATSim-Run: ## +// controler.run(); // var analysis = new RunFreightAnalysisEventBased(config.controller().getOutputDirectory()+"/", config.controller().getOutputDirectory()+"/analysis", "EPSG:31468"); // try { From 903925142f8be3c3a9f0e06fead1edadf5cb483c Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Fri, 16 Feb 2024 23:35:24 +0100 Subject: [PATCH 3/7] update old Analysis call --- .../matsim/vsp/freight/food/analyse/FreightAnalyseKT.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/matsim/vsp/freight/food/analyse/FreightAnalyseKT.java b/src/main/java/org/matsim/vsp/freight/food/analyse/FreightAnalyseKT.java index 6b7ab44..02cb189 100644 --- a/src/main/java/org/matsim/vsp/freight/food/analyse/FreightAnalyseKT.java +++ b/src/main/java/org/matsim/vsp/freight/food/analyse/FreightAnalyseKT.java @@ -81,7 +81,9 @@ public class FreightAnalyseKT { // private static final String RUN_DIR = "../shared-svn/projects/freight/studies/WP51_EmissionsFood/output/20200611_fa8d691/51a_ICEV_NwCE_BVWP_2000it_DCoff_noTax/" ; // private static final String RUN_DIR = "../shared-svn/projects/freight/studies/WP51_EmissionsFood/output/20200611_fa8d691/21a_ICEV_NwCE_BVWP_10000it_DC_noTax/" ; - private static final String RUN_DIR = "../shared-svn/projects/freight/studies/WP51_EmissionsFood/output/20200611_fa8d691/10000it/71a_ICEV_NwCE_BVWP_10000it_DCoff_noTax/" ; +// private static final String RUN_DIR = "../shared-svn/projects/freight/studies/WP51_EmissionsFood/output/20200611_fa8d691/10000it/71a_ICEV_NwCE_BVWP_10000it_DCoff_noTax/" ; + + private static final String RUN_DIR = "./output/freightUpdate71-2/" ; // private static final String RUN_DIR = "../shared-svn/projects/freight/studies/WP51_EmissionsFood/output/Demo1ItDC/" ; @@ -109,7 +111,7 @@ private void run() { // File populationFile = new File(RUN_DIR + "output_plans.xml.gz"); File networkFile = new File(RUN_DIR+ "output_network.xml.gz"); File carrierFile = new File(RUN_DIR+ "output_carriers.xml.gz"); - File vehicleTypeFile = new File(RUN_DIR+ "output_vehicleTypes.xml.gz"); + File vehicleTypeFile = new File(RUN_DIR+ "output_carriersVehicleTypes.xml.gz"); Network network = NetworkUtils.readNetwork(networkFile.getAbsolutePath()); From 9f718491bff1d28dfeb08b138961036fe294fb6f Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Fri, 16 Feb 2024 23:36:25 +0100 Subject: [PATCH 4/7] run for all DC/non-DC runs --- .../vsp/freight/food/UpdateRunOutputs.java | 72 +++++++++++++------ 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java index 8cccc7a..548217a 100644 --- a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java +++ b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java @@ -1,12 +1,15 @@ package org.matsim.vsp.freight.food; +import java.io.IOException; import java.util.Collection; import java.util.LinkedList; +import java.util.List; import java.util.concurrent.ExecutionException; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; +import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.freight.carriers.Carrier; @@ -16,6 +19,8 @@ import org.matsim.freight.carriers.FreightCarriersConfigGroup; import org.matsim.freight.carriers.ScheduledTour; import org.matsim.freight.carriers.Tour; +import org.matsim.freight.carriers.analysis.RunFreightAnalysisEventBased; +import org.matsim.freight.carriers.controler.CarrierModule; /** * Diese Klasse soll den Output von "alten" runs derart updaten, @@ -26,20 +31,41 @@ public class UpdateRunOutputs { public static void main(String[] args) throws InterruptedException, ExecutionException { - run(args, false); + var listOfRuns = List.of( + "foodRetailing_wo_rangeConstraint/71_ICEVBEV_NwCE_BVWP_10000it_DCoff_noTax/", + "foodRetailing_wo_rangeConstraint/71a_ICEV_NwCE_BVWP_10000it_DCoff_noTax/", + "foodRetailing_wo_rangeConstraint/72_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax25/", + "foodRetailing_wo_rangeConstraint/73_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax50/", + "foodRetailing_wo_rangeConstraint/74_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax100/", + "foodRetailing_wo_rangeConstraint/75_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax150/", + "foodRetailing_wo_rangeConstraint/76_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax200/", + "foodRetailing_wo_rangeConstraint/77_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax250/", + "foodRetailing_wo_rangeConstraint/78_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax300/", + //nun Runs mit ReichweitenConstraint + "foodRetailing_with_rangeConstraint/21_ICEVBEV_NwCE_BVWP_10000it_DCoff_noTax/", + "foodRetailing_with_rangeConstraint/22_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax25/", + "foodRetailing_with_rangeConstraint/23_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax50/", + "foodRetailing_with_rangeConstraint/24_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax100/", + "foodRetailing_with_rangeConstraint/25_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax150/", + "foodRetailing_with_rangeConstraint/26_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax200/", + "foodRetailing_with_rangeConstraint/27_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax250/", + "foodRetailing_with_rangeConstraint/28_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax300/" + ) ; + for (String runDir : listOfRuns) { + run(args, runDir); + } } - public static void run( String[] args, boolean runWithOTFVis ) + public static void run( String[] args, String runDir ) throws InterruptedException, ExecutionException { // Path to public repo: -// String pathToInput = "https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/projects/freight/foodRetailing_wo_rangeConstraint/input/"; - String pathToInput = "https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/projects/freight/foodRetailing_wo_rangeConstraint/71_ICEVBEV_NwCE_BVWP_10000it_DCoff_noTax/"; + String pathToInput = "https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/projects/freight/" + runDir; // ### config stuff: ### Config config; if ( args==null || args.length==0 || args[0]==null ){ config = ConfigUtils.createConfig(); config.network().setInputFile("https://svn.vsp.tu-berlin.de/repos/public-svn/matsim/scenarios/countries/de/berlin/berlin-v5.5-10pct/output-berlinv5.5/berlin-v5.5.3-10pct.output_network.xml.gz"); - config.controller().setOutputDirectory( "./output/freightUpdate71-1" ); + config.controller().setOutputDirectory( "../shared-svn/projects/freight/studies/UpdateEventsfromEarlierStudies/" + runDir ); config.controller().setLastIteration( 0 ); // no iterations; for iterations see RunFreightWithIterationsExample. kai, jan'23 config.controller().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); config.global().setCoordinateSystem("EPSG:31468"); @@ -57,8 +83,8 @@ public static void run( String[] args, boolean runWithOTFVis ) //load carriers according to freight config CarriersUtils.loadCarriersAccordingToFreightConfig( scenario ); - // output before jsprit run (not necessary) - new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/unmodifiedCarriers.xml" ) ; + // output before jsprit runDir (not necessary) +// new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/unmodifiedCarriers.xml" ) ; // (this will go into the standard "output" directory. note that this may be removed if this is also used as the configured output dir.) for (Carrier carrier : CarriersUtils.addOrGetCarriers(scenario).getCarriers().values()) { @@ -82,22 +108,22 @@ public static void run( String[] args, boolean runWithOTFVis ) selectedPlan.setScore(Double.NEGATIVE_INFINITY); } - new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/updatedCarriersWithTourIds.xml" ); -// -// // ## MATSim configuration: ## -// final Controler controler = new Controler( scenario ) ; -// controler.addOverridingModule(new CarrierModule() ); -// -// -// // ## Start of the MATSim-Run: ## -// controler.run(); - -// var analysis = new RunFreightAnalysisEventBased(config.controller().getOutputDirectory()+"/", config.controller().getOutputDirectory()+"/analysis", "EPSG:31468"); -// try { -// analysis.runAnalysis(); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } +// new CarrierPlanWriter(CarriersUtils.getCarriers( scenario )).write( "output/updatedCarriersWithTourIds.xml" ); + + // ## MATSim configuration: ## + final Controler controler = new Controler( scenario ) ; + controler.addOverridingModule(new CarrierModule() ); + + + // ## Start of the MATSim-Run: ## + controler.run(); + + var analysis = new RunFreightAnalysisEventBased(config.controller().getOutputDirectory() , config.controller().getOutputDirectory()+"Analysis", "EPSG:31468"); + try { + analysis.runAnalysis(); + } catch (IOException e) { + throw new RuntimeException(e); + } } } From d804595756da7d9ed7c506f459b4ecd3789e287e Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Tue, 20 Feb 2024 13:52:31 +0100 Subject: [PATCH 5/7] fix path --- .../vsp/freight/food/UpdateRunOutputs.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java index 548217a..c92e1d9 100644 --- a/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java +++ b/src/main/java/org/matsim/vsp/freight/food/UpdateRunOutputs.java @@ -42,14 +42,14 @@ public static void main(String[] args) throws InterruptedException, ExecutionExc "foodRetailing_wo_rangeConstraint/77_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax250/", "foodRetailing_wo_rangeConstraint/78_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax300/", //nun Runs mit ReichweitenConstraint - "foodRetailing_with_rangeConstraint/21_ICEVBEV_NwCE_BVWP_10000it_DCoff_noTax/", - "foodRetailing_with_rangeConstraint/22_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax25/", - "foodRetailing_with_rangeConstraint/23_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax50/", - "foodRetailing_with_rangeConstraint/24_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax100/", - "foodRetailing_with_rangeConstraint/25_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax150/", - "foodRetailing_with_rangeConstraint/26_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax200/", - "foodRetailing_with_rangeConstraint/27_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax250/", - "foodRetailing_with_rangeConstraint/28_ICEVBEV_NwCE_BVWP_10000it_DCoff_Tax300/" + "foodRetailing_with_rangeConstraint/21_ICEVBEV_NwCE_BVWP_10000it_DC_noTax/", + "foodRetailing_with_rangeConstraint/22_ICEVBEV_NwCE_BVWP_10000it_DC_Tax25/", + "foodRetailing_with_rangeConstraint/23_ICEVBEV_NwCE_BVWP_10000it_DC_Tax50/", + "foodRetailing_with_rangeConstraint/24_ICEVBEV_NwCE_BVWP_10000it_DC_Tax100/", + "foodRetailing_with_rangeConstraint/25_ICEVBEV_NwCE_BVWP_10000it_DC_Tax150/", + "foodRetailing_with_rangeConstraint/26_ICEVBEV_NwCE_BVWP_10000it_DC_Tax200/", + "foodRetailing_with_rangeConstraint/27_ICEVBEV_NwCE_BVWP_10000it_DC_Tax250/", + "foodRetailing_with_rangeConstraint/28_ICEVBEV_NwCE_BVWP_10000it_DC_Tax300/" ) ; for (String runDir : listOfRuns) { run(args, runDir); From 674a02620ddc77863d679cb96561cc7b2919dd07 Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Tue, 20 Feb 2024 15:42:18 +0100 Subject: [PATCH 6/7] update matsim version to have the updated analysis available --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cab6ddf..13685e3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ zeroCUTS project - 16.0-PR3045 + 16.0-PR3120 UTF-8 From 0ecb25a78c8784fdccd2b1f3c993cf8f6e5e5f8f Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Wed, 21 Feb 2024 09:33:25 +0100 Subject: [PATCH 7/7] Update pom.xml small-scale-traffic-generation --- pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pom.xml b/pom.xml index 13685e3..ebb63a7 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,16 @@ + + + org.matsim.contrib + small-scale-traffic-generation + ${matsim.version} + + + + + org.matsim.contrib