algorithms for optimization kochenderfer