Simulation lifecycle
This page documents the setup of components for a simulation run.
To execute, the components need certain parameters depending on the functionality. How these parameters are delivered depends on the way the components are managed (externally or in the platform).
Platform managed
In this approach, the components is managed by the platform with Docker. This suits for components that:
- Do not need a server cluster
- Do not need "a lot of" computational resources
In this approach, the following workflow repeats in a loop. Each round is started manually.
- A user starts up components manually as Docker containers
- In the startup, the user somehow specifies simulation parameters
- Among the Docker containers, there is Platform Manager that communicates the simulation parameters
- The parameters are sent to Management Exchange using Start message
- This enables any externally managed components to receive the parameters
- The components execute until finished
Externally managed
In this approach, the component is managed manually. Human users must make sure that the component is running before a simulation can be executed. This approach has at least the following uses:
- Unit testing and first experiments
- Components that cannot reasonably be dockerized:
- Uses a server cluster
- Requires a lot of computational resources, such as memory
- Possibly for components that can run concurrent simulations
Each externally managed component is first started manually. Then, it runs the following workflow in a loop:
- Receive "start" message (see Start message) from Management Exchange; this contains simulation-run-specific parameters
- Set up the received parameters to the component
- After this, the component is ready to communicate with other components via the Simulation-specific Exchange
- Run the component; it will communicate with other components via the Simulation-specific Exchange
The workflow is illustrated in the figure below.