A Python 3 module to approximate (conditional) lower expectations for imprecise continuous-time Markov chains
This Python 3 module contains naive, non-optimised implementations of the algorithms proposed by De Bock (2017) and Erreygers and De Bock (2017). The main reason for writing this module was to validate the results obtained in (Erreygers and De Bock, 2017), but I believe it can be used for general purposes as well.
The module imports NumPy for easy vector manipulations, matplotlib for plotting the approximations and tqdm to display nice progress bars. All three of these packages should be installed in order for the package to work.
In HealthySick.py, the lower transition rate operator introduced in Example 18 of (Krak et al., 2016) is used to showcase the differences between the algorithms.
We do the same in ReliabilityOfPowerNetworks.py, but for the lower transition rate operator introduced in (Troffaes et al., 2015).
The linear programming problems are solved using the linprog
method of CVXOPT, which is a Python wrapper for GLPK.
If you cannot get this to work, you can resort to the linprog
method of SciPy.
However, I would advice you not to do this, as this method is terribly slow.
- Jasper De Bock. ''The Limit Behaviour of Imprecise Continuous-Time Markov Chains''. Journal of Nonlinear Science (2017) 27:159 . doi:10.1007/s00332-016-9328-3
- Alexander Erreygers and Jasper De Bock. ''Imprecise Continuous-Time Markov Chains: Efficient Computational Methods with Guaranteed Error Bounds''. arXiv:1702.07150.
- Thomas Krak, Jasper De Bock and Arno Siebes. ''Imprecise Continuous-Time Markov Chains''. arXiv:1611.05796
- Matthias Troffaes, Jacob Gledhill, Damjan Skulj and Simon Blake. ''Using imprecise continuous time Markov chains for assessing the reliability of power networks with common cause failure and non-immediate repair''. Proceedings of ISIPTA'15, pp. 287-294. Available on-line