Пример #1
0
def test3():
    print('test3')

    sim.Environment(random_seed=1234567)
    print('string')
    d = sim.Distribution('Exponential (1000)')
    sample_and_print(d, 5)
    sim.random_seed(1234567)
    sample_and_print(d, 5)
    sim.random_seed(None)
    sample_and_print(d, 5)

    print('triangular')
    tr = sim.Triangular(1, 5, 3)
    sample_and_print(tr, 5)

    print('uniform')
    u = sim.Uniform(1, 1.1)
    sample_and_print(u, 5)
    print('constant')
    c = sim.Constant(10)
    sample_and_print(c, 5)

    print('normal')
    n = sim.Normal(1, 2)
    sample_and_print(n, 5)
    sample_and_print(n, 5)

    print('cdf')
    cdf = sim.Cdf((1, 0, 2, 25, 2, 75, 3, 100))
    sample_and_print(cdf, 5)
    sample_and_print(cdf, 5)

    print('pdf')
    pdf = sim.Pdf((1, 2), 1)
    sample_and_print(pdf, 5)

    print('pdf 1')
    pdf = sim.Pdf((sim.Uniform(10, 20), 10, sim.Uniform(20, 30), 80,
                   sim.Uniform(30, 40), 10))
    sample_and_print(pdf, 5)

    print('pdf 2')
    pdf = sim.Pdf(
        (sim.Uniform(10, 20), sim.Uniform(20, 30), sim.Uniform(30, 40)),
        (10, 80, 10))
    sample_and_print(pdf, 5)

    print('pdf 3')
    pdf = sim.Pdf(('red', 'green', 1000), (10, 1, 10))
    sample_and_print(pdf, 5)
Пример #2
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)'))
Пример #3
0
finwaitingline = sim.Queue("finwaitingline")
paintwaitingline = sim.Queue("paintwaitingline")
deckwaitingline = sim.Queue("deckwaitingline")
assemblywaitingline = sim.Queue("assemblywaitingline")
machiningwaitingline = sim.Queue("machiningwaitingline")
printingwaitingline = sim.Queue("printingwaitingline")
wheelwaitingline = sim.Queue("wheelwaitingline")

#armazens
armazem = sim.Queue("armazem")
armazem2 = sim.Queue("armazem2")
armazem3 = sim.Queue("armazem3")
armazem4 = sim.Queue("armazem4")

#distributions
pressing_time = sim.Triangular(95, 105, 100)
cutting_time = sim.Triangular(50, 70, 60)
finishing_time = sim.Triangular(5, 25, 15)
painting_time = sim.Triangular(10, 30, 20)
foundry_time = sim.Triangular(50, 60, 55)
machining_time = sim.Triangular(55, 65, 60)
printing_time = sim.Triangular(15, 25, 20)
pack_d_time = sim.Triangular(0, 20, 10)
pack_w_time = sim.Triangular(25, 35, 30)
assembly_time = sim.Triangular(20, 40, 30)
#configs

env.run(till=24 * 60 * 24)

print(wheel_pack.capacity(), 'conjunto de rodas')
print(skate_unity.capacity(), 'skates')
Пример #4
0
    def process(self):
        global nAppointmentsDict, totDaysInWaitingListDict, visitStatus, patientAppointmentsDayDict, patientAppointmentsStatusDict, patientAppointmentsWaitingDaysDict

        if trace:
            print(
                f"Appointment schedule {self.nAppointment} -> Patient: {self.patientId}"
            )

        if self.info['Visit status'] == 'Cancelled Pat':
            # Attendo un valore tra 0 e i giorni che mancano alla visita per cancellare l'appuntamento
            yield self.hold(
                sim.Uniform(0,
                            int(self.info['relative_visit_day'] - env.now())))

            if trace:
                print(
                    f"Appointment cancelled from Pat {self.nAppointment} -> Patient: {self.patientId}"
                )
        elif self.info['Visit status'] == 'Cancelled HS':
            yield self.passivate()

            if trace:
                print(
                    f"Appointment cancelled from HS {self.nAppointment} -> Patient: {self.patientId}"
                )
        elif self.info['Visit status'] == 'NoShowUp':
            if np.random.choice(
                    2,
                    1,
                    p=[
                        1 - float(config['Probabilities']['noShowUpNotice']),
                        config['Probabilities']['noShowUpNotice']
                    ]) == 0:
                # Attendo fino al giorno dell'appuntamento
                yield self.passivate()

                if str(env.now())[-5:] == ".0001":
                    yield self.hold(sim.Uniform(8, 18, "hours"))

                # Richiedo una risorsa slot
                yield self.request(slots)

                if trace:
                    print(
                        f"Appointment no show up {self.nAppointment} -> Patient: {self.patientId}"
                    )

                # Tengo lo slot occupato per 15 minuti
                yield self.hold(env.minutes(timeSlot))
                self.release(slots)
            else:
                yield self.hold(
                    sim.Triangular(
                        0, int(self.info['relative_visit_day'] - env.now()),
                        math.floor(
                            int(self.info['relative_visit_day'] - env.now())) *
                        90 / 100))

                self.leave(appointmentScheduleQueue)
                self.info['Visit status'] = 'Cancelled Pat (noShowUp)'

                ReplaceAppointment(appointment=self)
        elif self.info['Visit status'] == 'Done':
            # Attendo fino al giorno dell'appuntamento
            yield self.passivate()

            if str(env.now())[-5:] == ".0001":
                yield self.hold(sim.Uniform(8, 18, "hours"))

            # Richiedo una risorsa slot
            yield self.request(slots)
            # Richiedo una risorsa dottore
            yield self.request(doctors)
            # Quando il dottore è disponibile faccio la visita di 15 minuti
            yield self.hold(env.minutes(timeSlot))

            # Rilascio la risorsa dottore
            self.release(doctors)
            self.release(slots)

            if trace:
                print(
                    f"Appointment done {self.nAppointment} -> Patient: {self.patientId}"
                )

        if validate:
            if self.info['Visit status'] == 'Cancelled Pat (noShowUp)':
                self.info['Visit status'] = 'Cancelled Pat'
                nAppointmentsDict['TriedToReplaced'] += 1

            if self.patientId not in patientAppointmentsStatusDict:
                patientAppointmentsStatusDict[self.patientId] = {
                    "NoShowUp": 0,
                    "Done": 0,
                    "Cancelled Pat": 0,
                    "Cancelled HS": 0
                }

            nAppointmentsDict['Tot'] += 1
            visitStatus[self.info['Visit status']] += 1
            patientAppointmentsStatusDict[self.patientId][
                self.info['Visit status']] += 1

            if self.info['Visit status'] == 'Done' or self.info[
                    'Visit status'] == 'NoShowUp':
                if self.patientId not in patientAppointmentsDayDict:
                    patientAppointmentsDayDict[self.patientId] = []
                patientAppointmentsDayDict[self.patientId].append(
                    int(env.now()))

                if self.patientId not in patientAppointmentsWaitingDaysDict:
                    patientAppointmentsWaitingDaysDict[self.patientId] = 0
                patientAppointmentsWaitingDaysDict[self.patientId] += int(
                    env.now()) - self.startWaitingDay

                totDaysInWaitingListDict['Tot'] += int(
                    env.now()) - self.startWaitingDay

                if self.info[
                        'Character of visit'] == 'Preferential' or self.info[
                            'Character of visit'] == 'Ordinary':
                    totDaysInWaitingListDict[
                        self.info['Character of visit']] += int(
                            env.now()) - self.startWaitingDay
                    nAppointmentsDict[self.info['Character of visit']] += 1

                    if self.info['Visit status'] == 'Done':
                        totDaysInWaitingListDict[
                            'OnlyDone' +
                            self.info['Character of visit']] += int(
                                env.now()) - self.startWaitingDay
                        nAppointmentsDict['OnlyDone' +
                                          self.info['Character of visit']] += 1

                if self.info['Visit type'] == 'First' or self.info[
                        'Visit type'] == 'Revision':
                    totDaysInWaitingListDict[self.info['Visit type']] += int(
                        env.now()) - self.startWaitingDay
                    nAppointmentsDict[self.info['Visit type']] += 1

                    if self.info['Visit status'] == 'Done':
                        totDaysInWaitingListDict[
                            'OnlyDone' + self.info['Visit type']] += int(
                                env.now()) - self.startWaitingDay
                        nAppointmentsDict['OnlyDone' +
                                          self.info['Visit type']] += 1

                if int(env.now()) != int(self.info['relative_visit_day']):
                    nAppointmentsDict['Wrong'] += 1