Documentation for ConstrainedShortestPaths.

This package implements algorithms for solving Generalized Constrained Shortest Paths problems. It implements a simplified version of the framework from Parmentier 2017, restricted to acyclic directed graphs.

If you have any question/suggestion, feel free to create an issue or contact me.


This package supports the following setting:

  • Let $D=(V, A)$ an acyclic directed graph.
  • Let $o, d\in V$ origin and destination vertices.
  • Let $\mathcal{P} \subset \mathcal{P}_{od}$ a subset of $o-d$ paths in $D$.
  • Let $c$ a cost function you want to minimize on $\mathcal{P}$.

The generalized_constrained_shortest_path algorithm is able to solve the following shortest path problem:

\[\begin{aligned} \arg\min\quad & c(P)\\ \text{s.t.}\quad & P\in \mathcal{P} \end{aligned}\]


To install this package, open a julia REPL and run the following command in pkg mode:

add ConstrainedShortestPaths

Basic usage

Currently, this package implements three applications examples ready to use:

Advanced usage

If your shortest path problem is not one of those listed in the Basic usage section, it is still possible to solve it with this package. To do this, first read the Mathematical background section, then follow the Implement a custom problem tutorial.