queuenamics 0.8.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jozua Oosthof
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,317 @@
1
+ Metadata-Version: 2.4
2
+ Name: queuenamics
3
+ Version: 0.8.4
4
+ Summary: A simple Python-native operations research and discrete-event simulation library
5
+ Author: Jozua Oosthof
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/joosthof13/Queuenamics
8
+ Project-URL: Repository, https://github.com/joosthof13/Queuenamics
9
+ Project-URL: Issues, https://github.com/joosthof13/Queuenamics/issues
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: matplotlib>=3.7
14
+ Requires-Dist: networkx>=3.0
15
+ Dynamic: license-file
16
+
17
+ # Queuenamics
18
+
19
+ **Python-native discrete-event simulation and queueing.**
20
+
21
+ [![TestPyPI](https://img.shields.io/pypi/v/queuenamics.svg)](https://test.pypi.org/project/queuenamics/)
22
+ [![License](https://img.shields.io/github/license/joosthof13/Queuenamics.svg)](https://github.com/joosthof13/Queuenamics)
23
+
24
+ Queuenamics is a Python library for building, simulating, and analyzing **queueing systems, service processes, and operational models**.
25
+
26
+ Define your model in Python, run discrete-event simulations, and analyze system performance.
27
+
28
+ ```text
29
+ Source → Queue → Server → Sink
30
+ ```
31
+
32
+ ## Installation
33
+
34
+ ```bash
35
+ pip install queuenamics
36
+ ```
37
+
38
+ ## Quick start
39
+
40
+ ```python
41
+ from queuenamics import (
42
+ Model,
43
+ Source,
44
+ Queue,
45
+ Server,
46
+ Sink,
47
+ Exponential,
48
+ FIFO,
49
+ )
50
+
51
+ customers = Source(
52
+ "Customers",
53
+ arrival=Exponential(5),
54
+ )
55
+
56
+ queue = Queue(
57
+ "Waiting Line",
58
+ discipline=FIFO(),
59
+ )
60
+
61
+ cashier = Server(
62
+ "Cashier",
63
+ service=Exponential(6),
64
+ )
65
+
66
+ exit = Sink("Exit")
67
+
68
+ model = Model(seed=42)
69
+
70
+ model.connect(customers, queue)
71
+ model.connect(queue, cashier)
72
+ model.connect(cashier, exit)
73
+
74
+ model.run(time=10_000)
75
+
76
+ model.stats.print_report()
77
+ ```
78
+
79
+ Models follow a simple workflow:
80
+
81
+ **DEFINE → CONNECT → VALIDATE → RUN → ANALYZE → EXPERIMENT**
82
+
83
+ ---
84
+
85
+ ## Features
86
+
87
+ ### Simulation
88
+
89
+ * Discrete-event simulation
90
+ * Sources, queues, servers, sinks, and resources
91
+ * Multiple and heterogeneous servers
92
+ * Entity types and custom attributes
93
+ * Reproducible simulations with random seeds
94
+ * Automatic model validation
95
+ * Warm-up periods
96
+
97
+ ### Queueing & routing
98
+
99
+ * FIFO, LIFO, priority, and shortest-processing-time disciplines
100
+ * Conditional, attribute-based, and entity-type routing
101
+ * First-available and random-available routing
102
+ * Shared resources and capacity constraints
103
+
104
+ ### Distributions
105
+
106
+ ```python
107
+ Constant(...)
108
+ Exponential(...)
109
+ Uniform(...)
110
+ Poisson(...)
111
+ ```
112
+
113
+ Additional probability distributions are available for stochastic model components.
114
+
115
+ ### Statistics
116
+
117
+ Collect and analyze:
118
+
119
+ * Queue length
120
+ * Waiting time
121
+ * Service time
122
+ * Utilization
123
+ * Throughput
124
+ * Mean, median, minimum, and maximum
125
+ * Quartiles and arbitrary percentiles
126
+ * Variance and standard deviation
127
+ * Grouped statistics
128
+ * Time-weighted statistics
129
+
130
+ ```python
131
+ model.stats.print_report()
132
+ ```
133
+
134
+ Reports can be exported to JSON or CSV.
135
+
136
+ ### Experiments
137
+
138
+ Run independent replications and quantify simulation uncertainty:
139
+
140
+ ```python
141
+ from queuenamics import Experiment
142
+
143
+ experiment = Experiment(
144
+ model_factory=create_model,
145
+ replications=30,
146
+ time=10_000,
147
+ warmup=1_000,
148
+ )
149
+
150
+ results = experiment.run()
151
+
152
+ results.mean("sinks.Exit.throughput")
153
+ results.confidence_interval("sinks.Exit.throughput")
154
+ ```
155
+
156
+ ### Parameter sweeps
157
+
158
+ Evaluate different model configurations automatically:
159
+
160
+ ```python
161
+ from queuenamics import ParameterSweep
162
+
163
+ sweep = ParameterSweep(
164
+ model_factory=create_model,
165
+ parameters={
166
+ "arrival_rate": [4, 5, 6],
167
+ "service_rate": [5, 6, 7],
168
+ },
169
+ replications=10,
170
+ time=5_000,
171
+ )
172
+
173
+ results = sweep.run()
174
+ ```
175
+
176
+ Structural parameters such as the number of servers can also be swept.
177
+
178
+ ---
179
+
180
+ ## Visualization
181
+
182
+ Queuenamics provides lightweight visualization using Matplotlib and NetworkX.
183
+
184
+ ```python
185
+ from queuenamics import (
186
+ plot_model,
187
+ plot_queue_length,
188
+ plot_server_utilization,
189
+ plot_throughput,
190
+ )
191
+
192
+ plot_model(model)
193
+ plot_queue_length(queue)
194
+ plot_server_utilization(cashier)
195
+ plot_throughput(exit)
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Why Queuenamics?
201
+
202
+ Queuenamics is **Python-native by design**.
203
+
204
+ Models are ordinary Python objects, making them:
205
+
206
+ * **Reproducible** — keep models and experiments in version control.
207
+ * **Programmable** — use Python logic throughout the model.
208
+ * **Experimentable** — automate replications and parameter studies.
209
+ * **Transparent** — the model structure is visible directly in code.
210
+ * **Extensible** — integrate simulation with Python's scientific ecosystem.
211
+
212
+ ```text
213
+ Python model
214
+
215
+ Discrete-event simulation
216
+
217
+ Statistics & experiments
218
+
219
+ Analysis & decisions
220
+ ```
221
+
222
+ ---
223
+
224
+ ## Example applications
225
+
226
+ Queuenamics can be used to model:
227
+
228
+ * Customer service systems
229
+ * Manufacturing processes
230
+ * Healthcare systems
231
+ * Logistics and transportation
232
+ * Call centers
233
+ * Repair and maintenance systems
234
+ * Capacity planning
235
+ * Queueing theory experiments
236
+ * Operational research studies
237
+
238
+ ---
239
+
240
+ ## Requirements
241
+
242
+ * Python **3.10+**
243
+ * [Matplotlib](https://matplotlib.org/)
244
+ * [NetworkX](https://networkx.org/)
245
+
246
+ ---
247
+
248
+ ## Documentation
249
+
250
+ Documentation and examples are available in the project repository.
251
+
252
+ For a quick overview of the API, see the `examples/` directory.
253
+
254
+ ---
255
+
256
+ ## Development
257
+
258
+ ```bash
259
+ git clone https://github.com/joosthof13/Queuenamics.git
260
+ cd Queuenamics
261
+
262
+ python -m venv .venv
263
+ ```
264
+
265
+ Windows:
266
+
267
+ ```powershell
268
+ .venv\Scripts\Activate.ps1
269
+ ```
270
+
271
+ Install in editable mode:
272
+
273
+ ```bash
274
+ pip install -e .
275
+ ```
276
+
277
+ Run the test suite:
278
+
279
+ ```bash
280
+ python -m pytest -q
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Project status
286
+
287
+ **Current version: 0.8.4**
288
+
289
+ Queuenamics is currently suitable for:
290
+
291
+ **learning · research · prototyping · operational analysis · queueing studies · discrete-event simulation**
292
+
293
+ The project is actively developed toward a stable **0.9.0** release.
294
+
295
+ ---
296
+
297
+ ## Contributing
298
+
299
+ Contributions, bug reports, tests, documentation, and new modelling components are welcome.
300
+
301
+ Please run the test suite before submitting changes:
302
+
303
+ ```bash
304
+ python -m pytest -q
305
+ ```
306
+
307
+ ---
308
+
309
+ ## License
310
+
311
+ Queuenamics is released under the **MIT License**.
312
+
313
+ See [`LICENSE`](LICENSE) for details.
314
+
315
+ ---
316
+
317
+ > **Build operational processes in Python. Simulate them as discrete events. Analyze their performance.**
@@ -0,0 +1,301 @@
1
+ # Queuenamics
2
+
3
+ **Python-native discrete-event simulation and queueing.**
4
+
5
+ [![TestPyPI](https://img.shields.io/pypi/v/queuenamics.svg)](https://test.pypi.org/project/queuenamics/)
6
+ [![License](https://img.shields.io/github/license/joosthof13/Queuenamics.svg)](https://github.com/joosthof13/Queuenamics)
7
+
8
+ Queuenamics is a Python library for building, simulating, and analyzing **queueing systems, service processes, and operational models**.
9
+
10
+ Define your model in Python, run discrete-event simulations, and analyze system performance.
11
+
12
+ ```text
13
+ Source → Queue → Server → Sink
14
+ ```
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ pip install queuenamics
20
+ ```
21
+
22
+ ## Quick start
23
+
24
+ ```python
25
+ from queuenamics import (
26
+ Model,
27
+ Source,
28
+ Queue,
29
+ Server,
30
+ Sink,
31
+ Exponential,
32
+ FIFO,
33
+ )
34
+
35
+ customers = Source(
36
+ "Customers",
37
+ arrival=Exponential(5),
38
+ )
39
+
40
+ queue = Queue(
41
+ "Waiting Line",
42
+ discipline=FIFO(),
43
+ )
44
+
45
+ cashier = Server(
46
+ "Cashier",
47
+ service=Exponential(6),
48
+ )
49
+
50
+ exit = Sink("Exit")
51
+
52
+ model = Model(seed=42)
53
+
54
+ model.connect(customers, queue)
55
+ model.connect(queue, cashier)
56
+ model.connect(cashier, exit)
57
+
58
+ model.run(time=10_000)
59
+
60
+ model.stats.print_report()
61
+ ```
62
+
63
+ Models follow a simple workflow:
64
+
65
+ **DEFINE → CONNECT → VALIDATE → RUN → ANALYZE → EXPERIMENT**
66
+
67
+ ---
68
+
69
+ ## Features
70
+
71
+ ### Simulation
72
+
73
+ * Discrete-event simulation
74
+ * Sources, queues, servers, sinks, and resources
75
+ * Multiple and heterogeneous servers
76
+ * Entity types and custom attributes
77
+ * Reproducible simulations with random seeds
78
+ * Automatic model validation
79
+ * Warm-up periods
80
+
81
+ ### Queueing & routing
82
+
83
+ * FIFO, LIFO, priority, and shortest-processing-time disciplines
84
+ * Conditional, attribute-based, and entity-type routing
85
+ * First-available and random-available routing
86
+ * Shared resources and capacity constraints
87
+
88
+ ### Distributions
89
+
90
+ ```python
91
+ Constant(...)
92
+ Exponential(...)
93
+ Uniform(...)
94
+ Poisson(...)
95
+ ```
96
+
97
+ Additional probability distributions are available for stochastic model components.
98
+
99
+ ### Statistics
100
+
101
+ Collect and analyze:
102
+
103
+ * Queue length
104
+ * Waiting time
105
+ * Service time
106
+ * Utilization
107
+ * Throughput
108
+ * Mean, median, minimum, and maximum
109
+ * Quartiles and arbitrary percentiles
110
+ * Variance and standard deviation
111
+ * Grouped statistics
112
+ * Time-weighted statistics
113
+
114
+ ```python
115
+ model.stats.print_report()
116
+ ```
117
+
118
+ Reports can be exported to JSON or CSV.
119
+
120
+ ### Experiments
121
+
122
+ Run independent replications and quantify simulation uncertainty:
123
+
124
+ ```python
125
+ from queuenamics import Experiment
126
+
127
+ experiment = Experiment(
128
+ model_factory=create_model,
129
+ replications=30,
130
+ time=10_000,
131
+ warmup=1_000,
132
+ )
133
+
134
+ results = experiment.run()
135
+
136
+ results.mean("sinks.Exit.throughput")
137
+ results.confidence_interval("sinks.Exit.throughput")
138
+ ```
139
+
140
+ ### Parameter sweeps
141
+
142
+ Evaluate different model configurations automatically:
143
+
144
+ ```python
145
+ from queuenamics import ParameterSweep
146
+
147
+ sweep = ParameterSweep(
148
+ model_factory=create_model,
149
+ parameters={
150
+ "arrival_rate": [4, 5, 6],
151
+ "service_rate": [5, 6, 7],
152
+ },
153
+ replications=10,
154
+ time=5_000,
155
+ )
156
+
157
+ results = sweep.run()
158
+ ```
159
+
160
+ Structural parameters such as the number of servers can also be swept.
161
+
162
+ ---
163
+
164
+ ## Visualization
165
+
166
+ Queuenamics provides lightweight visualization using Matplotlib and NetworkX.
167
+
168
+ ```python
169
+ from queuenamics import (
170
+ plot_model,
171
+ plot_queue_length,
172
+ plot_server_utilization,
173
+ plot_throughput,
174
+ )
175
+
176
+ plot_model(model)
177
+ plot_queue_length(queue)
178
+ plot_server_utilization(cashier)
179
+ plot_throughput(exit)
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Why Queuenamics?
185
+
186
+ Queuenamics is **Python-native by design**.
187
+
188
+ Models are ordinary Python objects, making them:
189
+
190
+ * **Reproducible** — keep models and experiments in version control.
191
+ * **Programmable** — use Python logic throughout the model.
192
+ * **Experimentable** — automate replications and parameter studies.
193
+ * **Transparent** — the model structure is visible directly in code.
194
+ * **Extensible** — integrate simulation with Python's scientific ecosystem.
195
+
196
+ ```text
197
+ Python model
198
+
199
+ Discrete-event simulation
200
+
201
+ Statistics & experiments
202
+
203
+ Analysis & decisions
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Example applications
209
+
210
+ Queuenamics can be used to model:
211
+
212
+ * Customer service systems
213
+ * Manufacturing processes
214
+ * Healthcare systems
215
+ * Logistics and transportation
216
+ * Call centers
217
+ * Repair and maintenance systems
218
+ * Capacity planning
219
+ * Queueing theory experiments
220
+ * Operational research studies
221
+
222
+ ---
223
+
224
+ ## Requirements
225
+
226
+ * Python **3.10+**
227
+ * [Matplotlib](https://matplotlib.org/)
228
+ * [NetworkX](https://networkx.org/)
229
+
230
+ ---
231
+
232
+ ## Documentation
233
+
234
+ Documentation and examples are available in the project repository.
235
+
236
+ For a quick overview of the API, see the `examples/` directory.
237
+
238
+ ---
239
+
240
+ ## Development
241
+
242
+ ```bash
243
+ git clone https://github.com/joosthof13/Queuenamics.git
244
+ cd Queuenamics
245
+
246
+ python -m venv .venv
247
+ ```
248
+
249
+ Windows:
250
+
251
+ ```powershell
252
+ .venv\Scripts\Activate.ps1
253
+ ```
254
+
255
+ Install in editable mode:
256
+
257
+ ```bash
258
+ pip install -e .
259
+ ```
260
+
261
+ Run the test suite:
262
+
263
+ ```bash
264
+ python -m pytest -q
265
+ ```
266
+
267
+ ---
268
+
269
+ ## Project status
270
+
271
+ **Current version: 0.8.4**
272
+
273
+ Queuenamics is currently suitable for:
274
+
275
+ **learning · research · prototyping · operational analysis · queueing studies · discrete-event simulation**
276
+
277
+ The project is actively developed toward a stable **0.9.0** release.
278
+
279
+ ---
280
+
281
+ ## Contributing
282
+
283
+ Contributions, bug reports, tests, documentation, and new modelling components are welcome.
284
+
285
+ Please run the test suite before submitting changes:
286
+
287
+ ```bash
288
+ python -m pytest -q
289
+ ```
290
+
291
+ ---
292
+
293
+ ## License
294
+
295
+ Queuenamics is released under the **MIT License**.
296
+
297
+ See [`LICENSE`](LICENSE) for details.
298
+
299
+ ---
300
+
301
+ > **Build operational processes in Python. Simulate them as discrete events. Analyze their performance.**
@@ -0,0 +1,29 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "queuenamics"
7
+ version = "0.8.4"
8
+ description = "A simple Python-native operations research and discrete-event simulation library"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+
13
+ authors = [
14
+ { name = "Jozua Oosthof" }
15
+ ]
16
+
17
+ dependencies = [
18
+ "matplotlib>=3.7",
19
+ "networkx>=3.0",
20
+ ]
21
+
22
+ [project.urls]
23
+ Homepage = "https://github.com/joosthof13/Queuenamics"
24
+ Repository = "https://github.com/joosthof13/Queuenamics"
25
+ Issues = "https://github.com/joosthof13/Queuenamics/issues"
26
+
27
+ [tool.setuptools.packages.find]
28
+ include = ["queuenamics*"]
29
+ exclude = ["queuenamics.tests", "queuenamics.tests.*"]