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)
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)
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))
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')
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)
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)
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)