class simulation: def __init__(self): self.tick = 0 self.lasttick = 0 self.ableworktime = 0 self.bakerworktime = 0 self.ableworking = -1 self.bakerworking = -1 self.queue = [] self.pashmak = None self.history = [] self.works = [] self.ableworkingnow = None self.bakerworkingnow = None def initpashmak(self, a, b): self.pashmak = Pashmak(a, b) def nexttick(self): workername = '' while (True): if (self.ableworking > 0): self.ableworking -= 1 if (self.ableworking == 0): self.ableworking = -1 if (self.ableworkingnow): self.ableworkingnow.endtime = self.tick self.works.append(self.ableworkingnow) if (self.bakerworking > 0): self.bakerworking -= 1 if (self.bakerworking == 0): self.bakerworking = -1 if (self.bakerworkingnow): self.bakerworkingnow.endtime = self.tick self.works.append(self.bakerworkingnow) if (self.tick < self.lasttick): self.queue.extend(self.pashmak.queue(self.tick)) if (len(self.queue) > 0 and self.ableworking == -1): self.ableworking = self.ableworktime self.ableworkingnow = self.queue.pop(0) self.ableworkingnow.starttime = self.tick self.ableworkingnow.servname = 'able' if (len(self.queue) > 0 and self.bakerworking == -1): self.bakerworking = self.bakerworktime self.bakerworkingnow = self.queue.pop(0) self.bakerworkingnow.starttime = self.tick self.bakerworkingnow.servname = 'baker' self.history.append((len(self.queue), self.ableworking, self.bakerworking)) self.tick += 1 if (self.tick > self.lasttick and len(self.queue) == 0 and self.ableworking == -1 and self.bakerworking == -1): break
def initpashmak(self, a, b): self.pashmak = Pashmak(a, b)