@Override
public void notifyIterationStarts(IterationStartsEvent event) {
PBox pBox = (PBox) operators ;
final MatsimServices controler = event.getServices();
if(event.getIteration() == controler.getConfig().controler().getFirstIteration()){
log.info("This is the first iteration. All lines were added by notifyStartup event.");
} else {
pBox.notifyIterationStarts(event);
removePreviousPTransitScheduleFromOriginalOne(event.getServices().getScenario().getTransitSchedule());
addPTransitScheduleToOriginalOne(event.getServices().getScenario().getTransitSchedule(), pBox.getpTransitSchedule());
removePreviousPVehiclesFromScenario(event.getServices().getScenario().getTransitVehicles());
addPVehiclesToOriginalOnes(event.getServices().getScenario().getTransitVehicles(), this.pVehiclesFactory.createVehicles(pBox.getpTransitSchedule()));
event.getServices().getEvents().processEvent(new TransitScheduleChangedEvent(0.0));
if(this.agentsStuckHandler != null){
ParallelPersonAlgorithmUtils.run(controler.getScenario().getPopulation(), controler.getConfig().global().getNumberOfThreads(), new ParallelPersonAlgorithmUtils.PersonAlgorithmProvider() {
@Override
public AbstractPersonAlgorithm getPersonAlgorithm() {
return stuckFactory.getReRouteStuck(new PlanRouter(
controler.getTripRouterProvider().get(),
controler.getScenario().getActivityFacilities()
), ((MutableScenario)controler.getScenario()), agentsStuckHandler.getAgentsStuck());
}
});
}
}
this.dumpTransitScheduleAndVehicles(event.getServices(), event.getIteration());
}