def risorsa(env, name, tipoRisorsa, risorse): arrive = env.now printLog(_dateTest, '%7.4f - %s - Sono arrivato in %s' % (arrive, name, tipoRisorsa)) with risorse[tipoRisorsa][0].request() as req: yield req wait = env.now - arrive appendTempiAttesa(tipoRisorsa, wait) printLog(_dateTest, '%7.4f - %s - Ho aspettato %s' % (env.now, name, wait)) tempoDiServizio = (np.random.exponential(scale=risorse[tipoRisorsa][1], size=None)) if tipoRisorsa != "tagliaCode" else 7.5 appendmuM(tipoRisorsa, tempoDiServizio) yield env.timeout(tempoDiServizio) printLog(_dateTest, '%7.4f - %s - Ho finito in %s' % (env.now, name, tipoRisorsa)) if tipoRisorsa == "tagliaCode": if randint(0, 100) < 83: upnumeroClientiPensioni() c = risorsa(env, name, "sportelloPensioni", risorse) env.process(c) else: upnumeroClientiPacchi() c = risorsa(env, name, "sportelloPacchi", risorse) env.process(c) else: upHofinito()
def main(env): varianzaDelleMedie = 0 stazionario = finitoIlTest = False mediaDelleMedieLista = [] mediaRighe = [] finale = [] p = 0 r = -1 while not finitoIlTest: env.process(source(env, risorse)) env.run(until=_tempoMassimoSimulazione * (p + 1)) p += 1 matriceTempiAttesaSportelloPensioni.append(getAttesePensioni()) mediaRighe = calcolaMediaRighe(matriceTempiAttesaSportelloPensioni) if p > 1: varianzaDelleMedie = calcolaVarianzaPensioni(mediaRighe) mediaDelleMedie = calcolaMedia(mediaRighe) if stazionario: finale.append(mediaDelleMedie) r += 1 else: mediaDelleMedieLista.append(mediaDelleMedie) if p > 100 and checkStazio(mediaDelleMedieLista): stazionario = True if r == 100: finitoIlTest = True # test(mediaDelleMedieLista) printLog(_dateTest, "numClienti: " + str(getNumClientiTot())) printLog(_dateTest, "tempo arrivo medio: " + str(getLambda()) + " \tTeorico: 103") printLog(_dateTest, "tempo servizio medio: " + str(getMediamuM()[0]) + " \tTeorico: 172") printLog(_dateTest, "Numero rho maggiori di 1: " + str(roMaggiori)) printLog(_dateTest, str(varianzaDelleMedie)) print("numClienti: " + str(getNumClientiTot())) print("tempo arrivo medio: " + str(getLambda()) + " \tTeorico: 103") print("tempo servizio medio: " + str(getMediamuM()[0]) + " \tTeorico: 172") print("Numero rho maggiori di 1: " + str(roMaggiori)) print("Media tempo di attesa: ", calcolaMedia(mediaDelleMedieLista)) valida(mediaDelleMedieLista, finale)
def valida(data1, data2): a = np.array(data1) perDieci = np.percentile(a, 10) perNovanta = np.percentile(a, 90) giusti = 0 for x in data2: if x >= perDieci and x <= perNovanta: giusti += 1 printLog(_dateTest, "Percentile 10%: " + str(perDieci)) printLog(_dateTest, "Percentile 90%: " + str(perNovanta)) printLog(_dateTest, str((float(giusti)*100)/len(data2))) print("Percentile 10%: " + str(perDieci)) print("Percentile 90%: " + str(perNovanta)) print("Percentuale nel range: " + str(int((float(giusti)*100)/len(data2))) + "% ", end='') if giusti >= 90: print("OK!") else: print("\n")
finitoIlTest = True # test(mediaDelleMedieLista) printLog(_dateTest, "numClienti: " + str(getNumClientiTot())) printLog(_dateTest, "tempo arrivo medio: " + str(getLambda()) + " \tTeorico: 103") printLog(_dateTest, "tempo servizio medio: " + str(getMediamuM()[0]) + " \tTeorico: 172") printLog(_dateTest, "Numero rho maggiori di 1: " + str(roMaggiori)) printLog(_dateTest, str(varianzaDelleMedie)) print("numClienti: " + str(getNumClientiTot())) print("tempo arrivo medio: " + str(getLambda()) + " \tTeorico: 103") print("tempo servizio medio: " + str(getMediamuM()[0]) + " \tTeorico: 172") print("Numero rho maggiori di 1: " + str(roMaggiori)) print("Media tempo di attesa: ", calcolaMedia(mediaDelleMedieLista)) valida(mediaDelleMedieLista, finale) printLog(_dateTest, "--------SIMULAZIONE POSTE " + _dateTest + "---------") printLog(_dateTest, "_numeroServentiSportelloPensioni = " + str(_numeroServentiSportelloPensioni)) printLog(_dateTest, "_numeroServentiSportelloPacchi = " + str(_numeroServentiSportelloPacchi)) printLog(_dateTest, "_tempoServizioTagliaCode = " + str(_tempoServizioTagliaCode)) printLog(_dateTest, "_tempoServizioSportelloPensioni = " + str(_tempoServizioSportelloPensioni)) printLog(_dateTest, "_tempoServizioSportelloPacchi = " + str(_tempoServizioSportelloPacchi)) printLog(_dateTest, "_lambdaPArrivi = " + str(_lambdaPArrivi)) printLog(_dateTest, "_tempoMassimoSimulazione = " + str(_tempoMassimoSimulazione)) printLog(_dateTest, "---------------------------------------------------") print("--------SIMULAZIONE POSTE " + _dateTest + "---------") print("_numeroServentiSportelloPensioni = " + str(_numeroServentiSportelloPensioni)) print("_numeroServentiSportelloPacchi = " + str(_numeroServentiSportelloPacchi)) print("_tempoServizioTagliaCode = " + str(_tempoServizioTagliaCode)) print("_tempoServizioSportelloPensioni = " + str(_tempoServizioSportelloPensioni)) print("_tempoServizioSportelloPacchi = " + str(_tempoServizioSportelloPacchi)) print("_lambdaPArrivi = " + str(_lambdaPArrivi))