1. A computer implemented method for optimizing a constraint model and communicating an approximately optimal solution, comprising: generating a current assignment of each variable in the constraint model, wherein: the constraint model is an over-constrained system model having one or more constraints, each having one or more variables; the constraints are selected from the group consisting of linear equations, linear inequalities, linear disequalities, and distance constraints; and each variable in the constraint model is assigned a current value from a domain of the variable; selecting a constraint from a set of unsatisfied constraints; selecting at least one variable of the selected constraint; selecting, for each selected variable, a new value from the domain of the variable; changing the value of each selected variable to its new value to generate a new assignment of variables, in which each variable in the constraint model has either its current value or its new value; storing the new assignment of variables as a best assignment in a set of one or more best assignments if it satisfies all the constraints and is at least as good as a best stored assignment; repeating the steps of selecting a constraint, at least one variable of the selected constraint, and a new value for each selected variable, changing the value of each selected variable to its new value to generate a new assignment, and storing the new assignment until the new assignment satisfies all the constraints and is approximately optimal or until a specified number of iterations has been performed; and in response, communicating at least one best stored assignment or communicating that no assignment satisfying all the constraints was found.