Пример #1
0
def test12():

    class X(sim.Component):
        def process(self):
            sim.Animate(text='Piet' ,x0=100,y0=100,x1=500,y1=500,t1=10)
            while True:
                print(sim.default_env())
                yield self.hold(1)

    de=sim.Environment(trace=True)
    env.animation_parameters(speed=1)
    a=sim.Environment(name='piet.')
    b=sim.Environment(name='piet.')
    c=sim.Environment(name='piet.')
    print(a)
    print(b)
    print(c)

    X(auto_start=False)
    X(auto_start=False)
    X(auto_start=False)
    X()
    env.animation_parameters(speed=0.1,video='x.mp4')
    env.run(4)
    env.run(2)
    env.run(4)
Пример #2
0
def salabim():
    class Control(sim.Component):
        def process(self):
            an1 = sim.Animate(text='sim', x0=227, y0=768 / 2, fontsize0=200)
            an2 = sim.Animate(text='ulation',
                              x0=654,
                              y0=768 / 2,
                              fontsize0=200)
            yield self.hold(3)
            an2.update(y1=900, t1=env.now() + 3)
            an1.update(x1=176, t1=env.now() + 3)
            yield self.hold(3)
            an3 = sim.Animate(text='salabim',
                              x0=676,
                              y0=-100,
                              y1=768 / 2,
                              fontsize0=200,
                              t1=env.now() + 3)
            yield self.hold(6)
            an1.update(x1=-130, t1=env.now() + 3)
            an3.update(x1=512, t1=env.now() + 1.5)
            yield self.hold(4)
            an3.update(fontsize1=300, t1=env.now() + 4, textcolor1='red')
            yield self.hold(6)
            an4 = sim.Animate(text='discrete event simulation',
                              x0=512,
                              y0=220,
                              fontsize0=87)

    env = sim.Environment(trace=False)
    env.animation_parameters(x1=1024, background_color='30%gray')

    Control()

    env.run(30)
Пример #3
0
def main(num_floors=10, num_elevators=1, logic=0, seed=123456):
    env = sim.Environment(random_seed=seed)

    Building(num_floors=num_floors)
    global floors, elevators, requests
    floors = {i: Floor(i) for i in range(num_floors)}
    elevators = [Elevator(system=logic) for _ in range(num_elevators)]
    requests = {}

    env.trace(True)
    env.run(1000)
    env.trace(False)
    for floor in floors.values():
        floor.occupants.reset_monitors()
    env.run(50000)

    with open("db.txt", "w") as f:
        with open('trace.txt', "w") as f_t:
            f_t.write("floor\tpeople\taverage length of stay\n")
            for floor in floors.values():
                f.write(f"{floor.level_n},{floor.occupants.length_of_stay.mean()}\r\n")
                f_t.write(f"{floor.level_n}\t"
                          f"{floor.occupants.length_of_stay.number_of_entries()}"
                          f"{floor.occupants.length.mean():15.3f}"
                          f"{floor.occupants.length_of_stay.mean():15.3f}\r\n")
Пример #4
0
def test1():
    print('test1')

    class X(sim.Component):
        def __init__(self, extra=1, *args, **kwargs):
            sim.Component.__init__(self, *args, **kwargs)
            self.extra = extra

        def process(self):
            while True:
                yield self.hold(1)
                pass

        def action2(self):
            for i in range(5):
                yield self.hold(25)

            yield self.hold(1)

        def actionx(self):
            pass

    class Y(sim.Component):
        def process(self):
            x[3].reactivate(process=x[3].action2(), at=30)
            x[4].cancel()
            yield self.hold(0.5)
            yield self.standby()
            yield self.activate(process=self.action2(0.3))

        def action2(self, param):
            yield self.hold(param)

    class Monitor(sim.Component):
        def process(self):
            while sim.now() < 30:
                yield self.standby()

    de = sim.Environment(trace=True)
    q = sim.Queue()

    x = [0]
    for i in range(10):
        x.append(X(name='x.', at=i * 5))
        #        x[i+1].activate(at=i*5,proc=x[i+1].action())
        x[i + 1].enter(q)

    x[6].suppress_trace(True)
    i = 0
    for c in q:
        print(c._name)
        i = i + 1
        if i == 4:
            x[1].leave(q)
            x[5].leave(q)
            x[6].leave(q)

    y = Y(name='y')
    #    y.activate(at=20)
    sim.run(till=35)
Пример #5
0
def test17():
    def actiona():
        bb.remove()
        sl.remove()

    def actionb():
        ba.remove()

    de = sim.Environment()

    for x in range(10):
        for y in range(10):
            a = sim.Animate(rectangle0=(0, 0, 95, 65),
                            x0=5 + x * 100,
                            y0=5 + y * 70,
                            fillcolor0='blue',
                            linewidth0=0)
    ba = sim.AnimateButton(x=100, y=700, text='A', action=actiona)
    bb = sim.AnimateButton(x=200, y=700, text='B', action=actionb)
    sl = sim.AnimateSlider(x=300, y=700, width=300)
    sim.Animate(text='Text',
                x0=700,
                y0=750,
                font='Times NEWRomian Italic',
                fontsize0=30)
    de.animation_parameters(animate=True)
    sim.run(5)
    sim.animation_parameters(animate=False)
    sim.run(100)
    sim.animation_parameters(animate=True, background_color='yellow')
    sim.run(10)
Пример #6
0
def run_optimisation(envData, optData):
    for lightGreenTime in range(int(optData['lightGreenTimeRange'][0]),
                                int(optData['lightGreenTimeRange'][1]),
                                int(optData['lightGreenTimeStep'])):
        runningAverageTotal = 0
        dataArray = []
        for iter in range(int(optData['iterationsPerSetting'])):
            averageWaitingTime = 0
            sim.random_seed = time.time()
            print(lightGreenTime)
            env = sim.Environment(trace=False, random_seed=time.time())
            env.animation_parameters(speed=10)
            trafficEnv = TrafficEnvironment(envData, lightGreenTime)
            env.run(int(optData['envTime']))
            averageWaitingTime = sum([
                trafficEnv.lightList[0].vehiclesQueue.length_of_stay.mean(),
                trafficEnv.lightList[1].vehiclesQueue.length_of_stay.mean()
            ]) / 2
            runningAverageTotal += averageWaitingTime
            print(averageWaitingTime)
        dataArray.append([lightGreenTime, runningAverageTotal / 20])

    x, y = zip(*dataArray)

    xnew = np.linspace(np.array(x).min(), np.array(x).max(), 300)

    spl = make_interp_spline(np.array(x), np.array(y), k=3)
    ynew = spl(xnew)

    plt.plot(xnew, ynew, color='g')
    plt.xlabel('Light Green Time')
    plt.ylabel('Average Waiting Time')
    plt.show()
Пример #7
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)
Пример #8
0
def test48():
    
    class A(sim.Component):
        def myhold(self, t):
            print('**')
            yield self.hold(t)

        def process(self):
            while env.now()<5:
                if env.now()>30:
                    env.main().activate()
                print('aa')
                self.myhold(1)
                yield self.hold(1)


    class B(sim.Component):
        def process(self):
            while True:
                yield self.hold(1)
    env = sim.Environment(trace=True)
    env.suppress_trace_standby(True)
    A()
    B()
    env.run(8)
    print('ready')
Пример #9
0
def test47():
    class Dodo(sim.Component):
        pass

    class Car(sim.Component):
        def setup(self, color='unknown'):
            self.color=color
            print(self.name(),color)

        def process(self, duration):
            yield self.hold(duration)
            yield self.activate(process='process', duration=50)

        def other(self):
            yield self.hold(1)

    env=sim.Environment(trace=True)
    Car(process=None)
    Car(color='red', duration=12, mode='ABC')
    Car(color='blue',process='other')


    Dodo()

    env.run(100)
Пример #10
0
    def define_environment(self):

        self.env = sim.Environment(trace=self.tracing, time_unit="minutes")
        self.env.modelname(
            "Circuit Board Production: A Two-Stage Hybrid Flow Shop Scheduling Problem"
        )
        self.env.animation_parameters(
            animate=self.animation,
            synced=False,
            width=ENV_W,
            height=ENV_H,
            background_color="60%gray",
        )
        if self.animation == True:
            self.info_makespan = sim.AnimateText(text="Makespan: ",
                                                 x=10,
                                                 y=420,
                                                 fontsize=GLOB_FONTSIZE)
            self.info_tardiness = sim.AnimateText(text="Total Tardiness: 0",
                                                  x=10,
                                                  y=390,
                                                  fontsize=GLOB_FONTSIZE)
            self.info_setups = sim.AnimateText(text="Major Setups: 0",
                                               x=10,
                                               y=360,
                                               fontsize=GLOB_FONTSIZE)
Пример #11
0
def test38():
    def animation_objects(self, value):
        if value=='blue':
            an1=sim.Animate(circle0=(40,),fillcolor0=value, linewidth0=0)
        else:
            an1=sim.Animate(rectangle0=(-40,-20,40,20), fillcolor0=value,linewidth0=0)
        an2=sim.Animate(text=value,textcolor0='white')
        return (an1,an2)

    class X(sim.Component):
        def process(self):

            while True:
                for i in ('red','green','blue','yellow','red'):
                    letters.set(i[0])
                    light.set(i)
                    yield self.hold(1)

    class Q(sim.Queue):
        pass

    env=sim.Environment(trace=True)
    for i in range(3):
        q=Q(name='rij.')
    X()
    light=sim.State('light')
    light.animate()
    letters=sim.State('letters')
    letters.animate(x=100,y=100)

    env.animation_parameters(synced=False)
    env.run()
Пример #12
0
def test46():
    class Y(sim.Component):
        pass

    class X(sim.Component):
        def process(self):
            x=0

            for i in range(10):
                q.add(Y())
                print ('q.length=', q.length())
                if i==3:
                    monx.monitor(False)
                    monx.tally(x)
                if i==6:
                    monx.monitor(True)
                yield self.hold(1)
                x += 1

    env = sim.Environment()
    env.beep()
    monx = sim.MonitorTimestamp('monx')
    q = sim.Queue('q')
    X()

    env.run(20)
    print(monx.xt())
    print(q.length.xt())
Пример #13
0
def test33():
    class X(sim.Component):
        def process(self):

            yield self.hold(1)
            s1.set(1)
            yield self.hold(1)
            s1.set(2)
            s2.set('red')
            yield self.hold(2)
            s1.set(30)

    class Y(sim.Component):
        def process(self):
            while True:
                yield self.wait((s1,lambda x, component, state: x/2>self.env.now()))
                yield self.hold(1.5)

    class Z(sim.Component):
        def process(self):
            while True:
                yield self.wait((s2,lambda x, component, state: x in ("red","yellow")))
                yield self.hold(1.5)


    env=sim.Environment(trace=True)
    env.print_info()
    s1=sim.State(name='s.',value=0)
    s2=sim.State(name='s.',value='green')
    s3=sim.State(name='s.')
    q=sim.Queue('q.')
    x=X()
    y=Y()
    z=Z()
    env.run(10)
Пример #14
0
def test29():
    global light
    class Light(sim.Component):
        def setup(self):
            self.green=sim.State(name='green')

        def process(self):
            while True:
                yield self.hold(1)
                self.green.trigger(max=2)
                yield self.hold(1)
                self.green.reset()

    class Car(sim.Component):
        def process(self):
            while True:
                yield self.wait((light.green,True,1),(light.green,True,1),fail_delay=8,all=True)
                yield self.hold(sim.Uniform(1,3).sample())

    de=sim.Environment(trace=True)
    for i in range(10):
        car=Car()
    light=Light()
    de.run(10)
    light.green.print_statistics()
    print(light.green.value.xt())
    print(light.green.waiters())
Пример #15
0
def test57():
    class X(sim.Component):
        def process(self):
            while env.now()<run_length:
                an.update(text=str(run_length - env.now()))
                yield self.hold(1)
            env.animation_parameters(animate=False)
            print(self.env._animate)
#            yield self.hold(0)
            env.video('')
            env.main().activate()
     
    env = sim.Environment()
    env.animation_parameters(background_color='blue', modelname='test')
    env.video('test.gif')
    env.video_pingpong(False)
    env.video_repeat(2)

#    env.animation_parameters(video='test.avi+MP4V', speed=0.5)
    an = sim.Animate(text='', x0=100,y0=100, fontsize0=100)
    run_length = 1
    
    X()
    sim.Animate(line0=(0,50,None,None), line1=(0,50,1024,None), linewidth0=4,t1=run_length)
    sim.Animate(circle0=(40,), x0=200, y0=200)
    sim.Animate(circle0=40, x0=300, y0=200)
    env.run()
    print('done')
    env.quit()
Пример #16
0
def test5():
    print('test5')

    class X1(sim.Component):
        def process(self):
            while True:
                while True:
                    yield self.request(r1,
                                       2,
                                       5,
                                       r2,
                                       greedy=True,
                                       fail_at=de.now() + 6)
                    if not self.request_failed()():
                        break
                yield self.hold(1)
                self.release(r1, r2)
                yield self.passivate()

    class X2(sim.Component):
        def process(self):
            while True:
                yield self.request((r1, 3), (r2, 1, 1))
                yield self.hold(1)
                self.release(r1)
                yield self.passivate()

    class X3(sim.Component):
        def process(self):
            while True:
                yield self.request(r1, r2)
                yield self.hold(1)
                self.release(r1, r2)
                yield self.passivate()

    class Y(sim.Component):

        #        def __init__(self,*args,**kwargs):
        #            sim.Component.__init__(self,*args,**kwargs)

        def process(self):
            yield self.hold(3)
            x1.cancel()
            yield self.hold(10)
            r2.capacity(1)
            pass

    de = sim.Environment(trace=True)
    q = sim.Queue(name='q')
    r1 = sim.Resource(name='r1', capacity=3)
    r2 = sim.Resource(name='r2', capacity=0)
    r3 = sim.Resource(name='r3', capacity=1)

    x1 = X1()
    x2 = X2()
    x3 = X3()

    y = Y(name='y')
    sim.run(till=21)
Пример #17
0
def test51():
    env = sim.Environment()
    d = sim.Poisson(2)
    x = []
    m = sim.Monitor(name='samples')
    for i in range(10000):
        m.tally(d())
    m.print_histogram(15, 0, 1)
Пример #18
0
def test54():
    import test_a
    import test_b
    env = sim.Environment(trace=True)
    test_a.X()
    test_b.X()
    
    
    env.run(10)
Пример #19
0
def test39():
    class C(sim.Component):
        def process(self):
            yield self.request(r,s='y')

    env=sim.Environment(trace=True)
    x=sim.Uniform(4)
    r = sim.Resource()
    C()
    env.run(4)
Пример #20
0
def test56():
    env = sim.Environment()
    mon = sim.Monitor('number per second')
    for i in range(100):
        sample = sim.Normal(0.083,0.00166)()
        mon.tally(sample)
        
    mon = sim.Monitor('number per second')
    env.run(100)
    mon.print_histogram()
Пример #21
0
def test14():
    class X(sim.Component):
        def process(self):
            yield self.request(*r)
            print(self.claimed_resources())

    de=sim.Environment()
    X()
    r=[sim.Resource() for i in range(10)]
    de.run(till=10)
Пример #22
0
def test16():
    de = sim.Environment()
    sim.animation_parameters()
    a = sim.Animate(text='Test',
                    x0=100,
                    y0=100,
                    fontsize0=30,
                    fillcolor0='red')
    a = sim.Animate(line0=(0, 0, 500, 500), linecolor0='white', linewidth0=6)
    sim.run()
Пример #23
0
def test53():
    en =sim.Environment()
    d=sim.Normal(10, 3)
    d.print_info()
    d=sim.Normal(10, coefficient_of_variation=0.3)
    d.print_info()    
    d=sim.Normal(0, standard_deviation=3)
    d.print_info()
    d=sim.Normal(0, coefficient_of_variation=4)
    d.print_info()    
Пример #24
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)
Пример #25
0
def test59():
    def do_next():
        global ans
        global min_n
        
        for an in ans:
            an.remove()
        ans = []
    
        x=10
        y=env.height() - 80
        sx= 230
        sy=14
        y -= 30
        fontnames = []
        n=0
        
        for fns, ifilename in sim.fonts():
            for fn in fns:
                fontnames.append(fn)
        fontnames.extend(sim.standardfonts().keys())
        last = ''
        any = False
        for font in sorted(fontnames, key=sim.normalize):
            if font != last:  # remove duplicates
                last = font
                n += 1
                if n >= min_n:
                    any = True
                    ans.append(sim.Animate(text=font, x0=x, y0=y, anchor='sw', fontsize0=15, font=font))
                    x += sx + 5
                    if x + sx > 1024:
                        y -= sy + 4
                        x = 10
                        if y<0:
                            break
        min_n = n + 1
        if not any:
            env.quit()
        
    global ans
    global min_n
    
    env = sim.Environment()
    sim.AnimateButton(x=500,y=-21, width=50, xy_anchor='nw', text='Next', fillcolor='red', action=do_next)
    ans = []
    min_n = 0
#    sim.Animate(text='Salabim fontnames', x0=x, y0=y, fontsize0=20, anchor='sw', textcolor0='white')

    do_next()    
    env.background_color('20%gray')

    env.animate(True)
    env.run()    
Пример #26
0
def test18():
    for j in range(2):
        print('---')
        r=random.Random(-1)
        r1=random.Random(-1)
        d=sim.Exponential(3,r1)
        sim.Environment(random_seed=-1)
        for i in range(3):
            print(sim.Exponential(3,r).sample())
            print(sim.Exponential(3).sample())
            print(d.sample())
Пример #27
0
def test30():
    env=sim.Environment()
    m=sim.Monitor('m')
    print (m.x(ex0=True))
    m.tally(1)
    m.tally(2)
    m.tally(3)
    m.tally(0)
    m.tally('0')
    m.tally('12')
    m.tally('abc')
    print (m.x(ex0=True))
Пример #28
0
def test37():
    env=sim.Environment()
    s = sim.Monitor('s')

    s.tally(1)
    s.tally(2)
    s.tally(3)
    s.tally(0)
    s.tally(4)
    s.tally('a')

    print(s.x(ex0=False,force_numeric=True))
Пример #29
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())
Пример #30
0
def test50():
    env=sim.Environment()
    for i, c in enumerate(string.printable):
        if i <= 94:
            print(i,c)
            sim.Animate(text=c,x0=10+i*10,y0=100,anchor='w')
    sim.Animate(line0=(0, 100, 1024, 100), linecolor0='red')

    env.animation_parameters(modelname='Test')
    env.animating = True
    env.trace(True)
    env.run(5)
    print (env.main()._scheduled_time)