DyPy is currently in early development. As of 4/2/2019, the code here is not ready for production use unless you are willing to invest time in ensuring your solution is correct and that the solver is working correctly. Please be cautioned against using this solver. Your contributions to make this solver production-ready are welcome though, so please get in touch if you are interested.
DyPy’s goal is to provide an interface to backward dynamic programming that supports the following priorities (in order):
- Ease of learning and use
- Flexible/adaptable to new problems
- Speed (but only after 1 and 2 are satisfied - anecdotally, it's decently fast)
It achieves this approach with an extensive set of classes that are meant to be built on for new problems, where as much as possible just works, but you can tweak things or provide options to handle your specific case. New contributions that follow this philosophy are welcome!
If our disclaimer is big and scary (it should be) and you have a need for a library supporting dynamic programming, you might be interested in ProDyn, which seems complete but is likely less flexible.
DyPy isn't currently on PyPI/pip (see above disclaimer about not being ready for production use) - if you know how to use setup files, you can clone this repository and install the package. I'll make this easier and update these instructions once I have more faith in the results produced by this solver.
Documentation for the in-development dypy and its API can be found at https://nickrsan.github.io/dypy