SimulationListener.java

  1. package org.matsim.episim.model;

  2. import org.matsim.api.core.v01.Id;
  3. import org.matsim.api.core.v01.population.Person;
  4. import org.matsim.episim.EpisimPerson;
  5. import org.matsim.episim.InfectionEventHandler;
  6. import org.matsim.facilities.ActivityFacility;
  7. import org.matsim.vehicles.Vehicle;

  8. import java.time.LocalDate;
  9. import java.util.Map;
  10. import java.util.SplittableRandom;

  11. /**
  12.  * Listener to interact with the simulation before starting
  13.  */
  14. public interface SimulationListener {

  15.     /**
  16.      * Called after init before the simulation starts.
  17.      *
  18.      * @param rnd        local random instance of the event handler
  19.      * @param persons    all persons in the simulation
  20.      * @param facilities all facilities
  21.      * @param vehicles   all vehicles
  22.      */
  23.     default void init(SplittableRandom rnd, Map<Id<Person>, EpisimPerson> persons, Map<Id<ActivityFacility>, InfectionEventHandler.EpisimFacility> facilities, Map<Id<Vehicle>, InfectionEventHandler.EpisimVehicle> vehicles) {
  24.     }

  25.     /**
  26.      * Called after a snapshot has been loaded.
  27.      *
  28.      * @param iteration restored iteration
  29.      * @see #init(SplittableRandom, Map, Map, Map)
  30.      */
  31.     default void onSnapshotLoaded(int iteration, SplittableRandom rnd, Map<Id<Person>, EpisimPerson> persons, Map<Id<ActivityFacility>, InfectionEventHandler.EpisimFacility> facilities, Map<Id<Vehicle>, InfectionEventHandler.EpisimVehicle> vehicles) {
  32.     }

  33.     /**
  34.      * Called just before iteration is about to start and events for the day will be handled.
  35.      */
  36.     default void onIterationStart(int iteration, LocalDate date) {
  37.     }

  38.     /**
  39.      * Called after an iteration has finished and all trajectories and infection events have been handled.
  40.      */
  41.     default void onIterationEnd(int iteration, LocalDate date) {
  42.     }

  43. }