def tsp_load(file_name='', use_numpy=False, use_path=False): """ Mi version :P, del codigo para cargar los problemas de TCP, ademas opcionalmente permite convertir a un array de la libreria Numpy. como todos los archivos que vi (aunque no lei exaustivamente la info sobre como estan formateados) estan bien formados omitire algunas comprobaciones sobre identificadores. Parametros Entrada: file_name : nombre del archivo o la ruta del mismo use_numpy : (bool), si se devovera un array normal o un objecto numpy use_path : (bool)si se usara la ruta de los problemas para el fichero a cargar, en caso contrario la ruta del mismo devera ser pasada en file_name Devuelve: name : nombre del problema comment : comentarios point_list: lista de puntos """ #Inclui un directorio con todos los problemas descargados de TSPLib por #lo que solo tendran que colocar en True 'use_path' y colocar solo el #nombre del fichero del problema if use_path: path = os.path.join(PROB_DIR, file_name) else: path = file_name #comprobacion de que el fichero exista en la ruta que pasamos try: file = open(path, 'r') except IOError, e: echo('Error no se pudo cargar el fichero %s' %path) exit(1)
def tsp_load_(file_name='', use_path=False): """ funcion ampliada, la cual lanzara un error si se intenta cargar un archivo con tipo de distancia Explicito. como el uso de numpy no esta soportado completamente el mismo esta desactivado Devuelve: name : nombre del problema comment : comentarios dist_type: tipo de distancia que se usa point_list: lista de puntos """ #Inclui un directorio con todos los problemas descargados de TSPLib por #lo que solo tendran que colocar en True 'use_path' y colocar solo el #nombre del fichero del problema if use_path: path = os.path.join(PROB_DIR, file_name) else: path = file_name #comprobacion de que el fichero exista en la ruta que pasamos try: file = open(path, 'r') except IOError, e: echo('Error no se pudo cargar el fichero %s' %path) exit(1)
def tsp_sol_load(file_name='', use_numpy=False, use_path=False): """ Esta funcion permite cargar las soluciones optimas de algunos de los los problemas que vienen con la TSPLib (no todos tienen solucion optima). La misma acepta los mismos parametros que tsp_load() Parametros Entrada: file_name : nombre del archivo o la ruta del mismo use_numpy : (bool), si se devovera un array normal o un objecto numpy use_path : (bool)si se usara la ruta de las soluciones para el fichero a cargar, en caso contrario la ruta del mismo devera ser pasada en file_name Devuelve: prob_file : nombre del fichero '.tsp' del cual este archivo es solucion soluc_opt: solucion optima, listado de nodos (indice de cada nodo) """ #Inclui un directorio con todos las soluciones optimas descargados desde #TSPLib, por lo que solo tendran que colocar en True 'use_path' y colocar #solo el nombre del fichero if use_path: path = os.path.join(SOLUC_DIR, file_name) else: path = file_name #comprobacion de que el fichero exista en la ruta que pasamos try: file = open(path, 'r') except IOError, e: echo('Error no se pudo cargar el fichero %s' %path) exit(1)
point_list = [] #lista de puntos x,y que representaran los vertices for linea in data_points: #obtengo las posiciones de los vertices o nodos, split por defecto #separara por saltos de linea \n y espacios en blanco ' ' num = linea.split() tupla = float(num[1]), float(num[2]) point_list.append(tupla) #v = Vector2D(float(num[1]), float(num[2])) #point_list.append(v) #pregunta si se devolvera un objecto array de numpy o un array tradicional #por ende requiere tener Numpy instalado :P if use_numpy and NUMPY_OK: point_list = np.array(point_list, np.float) echo('Cantidad de Vertices del problema %s: %s' %(name, len(point_list))) return name, comment, point_list def tsp_load_(file_name='', use_path=False): """ funcion ampliada, la cual lanzara un error si se intenta cargar un archivo con tipo de distancia Explicito. como el uso de numpy no esta soportado completamente el mismo esta desactivado Devuelve: name : nombre del problema comment : comentarios dist_type: tipo de distancia que se usa point_list: lista de puntos """