def templateTestColoringNegativeConnections(self, filename, solver_type = solve_type.FAST): result_testing = False; # If phases crosses each other because of random part of the network then we should try again. for attempt in range(0, 3, 1): graph = read_graph(filename); syncgcolor_network = syncgcolor(graph.data, 0, -1); (t, dyn) = syncgcolor_network.process(solution = solver_type); map_coloring = syncgcolor_network.get_map_coloring(0.05); # Check number of colors assigned_colors = set(map_coloring); # Check validity of color numbers for color_number in range(0, len(assigned_colors), 1): if (color_number not in assigned_colors): continue; # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ map_coloring[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index]; #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); if (map_coloring[index_node] in color_neighbors): continue; result_testing = True; assert result_testing;
def template_graph_coloring(positive_weight, negative_weight, filename, reduction = None, title = None): if (title is None): title = filename; print("\nGraph Coloring: ", title); graph = read_graph(filename); network = syncgcolor(graph.data, positive_weight, negative_weight, reduction); analyser = network.process(order = 0.999, solution = solve_type.FAST, collect_dynamic = True); sync.sync_visualizer.show_output_dynamic(analyser); clusters = analyser.allocate_color_clusters(); for index in range(0, len(clusters)): print("Color #", index, ": ", clusters[index]); coloring_map = analyser.allocate_map_coloring(); print("Number colors: ", max(coloring_map)); draw_graph(graph, coloring_map); # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ coloring_map[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index]; #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); if (coloring_map[index_node] in color_neighbors): print("Warining: Incorrect coloring"); return;
def template_graph_coloring(filename): graph = read_graph(filename); dsatur_instance = dsatur(graph.data); dsatur_instance.process(); coloring = dsatur_instance.get_colors(); print("Number colors: ", max(coloring)); draw_graph(graph, coloring);
def template_graph_coloring(filename, alpha, eps, steps, time, title = None, tolerance = 0.1): if (title is None): title = filename; graph = read_graph(filename); network = hysteresisgcolor(graph.data, alpha, eps); (t, dyn) = network.simulate(steps, time); draw_dynamics(t, dyn, x_title = "Time", y_title = "State"); clusters = network.get_clusters(tolerance); for index in range(0, len(clusters)): print("Color #", index, ": ", clusters[index]); coloring_map = network.get_map_coloring(tolerance); draw_graph(graph, coloring_map);
def templateTestColoring(self, filename, alpha, eps, steps, time): graph = read_graph(filename); network = hysteresisgcolor(graph.data, alpha, eps); (t, dyn) = network.simulate(steps, time); map_coloring = network.get_map_coloring(0.05); # Check number of colors assigned_colors = set(map_coloring); # Check validity of color numbers for color_number in range(0, len(assigned_colors), 1): assert color_number in assigned_colors; # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ map_coloring[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index]; #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); assert map_coloring[index_node] not in color_neighbors;
def templateTestColoring(self, filename): graph = read_graph(filename); dsatur_intance = dsatur(graph.data); dsatur_intance.process(); map_coloring = dsatur_intance.get_colors(); # Check number of colors assigned_colors = set(map_coloring); # Check validity of color numbers for color_number in range(1, len(assigned_colors) + 1, 1): assert color_number in assigned_colors; # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ map_coloring[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index]; #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); assert map_coloring[index_node] not in color_neighbors;
def template_graph_coloring(filename, alpha, eps, steps, time, title=None, tolerance=0.1): if (title is None): title = filename graph = read_graph(filename) network = hysteresisgcolor(graph.data, alpha, eps) (t, dyn) = network.simulate(steps, time) draw_dynamics(t, dyn, x_title="Time", y_title="State") clusters = network.get_clusters(tolerance) for index in range(0, len(clusters)): print("Color #", index, ": ", clusters[index]) coloring_map = network.get_map_coloring(tolerance) draw_graph(graph, coloring_map)
def template_graph_coloring(positive_weight, negative_weight, filename, reduction=None, title=None): if (title is None): title = filename print("\nGraph Coloring: ", title) graph = read_graph(filename) network = syncgcolor(graph.data, positive_weight, negative_weight, reduction) (t, dyn) = network.process(order=0.999, solution=solve_type.FAST, collect_dynamic=True) draw_dynamics(t, dyn, x_title="Time", y_title="Phase", y_lim=[0, 2 * 3.14]) clusters = network.get_clusters() for index in range(0, len(clusters)): print("Color #", index, ": ", clusters[index]) coloring_map = network.get_map_coloring() print("Number colors: ", max(coloring_map)) draw_graph(graph, coloring_map) # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ coloring_map[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index ] #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); if (coloring_map[index_node] in color_neighbors): print("Warining: Incorrect coloring") return
def templateTestColoring(self, filename, alpha, eps, steps, time): graph = read_graph(filename) network = hysteresisgcolor(graph.data, alpha, eps) (t, dyn) = network.simulate(steps, time) map_coloring = network.get_map_coloring(0.05) # Check number of colors assigned_colors = set(map_coloring) # Check validity of color numbers for color_number in range(0, len(assigned_colors), 1): assert color_number in assigned_colors # Check validity of colors for index_node in range(len(graph.data)): color_neighbors = [ map_coloring[index] for index in range(len(graph.data[index_node])) if graph.data[index_node][index] != 0 and index_node != index ] #print(index_node, map_coloring[index_node], color_neighbors, assigned_colors, map_coloring, "\n\n"); assert map_coloring[index_node] not in color_neighbors