예제 #1
0
def run(FILE, options=Options()):
    solver = sagesat.SAGE_SAT(options)
    (success, program) = front(FILE)
    if not success:
        return
    success = middle(solver, program, options)
    if not success:
        return
    back(solver, program, options)
    if solver.options.SHARPSAT:
        return solver.sharpSAT()
    else:
        (is_sat, model) = solver.check(500)
        display_results(solver, program, is_sat, model)
        #print("Refine time:", solver.refine_time)
        return is_sat
예제 #2
0
    G = CubeGraph(5)
    G.relabel()
    #print(G)
    c_edges = set(G.edges(labels=False))
    off = c_edges.difference(cycle)

    for (u, v) in off:
        print("assert disallowed_edge(x," + str(u) + "," + str(v) + ")")

    sys.exit()

    base_dir = "../../test/enum_d5_matchings/"
    v1 = [(1, 3), (1, 5), (1, 9), (1, 17)]
    v2 = [(2, 3), (2, 6), (2, 10), (2, 18)]
    v7 = [(3, 7), (5, 7), (6, 7), (7, 15), (7, 23)]

    for i in itertools.product(v1, v2, v7):
        name = "e_" + "_".join([str(u) + str(v) for (u, v) in i])
        print(name)
        f = open(base_dir + name, 'w')
        f.write(s)
        for (u, v) in i:
            f.write("assert required_edge(x," + str(u) + "," + str(v) + ")\n")
        f.close()

        options = Options()
        options.DUMP_INITIAL_DIMACS = True
        options.DIMACS_FILE = base_dir + name + ".dimacs"
        spec = base_dir + name
        run(spec, options)
예제 #3
0
'''
Created on Sep 20, 2014

@author: ezulkosk
'''

from common.common import Options
from main import run

if __name__ == '__main__':
    TEST_DIR = "../test/matching_counts/"
    options = Options()
    options.SHARPSAT = True
    print("Obtaining counts for hypercube matchings.")
    for d in range(2, 6):
        d_dir = TEST_DIR + "d" + str(d) + "/"
        print("Dimension " + str(d))

        spec = d_dir + "matchings"
        print("\tmatchings: " + str(run(spec, options)))

        spec = d_dir + "forbidden_matchings"
        print("\tforbidden matchings: " + str(run(spec, options)))

        spec = d_dir + "maximal_forbidden_matchings"
        print("\tmaximal forbidden matchings: " + str(run(spec, options)))
예제 #4
0
    #print(G)
    c_edges = set(G.edges(labels=False))
    off = c_edges.difference(cycle)
    
    for (u,v) in off:
        print("assert disallowed_edge(x," + str(u) + "," + str(v) + ")")

    
    sys.exit()
    
    base_dir="../../test/enum_d5_matchings/"
    v1 = [(1,3), (1,5), (1,9), (1,17)]
    v2 = [(2,3), (2,6), (2,10), (2,18)]
    v7 = [(3,7), (5,7), (6,7), (7,15), (7, 23)]
    
    for i in itertools.product(v1,v2,v7):
        name = "e_" + "_".join([str(u) +str(v) for (u,v) in i])
        print(name)
        f = open(base_dir + name, 'w')
        f.write(s)
        for (u,v) in i:
            f.write("assert required_edge(x," + str(u) + "," + str(v) + ")\n")
        f.close()
        
        options = Options()
        options.DUMP_INITIAL_DIMACS = True
        options.DIMACS_FILE=base_dir + name + ".dimacs"
        spec = base_dir + name
        run(spec, options)
            
            
예제 #5
0
        return
    success = middle(solver, program, options)
    if not success:
        return
    back(solver, program, options)
    if solver.options.SHARPSAT:
        return solver.sharpSAT()
    else:
        (is_sat, model) = solver.check(500)
        display_results(solver, program, is_sat, model)
        #print("Refine time:", solver.refine_time)
        return is_sat


if __name__ == '__main__':
    import cProfile
    #sys.argv.append("../test/petersen")
    #sys.argv.append("../test/antipodal")
    #sys.argv.append("../test/forbidden_matchings_of_hamilton_cycle")
    #sys.argv.append("../test/matching_counts/d5/maximal_forbidden_matchings")
    #sys.argv.append("../test/enum_d5_matchings/e13")
    #sys.argv.append("../test/count_matchings_cycle")
    sys.argv.append("../test/hamilton")
    options = Options()
    options.RECORD_TIMES = True
    #options.DUMP_INITIAL_DIMACS = True
    spec = sys.argv[1]
    run(spec, options)

    #print("Total time:", time.time() - start)
예제 #6
0
    if not success:
        return
    back(solver, program, options)
    if solver.options.SHARPSAT:
        return solver.sharpSAT()
    else:
        (is_sat, model) = solver.check(500)
        display_results(solver, program, is_sat, model)
        #print("Refine time:", solver.refine_time)
        return is_sat
    

if __name__ == '__main__':
    import cProfile
    #sys.argv.append("../test/petersen")
    #sys.argv.append("../test/antipodal")
    #sys.argv.append("../test/forbidden_matchings_of_hamilton_cycle")
    #sys.argv.append("../test/matching_counts/d5/maximal_forbidden_matchings")
    #sys.argv.append("../test/enum_d5_matchings/e13")
    #sys.argv.append("../test/count_matchings_cycle")
    sys.argv.append("../test/hamilton")
    options = Options()
    options.RECORD_TIMES = True
    #options.DUMP_INITIAL_DIMACS = True
    spec = sys.argv[1]
    run(spec, options)
        
    #print("Total time:", time.time() - start)
    
    
    
예제 #7
0
'''
Created on Sep 20, 2014

@author: ezulkosk
'''

from common.common import Options
from main import run


if __name__ == '__main__':
    TEST_DIR = "../test/matching_counts/"
    options = Options()
    options.SHARPSAT=True
    print("Obtaining counts for hypercube matchings.")
    for d in range(2,6):
        d_dir = TEST_DIR + "d" + str(d) + "/"
        print("Dimension "+ str(d))
        
        spec = d_dir + "matchings"
        print("\tmatchings: " + str(run(spec, options)))
        
        spec = d_dir + "forbidden_matchings"
        print("\tforbidden matchings: " + str(run(spec, options)))
        
        spec = d_dir + "maximal_forbidden_matchings"
        print("\tmaximal forbidden matchings: " + str(run(spec, options)))