QPLEX Python Package

This documentation describes the QPLEX Python Package, a collection of software tools that perform QPLEX calculations for standard models. QPLEX is a computational methodology for modeling and analyzing a broad class of nonstationary stochastic systems. QPLEX calculations are deterministic and approximate. For an overview of the QPLEX methodology, see the QPLEX book.

The animation below shows probability distributions calculated with the QPLEX Python Package. The source code to produce this image is included in this documentation as Example 8.

_images/pmfs_over_time.gif

QPLEX has the following features:

  • It calculates full probability distributions, not only means and variances.

  • It calculates probability distributions over time, also known as transient distributions.

  • It is tailor-made for optimization since its output is deterministic.

  • It can analyze many system configurations and answer what-if questions since it is fast.

  • It can calculate joint and conditional distributions corresponding to different times.

  • It can incorporate observation data (e.g., measurements over time) to make predictions about future system performance.

  • It can use observation data to analyze multiple models and calculate updated posterior probabilities for each of the models as data becomes available.

This documentation provides examples of the QPLEX Python Package performing the following types of analysis:

  • Given an observed value of the number of entities in a multiserver queueing system, predict the distribution of the number of entities at some future time. Predict how this likelihood will change as a result of changing the number of servers at that future time. See Lesson 6.

  • Find the minimum number of servers in a multiserver queueing system required to meet a service level requirement. See Example 1.

  • Calculate the posterior probabilities of demand scenarios given observed values of the number of entities at each node of a network of multiserver queues with probabilistic routing. See Example 2.

  • Optimize allocation of servers in a network of multiserver queues to balance capital costs and quality of service. See Example 4.

The QPLEX Python Package currently supports models for a multiserver queueing system, and for a network of multiserver queues with probabilistic routing. These represent a very small subset of systems supported by the QPLEX methodology. It is possible to extend the package to custom models, by using the Q Development Kit.

The source code of the QPLEX Python Package is available on GitHub.