simulation

所属分类:论文
开发工具:Java
文件大小:260KB
下载次数:0
上传日期:2017-03-01 08:27:05
上 传 者sh-1993
说明:  一个关于模拟具有两个中心和两个队列的系统的学术项目。它需要生产pseud...
(An academic project about simulation of a system with two centers and two queues. It requires the production of pseudo-casual numbers for different distributions (exponential, poissonian, erlangian).)

文件列表:
classi.png (81741, 2017-03-01)
generale.png (60892, 2017-03-01)
grafici_media_varianza.png (24923, 2017-03-01)
grafici_media_varianza_convalida.png (24476, 2017-03-01)
grafici_media_varianza_variante.png (24125, 2017-03-01)
grafo_flusso.png (23043, 2017-03-01)
nbactions.xml (1716, 2017-03-01)
pom.xml (1515, 2017-03-01)
src (0, 2017-03-01)
src\main (0, 2017-03-01)
src\main\java (0, 2017-03-01)
src\main\java\mls (0, 2017-03-01)
src\main\java\mls\Calendario.java (4470, 2017-03-01)
src\main\java\mls\Evento.java (704, 2017-03-01)
src\main\java\mls\FramePlot.java (3966, 2017-03-01)
src\main\java\mls\Job.java (1366, 2017-03-01)
src\main\java\mls\Main.form (32772, 2017-03-01)
src\main\java\mls\Main.java (55897, 2017-03-01)
src\main\java\mls\Temp.java (1031, 2017-03-01)
src\main\java\mls\generatori (0, 2017-03-01)
src\main\java\mls\generatori\Generatore3Erlangiano.java (1099, 2017-03-01)
src\main\java\mls\generatori\GeneratoreEsponenziale.java (828, 2017-03-01)
src\main\java\mls\generatori\GeneratorePoissoniano.java (940, 2017-03-01)
src\main\java\mls\generatori\GeneratoreUniforme.java (1121, 2017-03-01)
src\main\java\mls\util (0, 2017-03-01)
src\main\java\mls\util\Coda.java (485, 2017-03-01)
src\main\java\mls\util\CodaFIFO.java (939, 2017-03-01)
src\main\java\mls\util\CodaLIFO.java (975, 2017-03-01)
src\main\java\mls\util\CodaSPTF.java (1139, 2017-03-01)
src\main\java\mls\util\ConfigurazioneConvalidaFactory.java (1384, 2017-03-01)
src\main\java\mls\util\ConfigurazioneSimulazioneFactory.java (983, 2017-03-01)
src\main\java\mls\util\ConfigurazioneStandardFactory.java (1282, 2017-03-01)
src\main\java\mls\util\EventoComparator.java (510, 2017-03-01)
src\main\java\mls\util\Generatore.java (407, 2017-03-01)
src\main\java\mls\util\JobComparator.java (519, 2017-03-01)
src\main\java\mls\util\TipoEvento.java (373, 2017-03-01)
src\main\java\mls\util\Util.java (482, 2017-03-01)
... ...

# Simulation Project Introduzione ============ Il progetto consiste nell’implementare un simulatore a sequenziamento di eventi e guidato da distribuzioni che permetta di stimare la variabile di uscita U = tempo di risposta $t_q$ del sistema, ossia il tempo dall’arrivo dalla sorgente all’uscita, nonche la sua media al 90% del livello di confidenza. L’implementazione e stata realizzata utilizzando il linguaggio Java. L’utilizzo delle interfacce grafiche Swing ha reso il software intuitivo e versatile. ![Interfaccia grafica del simulatore](https://github.com/mmilidoni/simulation/blob/master/generale.png) Dal pannello `Sistema Simulato` e possibile scegliere il sistema ad 1 CPU o a 2 CPU. Dal pannello `Configurazione`, e possibile specificare i tempi $T_a, T_{CPU}, T_{IO}$ ed il numero di run di stabilizzazione $p$. Inoltre, e possibile avviare la simulazione attraverso i bottoni: - `Simula` per eseguire il simulatore nella configurazione standard ($T_a = 30, T_{CPU} = T_{IO} = 2$, disciplina arrivi esponenziale, disciplina centri 3-erlangiana, coda CPU di tipo SPTF, coda I/O di tipo LIFO); - `Convalida` per eseguire il simulatore nella configurazione di convalida, ossia portandolo nelle condizioni della figura 6.36 del libro di PQIS ($T_a = 30, T_{CPU} = T_{IO} = 2$, disciplina arrivi poissoniana, disciplina centri esponenziale, coda CPU e coda I/O di tipo FIFO) Il pannello `Grafici` contiene i grafici di media e varianza campionarie. Questi vengono popolati interattivamente durante l’esecuzione della simulazione. Il pannello in basso contiene le informazioni sui tipi di generatore impostati (Poissoniano, Uniforme, ecc) e i tipi di coda (SPTF, FIFO, ecc.). Inoltre, e presente il box informativo sui valori calcolati dell’intervallo di confidenza. La progettazione delle classi e stata effettuata nell’ottica di una possibile e facile estensione per l’utilizzo di code e generatori di diverso tipo. Per raggiungere tale obiettivo e stato utilizzato il design pattern `Abstract Factory`. Lo schema delle classi e illustrato in figura. ![Schema semplificato delle classi](https://github.com/mmilidoni/simulation/blob/master/classi.png) Descrizione del simulatore -------------------------- ![Grafo di flusso del simulatore](https://github.com/mmilidoni/simulation/blob/master/grafo_flusso.png) Il processo di simulazione ha inizio con l’inizializzazione del modello, ossia delle variabili di stato, delle variabili di carico, del clock e del calendario. L’esecuzione procede nel sequenziatore, il quale effettua iterazioni eseguendo i job provenienti dal calendario. L’iterazione termina quando si e raggiunto il numero di run desiderati e viene eseguito il processo di Fine Simulazione. Il processo `arrivo` imposta il tempo di arrivo del job ed il tempo di processamento prelevandolo dal corrispondente generatore. Il job passa alla CPU, se questa e libera, altrimenti viene immesso nella coda CPU. Il processo `fineIO` elimina il job dall’esecuzione dell’I/O. Il job passa alla CPU, se questa e libera, altrimenti viene immesso nella coda CPU. Infine, viene prelevato un nuovo job dalla coda IO, se quest’ultima non e vuota. Il processo `fineCPU` elimina il job dall’esecuzione della CPU. Il job puo passare alla I/O se la variabile aleatoria di routing e minore di 0.9, altrimenti il job esce dal sistema e viene calcolato il tempo di uscita. Infine, viene prelevato un nuovo job dalla coda CPU, se quest’ultima non e vuota. Generatori pseudo casuali ------------------------- Il modello di simulazione necessita dei seguenti generatori di sequenze pseudocasuali: - Generatore esponenziale per la stima dei tempi di arrivo, e per la stima dei tempi di servizio CPU e IO del sistema di convalida - Generatore 3-Erlangiano per la stima dei tempi di servizio CPU e IO - Generatore uniforme per la scelta di routing - Generatore poissoniano per la stima dei tempi di arrivo del sistema di convalida Esecuzione e convalida del simulatore ===================================== L’esecuzione normale del simulatore viene effettuata portando il simulatore nelle condizioni di distribuzioni di arrivi e servizi, e discipline di servizio, del caso della configurazione standard. In particolare, vengono impostati i generatori esponenziale per gli arrivi e 3-erlangiano per i centri, e le code sono di tipo SPTF per il centro CPU e LIFO per il centro I/O. Le curve della media e della varianza, utili alla rimozione iniziale (*initial bias*) sono illustrate graficamente nel software, e vengono riportate in figura. ![Media e Varianza (Gordon)](https://github.com/mmilidoni/simulation/blob/master/grafici_media_varianza.png) La tecnica utilizzata e quella dei run replicati. Durante l’esecuzione dei run replicati si calcola la media campionaria della variabile osservata U: $$\overline{U}_j(n) = n^{-1} \sum_{i=1}^n U_{ij}$$ e, da questa, si calcolano gli stimatori di media e varianza di Gordon: $$e(n) = p^{-1} \sum_{j=1}^p \overline{U}_j(n)$$ $$s^2(\overline{U}(n)) = (p-1)^{-1} \sum_{j=1}^p [\overline{U}_j(n) - e(n)]^2$$ Osservando gli stimatori di Gordon, si notera che la media $e(n)$ tendera ad essere stazionaria e la varianza $s^2(\overline{U}(n))$ tendera a decrescere linearmente. In tali condizioni si puo affermare di aver raggiunto la stabilita del sistema. Nel caso in esame possiamo osservare che a 1000 run si ha un buon grado di stabilita del sistema, in quanto la media campionaria e abbastanza stabile e la varianza campionaria linearmente decrescente. Nella fase statistica, per la stima di $\mu$ e stato utilizzato il metodo classico: $$(\underline{\mu}, \overline{\mu}) = (\overline{f} - d \cdot \mu_{\alpha/2}, \overline{f} + d \cdot \mu_{\alpha/2})$$ I parametri $\overline{f}, d$ e $s^2$ sono $$\overline{f} = \overline{x}/\overline{y}$$ $$d = \frac{s}{\overline{y}\sqrt{n}}$$ $$s^2 = s^2_{11} -2 \overline{f} s^2_{12} + \overline{f}^2 s^2_{22}$$ Per il calcolo della media al 90% del livello di confidenza, si ha: $$0.90 = 1 - \alpha; \alpha = 0.1$$ $$\frac{\alpha}{2} = 0.05; 1-\alpha/2 = 0.95$$ Confrontando il valore 0.95 con la tavola della distribuzione normale cumulativa, si ha che $\mu_{\alpha/2} = 1.***5$. I risultati della media dei tempi di risposta e dell’intervallo di confidenza sono i seguenti: - Tempo di risposta: $113.28$ - Intervallo di confidenza: $(110.01, 116.55)$ Convalida del simulatore ------------------------ La convalida del simulatore viene effettuata portando il simulatore nelle condizioni di distribuzioni di arrivi e servizi, e discipline di servizio, del caso della Figura 6.36 del libro di PQIS. Il simulatore viene quindi convalidato cliccando sul bottone `Convalida`. Vengono impostati i generatori Poissoniano per gli arrivi ed Esponenziale per i centri, e le code sono di tipo FIFO sia per CPU che per I/O. Le curve della media e della varianza del simulatore nelle condizioni di convalida sono riportate in figura. ![Media e Varianza (Gordon) - caso convalida](https://github.com/mmilidoni/simulation/blob/master/grafici_media_varianza_convalida.png) Nel caso della convalida, i risultati della media dei tempi di risposta e dell’intervallo di confidenza sono i seguenti: - Tempo di risposta: $103.83$ - Intervallo di confidenza: $(99.76, 107.9)$ Il tempo di risposta globale che ne scaturisce dall’analisi teorica e: $$E(t_r) = \frac{E(n_1) + E (N_2)}{\gamma} = 105 sec$$ Pertanto, e possibile affermare che il risultato ottenuto dalla simulazione e molto vicino a quello dell’analisi teorica. Variante del simulatore ======================= La variante del simulatore consiste nel portare il simulatore nelle condizioni di avere due centri CPU, ciascuno di velocita operativa $1/2$ del singolo. Dal corso di Prestazioni e Qualita di Impianti e Sistemi, confrontando i due casi e noto che: - il tempo di attesa $E(t_w)$ migliora con il centro a capacita distribuita, ossia $ T_w(m, \lambda, C) \leq T_w(1, \lambda, C)$; - il tempo di risposta $E(t_q)$ ha un comportamento opposto a quello di attesa, in quanto peggiora aumentando $m$. In altre parole, il centro a capacita concentrata genera tempi di risposta migliori rispetto a quello a capacita distribuita, ossia $ T_q(1, \lambda, C) \leq T_q(m, \lambda, C)$. Per verificare il comportamento del simulatore e sufficiente cliccare sul radio-button `2 CPU` dello schema simulato del software. Quindi, si osserva facilmente che i tempi di risposta sono superiori al centro a capacita concentrata. ![Media e Varianza (Gordon) - variante del simulatore](https://github.com/mmilidoni/simulation/blob/master/grafici_media_varianza_variante.png) I valori di media dei tempi di risposta e intervallo di confidenza sono confrontati nella seguente tabella. | | 1 CPU | 2 CPU | |--------------|--------|----------| | E(T_q) | 113.28 | 135.73 | | Limite inf. | 110.01 | 130.4 | | Limite sup. | 116.55 | 141.06 |

近期下载者

相关文件


收藏者