Was looking for exactly this a few months ago. I wish this weren’t in Java but not a deal killer.

Google OR Tools can solve similar problems and has bindings for several languages

https://github.com/google/or-tools