def main():

    topo = {}
    file = open('berlin52.txt', 'r') #leitura do arquivo
    for i in range(5):
        conteudo = file.readline().strip('\n').split(": ") 
        topo[conteudo[0]] = conteudo[1]
    dimenssao = int(topo['DIMENSION'])

    file.readline() #pula linha
    vet = [0 for i in range(dimenssao+1)]
    for i in range(1, dimenssao+1): #passa as linhas do arquivo para um vetor, pulando o numero da linha
        vet[i] = file.readline().strip('\n').split(' ')[1:]
        vet[i][0] = float(vet[i][0])
        vet[i][1] = float(vet[i][1])

    matriz = [[0 for i in range(dimenssao+1)] for i in range(dimenssao+1)] #matriz de adjacência
    
    #preenche a matriz com a distancia euclidiana dos pontos do vetor 
    for i in range(1, dimenssao+1): 
        for j in range(1, dimenssao+1):
            matriz[i][j] = euclidiana(vet[i][0], vet[j][0], vet[i][1], vet[j][1])

    # print(matriz)
    file.close()
    populacao = genetico.gerar_populacao(300, dimenssao)
    f = open("testes.txt", "a")
    caminho, fit = genetico.genetico('mutacao1', populacao, genetico.fitness, 100, 5, matriz, 'alternativo', 30, 'elitismo')
    print(caminho, fit)
    f.write('\nAlternativo 1:\n')
    f.write(str(caminho))
    f.write('\n')
    f.write(str(fit))
    f.write('\n')
Ejemplo n.º 2
0
def main(argv):
    file = open(argv[1], 'r')
    # formata as coordenadas numa matriz, retorna coordenadas e
    # o cabecalho do arquivo
    coordenadas, header = utils.formatar_coord(file)

    # gera a matriz de distancias entre os pontos
    matriz = utils.gerar_matriz(header, coordenadas)

    # gera uma populacao inicial
    pop = genetico.gerar_populacao(200, int(header['DIMENSION']))

    resultados = genetico.genetico(
        pop, genetico.fitness, 15, 5, matriz, elitismo=False, use_crossover_alternativo=True, id_mutacao=2)
    print(header['NAME'])
    for resultado in resultados:
        print(resultado)