Fixing the hexiom bug for UNARY encoding
authorHamed Gorjiara <hgorjiar@uci.edu>
Wed, 8 Aug 2018 19:11:49 +0000 (12:11 -0700)
committerHamed Gorjiara <hgorjiar@uci.edu>
Wed, 8 Aug 2018 19:11:49 +0000 (12:11 -0700)
hexiom/csolverHexiom.py

index 1ebec590c937482287e27b99a6b2190999686c3e..30a93b30d0a92b458fa2e64a3a8889afd971a09b 100755 (executable)
@@ -530,11 +530,11 @@ def read_input(fil):
 def generateElements(csolverlb, csolver, slot_range, value_range):
     elems = []
     for slot in range(slot_range[0], slot_range[-1]+1):
-        s1 = [ i for i in range(value_range[0],value_range[-1]+1)]
+        s1 = [ i for i in range(value_range[0],value_range[-1]+2)]
         set1 = (c_long* len(s1))(*s1)
         s1 = csolverlb.createSet(csolver, c_uint(11), set1, c_uint(len(s1)))
         e1 = csolverlb.getElementVar(csolver,s1)
-        csolverlb.mustHaveValue(csolver, e1)
+        csolverlb.mustHaveValue(csolver, e1)
         elems.append(e1)
     return elems
 
@@ -609,7 +609,7 @@ def SAT_formulation_from_board_input(board_input, csolverlb, csolver):
         replaceWithElemConst(csolverlb, csolver, elems, m, n) 
           
     for m in board_input.blocked_positions:
-        csolverlb.addConstraint(csolver, (-Occupied(m)).getConstraint() )
+        csolverlb.addConstraint(csolver, (-Occupied( m)).getConstraint() )
 
     print 'Creating tile placement rules...'
     rules =[]
@@ -780,7 +780,8 @@ def main():
    
     print '=== Done! Calling CSolver solver now ==='
     if len(sys.argv) > 2 and sys.argv[-1] == "--dump":
-        csolverlb.serialize(csolver)
+         csolverlb.serialize(csolver)
+#     csolverlb.printConstraints(csolver)
     if csolverlb.solve(csolver) != 1:
         print '*** Got UNSAT result! ***'
         sys.exit(1)