@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