def test_read_b01(self): diretorio_dados = path.join("datasets", "ORLibrary") arquivo_dados = "steinb1.txt" arquivo = path.join(diretorio_dados, arquivo_dados) reader = ReaderORLibrary() stp = reader.parser(arquivo) terminais = [48, 49, 22, 35, 27, 12, 37, 34, 24] self.assertEqual(stp.nro_nodes,50) self.assertEqual(stp.nro_edges,63) self.assertEqual(stp.nro_terminals,9) self.assertEqual(sorted(stp.terminals),sorted(terminais)) self.assertEqual(stp.graph[17][42],6) self.assertEqual(stp.graph[20][40],10) #Ordem inversa ao que aparece no arquivo self.assertEqual(stp.graph[6][42],9) self.assertEqual(stp.graph[13][50],1) self.assertIsInstance(stp.nro_nodes,int) self.assertIsInstance(stp.nro_edges,int) self.assertIsInstance(stp.nro_terminals,int) self.assertIsInstance(stp.terminals,set) self.assertIsInstance(stp.graph,Graph) self.assertEqual(len(stp.graph.vertices), stp.nro_nodes) self.assertEqual(stp.name,'B1') self.assertEqual(stp.remark,'Sparse graph with random weights') self.assertEqual(stp.creator,'J. E. Beasley') self.assertEqual(stp.file_name, arquivo_dados)
def test_GenerateUndirectEdges(self): diretorio_dados = path.join("datasets", "ORLibrary") arquivo_dados = "steinb1.txt" arquivo = path.join(diretorio_dados, arquivo_dados) reader = ReaderORLibrary() stp = reader.parser(arquivo) graph = stp.graph edges = set() for e in graph.gen_undirect_edges(): edges.add(e) self.assertEqual(len(edges),stp.nro_edges)
'nickname': 'SPHPrim' }, { 'function': shortest_path_with_origin, 'nickname': 'SPHO' }] reader = ReaderORLibrary() results = list() results.append(['instance_problem', 'heuristic', 'start_node', 'cost']) for item in heuristics: heuristic = item['function'] name_heuristic = item['nickname'] for name in instances: STPG = reader.parser(path.join(instance_folder, name)) graph = STPG.graph terminals = STPG.terminals.copy() vertices = list(graph.vertices) for v in vertices: print( f"{name_heuristic.upper()} -- {name.upper()} -- start node: {v}" .ljust(100), end='\r') _, cost = heuristic(graph, v, terminals) results.append([name, name_heuristic, v, cost]) print(" " * 100) output_file = path.join(output_folder, "resultados3.csv") with open(output_file, "w", newline='') as file: writer = csv.writer(file, delimiter=',')