def test2(): de=sim.Environment() print('test2') x=[None] q=[None] for i in range(5): x.append(sim.Component(name='x.')) q.append(sim.Queue(name='q.')) y=sim.Component(name='y') x[1].enter(q[1]) y.enter(q[1]) x[1].enter(q[2]) x[2].enter(q[2]) x[2].enter(q[1]) x[3].enter(q[2]) q[1].print_statistics() q[2].print_statistics() q[1].union(q[2],'my union').print_statistics() q[1].difference(q[2],'my difference').print_statistics() q[1].intersect(q[2],'my intersect').print_statistics() q[1].copy('my copy').print_statistics() # q[1].move('my move').print_statistics() q[1].print_statistics() print (q[1]) yy=q[1].component_with_name('y') ii=q[1].index(y) print(yy,ii)
def process(self): """ main sim.Component process to run on instantiation, sends an order for entities when below its indicated threshold, conducts a warmup period to populate kanban at beginning of sim.env simulation """ # conduct initial setup/warmup period # self.order_gen.send_order(self.init_qty) # self.entity_ordered(self.init_qty) # yield self.hold(self.warmup_time) # prepopulate entitys if self.init_qty > 0: # # yield from self.populate() # self.on_order.set(self.init_qty) for _ in range(self.init_qty): self.queue.append(sim.Component(name='dummy')) # self.order_gen.populate_inv(location=self.env.objs[self._name]) self.update_inv() while True: yield self.wait( (self.total_inv, '$ <' + str(self.order_point)) ) # wait until the inventory level falls below the indicated threshold self.order_gen.send_order(self.order_qty) self.entity_ordered(self.order_qty)
def test25(): de=sim.Environment() q=sim.Queue('q') c={} for i in range(8): c[i]=sim.Component(name='c.') c[i].enter(q) print(q) for c in q: c.priority(q,-c.sequence_number()) print(q)
def test13(): de=sim.Environment() q=sim.Queue() for i in range(10): c=sim.Component(name='c.') q.add(c) print(q) for c in q: print (c.name()) for i in range(20): print(i,q[i].name())
def test42(): class Rij(sim.Queue): pass class Komponent(sim.Component): pass class Reg(sim.Monitor): pass env=sim.Environment(trace=True) q1=sim.Queue('q1') q2=sim.Queue('q2') for i in range(15): c = sim.Component(name='c.') if i < 10: q1.add_sorted(c, priority=i) if i > 5: q2.add_sorted(c, priority=i+100) env.run(1000) del q1[1] print('length',q1.length.number_of_entries()) print('length_of_stay',q1.length_of_stay.number_of_entries()) q1.print_info() q2.print_info() (q1 - q2).print_info() (q2 - q1).print_info() (q1 & q2).print_info() (q1 | q2).print_info() (q2 | q1).print_info() (q1 ^ q2).print_info() q3=sim.Queue(name='q3',fill=q1) q4=sim.Queue(name='q4',fill=q1) print('before') q3.print_info() del q3[-1:-4:-1] print('after') q3.print_info() q4.pop(3) for c in q3: print(c.name(),c.count(q2),c.count(),q4.count(c),c.queues())
def test24(): class X1(sim.Component): def process(self): print('**x1 active') yield self.request((r,2)) yield self.hold(100) yield self.passivate() def p1(self): yield self.hold(0.5) yield self.activate(process=self.process()) yield self.hold(100) yield self.passivate() class X2(sim.Component): def process(self): yield self.hold(1) x1.activate(at=3,keep_request=True) yield self.hold(5) x1.request(r) yield self.hold(1) x1.passivate() de.main().passivate() yield self.hold(5) x1.activate(at=20) class X3(sim.Component): def process(self): a=1 yield self.hold(1) pass de=sim.Environment(trace=True) x1=X1(process='p1') x1.activate(at=0.5,process='process',urgent=True,mode='blabla') x2=X2() x3=X3() print('***name=',x3.running_process()) x4=sim.Component() x3.activate(process='process') r=sim.Resource('resource') de.run(till=sim.inf)
def test11(): class Do1(sim.Component): def process(self): while True: if q1.length()==0: yield self.passivate() print('------') for cc in q1: print(de.now(),cc.name()) yield self.hold(1) class Do2(sim.Component): def process(self): c[1].enter(q1) c[2].enter(q1) if d1.ispassive(): d1.reactivate() yield self.hold(till=1.5) c[3].enter(q1) c[4].enter_at_head(q1) if d1.ispassive(): d1.reactivate() yield self.hold(till=20.5) for cc in q1: cc.leave(q1) if d1.ispassive(): d1.reactivate() class X(sim.Component): pass de=sim.Environment(trace=True) d2=Do2() d1=Do1() q1=sim.Queue('q1') q2=sim.Queue('q2') c={} for i in range(10): c[i]=sim.Component(name='c'+str(i)) c[i].enter(q2) x=q2.pop() print('x=',x) print('head of q1',q1.head()) print('q1[0]',q1[0]) print('tail of q1',q1.tail()) print('q1[-1]',q1[-1]) print('head of q2',q2.head()) print('q2[0]',q2[0]) print('tail of q2',q2.tail()) print('q2[-1]',q2[-1]) print('**c[0]=',c[0]) c[0].enter(q1) c[0].set_priority(q1,10) print(q1) c[3].set_priority(q2,10) c[1].set_priority(q2,-1) c[5].set_priority(q2,10) for cx in q2: print(cx.name()) for cx in reversed(q2): print(cx.name(),cx in q1) print ('--') print(q2[-1]) print('---') env.run(till=100)
def test7(): print('test7') class X1(sim.Component): def process(self): yield self.request(r1,5,r2,2,greedy=True,fail_at=5) yield self.passivate() class X2(sim.Component): def process(self): yield self.request(r1,8,r2) yield self.passivate() class X3(sim.Component): def process(self): yield self.request(r1,7) yield self.passivate() de=sim.Environment(trace=True) x1=X1() x2=X2() x3=X3() X4=sim.Component() r1=sim.Resource(capacity=10,anonymous=True) r2=sim.Resource() r3=sim.Resource() q={} for i in range(1,5): q[i]=sim.Queue() x1.enter(q[1]) x1.enter(q[2]) x1.enter(q[3]) x2.enter(q[1]) x3.enter(q[1]) env.run(10) r2.capacity(2) env.run(20) print(sim.default_env) print(x1) print(x2) print(x3) print (q[1]) print (q[2]) print (q[3]) print (q[4]) print(r1) print(r2) print(r3) d=sim.Exponential(10) print(d) print(sim.Uniform(1,2)) print(sim.Triangular(40,150,55)) print(sim.Distribution('Constant(5)'))