def makeAllOutputFiles(): for file in os.listdir("inputs"): if file.endswith(".in"): print(os.path.join("inputs", file)) #input file input_path = os.path.join("inputs", file) G = read_input_file(input_path) T = solve(G) assert is_valid_network(G, T) #use brute force for small graphs if file.startswith("small") and len(T) > 2: print("Trying brute forcing on SMALL file: " + os.path.join("inputs", file)) #input file BRUTE_TREE = maes_second_dumbass_brute_force(G) if average_pairwise_distance_fast( BRUTE_TREE) <= average_pairwise_distance_fast(T): print("Small brute-force alg WINS.") T = BRUTE_TREE else: print("Solver alg WINS.") #nothing happens #print("Average pairwise distance: {}".format(average_pairwise_distance_fast(T))) outname = os.path.splitext(file)[0] + '.out' output_path = os.path.join("outputs", outname) print(output_path + "\n") write_output_file(T, output_path) assert validate_file(output_path) == True
def makeAllOutputFiles(): for file in os.listdir("inputs"): if file.endswith(".in"): print(os.path.join("inputs", file)) #input file input_path = os.path.join("inputs", file) G = read_input_file(input_path) try: T = solve(G) except: print("ERRORED OUT. CONTINUE ANYWAY") T = G assert is_valid_network(G, T) #randomization optimization if len(T) > 2: print("Trying randomization to find better result..") try: betterT = maes_randomization_alg( G, T, 100) #50 iterations of randomness except: print("ERRORED OUT. CONTINUE ANYWAY") betterT = G assert is_valid_network(G, betterT) if average_pairwise_distance_fast( betterT) < average_pairwise_distance_fast(T): print("BETTER TREE FOUND.") T = betterT else: print("No improvements.") #nothing happens #print("Average pairwise distance: {}".format(average_pairwise_distance_fast(T))) outname = os.path.splitext(file)[0] + '.out' output_path = os.path.join("outputs", outname) print(output_path + "\n") write_output_file(T, output_path) assert validate_file(output_path) == True
# submission = {} # for input_path in os.listdir("inputs"): # graph_name = input_path.split('.')[0] # output_file = f'{outputs_dir}/{graph_name}.out' # if os.path.exists(output_file) and validate_file(output_file): # output = open(f'{outputs_dir}/{graph_name}.out').read() # submission[input_path] = output # with open(submission_name, 'w') as f: # f.write(json.dumps(submission)) import sys import os import json from parse import validate_file if __name__ == '__main__': outputs_dir = sys.argv[1] submission_name = sys.argv[2] submission = {} for folder in os.listdir("inputs"): if not folder.startswith('.'): for input_path in os.listdir("inputs/" + folder): graph_name = input_path.split('.')[0] output_file = f'{outputs_dir}/{folder}/{graph_name}.out' if os.path.exists(output_file) and validate_file(output_file): output = open( f'{outputs_dir}/{folder}/{graph_name}.out').read() submission[input_path] = output with open(submission_name, 'w') as f: f.write(json.dumps(submission))
def validateAllFiles(): for file in os.listdir("outputs"): output_path = os.path.join("outputs", file) if (validate_file(output_path) == False): print(output_path + " INVALIDATED.")
from parse import write_input_file, validate_file import networkx as nx import random if __name__ == '__main__': G_small = nx.complete_graph(24) for (u, v) in G_small.edges(): G_small.edges[u,v]['weight'] = round(random.uniform(0.0, 100.0), 3) G_medium = nx.complete_graph(48) for (u, v) in G_medium.edges(): G_medium.edges[u,v]['weight'] = round(random.uniform(0.0, 100.0), 3) G_large = nx.complete_graph(99) for (u, v) in G_large.edges(): G_large.edges[u,v]['weight'] = round(random.uniform(0.0, 100.0), 3) write_input_file(G_small, "/Users/narenyenuganti/Desktop/170Proj/25.in") write_input_file(G_medium, "/Users/narenyenuganti/Desktop/170Proj/50.in") write_input_file(G_large, "/Users/narenyenuganti/Desktop/170Proj/100.in") if (validate_file("/Users/narenyenuganti/Desktop/170Proj/25.in") == False): raise Exception("incorrect format for 25.in") if (validate_file("/Users/narenyenuganti/Desktop/170Proj/50.in") == False): raise Exception("incorrect format for 50.in") if (validate_file("/Users/narenyenuganti/Desktop/170Proj/100.in") == False): raise Exception("incorrect format for 100.in")