metrosim/docs/architecture/simulator/simulator_container.puml

27 lines
1.4 KiB
Plaintext

@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
ContainerDb(input_files, "Input Files", "CSV", "Agents characteristics, network description, technical parameters, etc.")
ContainerDb(output_files, "Output Files", "CSV", "Aggregate, network-specific and agent-specific results")
Container_Boundary(simulator, "Simulator") {
Container(manager, "Manager", "Python", "Converts input data to Python models, initializes variables, runs the main loop")
Container(preday_model, "Pre-Day Model", "Python", "Computes the decisions of each agent, made before the day starts (e.g., departure-time choice, mode choice)")
Container(withinday_model, "Within-Day Model", "Python", "Simulates the decisions of each agent and the network conditions through an event-based model")
Container(daytoday_model, "Day-to-Day Model", "Python", "Computes the learning process, checks convergence, writes results")
ContainerQueue(events, "Events", "Python", "Decisions taken by agents (e.g., departure from origin, boarding and alighting, turn at intersections)")
}
Rel_Up(manager, input_files, "Reads")
Rel(manager, preday_model, "Calls")
Rel(manager, withinday_model, "Calls")
Rel(manager, daytoday_model, "Calls")
Rel(preday_model, events, "Writes")
Rel(withinday_model, events, "Reads and writes")
Rel_Down(daytoday_model, output_files, "Writes")
SHOW_DYNAMIC_LEGEND()
@enduml