https://github.com/simdart/simdart
A discrete event simulation package for Dart, designed for modeling and analyzing processes and systems.
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.9%) to scientific vocabulary
Keywords
Repository
A discrete event simulation package for Dart, designed for modeling and analyzing processes and systems.
Basic Info
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
- Releases: 0
Topics
Metadata Files
README.md

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.
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
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
- Capacity-Limited Resources A resource with a defined capacity, which limits how many events can access it simultaneously. When the resource is fully utilized, additional events must wait until capacity becomes available.
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.
- Uniform Distribution
Examples
Processing events
```dart import 'package:simdart/simdart.dart';
void main() async { final SimDart sim = SimDart();
sim.process(event: _a, name: 'A'); sim.process(event: _b, start: 5, name: 'B');
await sim.run(); }
Future
Future
Future
Output:
[0][A] start
[5][B] start
[6][B] end
[10][A] end
[11][C] start
[21][C] end
Resource capacity
```dart import 'package:simdart/simdart.dart';
void main() async { final SimDart sim = SimDart();
sim.resources.limited(name: 'resource', capacity: 1);
sim.process(event: _eventResource, name: 'A'); sim.process(event: _eventResource, name: 'B');
await sim.run(); }
Future
```
Output:
[0][A] acquiring resource...
[0][A] resource acquired
[0][B] acquiring resource...
[10][A] releasing resource...
[10][B] resource acquired
[20][B] releasing resource...
Repeating process
```dart import 'package:simdart/simdart.dart';
void main() async { final SimDart sim = SimDart();
sim.repeatProcess( event: _a, start: 1, name: (start) => 'A$start', interval: Interval.fixed(fixedInterval: 2, untilTime: 5));
await sim.run(); }
Future
Output:
[1][A1]
[3][A3]
[5][A5]
Owner
- Name: SimDart
- Login: SimDart
- Kind: organization
- Repositories: 1
- Profile: https://github.com/SimDart
GitHub Events
Total
- Issues event: 20
- Watch event: 4
- Delete event: 11
- Issue comment event: 1
- Push event: 53
- Pull request event: 17
- Create event: 16
Last Year
- Issues event: 20
- Watch event: 4
- Delete event: 11
- Issue comment event: 1
- Push event: 53
- Pull request event: 17
- Create event: 16
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 11
- Total pull requests: 10
- Average time to close issues: 9 days
- Average time to close pull requests: 1 minute
- Total issue authors: 1
- Total pull request authors: 1
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 11
- Pull requests: 10
- Average time to close issues: 9 days
- Average time to close pull requests: 1 minute
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 8
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- caduandrade (11)
Pull Request Authors
- caduandrade (10)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 9
pub.dev: simdart
A discrete event simulation package for Dart, designed for modeling and analyzing processes and systems.
- Documentation: https://pub.dev/documentation/simdart/
- License: mit
-
Latest release: 0.4.0
published 12 months ago
Rankings
Dependencies
- actions/checkout v4 composite
- dart-lang/setup-dart 9a04e6d73cca37bd455e0608d7e5092f881fd603 composite
- lints ^5.0.0 development
- test ^1.25.14 development
- collection ^1.19.0
- meta ^1.15.0