Skip to content
Snippets Groups Projects
random_node.py 990 B
Newer Older
Jarrod Pas's avatar
Jarrod Pas committed
from random import Random

from pydtn import Network, Node, random_trace, random_traffic

class RandomNode(Node):
    def __init__(self, seed=None, **options):
        super().__init__(**options)
        self.random = Random(seed)

    def forward(self, packet):
        neighbours = list(self.neighbours)
        if neighbours:
            target = self.random.choice(neighbours)
            return {target: 'random'}
        return {}

def main():
    nodes = 50
    seed  = 42
    traffic_speed = 1

    node_options = {
        'seed': seed,
        'tick_rate': 1,
    }

    nodes = {
        node_id: RandomNode(**node_options)
        for node_id in range(nodes)
    }

    trace = random_trace(nodes, seed=seed)
    traffic = random_traffic(nodes, speed=traffic_speed, seed=seed)
    network = Network(nodes, traffic=traffic, trace=trace)

    # run simulation for 500 ticks
    network.run(until=500)

    print(network.stats_summary)
Jarrod Pas's avatar
Jarrod Pas committed

if __name__ == '__main__':
    exit(main())