Skip to content

Commit 815d3bd

Browse files
Merge pull request #115 from moia-oss/master
Update MATSim CW36
2 parents c520f0b + 2cbbf82 commit 815d3bd

File tree

4 files changed

+55
-11
lines changed

4 files changed

+55
-11
lines changed

contribs/drt-extensions/src/test/java/org/matsim/contrib/drt/extension/operations/shifts/run/RunPrebookingShiftDrtScenarioIT.java

+46-6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import org.matsim.contrib.dvrp.fleet.FleetSpecificationImpl;
3838
import org.matsim.contrib.dvrp.fleet.ImmutableDvrpVehicleSpecification;
3939
import org.matsim.contrib.dvrp.passenger.PassengerRequestRejectedEventHandler;
40+
import org.matsim.contrib.dvrp.passenger.PassengerRequestScheduledEventHandler;
41+
import org.matsim.contrib.dvrp.passenger.PassengerRequestSubmittedEventHandler;
4042
import org.matsim.contrib.dvrp.run.AbstractDvrpModeModule;
4143
import org.matsim.contrib.dvrp.run.DvrpConfigGroup;
4244
import org.matsim.contrib.zone.skims.DvrpTravelTimeMatrixParams;
@@ -71,10 +73,15 @@ void testWithReattempts() {
7173
DrtWithExtensionsConfigGroup drtWithShiftsConfigGroup = (DrtWithExtensionsConfigGroup) multiModeDrtConfigGroup.createParameterSet("drt");
7274
final Controler run = prepare(drtWithShiftsConfigGroup, multiModeDrtConfigGroup);
7375

76+
Multiset<Id<Person>> submittedPersons = HashMultiset.create();
77+
Multiset<Id<Person>> scheduledPersons = HashMultiset.create();
7478
Multiset<Id<Person>> rejectedPersons = HashMultiset.create();
79+
7580
run.addOverridingModule(new AbstractModule() {
7681
@Override
7782
public void install() {
83+
addEventHandlerBinding().toInstance((PassengerRequestSubmittedEventHandler) event -> submittedPersons.addAll(event.getPersonIds()));
84+
addEventHandlerBinding().toInstance((PassengerRequestScheduledEventHandler) event -> scheduledPersons.addAll(event.getPersonIds()));
7885
addEventHandlerBinding().toInstance((PassengerRequestRejectedEventHandler) event -> rejectedPersons.addAll(event.getPersonIds()));
7986
}
8087
});
@@ -91,11 +98,25 @@ public void install() {
9198

9299
run.run();
93100

94-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(1) ));
95-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(3)));
96-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(5)));
101+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(1)));
102+
Assertions.assertEquals(2, submittedPersons.count(Id.createPersonId(2)));
103+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(3)));
104+
Assertions.assertEquals(2, submittedPersons.count(Id.createPersonId(4)));
105+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(5)));
106+
Assertions.assertEquals(2, submittedPersons.count(Id.createPersonId(6)));
107+
108+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(1)));
109+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(2)));
110+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(3)));
111+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(4)));
112+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(5)));
113+
Assertions.assertEquals(0, scheduledPersons.count(Id.createPersonId(6)));
114+
115+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(1)));
97116
Assertions.assertEquals(1, rejectedPersons.count(Id.createPersonId(2)));
117+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(3)));
98118
Assertions.assertEquals(1, rejectedPersons.count(Id.createPersonId(4)));
119+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(5)));
99120
Assertions.assertEquals(2, rejectedPersons.count(Id.createPersonId(6)));
100121
}
101122

@@ -106,10 +127,15 @@ void testWithoutReattempts() {
106127
DrtWithExtensionsConfigGroup drtWithShiftsConfigGroup = (DrtWithExtensionsConfigGroup) multiModeDrtConfigGroup.createParameterSet("drt");
107128
final Controler run = prepare(drtWithShiftsConfigGroup, multiModeDrtConfigGroup);
108129

130+
Multiset<Id<Person>> submittedPersons = HashMultiset.create();
131+
Multiset<Id<Person>> scheduledPersons = HashMultiset.create();
109132
Multiset<Id<Person>> rejectedPersons = HashMultiset.create();
133+
110134
run.addOverridingModule(new AbstractModule() {
111135
@Override
112136
public void install() {
137+
addEventHandlerBinding().toInstance((PassengerRequestSubmittedEventHandler) event -> submittedPersons.addAll(event.getPersonIds()));
138+
addEventHandlerBinding().toInstance((PassengerRequestScheduledEventHandler) event -> scheduledPersons.addAll(event.getPersonIds()));
113139
addEventHandlerBinding().toInstance((PassengerRequestRejectedEventHandler) event -> rejectedPersons.addAll(event.getPersonIds()));
114140
}
115141
});
@@ -126,11 +152,25 @@ public void install() {
126152

127153
run.run();
128154

129-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(1) ));
130-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(3)));
131-
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(5)));
155+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(1)));
156+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(2)));
157+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(3)));
158+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(4)));
159+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(5)));
160+
Assertions.assertEquals(1, submittedPersons.count(Id.createPersonId(6)));
161+
162+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(1)));
163+
Assertions.assertEquals(0, scheduledPersons.count(Id.createPersonId(2)));
164+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(3)));
165+
Assertions.assertEquals(0, scheduledPersons.count(Id.createPersonId(4)));
166+
Assertions.assertEquals(1, scheduledPersons.count(Id.createPersonId(5)));
167+
Assertions.assertEquals(0, scheduledPersons.count(Id.createPersonId(6)));
168+
169+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(1)));
132170
Assertions.assertEquals(1, rejectedPersons.count(Id.createPersonId(2)));
171+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(3)));
133172
Assertions.assertEquals(1, rejectedPersons.count(Id.createPersonId(4)));
173+
Assertions.assertEquals(0, rejectedPersons.count(Id.createPersonId(5)));
134174
Assertions.assertEquals(1, rejectedPersons.count(Id.createPersonId(6)));
135175
}
136176

contribs/drt/src/main/java/org/matsim/contrib/drt/analysis/DrtEventSequenceCollector.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public List<PersonMoneyEvent> getDrtFares() {
159159
}
160160

161161
public boolean isCompleted() {
162-
return personEvents.values().stream().allMatch(pe -> pe.droppedOff != null);
162+
return submitted.getPersonIds().stream().allMatch(personId -> personEvents.get(personId).droppedOff != null);
163163
}
164164
}
165165

contribs/drt/src/main/java/org/matsim/contrib/drt/prebooking/PrebookingManager.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -395,9 +395,13 @@ private void processRejections(double now) {
395395
if(abortRejectedPrebookings) {
396396
for (Id<Person> passengerId : item.request.getPassengerIds()) {
397397
MobsimAgent agent = internalInterface.getMobsim().getAgents().get(passengerId);
398-
((HasModifiablePlan) agent).resetCaches();
399-
agent.setStateToAbort(mobsimTimer.getTimeOfDay());
400-
internalInterface.arrangeNextAgentState(agent);
398+
PlanElement planElement = WithinDayAgentUtils.getCurrentPlanElement(agent);
399+
if(planElement instanceof Activity activity) {
400+
activity.setEndTime(Double.POSITIVE_INFINITY);
401+
activity.setMaximumDurationUndefined();
402+
((HasModifiablePlan) agent).resetCaches();
403+
internalInterface.getMobsim().rescheduleActivityEnd(agent);
404+
}
401405
eventsManager.processEvent(new PersonStuckEvent(now, agent.getId(), agent.getCurrentLinkId(),
402406
this.mode));
403407
internalInterface.getMobsim().getAgentCounter().incLost();

contribs/dvrp/src/main/java/org/matsim/contrib/dvrp/passenger/DefaultPassengerEngine.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ private void handleGroupDepartures(double now) {
153153
private void handleDepartureImpl(double now, List<MobsimPassengerAgent> group) {
154154
List<Id<Person>> groupIds = group.stream().map(Identifiable::getId).toList();
155155

156-
MobsimPassengerAgent representative = group.get(0);
156+
MobsimPassengerAgent representative = group.getFirst();
157157

158158
Id<Link> fromLinkId = representative.getCurrentLinkId();
159159
Id<Link> toLinkId = representative.getDestinationLinkId();

0 commit comments

Comments
 (0)