deterministic optimization methods