Solving optimization problems