|
21 | 21 |
|
22 | 22 | import org.matsim.contrib.dvrp.data.Fleet;
|
23 | 23 | import org.matsim.contrib.dvrp.data.file.FleetProvider;
|
24 |
| -import org.matsim.contrib.dvrp.optimizer.VrpOptimizer; |
25 |
| -import org.matsim.contrib.dvrp.passenger.PassengerRequestCreator; |
26 | 24 | import org.matsim.contrib.dvrp.router.TimeAsTravelDisutility;
|
27 |
| -import org.matsim.contrib.dvrp.run.DvrpModule; |
28 |
| -import org.matsim.contrib.dvrp.trafficmonitoring.DvrpTravelTimeModule; |
29 |
| -import org.matsim.contrib.dvrp.vrpagent.VrpAgentLogic.DynActionCreator; |
30 | 25 | import org.matsim.contrib.taxi.optimizer.DefaultTaxiOptimizerProvider;
|
31 |
| -import org.matsim.contrib.taxi.optimizer.TaxiOptimizer; |
32 |
| -import org.matsim.contrib.taxi.passenger.TaxiRequestCreator; |
33 |
| -import org.matsim.contrib.taxi.scheduler.TaxiScheduler; |
34 |
| -import org.matsim.contrib.taxi.vrpagent.TaxiActionCreator; |
| 26 | +import org.matsim.contrib.taxi.passenger.SubmittedTaxiRequestsCollector; |
| 27 | +import org.matsim.contrib.taxi.util.TaxiSimulationConsistencyChecker; |
| 28 | +import org.matsim.contrib.taxi.util.stats.TaxiStatsDumper; |
| 29 | +import org.matsim.contrib.taxi.util.stats.TaxiStatusTimeProfileCollectorProvider; |
35 | 30 | import org.matsim.core.controler.AbstractModule;
|
36 |
| -import org.matsim.core.mobsim.framework.MobsimTimer; |
37 |
| -import org.matsim.core.mobsim.qsim.QSim; |
38 | 31 | import org.matsim.core.router.costcalculators.TravelDisutilityFactory;
|
39 |
| -import org.matsim.core.router.util.TravelDisutility; |
40 |
| -import org.matsim.core.router.util.TravelTime; |
41 | 32 |
|
42 |
| -import com.google.inject.Module; |
43 |
| -import com.google.inject.Provider; |
44 |
| -import com.google.inject.Provides; |
45 |
| -import com.google.inject.Singleton; |
46 |
| -import com.google.inject.name.Named; |
47 | 33 | import com.google.inject.name.Names;
|
48 | 34 |
|
49 | 35 | /**
|
|
52 | 38 | public final class TaxiModule extends AbstractModule {
|
53 | 39 | public static final String TAXI_MODE = "taxi";
|
54 | 40 |
|
55 |
| - private final DvrpModule dvrpModule; |
56 |
| - |
57 |
| - public TaxiModule() { |
58 |
| - this(DefaultTaxiOptimizerProvider.class); |
59 |
| - } |
60 |
| - |
61 |
| - public TaxiModule(Class<? extends Provider<? extends TaxiOptimizer>> providerClass) { |
62 |
| - this(new com.google.inject.AbstractModule() { |
63 |
| - @Override |
64 |
| - protected void configure() { |
65 |
| - bind(TaxiOptimizer.class).toProvider(providerClass).asEagerSingleton(); |
66 |
| - } |
67 |
| - }); |
68 |
| - } |
69 |
| - |
70 |
| - public TaxiModule(Module taxiOptimizerModule) { |
71 |
| - dvrpModule = new DvrpModule(createModuleForQSimPlugin(taxiOptimizerModule), TaxiOptimizer.class); |
72 |
| - } |
73 |
| - |
74 |
| - public static Module createModuleForQSimPlugin(Module taxiOptimizerModule) { |
75 |
| - return new com.google.inject.AbstractModule() { |
76 |
| - @Override |
77 |
| - protected void configure() { |
78 |
| - bind(VrpOptimizer.class).to(TaxiOptimizer.class); |
79 |
| - bind(TaxiScheduler.class).asEagerSingleton(); |
80 |
| - bind(DynActionCreator.class).to(TaxiActionCreator.class).asEagerSingleton(); |
81 |
| - bind(PassengerRequestCreator.class).to(TaxiRequestCreator.class).asEagerSingleton(); |
82 |
| - install(taxiOptimizerModule); |
83 |
| - } |
84 |
| - |
85 |
| - @Provides |
86 |
| - @Singleton |
87 |
| - private MobsimTimer provideTimer(QSim qSim) { |
88 |
| - return qSim.getSimTimer(); |
89 |
| - } |
90 |
| - |
91 |
| - @Provides |
92 |
| - @Named(DefaultTaxiOptimizerProvider.TAXI_OPTIMIZER) |
93 |
| - private TravelDisutility provideTravelDisutility( |
94 |
| - @Named(DvrpTravelTimeModule.DVRP_ESTIMATED) TravelTime travelTime, |
95 |
| - @Named(DefaultTaxiOptimizerProvider.TAXI_OPTIMIZER) TravelDisutilityFactory travelDisutilityFactory) { |
96 |
| - return travelDisutilityFactory.createTravelDisutility(travelTime); |
97 |
| - } |
98 |
| - }; |
99 |
| - } |
100 |
| - |
101 | 41 | @Override
|
102 | 42 | public void install() {
|
103 | 43 | TaxiConfigGroup taxiCfg = TaxiConfigGroup.get(getConfig());
|
104 | 44 | bind(Fleet.class).toProvider(new FleetProvider(taxiCfg.getTaxisFileUrl(getConfig().getContext())))
|
105 | 45 | .asEagerSingleton();
|
106 | 46 | bind(TravelDisutilityFactory.class).annotatedWith(Names.named(DefaultTaxiOptimizerProvider.TAXI_OPTIMIZER))
|
107 | 47 | .toInstance(travelTime -> new TimeAsTravelDisutility(travelTime));
|
| 48 | + |
| 49 | + bind(SubmittedTaxiRequestsCollector.class).toInstance(new SubmittedTaxiRequestsCollector()); |
| 50 | + addControlerListenerBinding().to(SubmittedTaxiRequestsCollector.class); |
| 51 | + |
| 52 | + addControlerListenerBinding().to(TaxiSimulationConsistencyChecker.class); |
| 53 | + addControlerListenerBinding().to(TaxiStatsDumper.class); |
108 | 54 |
|
109 |
| - install(dvrpModule); |
| 55 | + if (taxiCfg.getTimeProfiles()) { |
| 56 | + addMobsimListenerBinding().toProvider(TaxiStatusTimeProfileCollectorProvider.class); |
| 57 | + // add more time profiles if necessary |
| 58 | + } |
110 | 59 | }
|
111 | 60 | }
|
0 commit comments