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.
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. 4. The method of claim 1, wherein an adaptive memory is used in selecting at least one variable of the selected constraint and selecting a new value for each selected variable, the adaptive memory comprising: a tabu mechanism that prevents variable changes in the current assignment from returning to variable values in at least some previous assignments; and a memory of prior value changes.