|
39 | 39 | import org.matsim.contrib.drt.passenger.DrtOfferAcceptor;
|
40 | 40 | import org.matsim.contrib.drt.prebooking.PrebookingActionCreator;
|
41 | 41 | import org.matsim.contrib.drt.run.DrtConfigGroup;
|
| 42 | +import org.matsim.contrib.drt.schedule.DrtRoutingDriveTaskUpdater; |
42 | 43 | import org.matsim.contrib.drt.schedule.DrtTaskFactory;
|
43 | 44 | import org.matsim.contrib.drt.scheduler.DefaultRequestInsertionScheduler;
|
44 | 45 | import org.matsim.contrib.drt.scheduler.DrtScheduleInquiry;
|
|
52 | 53 | import org.matsim.contrib.dvrp.run.AbstractDvrpModeQSimModule;
|
53 | 54 | import org.matsim.contrib.dvrp.run.DvrpConfigGroup;
|
54 | 55 | import org.matsim.contrib.dvrp.run.DvrpModes;
|
| 56 | +import org.matsim.contrib.dvrp.schedule.DriveTaskUpdater; |
55 | 57 | import org.matsim.contrib.dvrp.schedule.ScheduleTimingUpdater;
|
56 | 58 | import org.matsim.contrib.dvrp.vrpagent.VrpAgentLogic;
|
57 | 59 | import org.matsim.contrib.dvrp.vrpagent.VrpLegFactory;
|
|
62 | 64 | import org.matsim.core.mobsim.framework.MobsimTimer;
|
63 | 65 | import org.matsim.core.modal.ModalProviders;
|
64 | 66 | import org.matsim.core.router.costcalculators.TravelDisutilityFactory;
|
| 67 | +import org.matsim.core.router.speedy.SpeedyALTFactory; |
| 68 | +import org.matsim.core.router.util.LeastCostPathCalculator; |
65 | 69 | import org.matsim.core.router.util.TravelDisutility;
|
66 | 70 | import org.matsim.core.router.util.TravelTime;
|
67 | 71 |
|
@@ -138,8 +142,7 @@ public EmptyVehicleChargingScheduler get() {
|
138 | 142 |
|
139 | 143 | install(DrtModeOptimizerQSimModule.getInsertionSearchQSimModule(drtCfg));
|
140 | 144 |
|
141 |
| - bindModal(VehicleEntry.EntryFactory.class).toProvider( |
142 |
| - EDrtVehicleDataEntryFactory.EDrtVehicleDataEntryFactoryProvider.class).asEagerSingleton(); |
| 145 | + bindModal(VehicleEntry.EntryFactory.class).to(modalKey(EDrtVehicleDataEntryFactory.class)); |
143 | 146 |
|
144 | 147 | DrtOptimizationConstraintsSet defaultConstraintsSet = drtCfg.addOrGetDrtOptimizationConstraintsParams().addOrGetDefaultDrtOptimizationConstraintsSet();
|
145 | 148 | bindModal(CostCalculationStrategy.class)
|
@@ -180,9 +183,25 @@ public EmptyVehicleRelocator get() {
|
180 | 183 | defaultConstraintsSet.maxAllowedPickupDelay)));
|
181 | 184 | bindModal(DrtOfferAcceptor.class).to(modalKey(DefaultOfferAcceptor.class));
|
182 | 185 |
|
| 186 | + if (!drtCfg.updateRoutes) { |
| 187 | + bindModal(DriveTaskUpdater.class).toInstance(DriveTaskUpdater.NOOP); |
| 188 | + } else { |
| 189 | + bindModal(DriveTaskUpdater.class).toProvider(modalProvider(getter -> { |
| 190 | + TravelTime travelTime = getter.getModal(TravelTime.class); |
| 191 | + Network network = getter.getModal(Network.class); |
| 192 | + DrtTaskFactory taskFactory = getter.getModal(DrtTaskFactory.class); |
| 193 | + TravelDisutility travelDisutility = getter.getModal( |
| 194 | + TravelDisutilityFactory.class).createTravelDisutility(travelTime); |
| 195 | + |
| 196 | + LeastCostPathCalculator lcpc = new SpeedyALTFactory().createPathCalculator(network, travelDisutility, travelTime); |
| 197 | + return new DrtRoutingDriveTaskUpdater(taskFactory, lcpc, travelTime); |
| 198 | + })).in(Singleton.class); |
| 199 | + } |
| 200 | + |
183 | 201 | bindModal(ScheduleTimingUpdater.class).toProvider(modalProvider(
|
184 | 202 | getter -> new ScheduleTimingUpdater(getter.get(MobsimTimer.class),
|
185 |
| - new EDrtStayTaskEndTimeCalculator(getter.getModal(StopTimeCalculator.class))))).asEagerSingleton(); |
| 203 | + new EDrtStayTaskEndTimeCalculator(getter.getModal(StopTimeCalculator.class)), |
| 204 | + getter.getModal(DriveTaskUpdater.class)))).asEagerSingleton(); |
186 | 205 |
|
187 | 206 | bindModal(VrpLegFactory.class).toProvider(modalProvider(getter -> {
|
188 | 207 | DvrpConfigGroup dvrpCfg = getter.get(DvrpConfigGroup.class);
|
|
0 commit comments