simdart 0.1.0-rc.3
simdart: ^0.1.0-rc.3 copied to clipboard
A discrete event simulation package for Dart, designed for modeling and analyzing processes and systems.
SimDart is a discrete event simulation (DES) framework written in Dart. It is designed to model and simulate systems where events occur at discrete points in time, allowing for the analysis of complex processes and workflows.
Explore and learn more by clicking here.
Why Dart? #
Dart was chosen for this project due to its fast execution, single-threaded nature, and ease of use. Dart's single-threaded model makes it particularly well-suited for discrete event simulation (DES), as it simplifies the process of managing and processing events in sequence. Dart's efficient handling of asynchronous tasks and event queues ensures high performance in managing and executing events with minimal overhead.
Additionally, Dart's strong integration with Flutter makes it an ideal choice for developing frontend applications to visualize and interact with simulations.
Main Features #
Event Scheduling and Queue Management #
This section focuses on scheduling events, controlling delays, and managing the event queue in the simulation.
-
Event Queue
The core mechanism for scheduling events within the simulation. Events are placed in the queue and executed in order of their scheduled time. When resources are involved, events may wait in a queue until capacity becomes available. -
Schedule Event at Specific Time
Schedule an event to occur at a specific time. This allows events to be set to occur at precise simulation times. -
Schedule Event After Delay
Schedule an event to occur after a certain delay. This introduces a time gap between events, simulating waiting periods or delays. -
Schedule Event Based on Interval
Schedule recurring events to occur at regular intervals. This allows events to be triggered periodically, which is useful for simulations requiring regular or timed actions, such as periodic updates or repeated actions in the system. -
Event Pausing (Wait)
Temporarily pause the execution of an event for a specified duration. This is useful for simulating waiting times or delays between events in a process.
Resources #
This section introduces resources, enabling the simulation to model systems with capacity constraints.
- Capacity-Limited Resources A resource with a defined capacity, which limits how many processes or entities can access it simultaneously. When the resource is fully utilized, additional processes must wait until capacity becomes available. This is useful for modeling scenarios such as limited equipment, server connections, or worker availability.
Intervals #
A collection of different interval types used to control event timing in simulations.
-
Fixed Interval
A fixed interval where the duration between events is constant and does not change during the simulation. -
Random Interval
An interval where the duration is determined by a user-defined random function, offering variability in event timing. -
Conditional Interval
An interval where the duration depends on the state of the simulation at each step, allowing for dynamic adjustments based on conditions. -
Probabilistic Interval
An interval based on probabilistic distributions, introducing randomness with different statistical models.-
Uniform Distribution
An interval where the duration is uniformly distributed between a minimum and maximum value, ensuring equal probability for all values within the range. -
Exponential Distribution
An interval based on an exponential distribution, often used to model time between events in processes with constant rates. -
Normal (Gaussian) Distribution
An interval modeled with a normal distribution, where durations are centered around a mean with a specified standard deviation, reflecting natural variance.
-
Upcoming Features #
-
Resource Management:
- Upcoming support for simulating resource allocation, allowing for the management of limited resources across different events in the simulation.
-
Advanced Event Behaviors:
- Future enhancements will introduce more granular control over event behaviors, allowing for greater flexibility in simulating complex systems.