示例#1
0
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
示例#2
0
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))
示例#4
0
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.")
示例#5
0
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")