1
1
package org .eqasim .core .scenario .routing ;
2
2
3
- import java .util .HashMap ;
4
3
import java .util .HashSet ;
5
- import java .util .Map ;
6
4
import java .util .Set ;
7
5
8
6
import org .eqasim .core .misc .InjectorBuilder ;
7
+ import org .eqasim .core .scenario .validation .VehiclesValidator ;
9
8
import org .eqasim .core .simulation .EqasimConfigurator ;
10
9
import org .eqasim .core .simulation .mode_choice .AbstractEqasimExtension ;
11
10
import org .eqasim .core .simulation .termination .EqasimTerminationConfigGroup ;
12
- import org .matsim .api .core .v01 .Id ;
13
11
import org .matsim .api .core .v01 .Scenario ;
14
- import org .matsim .api .core .v01 .population .Leg ;
15
- import org .matsim .api .core .v01 .population .Person ;
16
- import org .matsim .api .core .v01 .population .Plan ;
17
12
import org .matsim .core .config .CommandLine ;
18
13
import org .matsim .core .config .CommandLine .ConfigurationException ;
19
14
import org .matsim .core .config .Config ;
20
15
import org .matsim .core .config .ConfigUtils ;
21
- import org .matsim .core .config .groups .QSimConfigGroup .VehiclesSource ;
22
16
import org .matsim .core .population .io .PopulationWriter ;
23
- import org .matsim .core .population .routes .NetworkRoute ;
24
- import org .matsim .core .router .TripStructureUtils ;
25
17
import org .matsim .core .scenario .ScenarioUtils ;
26
18
import org .matsim .core .utils .timing .TimeInterpretationModule ;
27
19
import org .matsim .facilities .ActivityFacility ;
28
- import org .matsim .vehicles .Vehicle ;
29
- import org .matsim .vehicles .VehicleUtils ;
30
- import org .matsim .vehicles .Vehicles ;
31
- import org .matsim .vehicles .VehiclesFactory ;
32
20
33
21
import com .google .inject .Injector ;
34
22
@@ -41,17 +29,17 @@ static public void main(String[] args) throws ConfigurationException, Interrupte
41
29
42
30
EqasimConfigurator configurator = new EqasimConfigurator ();
43
31
Config config = ConfigUtils .loadConfig (cmd .getOptionStrict ("config-path" ), configurator .getConfigGroups ());
44
- config .getModules ().remove (EqasimTerminationConfigGroup .GROUP_NAME );
32
+ config .getModules ().remove (EqasimTerminationConfigGroup .GROUP_NAME );
45
33
configurator .addOptionalConfigGroups (config );
46
34
cmd .applyConfiguration (config );
47
35
config .replanning ().clearStrategySettings ();
36
+ VehiclesValidator .validate (config );
48
37
49
38
int batchSize = cmd .getOption ("batch-size" ).map (Integer ::parseInt ).orElse (100 );
50
39
int numberOfThreads = cmd .getOption ("threads" ).map (Integer ::parseInt )
51
40
.orElse (Runtime .getRuntime ().availableProcessors ());
52
41
53
42
Scenario scenario = ScenarioUtils .loadScenario (config );
54
- insertVehicles (config , scenario );
55
43
56
44
if (scenario .getActivityFacilities () != null ) {
57
45
for (ActivityFacility facility : scenario .getActivityFacilities ().getFacilities ().values ()) {
@@ -70,54 +58,14 @@ static public void main(String[] args) throws ConfigurationException, Interrupte
70
58
}
71
59
72
60
Injector injector = new InjectorBuilder (scenario ) //
73
- .addOverridingModules (configurator .getModules ().stream ().filter (module -> !(module instanceof AbstractEqasimExtension )).toList ()) //
61
+ .addOverridingModules (configurator .getModules ().stream ()
62
+ .filter (module -> !(module instanceof AbstractEqasimExtension )).toList ()) //
74
63
.addOverridingModule (new PopulationRouterModule (numberOfThreads , batchSize , true , modes )) //
75
64
.addOverridingModule (new TimeInterpretationModule ()).build ();
76
65
77
66
PopulationRouter populationRouter = injector .getInstance (PopulationRouter .class );
78
67
populationRouter .run (scenario .getPopulation ());
79
68
80
- clearVehicles (config , scenario );
81
69
new PopulationWriter (scenario .getPopulation ()).write (cmd .getOptionStrict ("output-path" ));
82
70
}
83
-
84
- static public void insertVehicles (Config config , Scenario scenario ) {
85
- if (config .qsim ().getVehiclesSource ().equals (VehiclesSource .defaultVehicle )) {
86
- Vehicles vehicles = scenario .getVehicles ();
87
- VehiclesFactory factory = vehicles .getFactory ();
88
-
89
- vehicles .addVehicleType (VehicleUtils .getDefaultVehicleType ());
90
-
91
- for (Person person : scenario .getPopulation ().getPersons ().values ()) {
92
- Map <String , Id <Vehicle >> personVehicles = new HashMap <>();
93
-
94
- for (String mode : config .routing ().getNetworkModes ()) {
95
- Vehicle vehicle = factory .createVehicle (Id .createVehicleId (person .getId ().toString () + ":" + mode ),
96
- VehicleUtils .getDefaultVehicleType ());
97
- vehicles .addVehicle (vehicle );
98
-
99
- personVehicles .put (mode , vehicle .getId ());
100
- }
101
-
102
- VehicleUtils .insertVehicleIdsIntoAttributes (person , personVehicles );
103
- }
104
- }
105
- }
106
-
107
- static public void clearVehicles (Config config , Scenario scenario ) {
108
- if (config .qsim ().getVehiclesSource ().equals (VehiclesSource .defaultVehicle )) {
109
- for (Person person : scenario .getPopulation ().getPersons ().values ()) {
110
- person .getAttributes ().removeAttribute ("vehicles" );
111
-
112
- for (Plan plan : person .getPlans ()) {
113
- for (Leg leg : TripStructureUtils .getLegs (plan )) {
114
- if (leg .getRoute () instanceof NetworkRoute ) {
115
- NetworkRoute route = (NetworkRoute ) leg .getRoute ();
116
- route .setVehicleId (null );
117
- }
118
- }
119
- }
120
- }
121
- }
122
- }
123
71
}
0 commit comments