19 package org.matsim.core.mobsim.hermes;
21 import org.apache.logging.log4j.LogManager;
22 import org.apache.logging.log4j.Logger;
30 final class Hermes
implements Mobsim {
32 final private static Logger log = LogManager.getLogger(Hermes.class);
34 private Agent[] agents;
35 private ScenarioImporter scenarioImporter;
36 private final Scenario scenario;
37 private final EventsManager eventsManager;
39 public Hermes(Scenario scenario, EventsManager eventsManager) {
40 this.scenario = scenario;
41 this.eventsManager = eventsManager;
44 private void importScenario() throws
Exception {
45 scenarioImporter = ScenarioImporter.instance(scenario, eventsManager);
46 scenarioImporter.generate();
47 this.realm = scenarioImporter.realm;
48 this.agents = scenarioImporter.hermesAgents;
51 private void processEvents() {
52 eventsManager.processEvents(realm.getSortedEvents());
54 for (Agent agent : agents) {
55 if (agent != null && !agent.finished() && !agent.isTransitVehicle()) {
56 int matsim_id = scenarioImporter.matsim_id(agent.id(),
false);
57 eventsManager.processEvent(
59 HermesConfigGroup.SIM_STEPS, Id.get(matsim_id, Person.class), Id.createLinkId(
"0"),
"zero"));
68 time = System.currentTimeMillis();
70 log.info(String.format(
"Hermes importing scenario took %d ms", System.currentTimeMillis() - time));
72 eventsManager.initProcessing();
74 time = System.currentTimeMillis();
76 log.info(String.format(
77 "Hermes took %d ms", System.currentTimeMillis() - time));
79 time = System.currentTimeMillis();
81 eventsManager.finishProcessing();
82 log.info(String.format(
"Hermes MATSim event processing took %d ms", System.currentTimeMillis() - time));
85 scenarioImporter.reset();
86 }
catch (Exception e) {