Constrained differential dynamic programming and its application to multireservoir control | Synapse