SimulationListener.java
package org.matsim.episim.model;
import org.matsim.api.core.v01.Id;
import org.matsim.api.core.v01.population.Person;
import org.matsim.episim.EpisimPerson;
import org.matsim.episim.InfectionEventHandler;
import org.matsim.facilities.ActivityFacility;
import org.matsim.vehicles.Vehicle;
import java.time.LocalDate;
import java.util.Map;
import java.util.SplittableRandom;
/**
* Listener to interact with the simulation before starting
*/
public interface SimulationListener {
/**
* Called after init before the simulation starts.
*
* @param rnd local random instance of the event handler
* @param persons all persons in the simulation
* @param facilities all facilities
* @param vehicles all vehicles
*/
default void init(SplittableRandom rnd, Map<Id<Person>, EpisimPerson> persons, Map<Id<ActivityFacility>, InfectionEventHandler.EpisimFacility> facilities, Map<Id<Vehicle>, InfectionEventHandler.EpisimVehicle> vehicles) {
}
/**
* Called after a snapshot has been loaded.
*
* @param iteration restored iteration
* @see #init(SplittableRandom, Map, Map, Map)
*/
default void onSnapshotLoaded(int iteration, SplittableRandom rnd, Map<Id<Person>, EpisimPerson> persons, Map<Id<ActivityFacility>, InfectionEventHandler.EpisimFacility> facilities, Map<Id<Vehicle>, InfectionEventHandler.EpisimVehicle> vehicles) {
}
/**
* Called just before iteration is about to start and events for the day will be handled.
*/
default void onIterationStart(int iteration, LocalDate date) {
}
/**
* Called after an iteration has finished and all trajectories and infection events have been handled.
*/
default void onIterationEnd(int iteration, LocalDate date) {
}
}