Skip to content

Commit 38897ec

Browse files
committed
Merge branch 'develop' into feat/improve-policies
2 parents bfd33ee + 7734704 commit 38897ec

File tree

60 files changed

+463
-502
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+463
-502
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.classpath
22
.project
33
.settings
4+
.vscode
45
target
56
dependency-reduced-pom.xml
67
*.iml

core/src/main/java/org/eqasim/core/components/emissions/RunComputeEmissionsEvents.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.eqasim.core.components.emissions;
22

33
import org.apache.commons.lang3.StringUtils;
4-
import org.eqasim.core.misc.ClassUtils;
54
import org.eqasim.core.simulation.EqasimConfigurator;
65
import org.matsim.api.core.v01.Scenario;
76
import org.matsim.api.core.v01.network.Link;
@@ -26,15 +25,10 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
2625

2726
CommandLine cmd = new CommandLine.Builder(args) //
2827
.requireOptions("config-path", "hbefa-cold-avg", "hbefa-hot-avg") //
29-
.allowOptions("hbefa-cold-detailed", "hbefa-hot-detailed", "configurator-class")
28+
.allowOptions("hbefa-cold-detailed", "hbefa-hot-detailed", EqasimConfigurator.CONFIGURATOR)
3029
.build();
3130

32-
EqasimConfigurator configurator;
33-
if(cmd.hasOption("configurator-class")) {
34-
configurator = ClassUtils.getInstanceOfClassExtendingOtherClass(cmd.getOptionStrict("configurator-class"), EqasimConfigurator.class);
35-
} else {
36-
configurator = new EqasimConfigurator();
37-
}
31+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
3832

3933
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
4034
configurator.registerConfigGroup(new EmissionsConfigGroup(), false);

core/src/main/java/org/eqasim/core/components/emissions/RunComputeEmissionsGrid.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.eqasim.core.components.emissions;
22

3-
import org.eqasim.core.misc.ClassUtils;
43
import org.eqasim.core.simulation.EqasimConfigurator;
54
import org.geotools.api.feature.simple.SimpleFeature;
65
import org.locationtech.jts.geom.Geometry;
@@ -19,15 +18,10 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
1918

2019
CommandLine cmd = new CommandLine.Builder(args) //
2120
.requireOptions("config-path", "domain-shp-path") //
22-
.allowOptions("scale-factor", "grid-size", "smooth-radius", "time-bin-size", "configurator-class")
21+
.allowOptions("scale-factor", "grid-size", "smooth-radius", "time-bin-size", EqasimConfigurator.CONFIGURATOR)
2322
.build();
2423

25-
EqasimConfigurator configurator;
26-
if(cmd.hasOption("configurator-class")) {
27-
configurator = ClassUtils.getInstanceOfClassExtendingOtherClass(cmd.getOptionStrict("configurator-class"), EqasimConfigurator.class);
28-
} else {
29-
configurator = new EqasimConfigurator();
30-
}
24+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
3125

3226
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
3327
configurator.updateConfig(config);

core/src/main/java/org/eqasim/core/components/emissions/RunExportEmissionsNetwork.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.List;
77
import java.util.Map;
88

9-
import org.eqasim.core.misc.ClassUtils;
109
import org.eqasim.core.simulation.EqasimConfigurator;
1110
import org.geotools.api.feature.simple.SimpleFeature;
1211
import org.locationtech.jts.geom.Coordinate;
@@ -36,15 +35,10 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
3635
CommandLine cmd = new CommandLine.Builder(args) //
3736
.requireOptions("config-path") //
3837
.allowOptions("time-bin-size")
39-
.allowOptions("pollutants", "configurator-class")
38+
.allowOptions("pollutants", EqasimConfigurator.CONFIGURATOR)
4039
.build();
4140

42-
EqasimConfigurator configurator;
43-
if(cmd.hasOption("configurator-class")) {
44-
configurator = ClassUtils.getInstanceOfClassExtendingOtherClass(cmd.getOptionStrict("configurator-class"), EqasimConfigurator.class);
45-
} else {
46-
configurator = new EqasimConfigurator();
47-
}
41+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
4842

4943
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
5044
configurator.updateConfig(config);

core/src/main/java/org/eqasim/core/misc/ClassUtils.java

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,34 @@
11
package org.eqasim.core.misc;
22

3-
import java.util.Collections;
43
import java.util.List;
54

5+
import org.eqasim.core.simulation.EqasimConfigurator;
66
import org.matsim.api.core.v01.Scenario;
77
import org.matsim.core.controler.AbstractModule;
8-
import org.matsim.core.controler.Injector;
9-
import org.matsim.core.events.EventsManagerModule;
10-
import org.matsim.core.router.TripRouterModule;
11-
import org.matsim.core.router.costcalculators.TravelDisutilityModule;
12-
import org.matsim.core.scenario.ScenarioByInstanceModule;
13-
import org.matsim.core.scoring.functions.CharyparNagelScoringFunctionModule;
14-
import org.matsim.core.trafficmonitoring.TravelTimeCalculatorModule;
8+
import org.matsim.core.controler.Controler;
159

1610
public class InjectorBuilder {
17-
private final Scenario scenario;
18-
private AbstractModule module = AbstractModule.emptyModule(); // new ControlerDefaultsModule();
11+
private final Controler controller;
1912

20-
public InjectorBuilder(Scenario scenario) {
21-
this.scenario = scenario;
13+
public InjectorBuilder(Scenario scenario, EqasimConfigurator configurator) {
14+
this.controller = new Controler(scenario);
15+
configurator.configureController(controller);
2216
}
2317

2418
public InjectorBuilder addOverridingModule(AbstractModule module) {
25-
this.module = AbstractModule.override(Collections.singleton(this.module), module);
19+
controller.addOverridingModule(module);
2620
return this;
2721
}
2822

2923
public InjectorBuilder addOverridingModules(List<AbstractModule> modules) {
3024
for (AbstractModule module : modules) {
31-
addOverridingModule(module);
25+
controller.addOverridingModule(module);
3226
}
3327

3428
return this;
3529
}
3630

3731
public com.google.inject.Injector build() {
38-
AbstractModule standardModule = new AbstractModule() {
39-
@Override
40-
public void install() {
41-
install(new EventsManagerModule());
42-
install(new TripRouterModule());
43-
install(new CharyparNagelScoringFunctionModule());
44-
install(new TravelDisutilityModule());
45-
install(new TravelTimeCalculatorModule());
46-
}
47-
};
48-
49-
return Injector.createInjector( //
50-
scenario.getConfig(), //
51-
new ScenarioByInstanceModule(scenario), //
52-
AbstractModule.override(Collections.singleton(standardModule), module));
32+
return controller.getInjector();
5333
}
5434
}

core/src/main/java/org/eqasim/core/scenario/config/EditConfig.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package org.eqasim.core.scenario.config;
22

3-
import com.google.common.base.Verify;
4-
import org.eqasim.core.misc.ClassUtils;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.Map;
6+
import java.util.Set;
7+
import java.util.stream.Collectors;
8+
59
import org.eqasim.core.simulation.EqasimConfigurator;
610
import org.matsim.core.config.CommandLine;
11+
import org.matsim.core.config.Config;
712
import org.matsim.core.config.ConfigGroup;
813
import org.matsim.core.config.ConfigUtils;
9-
import org.matsim.core.config.Config;
1014

11-
import java.util.Set;
12-
import java.util.HashSet;
13-
import java.util.HashMap;
14-
import java.util.Map;
15-
import java.util.stream.Collectors;
15+
import com.google.common.base.Verify;
1616

1717
/**
1818
* This script allows to edit a MATSim configuration file exclusively through the command line. <br/>
@@ -34,14 +34,13 @@ public class EditConfig {
3434
public static final String CMD_OUTPUT_PATH = "output-path";
3535
public static final String CMD_ADD_MODULE_PREFIX = "add-module";
3636
public static final String CMD_REMOVE_MODULE_PREFIX = "remove-module";
37-
public static final String CMD_EQASIM_CONFIGURATOR= "eqasim-configurator";
3837

3938
public static void main(String[] args) throws CommandLine.ConfigurationException {
4039
CommandLine cmd = new CommandLine.Builder(args)
4140
.requireOptions(CMD_INPUT_PATH, CMD_OUTPUT_PATH)
4241
.allowPrefixes(CMD_ADD_MODULE_PREFIX)
4342
.allowPrefixes(CMD_REMOVE_MODULE_PREFIX)
44-
.allowOptions(CMD_EQASIM_CONFIGURATOR)
43+
.allowOptions(EqasimConfigurator.CONFIGURATOR)
4544
.build();
4645

4746
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict(CMD_INPUT_PATH));
@@ -67,7 +66,7 @@ public static void main(String[] args) throws CommandLine.ConfigurationException
6766
config.removeModule(module);
6867
}
6968

70-
EqasimConfigurator eqasimConfigurator = cmd.hasOption(CMD_EQASIM_CONFIGURATOR) ? ClassUtils.getInstanceOfClassExtendingOtherClass(cmd.getOptionStrict(CMD_EQASIM_CONFIGURATOR), EqasimConfigurator.class) : new EqasimConfigurator();
69+
EqasimConfigurator eqasimConfigurator = EqasimConfigurator.getInstance(cmd);
7170

7271
Map<String, ConfigGroup> availableModules = new HashMap<>(ConfigUtils.createConfig().getModules());
7372
availableModules.putAll(eqasimConfigurator.getRegisteredConfigGroups().stream().collect(Collectors.toMap(ConfigGroup::getName, configGroup -> configGroup)));

core/src/main/java/org/eqasim/core/scenario/config/RunGenerateConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public class RunGenerateConfig {
1111
static public void main(String[] args) throws ConfigurationException {
1212
CommandLine cmd = new CommandLine.Builder(args) //
1313
.requireOptions("output-path", "prefix", "sample-size", "threads") //
14-
.allowOptions("random-seed") //
14+
.allowOptions("random-seed", EqasimConfigurator.CONFIGURATOR) //
1515
.build();
1616

17-
EqasimConfigurator configurator = new EqasimConfigurator();
17+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
1818
Config config = ConfigUtils.createConfig();
1919
configurator.updateConfig(config);
2020

core/src/main/java/org/eqasim/core/scenario/cutter/RunScenarioCutter.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@
3030
import org.eqasim.core.scenario.validation.ScenarioValidator;
3131
import org.eqasim.core.scenario.validation.VehiclesValidator;
3232
import org.eqasim.core.simulation.EqasimConfigurator;
33-
import org.eqasim.core.simulation.mode_choice.AbstractEqasimExtension;
3433
import org.eqasim.core.simulation.termination.EqasimTerminationConfigGroup;
3534
import org.matsim.api.core.v01.Scenario;
36-
import org.matsim.contribs.discrete_mode_choice.modules.DiscreteModeChoiceModule;
3735
import org.matsim.core.config.CommandLine;
3836
import org.matsim.core.config.CommandLine.ConfigurationException;
3937
import org.matsim.core.config.Config;
@@ -47,7 +45,7 @@ public class RunScenarioCutter {
4745

4846
public static final Collection<String> REQUIRED_ARGS = Set.of("config-path", "output-path", "extent-path");
4947
public static final Collection<String> OPTIONAL_ARGS = Set.of("threads", "prefix", "extent-attribute",
50-
"extent-value", "plans-path", "events-path", "skip-routing");
48+
"extent-value", "plans-path", "events-path", "skip-routing", EqasimConfigurator.CONFIGURATOR);
5149

5250
static public void main(String[] args) throws ConfigurationException, IOException, InterruptedException {
5351
CommandLine cmd = new CommandLine.Builder(args) //
@@ -70,7 +68,7 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
7068
ScenarioExtent extent = new ShapeScenarioExtent.Builder(extentPath, extentAttribute, extentValue).build();
7169

7270
// Load scenario
73-
EqasimConfigurator configurator = new EqasimConfigurator();
71+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
7472
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
7573
configurator.updateConfig(config);
7674
config.removeModule(EqasimTerminationConfigGroup.GROUP_NAME);
@@ -110,9 +108,8 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
110108
}
111109

112110
// Cut population
113-
Injector populationCutterInjector = new InjectorBuilder(scenario) //
114-
.addOverridingModules(configurator.getModules(config).stream()
115-
.filter(module -> !(module instanceof AbstractEqasimExtension) && !(module instanceof DiscreteModeChoiceModule)).toList()) //
111+
// TODO Check if we can remove stuff
112+
Injector populationCutterInjector = new InjectorBuilder(scenario, configurator) //
116113
.addOverridingModule(
117114
new PopulationCutterModule(extent, numberOfThreads, 40, cmd.getOption("events-path"))) //
118115
.addOverridingModule(new CutterTravelTimeModule(travelTime)) //
@@ -169,9 +166,8 @@ static public void main(String[] args) throws ConfigurationException, IOExceptio
169166
configCutter.run(config);
170167

171168
// Final routing
172-
Injector routingInjector = new InjectorBuilder(scenario) //
173-
.addOverridingModules(configurator.getModules(config).stream()
174-
.filter(module -> !(module instanceof AbstractEqasimExtension) && !(module instanceof DiscreteModeChoiceModule)).toList()) //
169+
// TODO: Check if we can remove stuff
170+
Injector routingInjector = new InjectorBuilder(scenario, configurator) //
175171
.addOverridingModule(new PopulationRouterModule(numberOfThreads, 100, false)) //
176172
.addOverridingModule(new CutterTravelTimeModule(travelTime)) //
177173
.addOverridingModule(new TimeInterpretationModule()) //

core/src/main/java/org/eqasim/core/scenario/cutter/RunScenarioCutterV2.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ static public void main(String[] args)
3838
CommandLine cmd = new CommandLine.Builder(args) //
3939
.requireOptions("config-path", "output-path", "extent-path", "vdf-travel-times-path") //
4040
.allowOptions("threads", "prefix", "extent-attribute", "extent-value", "plans-path", "events-path") //
41-
.allowOptions("flag-area-link-modes") //
41+
.allowOptions("flag-area-link-modes", EqasimConfigurator.CONFIGURATOR) //
4242
.build();
4343

4444
String outputPath = cmd.getOptionStrict("output-path");
4545

46-
EqasimConfigurator eqasimConfigurator = new EqasimConfigurator();
46+
EqasimConfigurator eqasimConfigurator = EqasimConfigurator.getInstance(cmd);
4747
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
4848
eqasimConfigurator.updateConfig(config);
4949
cmd.applyConfiguration(config);
@@ -108,7 +108,7 @@ static public void main(String[] args)
108108
Set<String> insideModes = new HashSet<>();
109109
if(Boolean.parseBoolean(cmd.getOption("flag-area-link-modes").orElse("false"))) {
110110
scenario.getNetwork().getLinks().values()
111-
.stream().filter(link -> extent.isInside(link.getFromNode().getCoord()) && extent.isInside(link.getFromNode().getCoord()))
111+
.stream().filter(link -> extent.isInside(link.getFromNode().getCoord()) && extent.isInside(link.getToNode().getCoord()))
112112
.forEach(link -> {
113113
Set<String> linkModes = new HashSet<>(link.getAllowedModes());
114114
for(String mode: link.getAllowedModes()) {

core/src/main/java/org/eqasim/core/scenario/routing/RunPopulationRouting.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ public class RunPopulationRouting {
2525
static public void main(String[] args) throws ConfigurationException, InterruptedException {
2626
CommandLine cmd = new CommandLine.Builder(args) //
2727
.requireOptions("config-path", "output-path") //
28-
.allowOptions("threads", "batch-size", "modes") //
28+
.allowOptions("threads", "batch-size", "modes", EqasimConfigurator.CONFIGURATOR) //
2929
.build();
3030

31-
EqasimConfigurator configurator = new EqasimConfigurator();
31+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
3232
Config config = ConfigUtils.loadConfig(cmd.getOptionStrict("config-path"));
3333
configurator.updateConfig(config);
3434
config.getModules().remove(EqasimTerminationConfigGroup.GROUP_NAME);
@@ -58,10 +58,8 @@ static public void main(String[] args) throws ConfigurationException, Interrupte
5858
}
5959
}
6060

61-
Injector injector = new InjectorBuilder(scenario) //
62-
.addOverridingModules(configurator.getModules(config).stream()
63-
.filter(module -> !(module instanceof AbstractEqasimExtension)) //
64-
.filter(module -> !(module instanceof DiscreteModeChoiceModule)).toList()) //
61+
// TODO: Check what we can remove here
62+
Injector injector = new InjectorBuilder(scenario, configurator) //
6563
.addOverridingModule(new PopulationRouterModule(numberOfThreads, batchSize, true, modes)) //
6664
.addOverridingModule(new TimeInterpretationModule()).build();
6765

core/src/main/java/org/eqasim/core/scenario/spatial/RunImputeSpatialAttribute.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static public void main(String[] args)
2525
CommandLine cmd = new CommandLine.Builder(args) //
2626
.allowOptions("input-population-path", "input-network-path", "output-population-path",
2727
"output-network-path") //
28-
.requireOptions("shape-path", "shape-attribute", "shape-value", "attribute") //
28+
.requireOptions("shape-path", "shape-attribute", "shape-value", "attribute", EqasimConfigurator.CONFIGURATOR) //
2929
.build();
3030

3131
if (cmd.hasOption("input-population-path") ^ cmd.hasOption("output-population-path")) {
@@ -45,7 +45,7 @@ static public void main(String[] args)
4545

4646
// Set up imputation
4747

48-
EqasimConfigurator configurator = new EqasimConfigurator();
48+
EqasimConfigurator configurator = EqasimConfigurator.getInstance(cmd);
4949
Config config = ConfigUtils.createConfig();
5050
Scenario scenario = ScenarioUtils.createScenario(config);
5151
configurator.configureScenario(scenario);

0 commit comments

Comments
 (0)