A temporal network is a data structure for representing and reasoning about time, especially constraints on activities.
Different kinds of temporal networks have different kinds of features (e.g., some can accommodate actions with uncertain durations,
while others can accommodate actions that generate information in real time). This project will involve implementing algorithms from
the literature on Temporal Networks with the aim of empirically evaluating them in reproducible ways.
Python3 support is needed for the module to work:
- You will also need the matplotlib and networkx modules. To install them simply use the following commands:
pip3 install matplotlib
pip3 install networkx
There is currently support for two types of temporal networks (more to be added in the future):
- Simple Temporal Networks
- Simple Temporal Networks with Uncertainty
The STN class creates a Simple Temporal Network with the following algorithms:
All algorithms can be accessed by importing the stn_algorithms module as follows:
from stn_algorithms import *
from stn import STN
- Visualizing STNs: Calling the vizualize method in the STN class creates a matplotlib plot of
the STN. To vizualize an STN simply call the method like this:
stn.visualize() - Consistency checking: Does an STN have a solution?
stn.is_consistent()
- Generating or incrementally updating solutions for STNs
# add examples here
- All-pairs, shortest-paths algorithms for STNs
floyd_warshall(stn)
johnson(stn)
- Algorithms associated with real-time execution of STNs (“dispatchability”)
fast_dispatch(stn)
slow_dispatch(stn)
- Generation of random STNs to support empirical evaluation
generate_random_STNs(no_of_stns=5, max_no_of_nodes=20, max_weight=200, min_weight=-100)
- Different kinds of “path-consistency” algorithms for STNs
# add examples here
- Floyd-Warshall, Bellman-Ford, Dijkstra, Johnson's
- Dispatchability algorithm (Tsamardinos & Morris, 1998)
- Path Consistency (Dechter et al., 1991; Chleq, 1995; Planken, 2013)
- Incrementally updating solutions (Ramalingam, 1995)
The STNU creates a Simple Temporal Network with Uncertainty with the following algorithms:
- Visualizing STNUs: Calling the vizualize method in the STN class creates a matplotlib plot of the STNU
- Generating “chordal” (a.k.a., “triangulated”) graphs for STNs
- Dynamic controllability-checking algorithms for STNUs
- DC-checking algorithms for STNUs (Morris, 2014; Cairo et al., 2018)
- Add support for other types of temporal networks, e.g., CSTNU's, Hyper Temporal Networks etc.
- Random generation of temporal networks