Skip to the content.

Domain-Independent Dynamic Programming (DIDP)

Domain-Independent Dynamic Programming (DIDP) is a novel model-based paradigm for combinatorial optimization based on dynamic programming (DP). In DIDP, once you formulate your problem as a DP model, you can use generic solvers to solve the model, just as in mixed-integer programming (MIP) and constraint programming (CP). DIDP shows superior performance to MIP and CP in a number of combinatorial optimization problems including vehicle routing problems (VRPs), packing problems, and scheduling problems (see our papers for detailed evaluations).

Software

Our framework is publicly available as open-source software under the MIT/Apache-2.0 license (free for commercial use!). To get started, we recommend using DIDPPy.

All of the above software are managed on our GitHub repository.

Modeling in DIDP

We use Dynamic Programming Description Language (DyPDL) as a modeling formalism for DIDP, which is based on state transition systems. While it is named “Language”, DyPDL is independent from particular programming languages or data formats, and we provide Python, Rust, and YAML interfaces for it.

We provide Python and YAML models used by our papers in a repository.

Solvers for DIDP

Currently, our generic DIDP solvers are based on heuristic search such as A* and beam search, inspired by AI planning.

Papers

Papers using DIDP

Presentations

Contact Information

Ryo Kuroiwa (ryo.kuroiwa [at] mail.utoronto.ca)