def calculate2(self): if self.status: from algorithms.Vertex import Vertex from algorithms.Edge import Edge from algorithms.Dijkstra import Dijkstra # db staff dbcon = DbCon() status = dbcon.getConnection() if status: dijkistra = Dijkstra() vertlist2 = [] verts = dbcon.get_vertices() for vert in verts: vertlist2.append(Vertex(vert[1])) edgelist = [] edges = dbcon.get_edges() for edge in edges: id = edge[0] ename = edge[1] w = edge[2] sv = edge[3] tv = edge[4] b = edge[5] for n in vertlist2: if sv == n.name: sn = n for nn in vertlist2: if tv == nn.name: tn = nn # p = Edge(id,ename,w,sv,tv) if b == 0: edgelist.append(Edge(id, ename, w, sn, tn, b)) for edges in edgelist: for sv in edges.startVertex: # print(sv) for n in vertlist2: if sv == n.name: sn = n sn.adjacenciesList.append(edges) # print("--------------") # for edges in edgelist: # for tv in edges.targetVertex: # # print(tv) # for nn in vertlist2: # if tv == nn.name: # tn = nn # tn.adjacenciesList.append(edges) # userinput1 = input("Enter startvertex: ").upper() # userinput2 = input("Enter targetvertex: ").upper() self.start_vertex = self.txt_from.text().upper() self.target_vertex = self.txt_to.text().upper() self.routes = "" self.bool1 = False self.bool2 = False if self.start_vertex != "" and self.target_vertex != "": for vert in vertlist2: if self.start_vertex == vert.name: dijkistra.calculateShrtestPath(vertlist2, vert) self.bool1 = True # else: # self.msg_warning.setText("Vertex {} does not exist on the graph".format(self.start_vertex)) # self.msg_warning.setStandardButtons(QMessageBox.Ok) # self.msg_warning.exec_() for vert in vertlist2: if self.target_vertex == vert.name: path = dijkistra.getShortestPathTo2(vert) self.bool2 = True path.reverse() if vert.minDistance != sys.maxsize: self.routes = "Traversing from {} to {}\n\tDistance ".format( self.start_vertex, self.target_vertex) + str( vert.minDistance) + "m\n\nPath is" for nodes in path: self.routes += "-->" + nodes self.lblpath.setText(self.routes) else: # self.lblpath.selectedText("") self.lblpath.setText( "There is no effective path from {} to {}". format(self.start_vertex, self.target_vertex)) self.msg_warning.setText( "There is no effective path from {} to {}". format(self.start_vertex, self.target_vertex)) self.msg_warning.setStandardButtons( QMessageBox.Ok) self.msg_warning.exec_() # else: # self.msg_warning.setText("Vertex {} does not exist on the graph".format(self.start_vertex)) # self.msg_warning.setStandardButtons(QMessageBox.Ok) # self.msg_warning.exec_() if self.bool1: pass else: self.msg_warning.setText( "Vertex {} does not exist on the graph".format( self.start_vertex)) self.msg_warning.setStandardButtons(QMessageBox.Ok) self.msg_warning.exec_() if self.bool2: pass else: self.msg_warning.setText( "Vertex {} does not exist on the graph".format( self.target_vertex)) self.msg_warning.setStandardButtons(QMessageBox.Ok) self.msg_warning.exec_() else: self.msg_warning.setText("Fill all the input values") self.msg_warning.setStandardButtons(QMessageBox.Ok) self.msg_warning.exec_() else: self.msg_warning.setText("No database Connection") self.msg_warning.setStandardButtons(QMessageBox.Ok) self.msg_warning.exec_()
h4.adjacenciesList.append(edge22) gate.adjacenciesList.append(edge1616) gate.adjacenciesList.append(edge17) gate.adjacenciesList.append(edge1111) gate.adjacenciesList.append(edge88) gate.adjacenciesList.append(edge77) # spd.adjacenciesList.append(edge4) # spd.adjacenciesList.append(edge6) # lbb.adjacenciesList.append(edge5) vertexList = {spd, lbb, med, mea, lib, mcu, h1, h2, h3, h4, gate} vertexList2 = [spd, lbb, med] dijkistra = Dijkstra() # userinput1 = 'LIB' # userinput2 = 'MEA' userinput1 = input("Start Vertex: ").upper() userinput2 = input("Target Vertex: ").upper() print(type(vertexList)) for sv in vertexList: if userinput1 == sv.name: dijkistra.calculateShrtestPath(vertexList, sv) print(sv.name) print(sv.minDistance)
from algorithms.Vertex import Vertex from algorithms.Edge import Edge from algorithms.Dijkstra import Dijkstra import MySQLdb from _mysql_exceptions import Error from dbconnections.DbCon import DbCon #db staff print("Attempting database connection ........") dbcon = DbCon() status = dbcon.getConnection() if status: dijkistra = Dijkstra() # vertlist2 = [] # # verts = dbcon.get_vertices() # for vert in verts: # vertlist2.append(Vertex(vert[1])) # edgelist = [] # edges = dbcon.get_edges() # for edge in edges: # id = edge[0] # ename = edge[1] # w = edge[2] # sv = edge[3] # tv = edge[4] # for n in vertlist2: # if sv == n.name: # sn = n # for nn in vertlist2:
nv2 = Vertex('LBB') nv3 = Vertex('MCU') # path1 = Edge(e1[0], e1[1], e1[4], nv1,nv2) # path2 = Edge(e2[0], e2[1], e2[4], nv2,nv3) # path3 = Edge(e3[0], e3[1], e3[4], nv1,nv3) path1 = Edge(e1[0], e1[1], e1[4], nv1, nv2) path2 = Edge(e2[0], e2[1], e2[4], nv2, nv3) path3 = Edge(e3[0], e3[1], e3[4], nv1, nv3) nv1.adjacenciesList.append(path1) nv1.adjacenciesList.append(path3) nv2.adjacenciesList.append(path2) vertexList = {nv1, nv2, nv3} dijkistra = Dijkstra() dijkistra.calculateShrtestPath(vertexList, nv1) dijkistra.getShortestPathTo(nv3) # edges = dbcon.get_edges() # for i in range(len(edges)): # print(i) # for i in edges: # paths = Edge(i[0], i[1], i[4], nv1, nv2) # print(paths) else: print("No connection")
nv3 = Vertex(n3) path1 = Edge(e1[0], e1[1], e1[2], nv1, nv2) path2 = Edge(e2[0], e2[1], e2[2], nv2, nv3) path3 = Edge(e3[0], e3[1], e3[2], nv1, nv3) # path1 = Edge(e1[0], e1[1], e1[2], Vertex(1), Vertex(2)) # path2 = Edge(e2[0], e2[1], e2[2], Vertex(2), Vertex(3)) # path3 = Edge(e3[0], e3[1], e3[2], Vertex(1), Vertex(3)) nv1.adjacenciesList.append(path1) nv3.adjacenciesList.append(path3) nv2.adjacenciesList.append(path2) vertexList = {nv1, nv2, nv3} dijkistra = Dijkstra() # dijkistra.calculateShrtestPath(nv1) # dijkistra.getShortestPathTo(nv3) # print(nv2.predecessor) # print(nv3.visited) vertlist2 = [] vertlist3 = [] vertlist4 = [] # # print("---------------") # print(nv1.adjacenciesList) # print(nv2.adjacenciesList) # print(nv3.adjacenciesList) # print("---------------") verts = dbcon.get_vertices()