skip to navigation
skip to content

Ciw 1.1.0

A discrete event simulation library for open queueing networks

A discrete event simulation library for queueing networks

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.


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)


v1.1.0 (2017-04-26)

  • Replace kwargs with actual keyword arguments in ciw.create_network.
  • Refactor server schedule inputs (schedules placed inside Number_of_servers instead of as their own keyword).

v1.0.0 (2017-04-04)

  • ciw.create_network takes in kwargs, not dictionary.
  • Add Sequential distribution.
  • Add truncated Normal distribution.
  • Refactor inputs for custom PDF.
  • Refactor inputs for server schedules.
  • Transition matrix now optional for 1 node networks.
  • Overhaul of documentation.
  • Slight improvement of ciw.random_choice.

v0.2.11 (2017-03-13)

  • Add ability to simulate until max number of customers have passed arrived/been accepted/passed through the system.

v0.2.10 (2017-03-10)

  • Performance improvements.
  • Drop dependency on numpy.

v0.2.9 (2017-02-24)

  • Allow zero servers.

v0.2.8 (2016-11-10)

  • Add option for time dependent distributions.

v0.2.7 (2016-10-26)

  • Run tests on Appveyor.
  • Check docs build and pip installable on Travis.
  • Remove hypothesis cache.

v0.2.6 (2016-10-17)

  • Add AUTHORS.rst.
  • Add progress bar option.

v0.2.5 (2016-10-06)

  • Fix bug that didn’t include .rst files in

v0.2.4 (2016-09-27)

  • Fixed bug in which priority classes and dynamic classes didn’t work together.
  • New feature: preemptive interruptions for server schedules.

v0.2.3 (2016-07-27)

  • Ability to set seed. More docs. Fixes to tests.

v0.2.2 (2016-07-06)

  • Baulking implemented, and minor fixes to order of unblocking.

v0.2.1 (2016-06-29)

  • Priority classes implemented.

v0.2.0 (2016-06-20)

  • Python 3.4 and 3.5 compatible along with 2.7.
  • Data records now kept in list.

v0.1.1 (2016-06-06)

  • Ability to incorporate behaviour nodes.
  • Data records are now named tuples.

v0.1.0 (2016-04-25)

  • Re-factor inputs.
  • Simulation takes in a Network object.
  • Helper functions to import yml and dictionary to a Network object.
  • Simulation object takes optional arguments: deadlock_detector, exact, tracker.
  • simulate_until_max_time() takes argument max_simulation_time.

v0.0.6 (2016-04-04)

  • Exactness implemented.
  • Restructure some features e.g. times_to_deadlock.
  • Custom simulation names.

v0.0.5 (2016-03-18)

  • State space tracker plug-and-playable.
  • Add rejection dictionary.

v0.0.4 (2016-02-20)

  • Empirical and UserDefined distributions added.
  • Tidy ups.

v0.0.3 (2016-02-09)

  • Arrival distributions.
  • MMC options removed.
  • Fix server schedule bugs.

v0.0.2 (2016-01-06)

  • Some kwargs optional.
  • Hypothesis tests.
  • Minor enhancements.

v0.0.1 (2015-12-14)

  • Initial release.

v0.0.1dev (2015-12-14)

  • Initial release (dev).


Ciw has been developed by the following contributors:

File Type Py Version Uploaded on Size
Ciw-1.1.0.tar.gz (md5) Source 2017-04-26 48KB