Ciw is a discrete event simulation library for open queueing networks. It’s core features include the capability to simulate networks of queues, multiple customer classes, and implementation of Type I blocking for restricted networks. A number of other features are also implemented, including priorities, baulking, schedules, and deadlock detection.
Install with pip install ciw
.
Current supported version of Python:
- Python 2.7
- Python 3.4
- Python 3.5
- Python 3.6
- PyPy 5.3.1
Import Ciw:
>>> import ciw
To define an M/M/3 queue, with λ = 0.2 and μ = 0.1:
>>> N = ciw.create_network( ... Arrival_distributions=[['Exponential', 0.2]], ... Service_distributions=[['Exponential', 0.1]], ... Number_of_servers=[3] ... )
Now set a seed, create a Simulation object, and simulate for 1440 time units:
>>> ciw.seed(1) >>> Q = ciw.Simulation(N) >>> Q.simulate_until_max_time(1440)
Collect results:
>>> recs = Q.get_all_records()
Manipulate results to get useful statistics, e.g. average waiting time:
>>> waits = [r.waiting_time for r in recs] >>> sum(waits) / len(waits) 1.6885...