def time_test_simple( graph, terminals, test_bb, test_bb_weak, test_bb_strong, test_ip_cbc, test_ip_gurobi ): """Runs a single time test of each of the algorithms (B&B, B&B-weak, B&B-strong, IP).""" t1 = time.time() ib_rpt = None if test_bb: _, _, ib_rpt = isolation_branching(graph.copy(), terminals, reporting=False, time_limit=3600) t2 = time.time() ib_weak_rpt = None if test_bb_weak: _, _, ib_weak_rpt = isolation_branching( graph.copy(), terminals, persistence="weak" ) t3 = time.time() ib_strong_rpt = None if test_bb_strong: _, _, ib_strong_rpt = isolation_branching( graph.copy(), terminals, persistence="strong" ) t4 = time.time() ip_cbc_rpt = None if test_ip_cbc: _, _ = ip_algorithm(graph.copy(), terminals) t5 = time.time() ip_gurobi_rpt = None if test_ip_gurobi: _, _ = ip_algorithm( graph.copy(), terminals, solver=GUROBI(msg=False) ) t6 = time.time() return ( (t2 - t1, ib_rpt), (t3 - t2, ib_weak_rpt), (t4 - t3, ib_strong_rpt), (t5 - t4, ip_cbc_rpt), (t6 - t5, ip_gurobi_rpt), )
def test_graph_4(): from ktcut.isolation_branching import isolation_branching from ktcut.ip_algorithm import ip_algorithm from ktcut.lp_algorithm import lp_algorithm from ktcut.persistence import check_persistence test_graphs = SmallGraphs() test_graphs.set_test_graph(4) graph, terminals = test_graphs.get_graph(), test_graphs.get_terminals() _, cut_value, _ = isolation_branching(graph, terminals) assert cut_value == 27 _, cut_value = ip_algorithm(graph, terminals) assert cut_value == 27 cut_value = lp_algorithm(graph, terminals) assert cut_value == 26 assert check_persistence(graph, terminals, 'weak') assert check_persistence(graph, terminals, 'strong')