Example #1
0
    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_()
Example #2
0
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)
Example #3
0
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:
Example #4
0
    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")
Example #5
0
    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()