Skip to content

Commit

Permalink
wip after addition of deque in SymmetricContactModelWithOdeCoupling. …
Browse files Browse the repository at this point in the history
…before trying to minimize progression model updates.
  • Loading branch information
jakobrehmann committed Feb 20, 2025
1 parent 7be25eb commit 255b857
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
3 changes: 1 addition & 2 deletions src/main/java/org/matsim/episim/InfectionEventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -1036,8 +1036,7 @@ void handleEvents(DayOfWeek day, List<Event> events) {
reporting.reportDiseaseImportOde((int) odeImport, iteration, date.toString());
((SymmetricContactModelWithOdeCoupling) contactModel).resetOdeDiseaseImportCount();

// log.warn("Unknown Count for iteration " + iteration + ": " + ((SymmetricContactModelWithOdeCoupling) contactModel).getUnknownCnt());
// ((SymmetricContactModelWithOdeCoupling) contactModel).resetUnknownCnt();
log.warn("Size of Fake pool: " + SymmetricContactModelWithOdeCoupling.personCounter);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;

import static org.matsim.episim.EpisimPerson.DiseaseStatus;

Expand Down Expand Up @@ -122,6 +123,9 @@ public final class SymmetricContactModelWithOdeCoupling extends AbstractContactM
}

private static final ThreadLocal<Deque<EpisimPerson>> personPool = ThreadLocal.withInitial(ArrayDeque::new);
public static final AtomicInteger personCounter = new AtomicInteger(0); // Thread-safe counter




public Long getOdeDiseaseImportCount() {
Expand All @@ -140,11 +144,12 @@ public void resetOdeDiseaseImportCount() {
// unknownCnt = 0L;
// }

private EpisimPerson borrowPerson(Id<Person> personId, Attributes sharedAttributes, EpisimReporting reporting) {
private EpisimPerson borrowPerson(Attributes sharedAttributes, EpisimReporting reporting) {
Deque<EpisimPerson> pool = personPool.get();
EpisimPerson person = pool.poll();
if (person == null) {
// No available objects in the pool — create a new one
Id<Person> personId = Id.createPersonId("fake_" + personCounter.getAndIncrement());
person = new EpisimPerson(personId, sharedAttributes, reporting);
} else {
// Reuse the existing object, resetting its state
Expand Down Expand Up @@ -324,10 +329,10 @@ private void infectionDynamicsGeneralized(EpisimPerson personLeavingContainer, E



Id<Person> personId = Id.createPersonId("fake_task" + taskId + "_" + i);
// EpisimPerson person = borrowPerson(personId, sharedAttributes, reporting);
// Id<Person> personId = Id.createPersonId("fake_task" + taskId + "_" + i);
EpisimPerson person = borrowPerson(sharedAttributes, reporting);
//
EpisimPerson person = new EpisimPerson(personId, sharedAttributes, reporting);
// EpisimPerson person = new EpisimPerson(personId, sharedAttributes, reporting);

containerFake.addPerson(person, 0, new EpisimPerson.PerformedActivity(0, episimConfig.getOrAddContainerParams(actType), null));

Expand Down Expand Up @@ -538,6 +543,7 @@ private void infectionDynamicsGeneralized(EpisimPerson personLeavingContainer, E
while (iterator.hasNext()) {
EpisimPerson person = iterator.next();
if (person.getPersonId().toString().startsWith("fake")) {
returnPerson(person);
((AbstractProgressionModel) progressionModel).removeAgent(person.getPersonId());
iterator.remove(); // Properly remove from the list
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/matsim/run/batch/newA_berlin.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public static void main(String[] args) {
String[] args2 = {
RunParallel.OPTION_SETUP, newA_berlin.class.getName(),
RunParallel.OPTION_PARAMS, Params.class.getName(),
RunParallel.OPTION_TASKS, Integer.toString(1),
RunParallel.OPTION_TASKS, Integer.toString(2),
RunParallel.OPTION_ITERATIONS, Integer.toString(50),
RunParallel.OPTION_METADATA
};
Expand Down

0 comments on commit 255b857

Please sign in to comment.