Sketch.solve() returns solve result as integer

This commit is contained in:
Josh Holtrop 2011-07-27 18:27:11 -04:00
parent b95e8e8789
commit 409783d01f

View File

@ -2,6 +2,11 @@
from numpy import * from numpy import *
from FuncDesigner import * from FuncDesigner import *
UNDERCONSTRAINED = 0
OVERCONSTRAINED = 1
SOLVED = 2
NO_SOLUTION = 3
class Sketch(object): class Sketch(object):
def __init__(self): def __init__(self):
self.shapes = [] self.shapes = []
@ -35,23 +40,26 @@ class Sketch(object):
dim = self.num_constraints dim = self.num_constraints
if self.num_variables > dim: if self.num_variables > dim:
dim = self.num_variables dim = self.num_variables
if self.num_variables == self.num_constraints: if self.num_variables < self.num_constraints:
sle_equs = [] return OVERCONSTRAINED
variables = oovars(dim) elif self.num_variables > self.num_constraints:
for e in equations: return UNDERCONSTRAINED
coeffs = e[0] sle_equs = []
equ = -e[1] variables = oovars(dim)
for c in coeffs: for e in equations:
equ = c[0] * variables[shape_vars[c[1]]] + equ coeffs = e[0]
sle_equs.append(equ) equ = -e[1]
s = sle(sle_equs) for c in coeffs:
r = s.solve() equ = c[0] * variables[shape_vars[c[1]]] + equ
if r.ff != float('inf'): sle_equs.append(equ)
print "SOLVED: ", r(variables) s = sle(sle_equs)
for i in range(len(variables)): r = s.solve()
varid_to_shape_var[i][0].setVar(varid_to_shape_var[i][1], if r.ff != float('inf'):
r(variables[i])) # print "SOLVED: ", r(variables)
for s in self.shapes: for i in range(len(variables)):
print 'shape:', repr(s.vars) varid_to_shape_var[i][0].setVar(varid_to_shape_var[i][1],
return True r(variables[i]))
return False # for s in self.shapes:
# print 'shape:', repr(s.vars)
return SOLVED
return NO_SOLUTION