Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import numpy as np
- import math
- class nodulo ():
- estacao = 0
- direta = 0
- real = 0
- total = 1000000000
- #Carregando valores. Primeiro, os nos de inicio e fim desejados
- inicioUser = input("estacao de inicio, apenas o numero ") - 1
- estacaoFinal = input("estacao de fim ") - 1
- #Puxa os valores de distancias reais e diretas do excel
- distancias = pd.ExcelFile('/Users/andre/Documents/distancias.xlsx')
- diretas = distancias.parse('diretas')
- reais = distancias.parse('reais')
- #Transforma numa matriz
- reais = reais.values
- diretas = diretas.values
- #Deleta a primeira coluna, porque vem com info desnecessaria
- reais = np.delete(reais, 0, 1)
- diretas = np.delete(diretas, 0, 1)
- node = nodulo()
- node.estacao = inicioUser
- listNode = [node]
- listNodeFinal = []
- def inserir(estacao, direta, real):
- global listNode
- global listNodeFinal
- #print(listNode[0].estacao, " estacao")
- node2 = nodulo()
- node2.estacao = estacao
- node2.direta = direta
- node2.real = real
- node2.total = real + direta
- #listNode2 = [node2]
- listNode.pop(0)
- listNode.append(node2)
- listNode.sort(key = lambda x: x.estacao)
- print(nodulo.estacao + 1 for nodulo in listNode)
- #print(listNode[0].estacao + 1)
- # for i, val in enumerate(listNode):
- # if node2.total < listNode[i].total:
- # listNode = listNode[0:i] + listNode2 + listNode[i:len(listNode)]
- # break
- # else:
- # if i == len(listNode) - 1:
- # listNode = listNode + listNode2
- def aStar(nodeIn):
- global listNode
- global listNodeFinal
- listNodeFinal.append(nodeIn)
- if nodeIn.estacao == estacaoFinal:
- return listNodeFinal
- else:
- i = 0
- while i < len(reais):
- if not math.isnan(reais[nodeIn.estacao][i]):
- if not any(x.estacao == i for x in listNode):
- #print(i, diretas[i][estacaoFinal], reais[nodeIn.estacao][i] + nodeIn.real)
- inserir(i, diretas[i][estacaoFinal], reais[nodeIn.estacao][i] + nodeIn.real)
- i += 1
- #if not any(x.estacao == nodeIn.estacao for x in listNode):
- print("aqui")
- aStar(listNode[0])
- aStar(listNode[0])
- print(nodulo.estacao + 1 for nodulo in listNodeFinal)
- #print(listNode[0].estacao)
- #print(listNode[0].total)
- #for i, val in enumerate(reais):
- # for j, val in enumerate(reais):
- # if not math.isnan(reais[i][j]):
- # print("reais", reais[i][j], i, j)
- # else:
- # reais[i][j] = float('Inf')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement