Newer
Older
from random import (
randint,
sample,
)
from .trace import TickTrace
class RandomTrace(TickTrace):
def __init__(self, duration=100, nodes=100, tick=1,
min_toggles=1, max_toggles=10):
super().__init__(duration, nodes, tick)
if min_toggles < 0:
raise ValueError('min_toggles < 0')
if min_toggles > max_toggles:
raise ValueError('min_toggles > max_toggles')
if max_toggles > nodes:
raise ValueError('max_toggles > nodes')
self.min_toggles = min_toggles
self.max_toggles = max_toggles
def process(self, network):
''''''
env = self.env
links = network.links
while env.now < self.duration:
to_toggle = randint(self.min_toggles, self.max_toggles)
for a, b in sample(links, to_toggle):
network.toggle_link(a, b)
yield self.tick()