예제 #1
0
    def loadVerticies(self):
        if self.status:
            from algorithms.Edge import Edge

            verts = self.dbcon.get_vertices()
            for vert in verts:
                self.textEdit.append(vert[1] + "--->" + vert[2] + "\n")
            self.textEdit.append("*****Blocked Paths*****\n")

            edgelist = []
            vertlist = []
            for vert in verts:
                vertlist.append(Vertex(vert[1]))
            edges = self.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 vertlist:
                    if sv == n.name:
                        sn = n
                for nn in vertlist:
                    if tv == nn.name:
                        tn = nn
                # p = Edge(id,ename,w,sv,tv)
                edgelist.append(Edge(id, ename, w, sn, tn, b))

            edgelist2 = set(edgelist)
            for edge in edgelist2:
                if edge.blocked == 1:
                    self.textEdit.append(edge.edgename)
        else:
            self.textEdit.setText(
                """The Network connection is Offline at the Momment\n
                                    Please try again sometimes later""")
예제 #2
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_()
예제 #3
0
lbb = Vertex("LBB")
med = Vertex("MED")
mea = Vertex("MEA")
lib = Vertex("LIB")
mcu = Vertex("MCU")
h1 = Vertex("H1")
h2 = Vertex("H2")
h3 = Vertex("H3")
h4 = Vertex("H4")
gate = Vertex('GATE')

# edge1 = Edge(id=1,weight=1,startVertex=spd,targetVertex=lbb,edgename="edge1")
# edge2 = Edge(id=2,weight=13,startVertex=lbb,targetVertex=med,edgename="edge2")
# edge3 = Edge(id=3,weight=10.1,startVertex=spd,targetVertex=med, edgename="edge3")
# edge4 = Edge(4,'edge4',4,'spd','lbb')
edge1 = Edge(1, 'edge1', 12, spd, mea)  #spd
edge11 = Edge(11, 'edge11', 12, mea, spd)  #mea
edge2 = Edge(2, 'edge2', 200, spd, h4)  #spd
edge22 = Edge(22, 'edge22', 200, h4, spd)  #h4
edge3 = Edge(3, 'edge3', 3, spd, lbb)  #spd
edge33 = Edge(33, 'edge33', 3, lbb, spd)  #lbb
edge4 = Edge(4, 'edge4', 20, spd, med)  #spd
edge44 = Edge(44, 'edge44', 20, med, spd)  #med
edge5 = Edge(5, 'edge5', 100, spd, mcu)  #mcu
edge55 = Edge(55, 'edge55', 100, mcu, spd)  #mcu
edge6 = Edge(6, 'edge6', 5, lbb, mea)  #lbb
edge66 = Edge(66, 'edge66', 5, mea, lbb)  #mea

edge7 = Edge(7, 'edge7', 65, med, gate)  #med
edge77 = Edge(77, 'edge77', 65, gate, med)  #gate
edge8 = Edge(8, 'edge8', 60, mea, gate)  #mea
예제 #4
0
spd = Vertex("SPD")
lbb = Vertex("LBB")
med = Vertex("MED")
mea = Vertex("MEA")
lib = Vertex("LIB")
mcu = Vertex("MCU")
h1 = Vertex("H1")
h2 = Vertex("H2")
h3 = Vertex("H3")
h4 = Vertex("H4")

# edge1 = Edge(id=1,weight=1,startVertex=spd,targetVertex=lbb,edgename="edge1")
# edge2 = Edge(id=2,weight=13,startVertex=lbb,targetVertex=med,edgename="edge2")
# edge3 = Edge(id=3,weight=10.1,startVertex=spd,targetVertex=med, edgename="edge3")
# edge4 = Edge(4,'edge4',4,'spd','lbb')
edge1 = Edge(1, 'edge1', 3, spd, lbb)
edge2 = Edge(2, 'edge2', 2, lbb, med)
edge3 = Edge(3, 'edge3', 6, spd, med)

edge4 = Edge(4, 'edge4', 3, lbb, spd)
edge5 = Edge(5, 'edge5', 2, med, lbb)
edge6 = Edge(6, 'edge6', 6, med, spd)

#db staff
print("Attempting database connection ........\n")

print(type(edge3))

spd.adjacenciesList.append(edge1)
spd.adjacenciesList.append(edge3)
예제 #5
0
    n3 = dbcon.get_vertex(3)[1]
    e1 = dbcon.get_edge(1)
    e2 = dbcon.get_edge(2)
    e3 = dbcon.get_edge(34)

    # nv1 = Vertex(n1)
    # nv2 = Vertex(n2)
    # nv3 = Vertex(n3)
    nv1 = Vertex('SPD')
    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)
예제 #6
0
    # print("Enter Target Vertex id: ")
    # svertex = int(input())

    n1 = dbcon.get_vertex(1)[1]
    n2 = dbcon.get_vertex(2)[1]
    n3 = dbcon.get_vertex(3)[1]
    e1 = dbcon.get_edge(1)
    e2 = dbcon.get_edge(2)
    e3 = dbcon.get_edge(3)

    nv1 = Vertex(n1)
    # nv1 = Vertex(dbcon.get_vertex(svertex)[1])
    nv2 = Vertex(n2)
    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)