示例#1
0
def main():
    for g_input in gen_benchmark_digraphs():
        # Giving up on Problem 10 after 2 hours:
        # 0     0   11.00000    0  402   12.00000   11.00000  8.33%     - 7981s
        if g_input.graph['name'] == 'Problem 10 (opt=12)':
            continue
        solve_problem(g_input)
示例#2
0
def main():
    setParam("LogFile", "/tmp/gurobi.log")
    for g in gen_benchmark_digraphs():
        success, edgelist_per_cycle = get_all_cycles(g, cutoff=10000000)
        if not success:
            continue # too many simple cycles
        solve_cm(g, edgelist_per_cycle)
示例#3
0
def main():
    #test_on_Jaconbsen_with_50_stages()
    #return
    start = time()
    for g_input in gen_benchmark_digraphs():
        solve_problem(g_input)
    test_on_Jaconbsen_with_50_stages()
    end = time()
    print('Overall solution time: {0:0.1f} s'.format(end - start))
示例#4
0
def main():
    setParam("LogFile", "/tmp/gurobi.log")
    for g in gen_benchmark_digraphs():
        #if g.graph['name'] == 'Problem 10 (opt=12)':
        #if g.graph['name'] != 'Problem 8 (opt=5)':
        #if g.graph['name'] != 'Subproblem 8 (opt=3)':
        #    continue
        STATISICS.clear()
        # Problem 10
        #-----------
        # Sparse cut
        #g.remove_edge(38, 36)
        #g.remove_edge(39, 34)
        #-----------
        # Peeling off the DAG of the bypasses
        #dag_connecting = [ (11,4), (17,16), (1,20), (26,25), (12,29), (35,34),
        #                   (21,38), (44,43), (30,48), (54,53), (39,57) ]
        #for e in dag_connecting:
        #    g.remove_edge(*e)
        #-----------
        # Breaking the small bypasses
        #bypass_breakers = [ (17,11), (26,20), (35,29), (44,38), (54,48) ] 
        #for e in bypass_breakers:
        #    g.remove_edge(*e)
        #-----------
        # Problem 8
        #g.remove_edge(4,6)
        #g.remove_edge(24,16)
        #g.remove_edge(17,22)
        #g.remove_edge(21,20)
        #g.remove_edge(2,6)
        #g.remove_edge(24,26)
        #iteratively_remove_runs_and_bypasses(g)
        #g.remove_edge(2,17)
        #g.remove_edge(8,27)
        #g.remove_edge(27,7)
        #g.remove_edge(8,14)  # These latter two are insane but still OK
        #g.remove_edge(18,21)
        #plot(g, prog='sfdp')
        #-----
        #from utils import deserialize
        #g = deserialize('data/JacobsenILOSimpBounds_as_DAG.pkl.gz')
        #orig_input = deserialize('data/JacobsenILOSimpBounds_as_DAG.pkl.gz')
        # And toggle comment on the # <- lines !!!
        #-----
        orig_input = deepcopy(g) # <-
        simplify(g)
        print('Info on the original input:')
        print(orig_input.graph['name']) # <-
        print('Nodes:', orig_input.number_of_nodes())
        print('Edges:', orig_input.number_of_edges())
        print('Loops:', len(list(nx.simple_cycles(orig_input)))) # <-
        if 'max cycles' in STATISICS:
            print('Loop budget:', STATISICS['max cycles'])
            print('Cutoff:', STATISICS['max cutoff'])
        plot(orig_input, prog='sfdp')
示例#5
0
def run_tests():
    for g, hints in gen_testgraphs():
        plot(g, prog='sfdp')
        run_elimination(g, hints)
    # Comparing my block ordering to tearing (comparing apples to oranges).
    for g in gen_benchmark_digraphs():
        if g.number_of_selfloops():
            print('Skipping it, as this digraph has self-loops\n')
            continue
        plot(g, prog='sfdp')
        info(g)
        run_elimination(g)
示例#6
0
def real_main(use_min_degree):
    #pname = 'JacobsenShortestSimpBounds'
    pname = 'JacobsenILOSimpBounds'
    g, eqs, forbidden = read_bipartite_graph(pname)
    #feasible_solution = read_feasible_solution(pname, g, eqs, forbidden)
    #
    solve_problem(g, eqs, forbidden, use_min_degree)
    #
    for g, eqs, forbidden in gen_testproblems():
        info_on_bipartite_graph(g, eqs, forbidden, log=log)
        solve_problem(g, eqs, forbidden, use_min_degree)
    #
    # A bipartite graph, triggering poor performance
    dig = next(gen_benchmark_digraphs())
    for n in dig.nodes():
        if n > 20:
            dig.remove_node(n)
    g, eqs, forbidden = digraph_to_undirected_bipartite(dig)
    solve_problem(g, eqs, forbidden)
示例#7
0
def main():
    from benchmarks import gen_benchmark_digraphs
    for g in gen_benchmark_digraphs():
        info(g)
        run_mfes_heuristic(g, try_one_cut=False, is_labeled=True)