diff --git a/contribs/pom.xml b/contribs/pom.xml index e901a081789..9d49de8bfc1 100644 --- a/contribs/pom.xml +++ b/contribs/pom.xml @@ -96,6 +96,7 @@ signals simulatedannealing simwrapper + small-scale-traffic-generation socnetsim sumo taxi diff --git a/contribs/small-scale-traffic-generation/.gitignore b/contribs/small-scale-traffic-generation/.gitignore new file mode 100644 index 00000000000..5d550f51a4f --- /dev/null +++ b/contribs/small-scale-traffic-generation/.gitignore @@ -0,0 +1,3 @@ +/output +/target +/bin \ No newline at end of file diff --git a/contribs/small-scale-traffic-generation/README.md b/contribs/small-scale-traffic-generation/README.md new file mode 100644 index 00000000000..19a22421db1 --- /dev/null +++ b/contribs/small-scale-traffic-generation/README.md @@ -0,0 +1,3 @@ +# small scale traffic generation + +construction site; will contain small scale traffic generation code diff --git a/contribs/small-scale-traffic-generation/pom.xml b/contribs/small-scale-traffic-generation/pom.xml new file mode 100644 index 00000000000..da651408230 --- /dev/null +++ b/contribs/small-scale-traffic-generation/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + org.matsim.contrib + small-scale-traffic-generation + small-scale-traffic-generation + + + org.matsim + contrib + 16.0-SNAPSHOT + + + + + + org.matsim.contrib + application + 16.0-SNAPSHOT + + + + org.matsim.contrib + freight + 16.0-SNAPSHOT + + + + + diff --git a/contribs/small-scale-traffic-generation/src/main/javadoc/overview.html b/contribs/small-scale-traffic-generation/src/main/javadoc/overview.html new file mode 100644 index 00000000000..31fdb572583 --- /dev/null +++ b/contribs/small-scale-traffic-generation/src/main/javadoc/overview.html @@ -0,0 +1,7 @@ + + + +Overview text (in html syntax) could be entered here. + + + diff --git a/matsim/src/main/java/org/matsim/core/events/SimStepParallelEventsManagerImpl.java b/matsim/src/main/java/org/matsim/core/events/SimStepParallelEventsManagerImpl.java index 726c62b96e8..14524bedd6e 100644 --- a/matsim/src/main/java/org/matsim/core/events/SimStepParallelEventsManagerImpl.java +++ b/matsim/src/main/java/org/matsim/core/events/SimStepParallelEventsManagerImpl.java @@ -291,7 +291,9 @@ public void run() { if (event.getTime() < this.lastEventTime) { throw new RuntimeException("Events in the queue are not ordered chronologically. " + "This should never happen. Is the SimTimeStepParallelEventsManager registered " + - "as a MobsimAfterSimStepListener?"); + "as a MobsimAfterSimStepListener? LastEventTime = " + this.lastEventTime + + " currentEvent.time = " + event.getTime() + " currentEvent.type = " + event.getEventType() + + " full event: " + event.toString()); } else { this.lastEventTime = event.getTime(); } diff --git a/matsim/src/test/java/org/matsim/core/events/SimStepParallelEventsManagerImplTest.java b/matsim/src/test/java/org/matsim/core/events/SimStepParallelEventsManagerImplTest.java index 894bc9661b1..cbf74b294c6 100644 --- a/matsim/src/test/java/org/matsim/core/events/SimStepParallelEventsManagerImplTest.java +++ b/matsim/src/test/java/org/matsim/core/events/SimStepParallelEventsManagerImplTest.java @@ -69,4 +69,21 @@ public void reset(int iteration) {} new PersonStuckEvent(1.0, Id.createPersonId(0), Id.createLinkId(0), "car")); } + @Test + void testEventsAreChronologicallyOrdered() { + SimStepParallelEventsManagerImpl events = new SimStepParallelEventsManagerImpl(2); + EventsCollector collector = new EventsCollector(); + events.addHandler(collector); + try { + events.initProcessing(); + events.processEvent(new LinkEnterEvent(10.0, Id.createVehicleId(0), Id.createLinkId(0))); + events.processEvent(new LinkLeaveEvent(50.0, Id.createVehicleId(0), Id.createLinkId(0))); + events.processEvent(new LinkEnterEvent(49.0, Id.createVehicleId(0), Id.createLinkId(0))); + events.processEvent(new LinkLeaveEvent(69.0, Id.createVehicleId(0), Id.createLinkId(0))); + events.finishProcessing(); + Assertions.fail("Expected exception about order of events"); + } catch (Exception expected) { + } + } + }