示例#1
0
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)
示例#2
0
    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)
示例#3
0
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)
示例#4
0
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())
示例#5
0
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())
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)'))