1. A method for using a constraints solver to determine an optimum value for an objective function of an optimization problem, the method comprising: receiving a set of constraints that is defined over a set of variables, wherein the set of constraints corresponds to the optimization problem, and wherein the set of constraints includes one or more constraints that impose an upper bound on one or more variables that are used in the objective function of the optimization problem; and iteratively performing the following set of operations on a computer: solving the set of constraints using a constraints solver; responsive to the constraints solver returning a solution, decreasing the upper bound; and responsive to the constraints solver indicating that no solutions exist or that the constraints solver timed out, increasing the upper bound.