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...