diff --git a/experiments/firefighter_problem/comparisons.py b/experiments/firefighter_problem/comparisons.py index 44aeb60..75d6876 100644 --- a/experiments/firefighter_problem/comparisons.py +++ b/experiments/firefighter_problem/comparisons.py @@ -118,7 +118,7 @@ def Compare_NonSpread(): This function runs multiple experiments on randomly generated layered networks and plots the results comparing the budget used by different algorithms. """ - ex1 = experiments_csv.Experiment("./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/", "non_spreading.csv", backup_folder=None) + ex1 = experiments_csv.Experiment("./experiments/", "non_spreading.csv", backup_folder=None) ex1.clear_previous_results() # to clear previous experiments input_ranges = { @@ -144,7 +144,7 @@ def multiple_runs(runs=30): ex1.run_with_time_limit(multiple_runs, input_ranges={}, time_limit=0.9) # Preprocess the DataFrame to extract numeric budget values - results_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/non_spreading_minbudget.csv" + results_csv_file = "./experiments/non_spreading_minbudget.csv" results = pd.read_csv(results_csv_file) # Extract the numeric budget from the 'Budget' column @@ -164,7 +164,7 @@ def extract_budget_numeric(budget): results = results.dropna(subset=['Budget_numeric']) # Save the preprocessed DataFrame to a temporary CSV file - preprocessed_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/non_spreading_minbudget_preprocessed.csv" + preprocessed_csv_file = "./experiments/non_spreading_minbudget_preprocessed.csv" results.to_csv(preprocessed_csv_file, index=False) print("\n DataFrame-NonSpread: \n", results) @@ -177,7 +177,7 @@ def extract_budget_numeric(budget): y_field="Budget_numeric", z_field="algorithm", mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/non_spreading.png" + save_to_file="./experiments/non_spreading.png" ) print("\n DataFrame-NonSpread: \n", ex1.dataFrame) @@ -189,7 +189,7 @@ def Compare_SpreadingMaxSave(): This function runs multiple experiments on randomly generated directed graphs and plots the results comparing the number of nodes saved by different algorithms. """ - ex2 = experiments_csv.Experiment("./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/", "spreading_maxsave.csv", backup_folder=None) + ex2 = experiments_csv.Experiment("./experiments/", "spreading_maxsave.csv", backup_folder=None) ex2.clear_previous_results() # to clear previous experiments input_ranges = { @@ -224,7 +224,7 @@ def multiple_runs(runs=10): ## DATA ISSUE WE HAD SO THIS IS A FIX ## # Load the results - results_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave.csv" + results_csv_file = "./experiments/spreading_maxsave.csv" results = pd.read_csv(results_csv_file) # Ensure 'algorithm' column is of type string @@ -245,7 +245,7 @@ def multiple_runs(runs=10): results['Nodes_Saved'] = results['Nodes_Saved'].astype(int) # Save the cleaned DataFrame to a new CSV file (optional, for debugging) - cleaned_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave_preprocessed.csv" + cleaned_csv_file = "./experiments/spreading_maxsave_preprocessed.csv" results.to_csv(cleaned_csv_file, index=False) # Plot the results using the cleaned DataFrame @@ -261,7 +261,7 @@ def multiple_runs(runs=10): sharex=True, sharey=True, mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave_budget.png" + save_to_file="./experiments/spreading_maxsave_budget.png" ) multi_plot_results( @@ -276,7 +276,7 @@ def multiple_runs(runs=10): sharex=True, sharey=True, mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave_100_edge_prob.png" + save_to_file="./experiments/spreading_maxsave_100_edge_prob.png" ) multi_plot_results( @@ -291,7 +291,7 @@ def multiple_runs(runs=10): sharex=True, sharey=True, mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave_200_edge_prob.png" + save_to_file="./experiments/spreading_maxsave_200_edge_prob.png" ) multi_plot_results( @@ -306,7 +306,7 @@ def multiple_runs(runs=10): sharex=True, sharey=True, mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_maxsave_400_edge_prob.png" + save_to_file="./experiments/spreading_maxsave_400_edge_prob.png" ) print("\n DataFrame-NonSpread: \n", ex2.dataFrame) @@ -318,7 +318,7 @@ def Compare_SpreadingMinBudget(): This function runs multiple experiments on randomly generated directed graphs and plots the results comparing the budget used by different algorithms. """ - ex3 = experiments_csv.Experiment("./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/", "spreading_minbudget.csv", backup_folder=None) + ex3 = experiments_csv.Experiment("./experiments/", "spreading_minbudget.csv", backup_folder=None) ex3.clear_previous_results() # to clear previous experiments input_ranges = { @@ -328,7 +328,7 @@ def Compare_SpreadingMinBudget(): node_counts = [100, 200, 400] edge_probabilities = [0.1, 0.5, 0.8] - def multiple_runs(runs=30): + def multiple_runs(runs=10): for num_nodes in node_counts: for edge_prob in edge_probabilities: graph = generate_random_DiGraph(num_nodes=num_nodes, edge_probability=edge_prob, seed=None) @@ -340,16 +340,16 @@ def multiple_runs(runs=30): targets = random.sample(nodes, num_targets) for algorithm in input_ranges["algorithm"]: start_time = perf_counter() - result = runner_spreading(algorithm, graph, source, targets) + result = runner_spreading(algorithm, graph, None, source, targets) runtime = perf_counter() - start_time - ex3.add({**{"algorithm": algorithm.__name__, "runtime": runtime, "graph_nodes": len(graph.nodes)}, **result}) + ex3.add({**{"algorithm": algorithm.__name__, "runtime": runtime, "graph_nodes": num_nodes, "edge_probability": edge_prob}, **result}) return {"status": "completed"} # Set a time limit for the entire batch run ex3.run_with_time_limit(multiple_runs, input_ranges={}, time_limit=0.9) # Preprocess the DataFrame to extract numeric budget values - results_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_minbudget.csv" + results_csv_file = "./experiments/spreading_minbudget.csv" results = pd.read_csv(results_csv_file) # Extract the numeric budget from the 'Budget' column @@ -369,7 +369,7 @@ def extract_budget_numeric(budget): results = results.dropna(subset=['Budget_numeric']) # Save the preprocessed DataFrame to a temporary CSV file - preprocessed_csv_file = "./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_minbudget_preprocessed.csv" + preprocessed_csv_file = "./experiments/spreading_minbudget_preprocessed.csv" results.to_csv(preprocessed_csv_file, index=False) print("\n DataFrame-NonSpread: \n", results) @@ -382,7 +382,17 @@ def extract_budget_numeric(budget): y_field="Budget_numeric", z_field="algorithm", mean=True, - save_to_file="./networkz/algorithms/approximation/tests/test_firefighter_problem/comparisons/spreading_minbudget.png" + save_to_file="./experiments/spreading_minbudget.png" + ) + + single_plot_results( + results_csv_file=preprocessed_csv_file, + filter={"edge_probability":0.1}, + x_field="graph_nodes", + y_field="Budget_numeric", + z_field="algorithm", + mean=True, + save_to_file="./experiments/spreading_minbudget_edge.png" ) print("\n DataFrame-NonSpread: \n", ex3.dataFrame) @@ -393,5 +403,5 @@ def extract_budget_numeric(budget): setup_global_logger(level=logging.DEBUG) #Compare_NonSpread() - # Compare_SpreadingMinBudget() - Compare_SpreadingMaxSave() \ No newline at end of file + Compare_SpreadingMinBudget() + #Compare_SpreadingMaxSave() \ No newline at end of file diff --git a/experiments/spreading_minbudget.csv b/experiments/spreading_minbudget.csv new file mode 100644 index 0000000..ab7013e --- /dev/null +++ b/experiments/spreading_minbudget.csv @@ -0,0 +1,114 @@ +algorithm,runtime,graph_nodes,edge_probability,Budget +spreading_minbudget,0.6043815999873914,100,0.1,"(4, [(6, 1), (23, 1), (27, 1), (25, 1)])" +heuristic_minbudget,0.08351690000563394,100,0.1,"(2, [(25, 1), (6, 1), (27, 2), (23, 2), (41, 3), (72, 3)])" +spreading_minbudget,0.798920300003374,100,0.1,"(3, [(94, 1), (6, 1), (76, 1), (79, 2), (16, 2), (99, 2)])" +heuristic_minbudget,0.0549452000122983,100,0.1,"(3, [(6, 1), (19, 1), (85, 1), (18, 2), (87, 2), (17, 2), (81, 3)])" +spreading_minbudget,1.2247725000052014,100,0.1,"(7, [(6, 1), (70, 1), (23, 1), (36, 1), (47, 1), (2, 1), (25, 1)])" +heuristic_minbudget,0.20194240000273567,100,0.1,"(4, [(47, 1), (25, 1), (19, 1), (85, 1), (17, 2), (96, 2), (61, 2), (67, 2), (42, 3)])" +spreading_minbudget,0.5262910000019474,100,0.1,"(1, [(26, 1), (52, 2)])" +heuristic_minbudget,0.09640729999227915,100,0.1,"(2, [(19, 1), (14, 1), (52, 2), (76, 2), (22, 3), (60, 3)])" +spreading_minbudget,1.2042019000073196,100,0.1,"(6, [(72, 1), (91, 1), (16, 1), (14, 1), (38, 1), (25, 1)])" +heuristic_minbudget,0.12059449999651406,100,0.1,"(4, [(14, 1), (25, 1), (19, 1), (47, 1), (90, 2), (65, 2), (91, 2), (21, 2), (42, 3), (70, 3)])" +spreading_minbudget,0.1407623999984935,100,0.1,"(1, [(6, 1)])" +heuristic_minbudget,0.07592089999525342,100,0.1,"(1, [(6, 1), (84, 2)])" +spreading_minbudget,1.4573968000040622,100,0.1,"(6, [(9, 1), (13, 1), (19, 1), (23, 1), (3, 1), (47, 1)])" +heuristic_minbudget,0.07776210000156425,100,0.1,"(4, [(19, 1), (47, 1), (6, 1), (85, 1), (78, 2), (87, 2), (71, 2), (39, 2)])" +spreading_minbudget,0.8562765999959083,100,0.1,"(3, [(30, 1), (10, 1), (11, 1), (33, 2), (1, 2), (55, 2)])" +heuristic_minbudget,0.05599090000032447,100,0.1,"(3, [(6, 1), (85, 1), (14, 1), (11, 2), (89, 2), (78, 2), (69, 3)])" +spreading_minbudget,0.5544522999989567,100,0.1,"(1, [(6, 1), (78, 2)])" +heuristic_minbudget,0.09719980000227224,100,0.1,"(2, [(25, 1), (6, 1), (93, 2), (11, 2), (72, 3), (64, 3)])" +spreading_minbudget,0.4506552999955602,100,0.1,"(2, [(6, 1), (2, 1), (84, 2), (1, 2)])" +heuristic_minbudget,0.08434780000243336,100,0.1,"(2, [(6, 1), (19, 1), (84, 2), (17, 2), (72, 3), (69, 3)])" +spreading_minbudget,2.9608414999966044,100,0.5,"(29, [(54, 1), (37, 1), (9, 1), (11, 1), (12, 1), (23, 1), (31, 1), (46, 1), (60, 1), (61, 1), (88, 1), (90, 1), (2, 1), (15, 1), (24, 1), (27, 1), (45, 1), (62, 1), (20, 1), (26, 1), (32, 1), (86, 1), (94, 1), (97, 1), (28, 1), (66, 1), (93, 1), (13, 1), (65, 1)])" +heuristic_minbudget,2.033734099997673,100,0.5,"(29, [(37, 1), (45, 1), (65, 1), (12, 1), (46, 1), (88, 1), (24, 1), (54, 1), (93, 1), (28, 1), (26, 1), (13, 1), (60, 1), (62, 1), (31, 1), (61, 1), (27, 1), (90, 1), (2, 1), (9, 1), (23, 1), (20, 1), (66, 1), (94, 1), (97, 1), (15, 1), (86, 1), (32, 1), (11, 1)])" +spreading_minbudget,2.7890169999882346,100,0.5,"(24, [(31, 1), (38, 1), (16, 1), (46, 1), (48, 1), (61, 1), (82, 1), (84, 1), (98, 1), (2, 1), (15, 1), (45, 1), (54, 1), (62, 1), (64, 1), (77, 1), (79, 1), (85, 1), (26, 1), (32, 1), (34, 1), (78, 1), (28, 1), (93, 1)])" +heuristic_minbudget,1.3695207999990089,100,0.5,"(22, [(85, 1), (98, 1), (54, 1), (84, 1), (46, 1), (28, 1), (45, 1), (48, 1), (15, 1), (26, 1), (93, 1), (34, 1), (61, 1), (62, 1), (79, 1), (82, 1), (16, 1), (78, 1), (2, 1), (32, 1), (77, 1), (64, 1)])" +spreading_minbudget,0.29501640000671614,100,0.5,"(2, [(34, 1), (82, 1)])" +heuristic_minbudget,0.8983767999889096,100,0.5,"(2, [(34, 1), (82, 1)])" +spreading_minbudget,1.612422099991818,100,0.5,"(16, [(60, 1), (9, 1), (11, 1), (30, 1), (46, 1), (90, 1), (2, 1), (15, 1), (29, 1), (37, 1), (77, 1), (85, 1), (52, 1), (78, 1), (28, 1), (13, 1)])" +heuristic_minbudget,1.2286775999964448,100,0.5,"(16, [(52, 1), (28, 1), (85, 1), (29, 1), (37, 1), (46, 1), (13, 1), (60, 1), (90, 1), (2, 1), (30, 1), (15, 1), (78, 1), (9, 1), (77, 1), (11, 1)])" +spreading_minbudget,1.9392723999917507,100,0.5,"(18, [(58, 1), (22, 1), (46, 1), (48, 1), (61, 1), (2, 1), (19, 1), (37, 1), (64, 1), (77, 1), (79, 1), (85, 1), (32, 1), (72, 1), (78, 1), (28, 1), (66, 1), (13, 1)])" +heuristic_minbudget,1.2242184999922756,100,0.5,"(17, [(22, 1), (72, 1), (13, 1), (37, 1), (46, 1), (28, 1), (48, 1), (61, 1), (85, 1), (19, 1), (32, 1), (78, 1), (2, 1), (79, 1), (77, 1), (66, 1), (64, 1)])" +spreading_minbudget,2.1627451999956975,100,0.5,"(19, [(67, 1), (7, 1), (9, 1), (11, 1), (31, 1), (88, 1), (90, 1), (91, 1), (17, 1), (37, 1), (45, 1), (62, 1), (64, 1), (20, 1), (22, 1), (72, 1), (97, 1), (92, 1), (65, 1)])" +heuristic_minbudget,1.7830877999949735,100,0.5,"(17, [(88, 1), (22, 1), (91, 1), (37, 1), (45, 1), (65, 1), (20, 1), (31, 1), (9, 1), (72, 1), (90, 1), (17, 1), (62, 1), (92, 1), (11, 1), (97, 1), (64, 1)])" +spreading_minbudget,3.6650694999989355,100,0.5,"(29, [(30, 1), (46, 1), (11, 1), (12, 1), (16, 1), (41, 1), (61, 1), (82, 1), (84, 1), (88, 1), (98, 1), (2, 1), (15, 1), (24, 1), (27, 1), (45, 1), (77, 1), (79, 1), (85, 1), (22, 1), (43, 1), (72, 1), (74, 1), (78, 1), (86, 1), (97, 1), (92, 1), (13, 1), (65, 1)])" +heuristic_minbudget,2.367954000001191,100,0.5,"(29, [(98, 1), (85, 1), (24, 1), (84, 1), (46, 1), (88, 1), (22, 1), (12, 1), (27, 1), (65, 1), (45, 1), (41, 1), (61, 1), (72, 1), (13, 1), (2, 1), (43, 1), (79, 1), (86, 1), (92, 1), (15, 1), (30, 1), (77, 1), (82, 1), (97, 1), (11, 1), (16, 1), (74, 1), (78, 1)])" +spreading_minbudget,1.6317382999986876,100,0.5,"(13, [(12, 1), (7, 1), (11, 1), (16, 1), (88, 1), (15, 1), (19, 1), (27, 1), (54, 1), (20, 1), (26, 1), (43, 1), (28, 1)])" +heuristic_minbudget,1.2327431000012439,100,0.5,"(13, [(27, 1), (20, 1), (88, 1), (12, 1), (28, 1), (54, 1), (26, 1), (7, 1), (43, 1), (15, 1), (19, 1), (16, 1), (11, 1)])" +spreading_minbudget,1.377598899998702,100,0.5,"(9, [(23, 1), (82, 1), (30, 1), (40, 1), (62, 1), (79, 1), (85, 1), (22, 1), (92, 1)])" +heuristic_minbudget,1.0871489999990445,100,0.5,"(8, [(85, 1), (79, 1), (82, 1), (40, 1), (22, 1), (62, 1), (30, 1), (92, 1)])" +spreading_minbudget,1.249198300007265,100,0.5,"(12, [(31, 1), (16, 1), (41, 1), (84, 1), (90, 1), (24, 1), (29, 1), (37, 1), (40, 1), (85, 1), (13, 1), (65, 1)])" +heuristic_minbudget,1.291403099996387,100,0.5,"(11, [(84, 1), (29, 1), (37, 1), (40, 1), (24, 1), (85, 1), (65, 1), (41, 1), (13, 1), (90, 1), (16, 1)])" +spreading_minbudget,0.8987213000073098,100,0.8,"(8, [(84, 1), (16, 1), (21, 1), (68, 1), (86, 1), (87, 1), (44, 1), (52, 1)])" +heuristic_minbudget,2.5706658999988576,100,0.8,"(8, [(52, 1), (84, 1), (21, 1), (87, 1), (16, 1), (86, 1), (44, 1), (68, 1)])" +spreading_minbudget,0.5972516000038013,100,0.8,"(7, [(19, 1), (6, 1), (24, 1), (42, 1), (66, 1), (71, 1), (72, 1)])" +heuristic_minbudget,2.627842400004738,100,0.8,"(7, [(24, 1), (6, 1), (71, 1), (19, 1), (66, 1), (72, 1), (42, 1)])" +spreading_minbudget,2.4423267999954987,100,0.8,"(25, [(22, 1), (1, 1), (6, 1), (8, 1), (9, 1), (23, 1), (25, 1), (27, 1), (42, 1), (51, 1), (56, 1), (58, 1), (63, 1), (72, 1), (76, 1), (79, 1), (86, 1), (93, 1), (4, 1), (15, 1), (33, 1), (34, 1), (41, 1), (44, 1), (11, 1)])" +heuristic_minbudget,3.5214248999982374,100,0.8,"(25, [(27, 1), (76, 1), (6, 1), (4, 1), (25, 1), (58, 1), (34, 1), (51, 1), (9, 1), (8, 1), (22, 1), (11, 1), (15, 1), (23, 1), (33, 1), (44, 1), (56, 1), (86, 1), (93, 1), (1, 1), (79, 1), (41, 1), (63, 1), (72, 1), (42, 1)])" +spreading_minbudget,2.2762453999894205,100,0.8,"(23, [(21, 1), (2, 1), (8, 1), (9, 1), (16, 1), (22, 1), (29, 1), (37, 1), (48, 1), (53, 1), (65, 1), (71, 1), (76, 1), (85, 1), (86, 1), (89, 1), (91, 1), (95, 1), (96, 1), (97, 1), (98, 1), (74, 1), (94, 1)])" +heuristic_minbudget,3.9915353000105824,100,0.8,"(23, [(76, 1), (2, 1), (48, 1), (98, 1), (9, 1), (29, 1), (21, 1), (22, 1), (91, 1), (37, 1), (16, 1), (65, 1), (8, 1), (71, 1), (85, 1), (89, 1), (86, 1), (94, 1), (74, 1), (97, 1), (95, 1), (53, 1), (96, 1)])" +spreading_minbudget,3.2877872999961255,100,0.8,"(33, [(69, 1), (1, 1), (2, 1), (6, 1), (8, 1), (10, 1), (12, 1), (22, 1), (23, 1), (24, 1), (25, 1), (27, 1), (29, 1), (31, 1), (37, 1), (43, 1), (45, 1), (46, 1), (48, 1), (53, 1), (58, 1), (65, 1), (66, 1), (67, 1), (82, 1), (89, 1), (95, 1), (98, 1), (4, 1), (33, 1), (41, 1), (52, 1), (94, 1)])" +heuristic_minbudget,4.246031399990898,100,0.8,"(33, [(6, 1), (4, 1), (25, 1), (48, 1), (2, 1), (24, 1), (52, 1), (58, 1), (27, 1), (69, 1), (22, 1), (37, 1), (29, 1), (94, 1), (43, 1), (46, 1), (65, 1), (82, 1), (98, 1), (89, 1), (8, 1), (45, 1), (10, 1), (66, 1), (12, 1), (23, 1), (33, 1), (41, 1), (1, 1), (31, 1), (67, 1), (53, 1), (95, 1)])" +spreading_minbudget,2.8299892999930307,100,0.8,"(27, [(5, 1), (1, 1), (6, 1), (8, 1), (9, 1), (20, 1), (27, 1), (31, 1), (37, 1), (46, 1), (51, 1), (53, 1), (55, 1), (58, 1), (63, 1), (64, 1), (66, 1), (73, 1), (79, 1), (81, 1), (83, 1), (85, 1), (91, 1), (98, 1), (41, 1), (44, 1), (18, 1)])" +heuristic_minbudget,4.0879720999946585,100,0.8,"(27, [(58, 1), (6, 1), (51, 1), (20, 1), (98, 1), (27, 1), (64, 1), (8, 1), (9, 1), (73, 1), (46, 1), (37, 1), (5, 1), (83, 1), (55, 1), (41, 1), (81, 1), (18, 1), (31, 1), (91, 1), (53, 1), (1, 1), (63, 1), (44, 1), (85, 1), (66, 1), (79, 1)])" +spreading_minbudget,3.92984680000518,100,0.8,"(41, [(16, 1), (1, 1), (2, 1), (10, 1), (13, 1), (19, 1), (23, 1), (24, 1), (27, 1), (29, 1), (32, 1), (39, 1), (46, 1), (51, 1), (53, 1), (56, 1), (59, 1), (62, 1), (64, 1), (66, 1), (67, 1), (68, 1), (77, 1), (79, 1), (82, 1), (85, 1), (87, 1), (89, 1), (93, 1), (95, 1), (96, 1), (98, 1), (99, 1), (33, 1), (34, 1), (41, 1), (44, 1), (94, 1), (11, 1), (40, 1), (18, 1)])" +heuristic_minbudget,3.953235400011181,100,0.8,"(41, [(67, 1), (39, 1), (34, 1), (24, 1), (2, 1), (40, 1), (51, 1), (82, 1), (29, 1), (27, 1), (46, 1), (87, 1), (64, 1), (56, 1), (16, 1), (19, 1), (23, 1), (53, 1), (94, 1), (10, 1), (98, 1), (66, 1), (1, 1), (44, 1), (33, 1), (11, 1), (13, 1), (18, 1), (32, 1), (59, 1), (93, 1), (85, 1), (41, 1), (79, 1), (89, 1), (62, 1), (68, 1), (95, 1), (96, 1), (77, 1), (99, 1)])" +spreading_minbudget,1.3322335999982897,100,0.8,"(14, [(6, 1), (1, 1), (22, 1), (29, 1), (46, 1), (58, 1), (69, 1), (75, 1), (77, 1), (82, 1), (85, 1), (92, 1), (95, 1), (40, 1)])" +heuristic_minbudget,2.7363971000013407,100,0.8,"(14, [(6, 1), (40, 1), (58, 1), (29, 1), (82, 1), (69, 1), (22, 1), (46, 1), (92, 1), (85, 1), (77, 1), (1, 1), (75, 1), (95, 1)])" +spreading_minbudget,0.8161610999959521,100,0.8,"(8, [(22, 1), (31, 1), (45, 1), (85, 1), (86, 1), (91, 1), (96, 1), (44, 1)])" +heuristic_minbudget,2.7852620000048773,100,0.8,"(8, [(45, 1), (22, 1), (91, 1), (31, 1), (86, 1), (44, 1), (85, 1), (96, 1)])" +spreading_minbudget,1.302543899990269,100,0.8,"(14, [(2, 1), (10, 1), (45, 1), (63, 1), (64, 1), (65, 1), (79, 1), (85, 1), (91, 1), (92, 1), (96, 1), (52, 1), (74, 1), (40, 1)])" +heuristic_minbudget,4.053526600007899,100,0.8,"(14, [(2, 1), (40, 1), (52, 1), (64, 1), (65, 1), (91, 1), (45, 1), (92, 1), (10, 1), (74, 1), (85, 1), (63, 1), (79, 1), (96, 1)])" +spreading_minbudget,6.874619900001562,200,0.1,"(13, [(48, 1), (24, 1), (157, 1), (42, 1), (196, 1), (33, 1), (21, 1), (59, 1), (153, 1), (28, 1), (52, 1), (136, 1), (99, 1)])" +heuristic_minbudget,0.3828627999901073,200,0.1,"(8, [(99, 1), (52, 1), (153, 1), (136, 1), (28, 1), (48, 1), (147, 1), (194, 1), (92, 2), (91, 2), (50, 2), (1, 2), (186, 2), (82, 2), (42, 2), (178, 2)])" +spreading_minbudget,3.6053887000016402,200,0.1,"(8, [(116, 1), (153, 1), (45, 1), (49, 1), (105, 1), (95, 1), (65, 1), (99, 1)])" +heuristic_minbudget,0.43296489999920595,200,0.1,"(5, [(99, 1), (65, 1), (153, 1), (194, 1), (76, 1), (64, 2), (29, 2), (91, 2), (168, 2), (80, 2)])" +spreading_minbudget,6.127774299995508,200,0.1,"(12, [(57, 1), (164, 1), (21, 1), (49, 1), (108, 1), (194, 1), (11, 1), (42, 1), (68, 1), (153, 1), (65, 1), (28, 1)])" +heuristic_minbudget,0.5014686999929836,200,0.1,"(8, [(194, 1), (153, 1), (28, 1), (65, 1), (106, 1), (48, 1), (52, 1), (76, 1), (29, 2), (177, 2), (142, 2), (171, 2), (178, 2), (120, 2), (16, 2), (128, 2)])" +spreading_minbudget,6.081753100006608,200,0.1,"(14, [(155, 1), (131, 1), (185, 1), (6, 1), (44, 1), (76, 1), (147, 1), (153, 1), (79, 1), (161, 1), (28, 1), (112, 1), (52, 1), (106, 1)])" +heuristic_minbudget,0.3598169000033522,200,0.1,"(8, [(147, 1), (153, 1), (52, 1), (76, 1), (106, 1), (112, 1), (28, 1), (48, 1), (192, 2), (3, 2), (101, 2), (22, 2), (122, 2), (78, 2), (195, 2), (17, 2)])" +spreading_minbudget,6.416437199994107,200,0.1,"(10, [(194, 1), (6, 1), (52, 1), (101, 1), (4, 1), (170, 1), (46, 1), (9, 1), (41, 1), (28, 1)])" +heuristic_minbudget,0.5401426000025822,200,0.1,"(8, [(52, 1), (4, 1), (28, 1), (194, 1), (106, 1), (147, 1), (76, 1), (48, 1), (17, 2), (2, 2), (61, 2), (50, 2), (115, 2), (143, 2), (16, 2), (93, 2)])" +spreading_minbudget,7.155516500002705,200,0.1,"(13, [(124, 1), (196, 1), (116, 1), (66, 1), (21, 1), (120, 1), (128, 1), (138, 1), (44, 1), (72, 1), (48, 1), (65, 1), (136, 1)])" +heuristic_minbudget,0.45384590000321623,200,0.1,"(9, [(48, 1), (44, 1), (136, 1), (65, 1), (147, 1), (52, 1), (194, 1), (76, 1), (106, 1), (170, 2), (184, 2), (12, 2), (50, 2), (2, 2), (57, 2), (129, 2), (87, 2), (69, 2)])" +spreading_minbudget,5.644121200006339,200,0.1,"(13, [(129, 1), (199, 1), (44, 1), (82, 1), (39, 1), (76, 1), (182, 1), (194, 1), (54, 1), (161, 1), (4, 1), (28, 1), (52, 1)])" +heuristic_minbudget,0.48520840000128374,200,0.1,"(9, [(194, 1), (76, 1), (52, 1), (4, 1), (28, 1), (161, 1), (147, 1), (48, 1), (44, 1), (17, 2), (107, 2), (57, 2), (129, 2), (122, 2), (81, 2), (108, 2), (121, 2), (2, 2)])" +spreading_minbudget,1.8839236000058008,200,0.1,"(5, [(48, 1), (91, 1), (42, 1), (136, 1), (106, 1)])" +heuristic_minbudget,0.398219099995913,200,0.1,"(3, [(136, 1), (106, 1), (48, 1), (157, 2), (128, 2), (120, 2)])" +spreading_minbudget,8.769554500002414,200,0.1,"(16, [(3, 1), (157, 1), (116, 1), (106, 1), (70, 1), (44, 1), (17, 1), (43, 1), (138, 1), (194, 1), (147, 1), (76, 1), (4, 1), (48, 1), (65, 1), (112, 1)])" +heuristic_minbudget,0.48429249999753665,200,0.1,"(10, [(48, 1), (147, 1), (194, 1), (76, 1), (106, 1), (44, 1), (65, 1), (112, 1), (4, 1), (52, 1), (142, 2), (16, 2), (107, 2), (69, 2), (42, 2), (12, 2), (143, 2), (87, 2), (6, 2), (177, 2)])" +spreading_minbudget,4.215613599997596,200,0.1,"(9, [(116, 1), (33, 1), (70, 1), (101, 1), (21, 1), (194, 1), (4, 1), (52, 1), (106, 1)])" +heuristic_minbudget,0.4958438000030583,200,0.1,"(6, [(52, 1), (106, 1), (4, 1), (147, 1), (194, 1), (76, 1), (59, 2), (81, 2), (2, 2), (129, 2), (61, 2), (16, 2)])" +spreading_minbudget,0.1568801999965217,200,0.5,"(1, [(10, 1)])" +heuristic_minbudget,3.0877527999982703,200,0.5,"(1, [(132, 1)])" +spreading_minbudget,2.236697499989532,200,0.5,"(6, [(99, 1), (168, 1), (175, 1), (31, 1), (149, 1), (177, 1)])" +heuristic_minbudget,3.3113985999953,200,0.5,"(5, [(149, 1), (168, 1), (177, 1), (31, 1), (175, 1)])" +spreading_minbudget,9.140447199999471,200,0.5,"(32, [(59, 1), (144, 1), (63, 1), (19, 1), (34, 1), (41, 1), (50, 1), (65, 1), (82, 1), (85, 1), (103, 1), (116, 1), (130, 1), (143, 1), (168, 1), (180, 1), (184, 1), (191, 1), (193, 1), (28, 1), (75, 1), (139, 1), (146, 1), (149, 1), (162, 1), (61, 1), (68, 1), (81, 1), (137, 1), (186, 1), (153, 1), (192, 1)])" +heuristic_minbudget,5.723877700002049,200,0.5,"(31, [(184, 1), (143, 1), (116, 1), (61, 1), (59, 1), (149, 1), (130, 1), (186, 1), (75, 1), (68, 1), (82, 1), (103, 1), (162, 1), (191, 1), (193, 1), (41, 1), (19, 1), (180, 1), (192, 1), (28, 1), (85, 1), (50, 1), (168, 1), (63, 1), (34, 1), (137, 1), (153, 1), (146, 1), (65, 1), (139, 1), (81, 1)])" +spreading_minbudget,2.4964694999944186,200,0.5,"(8, [(63, 1), (85, 1), (140, 1), (180, 1), (193, 1), (197, 1), (199, 1), (119, 1)])" +heuristic_minbudget,3.2830257000023266,200,0.5,"(7, [(180, 1), (140, 1), (193, 1), (119, 1), (199, 1), (85, 1), (197, 1)])" +spreading_minbudget,1.0909339999925578,200,0.5,"(2, [(4, 1), (192, 1)])" +heuristic_minbudget,3.0061140000034356,200,0.5,"(2, [(192, 1), (108, 1)])" +spreading_minbudget,2.8638310999958776,200,0.5,"(9, [(31, 1), (13, 1), (41, 1), (45, 1), (103, 1), (116, 1), (74, 1), (127, 1), (68, 1)])" +heuristic_minbudget,3.336111199998413,200,0.5,"(7, [(45, 1), (41, 1), (116, 1), (68, 1), (103, 1), (127, 1), (74, 1)])" +spreading_minbudget,6.566627099993639,200,0.5,"(19, [(1, 1), (76, 1), (34, 1), (112, 1), (160, 1), (193, 1), (197, 1), (55, 1), (69, 1), (86, 1), (122, 1), (139, 1), (141, 1), (159, 1), (196, 1), (137, 1), (16, 1), (153, 1), (93, 1)])" +heuristic_minbudget,4.1070819000015035,200,0.5,"(17, [(86, 1), (139, 1), (193, 1), (122, 1), (196, 1), (69, 1), (93, 1), (159, 1), (55, 1), (153, 1), (112, 1), (34, 1), (141, 1), (137, 1), (16, 1), (160, 1), (197, 1)])" +spreading_minbudget,11.145615999994334,200,0.5,"(35, [(99, 1), (138, 1), (48, 1), (32, 1), (44, 1), (52, 1), (56, 1), (85, 1), (103, 1), (107, 1), (120, 1), (130, 1), (140, 1), (160, 1), (175, 1), (180, 1), (191, 1), (8, 1), (25, 1), (55, 1), (67, 1), (69, 1), (74, 1), (86, 1), (132, 1), (139, 1), (141, 1), (159, 1), (68, 1), (98, 1), (104, 1), (186, 1), (177, 1), (119, 1), (21, 1)])" +heuristic_minbudget,6.92385840001225,200,0.5,"(33, [(103, 1), (67, 1), (68, 1), (130, 1), (132, 1), (48, 1), (186, 1), (177, 1), (69, 1), (21, 1), (191, 1), (98, 1), (104, 1), (107, 1), (119, 1), (180, 1), (32, 1), (140, 1), (159, 1), (85, 1), (120, 1), (86, 1), (175, 1), (52, 1), (8, 1), (55, 1), (25, 1), (139, 1), (160, 1), (56, 1), (44, 1), (141, 1), (74, 1)])" +spreading_minbudget,7.714225499992608,200,0.5,"(27, [(194, 1), (30, 1), (19, 1), (41, 1), (56, 1), (65, 1), (85, 1), (87, 1), (115, 1), (116, 1), (121, 1), (130, 1), (140, 1), (143, 1), (168, 1), (175, 1), (180, 1), (181, 1), (17, 1), (67, 1), (122, 1), (138, 1), (141, 1), (196, 1), (68, 1), (81, 1), (104, 1)])" +heuristic_minbudget,4.569759200006956,200,0.5,"(26, [(30, 1), (138, 1), (121, 1), (130, 1), (41, 1), (116, 1), (67, 1), (196, 1), (68, 1), (87, 1), (19, 1), (168, 1), (17, 1), (104, 1), (115, 1), (180, 1), (85, 1), (143, 1), (140, 1), (175, 1), (181, 1), (122, 1), (56, 1), (65, 1), (141, 1), (81, 1)])" +spreading_minbudget,5.409246000010171,200,0.5,"(21, [(184, 1), (34, 1), (45, 1), (52, 1), (80, 1), (103, 1), (112, 1), (120, 1), (130, 1), (143, 1), (168, 1), (175, 1), (193, 1), (199, 1), (8, 1), (28, 1), (109, 1), (135, 1), (198, 1), (61, 1), (119, 1)])" +heuristic_minbudget,4.488193300014245,200,0.5,"(21, [(184, 1), (45, 1), (193, 1), (61, 1), (130, 1), (119, 1), (103, 1), (199, 1), (80, 1), (52, 1), (28, 1), (120, 1), (143, 1), (175, 1), (34, 1), (135, 1), (168, 1), (8, 1), (109, 1), (112, 1), (198, 1)])" +spreading_minbudget,5.363142900008825,200,0.8,"(21, [(3, 1), (21, 1), (33, 1), (44, 1), (45, 1), (68, 1), (69, 1), (70, 1), (74, 1), (138, 1), (149, 1), (150, 1), (155, 1), (171, 1), (176, 1), (179, 1), (195, 1), (198, 1), (37, 1), (162, 1), (190, 1)])" +heuristic_minbudget,13.136786300005042,200,0.8,"(21, [(195, 1), (171, 1), (150, 1), (155, 1), (44, 1), (3, 1), (45, 1), (74, 1), (69, 1), (190, 1), (68, 1), (179, 1), (149, 1), (37, 1), (162, 1), (21, 1), (138, 1), (70, 1), (198, 1), (176, 1), (33, 1)])" +spreading_minbudget,13.20309090000228,200,0.8,"(63, [(17, 1), (6, 1), (13, 1), (16, 1), (21, 1), (22, 1), (23, 1), (25, 1), (26, 1), (28, 1), (33, 1), (35, 1), (36, 1), (38, 1), (39, 1), (43, 1), (53, 1), (58, 1), (60, 1), (61, 1), (65, 1), (68, 1), (70, 1), (71, 1), (73, 1), (77, 1), (78, 1), (88, 1), (90, 1), (99, 1), (108, 1), (109, 1), (113, 1), (124, 1), (129, 1), (131, 1), (134, 1), (136, 1), (140, 1), (142, 1), (148, 1), (150, 1), (155, 1), (163, 1), (175, 1), (176, 1), (178, 1), (179, 1), (184, 1), (192, 1), (195, 1), (196, 1), (198, 1), (199, 1), (5, 1), (8, 1), (15, 1), (29, 1), (63, 1), (95, 1), (123, 1), (133, 1), (146, 1)])" +heuristic_minbudget,18.206225700007053,200,0.8,"(63, [(53, 1), (26, 1), (88, 1), (5, 1), (23, 1), (38, 1), (150, 1), (155, 1), (178, 1), (39, 1), (108, 1), (134, 1), (13, 1), (36, 1), (163, 1), (17, 1), (109, 1), (175, 1), (195, 1), (63, 1), (113, 1), (8, 1), (77, 1), (71, 1), (124, 1), (136, 1), (140, 1), (21, 1), (148, 1), (22, 1), (43, 1), (60, 1), (123, 1), (142, 1), (65, 1), (6, 1), (35, 1), (196, 1), (68, 1), (95, 1), (176, 1), (179, 1), (28, 1), (146, 1), (29, 1), (58, 1), (70, 1), (61, 1), (25, 1), (73, 1), (78, 1), (199, 1), (133, 1), (33, 1), (99, 1), (131, 1), (90, 1), (184, 1), (198, 1), (15, 1), (129, 1), (16, 1), (192, 1)])" +spreading_minbudget,1.1575602000084473,200,0.8,"(5, [(80, 1), (28, 1), (86, 1), (134, 1), (195, 1)])" +heuristic_minbudget,9.099992300005397,200,0.8,"(5, [(80, 1), (134, 1), (28, 1), (195, 1), (86, 1)])" +spreading_minbudget,8.297417900001165,200,0.8,"(33, [(26, 1), (19, 1), (25, 1), (30, 1), (31, 1), (35, 1), (42, 1), (61, 1), (72, 1), (76, 1), (78, 1), (93, 1), (94, 1), (98, 1), (125, 1), (128, 1), (132, 1), (134, 1), (135, 1), (138, 1), (140, 1), (155, 1), (163, 1), (172, 1), (178, 1), (195, 1), (196, 1), (81, 1), (133, 1), (146, 1), (27, 1), (51, 1), (59, 1)])" +heuristic_minbudget,13.201126400002977,200,0.8,"(33, [(26, 1), (19, 1), (94, 1), (59, 1), (155, 1), (178, 1), (128, 1), (81, 1), (134, 1), (163, 1), (27, 1), (195, 1), (72, 1), (98, 1), (31, 1), (42, 1), (132, 1), (30, 1), (76, 1), (196, 1), (140, 1), (125, 1), (25, 1), (51, 1), (93, 1), (135, 1), (61, 1), (138, 1), (146, 1), (35, 1), (133, 1), (78, 1), (172, 1)])" +spreading_minbudget,12.984143499998027,200,0.8,"(63, [(89, 1), (3, 1), (13, 1), (14, 1), (16, 1), (17, 1), (23, 1), (32, 1), (33, 1), (38, 1), (40, 1), (41, 1), (42, 1), (45, 1), (47, 1), (56, 1), (58, 1), (64, 1), (65, 1), (67, 1), (68, 1), (75, 1), (76, 1), (80, 1), (86, 1), (90, 1), (92, 1), (93, 1), (98, 1), (99, 1), (100, 1), (106, 1), (112, 1), (117, 1), (121, 1), (131, 1), (132, 1), (134, 1), (136, 1), (142, 1), (150, 1), (151, 1), (158, 1), (164, 1), (171, 1), (174, 1), (175, 1), (183, 1), (187, 1), (188, 1), (196, 1), (197, 1), (198, 1), (199, 1), (5, 1), (8, 1), (52, 1), (95, 1), (96, 1), (102, 1), (116, 1), (123, 1), (87, 1)])" +heuristic_minbudget,17.87442839999858,200,0.8,"(63, [(175, 1), (5, 1), (171, 1), (89, 1), (23, 1), (102, 1), (40, 1), (38, 1), (150, 1), (47, 1), (151, 1), (197, 1), (13, 1), (52, 1), (17, 1), (41, 1), (75, 1), (96, 1), (76, 1), (65, 1), (56, 1), (80, 1), (116, 1), (132, 1), (134, 1), (8, 1), (98, 1), (67, 1), (136, 1), (42, 1), (58, 1), (174, 1), (86, 1), (32, 1), (121, 1), (164, 1), (3, 1), (196, 1), (95, 1), (112, 1), (68, 1), (64, 1), (131, 1), (100, 1), (123, 1), (142, 1), (187, 1), (117, 1), (188, 1), (14, 1), (45, 1), (199, 1), (198, 1), (16, 1), (106, 1), (33, 1), (87, 1), (158, 1), (92, 1), (99, 1), (90, 1), (93, 1), (183, 1)])" +spreading_minbudget,5.6764264999947045,200,0.8,"(27, [(66, 1), (6, 1), (16, 1), (25, 1), (31, 1), (38, 1), (41, 1), (57, 1), (65, 1), (76, 1), (89, 1), (92, 1), (106, 1), (126, 1), (140, 1), (158, 1), (160, 1), (167, 1), (174, 1), (182, 1), (185, 1), (192, 1), (196, 1), (52, 1), (95, 1), (102, 1), (181, 1)])" +heuristic_minbudget,13.88039399999252,200,0.8,"(27, [(76, 1), (185, 1), (66, 1), (89, 1), (102, 1), (38, 1), (174, 1), (65, 1), (6, 1), (52, 1), (182, 1), (167, 1), (41, 1), (196, 1), (25, 1), (126, 1), (140, 1), (95, 1), (31, 1), (181, 1), (16, 1), (92, 1), (158, 1), (57, 1), (160, 1), (106, 1), (192, 1)])" +spreading_minbudget,4.208028399996692,200,0.8,"(16, [(31, 1), (13, 1), (38, 1), (58, 1), (75, 1), (76, 1), (78, 1), (88, 1), (98, 1), (101, 1), (153, 1), (164, 1), (167, 1), (197, 1), (63, 1), (159, 1)])"