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()