示例#1
0
    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.randomize_atts('p', 'Bus-UV')
        self.N.randomize_atts('s', (60, 120))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.constructgraph()
        self.F.drawgraph(self.figname)

        #########################

        self.VC = VertexCover(self.N, self.S, self.F,
                              len(self.F.filterednodes))
        self.VC.dummygraph = self.F.graph.copy()
示例#2
0
    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.randomize_atts('p', 'Bus-UV')
        self.N.randomize_atts('s', (60, 120))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.drawnodes(self.figname)

        self.nodes_list = copy.copy(list(self.F.graph.nodes))
示例#3
0
    def initialize_test(self):
        self.OD = ODPair(self.N, 0, self.N.size**2 - 1)
        self.OD.create_pair()

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()

        if self.draw_mode == 'draw_output':
            self.N.drawnetwork(self.figname)
            self.OD.draw_pair(self.figname)
            self.S.drawnetwork(self.figname)
    def create_ellipse_slanted(self, i):
        plt.clf()
        z = i + 1
        o = (z - 1) * (self.size + 1)
        d = (self.size - z) * (self.size + 1)

        self.N = Network(self.size, self.scale)
        self.N.creategrid()
        self.N.drawnetwork(self.figname)

        self.OD = ODPair(self.N, o, d)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.drawnetwork(self.figname)
        self.progress.setValue(i + 1)
        QApplication.processEvents()
    def create_ellipse(self, i):
        plt.clf()
        node = i + self.start

        if node != self.pivot and node <= self.end:
            plt.clf()

            self.N = Network(self.size, self.scale)
            self.N.creategrid()
            self.N.drawnetwork(self.figname)

            self.OD = ODPair(self.N, self.pivot, node)
            self.OD.create_pair()
            self.OD.draw_pair(self.figname)

            self.S = Subnetwork(self.N, self.OD)
            self.S.reducenetwork()
            self.S.drawnetwork(self.figname)
            self.progress.setValue(i + 1)
            QApplication.processEvents()
示例#6
0
    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.same_atts('p', 'None')
        self.N.same_atts('s', (0, 6))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.constructgraph()
        self.F.drawnodes(self.figname)

        #########################

        self.VC = VertexCover(self.N, self.S, self.F, len(self.F.filterednodes))
        self.VC.find_best_vc()
        self.VC.constructgraph()

        #########################

        self.H = HillClimb(0.5, self.N, self.S, self.VC.cover, 1, self.figname)
        self.H.init_hill_climb()
示例#7
0
class Graph_Const_Test(QDialog):
    def __init__(self, size, scale, parent):
        super(Graph_Const_Test, self).__init__(parent)
        self.size = size
        self.scale = scale
        self.N = Network(self.size, self.scale)
        self.OD = None
        self.S = None
        self.F = None
        self.nodes_list = []
        self.figname = 'Graph_Construction'
        self.folder = 'graph_construction_test'
        ######################
        self.layout = QGridLayout(self)
        self.setGeometry(900, 100, 500, 60)
        self.setWindowTitle('Running Graph Construction Test: ' +
                            str(self.size) + '-' + str(self.scale))
        self.progress = QProgressBar(self)
        self.layout.addWidget(self.progress, 0, 0)

    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.randomize_atts('p', 'Bus-UV')
        self.N.randomize_atts('s', (60, 120))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.drawnodes(self.figname)

        self.nodes_list = copy.copy(list(self.F.graph.nodes))

    def node_graph(self, i):
        node = self.nodes_list[i]
        self.F.connect_node(node)

        self.F.drawgraph(self.figname)

        self.progress.setValue(i + 1)
        QApplication.processEvents()

    def test(self):
        self.filter()

        frames = len(self.nodes_list)
        self.progress.setMaximum(frames)
        self.show()

        fig = plt.figure(self.figname, figsize=(12, 12))

        video = anim.FuncAnimation(fig,
                                   self.node_graph,
                                   frames=frames,
                                   interval=500,
                                   blit=False)

        if not os.path.exists(self.folder):
            os.mkdir(self.folder)

        video.save(self.folder + '/' + str(self.size) + '_' + str(self.scale) +
                   'km' + '.mp4',
                   writer='ffmpeg')

        plt.clf()
        self.close()
    def test(self):
        self.show()

        plt.figure(self.figname, figsize=(12, 12))

        scale_list = truncatelist(self.truncation,
                                  self.attribute_dict[self.attribute])
        size = int(2**(len(scale_list) - 1)) + 1
        scale = 1

        ############################

        N = Network(size, scale)
        N.creategrid()
        corridors = fractalize(scale_list)

        N.fractal_atts(self.attribute, corridors)

        for att in self.attribute_list:
            if att != self.attribute:
                N.same_atts(att, random.choice(self.attribute_dict[att]))

        N.drawnetwork(self.figname)

        self.progress.setValue(1)
        QApplication.processEvents()

        ############################

        OD = ODPair(N, 0, size**2 - 1)
        OD.create_pair()
        OD.draw_pair(self.figname)

        self.progress.setValue(2)
        QApplication.processEvents()

        ############################

        S = Subnetwork(N, OD)
        S.reducenetwork()
        S.compute_affinities()

        S.drawnetwork(self.figname)

        self.progress.setValue(3)
        QApplication.processEvents()

        ############################

        F = FilteredNetwork(N, S)

        F.filter()
        F.clear_edges()
        F.constructgraph()

        F.drawnodes(self.figname)

        self.progress.setValue(4)
        QApplication.processEvents()

        label = str(self.attribute_dict[self.attribute].index(self.truncation))

        if self.attribute != 's':
            save_image(self.folder,
                       self.attribute + label + "_" + str(self.truncation))
        else:
            save_image(
                self.folder, self.attribute + label + "_" +
                str(self.truncation[0]) + "-" + str(self.truncation[1]))

        plt.clf()
        self.close()
示例#9
0
class Hill_Climb_Test(QDialog):
    def __init__(self, size, scale, frames, mode, parent):
        super(Hill_Climb_Test, self).__init__(parent)
        self.size = size
        self.scale = scale
        self.N = Network(self.size, self.scale)
        self.OD = None
        self.S = None
        self.F = None
        self.VC = None
        self.H = None
        self.mode = mode
        self.frames = frames
        self.figname = 'Hill_Climb_Test'
        self.folder = 'hill_climb_test'
        #########################
        self.layout = QGridLayout(self)
        self.setGeometry(900, 100, 500, 60)
        self.setWindowTitle('Running Hill Climbing Test: ' + str(self.size) + '-' + str(self.scale))
        self.progress = QProgressBar(self)
        self.layout.addWidget(self.progress, 0, 0)

    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.same_atts('p', 'None')
        self.N.same_atts('s', (0, 6))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.constructgraph()
        self.F.drawnodes(self.figname)

        #########################

        self.VC = VertexCover(self.N, self.S, self.F, len(self.F.filterednodes))
        self.VC.find_best_vc()
        self.VC.constructgraph()

        #########################

        self.H = HillClimb(0.5, self.N, self.S, self.VC.cover, 1, self.figname)
        self.H.init_hill_climb()

    def climb(self, i):
        plt.clf()
        self.N.drawnetwork(self.figname)
        self.OD.draw_pair(self.figname)
        self.S.drawnetwork(self.figname)
        self.F.drawnodes(self.figname)
        self.VC.drawgraph(self.figname)

        self.H.climb_trial(i)
        self.H.optimalpath = self.H.iterations['guess'][0]
        self.H.optimaltv = self.H.iterations['guess'][1]

        if self.mode == 'simple':
            self.H.determine_simplified_optimal_path()
        else:
            self.H.determine_optimal_path()

        self.H.draw_optimal_path(self.figname)

        self.progress.setValue(i+1)
        QApplication.processEvents()

    def test(self):
        self.filter()

        frames = self.frames
        self.progress.setMaximum(frames)
        self.show()

        fig = plt.figure(self.figname, figsize=(12, 12))

        video = anim.FuncAnimation(fig, self.climb, frames=frames, interval=100, blit=False)

        if not os.path.exists(self.folder):
            os.mkdir(self.folder)

        video.save(self.folder + '/' + str(self.size) + '_' + str(self.scale) + 'km' + '.mp4', writer='ffmpeg')

        plt.clf()
        self.close()
示例#10
0
class Vertex_Cover_Test(QDialog):
    def __init__(self, size, scale, parent):
        super(Vertex_Cover_Test, self).__init__(parent)
        self.size = size
        self.scale = scale
        self.N = Network(self.size, self.scale)
        self.OD = None
        self.S = None
        self.F = None
        self.VC = None
        self.figname = 'Vertex_Cover_Test'
        self.folder = 'vertex_cover_test'
        #########################
        self.layout = QGridLayout(self)
        self.setGeometry(900, 100, 500, 60)
        self.setWindowTitle('Running Vertex Cover Test: ' + str(self.size) +
                            '-' + str(self.scale))
        self.progress = QProgressBar(self)
        self.layout.addWidget(self.progress, 0, 0)

    def filter(self):
        self.N.creategrid()
        self.N.randomize_atts('h', 'Motorway')
        self.N.randomize_atts('p', 'Bus-UV')
        self.N.randomize_atts('s', (60, 120))

        self.N.drawnetwork(self.figname)

        #########################

        self.OD = ODPair(self.N, 0, self.size**2 - 1)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        #########################

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()
        self.S.drawnetwork(self.figname)

        #########################

        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter()
        self.F.clear_edges()
        self.F.constructgraph()
        self.F.drawgraph(self.figname)

        #########################

        self.VC = VertexCover(self.N, self.S, self.F,
                              len(self.F.filterednodes))
        self.VC.dummygraph = self.F.graph.copy()

    def vc_approximation(self, i):
        if len(list(self.VC.dummygraph.edges)) != 0 and i < int(
                math.ceil(len(list(self.F.graph.nodes)) / 2)) and i > 0:
            edge = random.choice(list(self.VC.dummygraph.edges))

            plt.clf()
            self.N.drawnetwork(self.figname)
            self.OD.draw_pair(self.figname)
            self.S.drawnetwork(self.figname)
            self.F.drawnodes(self.figname)

            self.VC.cover += self.VC.remove_neighbors(edge)

            self.VC.constructgraph()
            self.VC.drawgraph(self.figname)

            self.VC.draw_dummy_graph(self.figname)

            self.progress.setValue(i + 1)
            QApplication.processEvents()

        else:
            self.progress.setValue(i + 1)
            QApplication.processEvents()
            pass

    def test(self):
        self.filter()

        frames = int(math.ceil(len(list(self.F.graph.nodes)) / 2))
        self.progress.setMaximum(frames)
        self.show()

        fig = plt.figure(self.figname, figsize=(12, 12))

        video = anim.FuncAnimation(fig,
                                   self.vc_approximation,
                                   frames=frames,
                                   interval=2000,
                                   blit=False)

        if not os.path.exists(self.folder):
            os.mkdir(self.folder)

        video.save(self.folder + '/' + str(self.size) + '_' + str(self.scale) +
                   'km' + '.mp4',
                   writer='ffmpeg')

        plt.clf()
        self.close()
示例#11
0
class PaperA_Test(QDialog):
    def __init__(self, alpha, network, parent, **kwargs):
        super(PaperA_Test, self).__init__(parent)
        self.N = network
        self.OD = None
        self.S = None
        self.F = None
        self.x = []
        self.y = []
        self.alpha = alpha

        if len(kwargs) != 0:
            self.draw_mode = kwargs['draw_mode']
            self.output_mode = kwargs['output_mode']
        else:
            self.draw_mode = None
            self.output_mode = None

        self.figname = 'PaperA_Test'
        ############################
        self.layout = QGridLayout(self)
        self.setGeometry(900, 100, 500, 60)
        self.setWindowTitle('Running Paper A Test: ' + str(self.alpha))
        self.progress = QProgressBar(self)
        self.layout.addWidget(self.progress, 0, 0)

    def initialize_test(self):
        self.OD = ODPair(self.N, 0, self.N.size**2 - 1)
        self.OD.create_pair()

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.compute_affinities()

        if self.draw_mode == 'draw_output':
            self.N.drawnetwork(self.figname)
            self.OD.draw_pair(self.figname)
            self.S.drawnetwork(self.figname)

    def filter_nlargest(self, n):
        self.F = FilteredNetwork(self.N, self.S)
        self.F.filter(n)
        self.F.clear_edges()

        if self.draw_mode == 'draw_output':
            self.F.drawnodes(self.figname)

        H = HillClimb(self.alpha, self.N, self.S, self.F.filterednodes, 1,
                      self.figname)

        if self.draw_mode == 'draw_output':
            H.multiple_trials(self.draw_mode, self.output_mode)
        else:
            H.multiple_trials()

        self.x.append(n)
        self.y.append(H.optimaltv)

    def test(self, runs, interval):
        self.progress.setMaximum(runs)
        self.show()

        for i in range(runs + 1):
            self.initialize_test()
            if i == 0:
                self.filter_nlargest(1)
            else:
                self.filter_nlargest(i * interval)

            if self.draw_mode == 'draw_output':
                save_image(str(self.alpha), str(i) + '_' + interval + '_nodes')

            self.progress.setValue(i + 1)
            QApplication.processEvents()
            plt.clf()

        plt.plot(self.x, self.y, '-o')

        axes = plt.gca()
        axes.set_xlim(0, runs * interval)
        axes.set_ylim(0, 2 * self.N.size)

        if self.draw_mode == 'draw_output':
            save_image(str(self.alpha), 'node-obj plot')
        else:
            save_image('paperA_test/no_drawing',
                       str(self.alpha) + 'node-obj plot')

        plt.clf()
        self.close()
        return min(self.y)
class EllipseTest(QDialog):
    def __init__(self, size, scale, mode, parent):
        super(EllipseTest, self).__init__(parent)
        self.size = size
        self.scale = scale
        ######################
        self.N = None
        self.OD = None
        self.S = None
        ######################
        self.end = int(math.floor((self.size**2 - 1) / 2))
        self.pivot = int(self.end - math.floor(self.size / 2) + 1)
        self.start = int(self.end - math.floor(self.size) + 1)
        ######################
        self.folder = 'ellipse_test'
        self.figname = "Ellipse_Test"
        self.mode = mode
        ######################
        self.layout = QGridLayout(self)
        self.setGeometry(900, 100, 500, 60)
        self.setWindowTitle('Running Ellipse Test: ' + str(self.size) + '-' +
                            str(self.scale))
        self.progress = QProgressBar(self)
        self.layout.addWidget(self.progress, 0, 0)
        self.progress.setMaximum(self.size)

    def create_ellipse(self, i):
        plt.clf()
        node = i + self.start

        if node != self.pivot and node <= self.end:
            plt.clf()

            self.N = Network(self.size, self.scale)
            self.N.creategrid()
            self.N.drawnetwork(self.figname)

            self.OD = ODPair(self.N, self.pivot, node)
            self.OD.create_pair()
            self.OD.draw_pair(self.figname)

            self.S = Subnetwork(self.N, self.OD)
            self.S.reducenetwork()
            self.S.drawnetwork(self.figname)
            self.progress.setValue(i + 1)
            QApplication.processEvents()

    def create_ellipse_slanted(self, i):
        plt.clf()
        z = i + 1
        o = (z - 1) * (self.size + 1)
        d = (self.size - z) * (self.size + 1)

        self.N = Network(self.size, self.scale)
        self.N.creategrid()
        self.N.drawnetwork(self.figname)

        self.OD = ODPair(self.N, o, d)
        self.OD.create_pair()
        self.OD.draw_pair(self.figname)

        self.S = Subnetwork(self.N, self.OD)
        self.S.reducenetwork()
        self.S.drawnetwork(self.figname)
        self.progress.setValue(i + 1)
        QApplication.processEvents()

    def test(self):
        self.show()

        fig = plt.figure(self.figname, figsize=(12, 12))

        if self.mode == "straight":
            video = anim.FuncAnimation(fig,
                                       self.create_ellipse,
                                       frames=self.size,
                                       interval=100,
                                       blit=False)
        elif self.mode == "slanted":
            video = anim.FuncAnimation(fig,
                                       self.create_ellipse_slanted,
                                       frames=self.size,
                                       interval=100,
                                       blit=False)

        if not os.path.exists(self.folder):
            os.mkdir(self.folder)

        video.save(self.folder + '/' + str(self.size) + '_' + str(self.scale) +
                   'km' + '.mp4',
                   writer='ffmpeg')

        plt.clf()
        self.close()
    def test(self):

        self.show()

        N = Network(self.size, self.scale)
        N.creategrid()

        for i in self.random:
            N.randomize_atts(i, self.input[i])

        for i in self.same:
            N.same_atts(i, self.input[i])

        for i in self.random_c:
            N.randomize_atts_corridors(i, self.input[i])

        N.create_corridor('h', ['Motorway'], 'row', [int(self.size / 2)])
        N.create_corridor('p', ['None'], 'row', [int(self.size / 2)])
        N.create_corridor('s', [(0, 6)], 'row', [int(self.size / 2)])

        N.create_corridor('h', ['Motorway'], 'column', [int(0)])
        N.create_corridor('p', ['None'], 'column', [int(0)])
        N.create_corridor('s', [(0, 6)], 'column', [int(0)])

        N.create_corridor('h', ['Motorway'], 'column', [int(self.size - 1)])
        N.create_corridor('p', ['None'], 'column', [int(self.size - 1)])
        N.create_corridor('s', [(0, 6)], 'column', [int(self.size - 1)])

        N.drawnetwork(self.figname)

        self.progress.setValue(1)
        QApplication.processEvents()

        #################################

        OD = ODPair(N, self.origin, self.destination)
        OD.create_pair()
        OD.draw_pair(self.figname)

        self.progress.setValue(2)
        QApplication.processEvents()

        #################################

        S = Subnetwork(N, OD)
        S.reducenetwork()
        S.compute_affinities()
        S.drawnetwork(self.figname)

        self.progress.setValue(3)
        QApplication.processEvents()

        #################################

        F = FilteredNetwork(N, S)
        F.filter()
        F.clear_edges()
        F.constructgraph()
        F.drawnodes(self.figname)

        self.progress.setValue(4)
        QApplication.processEvents()

        #################################

        VC = VertexCover(N, S, F, len(F.filterednodes))
        VC.find_best_vc()
        VC.constructgraph()
        VC.drawgraph(self.figname)

        self.progress.setValue(5)
        QApplication.processEvents()

        #################################

        HC = HillClimb(0.5, N, S, VC.cover, self.hctrials, self.figname)
        HC.multiple_trials('draw_output', self.mode)

        self.progress.setValue(6)
        QApplication.processEvents()

        #################################

        randomtags = str()
        sametags = str()

        for i in self.random:
            randomtags += i

        for j in self.random_c:
            randomtags += (j + '-')

        for k in self.same:
            sametags += k

        taglist = {
            'Motorway': 1,
            'Trunk': 2,
            'Primary': 3,
            'Secondary': 4,
            'Tertiary': 5,
            'Residential': 6,
            'Service': 7
        }
        htag = str(taglist[self.input['h']]) + '-' + str(self.input['h'])
        ptag = str(self.input['p'])
        stag = str(self.input['s'][0]) + '-' + str(self.input['s'][1])

        if not os.path.exists('standard_test/' + self.folder):
            os.mkdir('standard_test/' + self.folder)

        save_image(
            'standard_test/' + self.folder + '/' + 'R' + randomtags + '_' +
            'S' + sametags, '_' + htag + ptag + stag)

        self.progress.setValue(7)
        QApplication.processEvents()

        plt.clf()
        self.close()