def main():
    """ Definiranje main funkcije .... """

    #Inicijaliziraj mrezu
    net_gen = NetworkGenerator(100)   # implementirat broj nodova
    net = net_gen.generate_random_network()

    #Postavi algoritam i INITIATOR node
    net.algorithms = ((ShoutAlgorithm, {'informationKey': 'I'}),)


    # Zamjena range(1) za jedan node(Shout) ili vise(10) za multishout.
    # Definiranje random INIT nodova
    # for random_counter in range(1):

    for random_counter in range(1):
        rand_number = randrange(0, 100)
        some_node = net.nodes()[rand_number]
        some_node.memory['I'] = 'Slanje vremena'


    #Napravi simulaciju, spremi u datoteku "Shout.tar.gz"
    sim = Simulation(net)
    write_npickle(net, 'Shout.tar.gz')
    #sim.reset()

    #Pokreni
    sim.run()

    # print memorije nodova ... 
    for node in net.nodes():
        print node.memory

    #Spremanje dijagrama nodova kao slika u png formatu
    net.show(savefig="image.png")
def main():
    #Inicijaliziraj mrezu
    net_gen = NetworkGenerator(n_min=3, n_count=5, n_max=10)   # broj nodova
    net = net_gen.generate_random_network()

    #Add distance sensor
    for node in net.nodes():
        node.compositeSensor = (NeighborsSensor, DistSensor)

    #Postavi algoritam i INITIATOR node
    net.algorithms = ((PTConstruction, {'informationKey': 'I'}),)

    #Samo jedan node je INITIATOR!
    some_node = net.nodes()[0]
    some_node.memory['I'] = 'Hello distributed world'

    write_npickle(net, 'PTConstruction.tar.gz')

    #Napravi simulaciju 
    sim = Simulation(net)
    # sim.reset()

    #Debug
    print "Prije pokretanja!"

    #Pokreni
    sim.run()

    for node in net.nodes():
        print node.memory

    net.show(savefig="image.png")
Beispiel #3
0
    def test_santoro2007(self):
        N_ITERS = 5
        N_NETWORKS = 15
        N_NODES_STEP = 5

        node_range = 100
        nets = [
            [(100, 100)],
            [(100, 100), (175, 250), (250, 175), (100, 250),
                (175, 175), (100, 175)],
            [(100, 100), (150, 200), (175, 175), (175, 100),
                (250, 175), (250, 250), (325, 250), (325, 325), (325, 400)]
        ]

        for i, node_positions in enumerate(nets, start=1):
            net = Network()
            for node_pos in node_positions:
                net.add_node(pos=node_pos, commRange=node_range)

            name = 'Special %d' % i

            net.algorithms = (YoYo, )
            sim = Simulation(net, logLevel='WARNING')
            sim.run()

            min_id = min(sim.network.nodes(), key=lambda node: node.id).id
            for node in sim.network.nodes():
                if node.id == min_id:
                    # Check if the node with the smallest ID is the LEADER
                    assert node.status == 'LEADER', \
                        '%s: Node %d has status %s, not LEADER' % \
                        (name, node.id, node.status)
                else:
                    # Check if every other node is PRUNED
                    assert node.status == 'PRUNED', \
                        '%s: Node %d has status %s, not PRUNED' % \
                        (name, node.id, node.status)

        for i in range(N_ITERS):
            for n_nodes in range(N_NODES_STEP,
                                 N_NETWORKS*N_NODES_STEP+N_NODES_STEP,
                                 N_NODES_STEP):

                net_gen = NetworkGenerator(n_nodes)
                net = net_gen.generate_random_network()

                name = 'Random %d, %d nodes' % (i, n_nodes)

                net.algorithms = (YoYo, )
                sim = Simulation(net, logLevel='WARNING')
                sim.run()

                min_id = min(sim.network.nodes(), key=lambda node: node.id).id
                for node in sim.network.nodes():
                    if node.id == min_id:
                        # Check if the node with the smallest ID is the LEADER
                        assert node.status == 'LEADER', \
                            '%s: Node %d has status %s, not LEADER' % \
                            (name, node.id, node.status)
                    else:
                        # Check if every other node is PRUNED
                        assert node.status == 'PRUNED', \
                            '%s: Node %d has status %s, not PRUNED' % \
                            (name, node.id, node.status)