Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.58 KB | None | 0 0
  1. import pandas as pd
  2. import numpy as np
  3. import math
  4.  
  5. class nodulo ():
  6.     estacao = 0
  7.     direta = 0
  8.     real = 0
  9.     total = 1000000000
  10.  
  11. #Carregando valores. Primeiro, os nos de inicio e fim desejados
  12. inicioUser = input("estacao de inicio, apenas o numero ") - 1
  13. estacaoFinal = input("estacao de fim ") - 1
  14.  
  15. #Puxa os valores de distancias reais e diretas do excel
  16. distancias = pd.ExcelFile('/Users/andre/Documents/distancias.xlsx')
  17. diretas = distancias.parse('diretas')
  18. reais = distancias.parse('reais')
  19.  
  20. #Transforma numa matriz
  21. reais = reais.values
  22. diretas = diretas.values
  23.  
  24. #Deleta a primeira coluna, porque vem com info desnecessaria
  25. reais = np.delete(reais, 0, 1)
  26. diretas = np.delete(diretas, 0, 1)
  27.  
  28. node = nodulo()
  29. node.estacao = inicioUser
  30. listNode = [node]
  31. listNodeFinal = []
  32.  
  33. def inserir(estacao, direta, real):
  34.     global listNode
  35.     global listNodeFinal
  36.     #print(listNode[0].estacao, " estacao")
  37.     node2 = nodulo()
  38.     node2.estacao = estacao
  39.     node2.direta = direta
  40.     node2.real = real
  41.     node2.total = real + direta
  42.     #listNode2 = [node2]
  43.     listNode.pop(0)
  44.     listNode.append(node2)
  45.     listNode.sort(key = lambda x: x.estacao)
  46.     print(nodulo.estacao + 1 for nodulo in listNode)
  47.     #print(listNode[0].estacao + 1)
  48.     # for i, val in enumerate(listNode):
  49.     #     if node2.total < listNode[i].total:
  50.     #         listNode = listNode[0:i] + listNode2 + listNode[i:len(listNode)]
  51.     #         break
  52.     #     else:
  53.     #         if i == len(listNode) - 1:
  54.     #             listNode = listNode + listNode2
  55.  
  56. def aStar(nodeIn):
  57.     global listNode
  58.     global listNodeFinal
  59.     listNodeFinal.append(nodeIn)
  60.     if nodeIn.estacao == estacaoFinal:
  61.         return listNodeFinal
  62.     else:
  63.         i = 0
  64.         while i < len(reais):
  65.             if not math.isnan(reais[nodeIn.estacao][i]):
  66.                 if not any(x.estacao == i for x in listNode):
  67.                     #print(i, diretas[i][estacaoFinal], reais[nodeIn.estacao][i] + nodeIn.real)
  68.                     inserir(i, diretas[i][estacaoFinal], reais[nodeIn.estacao][i] + nodeIn.real)
  69.             i += 1
  70.  
  71.     #if not any(x.estacao == nodeIn.estacao for x in listNode):
  72.     print("aqui")
  73.     aStar(listNode[0])
  74.  
  75. aStar(listNode[0])
  76.  
  77. print(nodulo.estacao + 1 for nodulo in listNodeFinal)
  78. #print(listNode[0].estacao)
  79. #print(listNode[0].total)
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. #for i, val in enumerate(reais):
  90. #    for j, val in enumerate(reais):
  91. #        if not math.isnan(reais[i][j]):
  92. #            print("reais", reais[i][j], i, j)
  93. #        else:
  94. #            reais[i][j] = float('Inf')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement