Vés al contingut

Simulació d'esdeveniments discrets

De la Viquipèdia, l'enciclopèdia lliure

Una simulació d'esdeveniments discrets (DES) modela el funcionament d'un sistema com una seqüència (discreta) d'esdeveniments en el temps. Cada esdeveniment es produeix en un instant determinat i marca un canvi d'estat en el sistema.[1] Entre esdeveniments consecutius, se suposa que no es produeix cap canvi en el sistema; per tant, el temps de simulació pot saltar directament a l'hora d'ocurrència del següent esdeveniment, que s'anomena progressió del temps del proper esdeveniment.

A més de la progressió temporal del proper esdeveniment, també hi ha un enfocament alternatiu, anomenat progressió temporal incremental, on el temps es divideix en petites parts de temps i l'estat del sistema s'actualitza d'acord amb el conjunt d'esdeveniments/activitats que tenen lloc a la porció de temps.[2] Com que no s'han de simular totes les porcions de temps, una simulació de temps del proper esdeveniment normalment es pot executar més ràpid que una simulació de temps incremental corresponent.

Ambdues formes de DES contrasten amb la simulació contínua en què l'estat del sistema canvia contínuament al llarg del temps sobre la base d'un conjunt d'equacions diferencials que defineixen les taxes de canvi de les variables d'estat.

En el passat, aquests tres tipus de simulació també s'han referit, respectivament, com: simulació de programació d'esdeveniments, simulació d'exploració d'activitats i simulació d'interacció de processos. També es pot observar que hi ha similituds entre la implementació de la cua d'esdeveniments en la programació d'esdeveniments i la cua de programació utilitzada en els sistemes operatius.[3]

Diagrama del model de cotxe elèctric Se-lib a partir de la simulació d'esdeveniments discrets

Exemple

[modifica]

Un exercici comú per aprendre a crear simulacions d'esdeveniments discrets és modelar un sistema de cua, com ara els clients que arriben a un caixer per ser atès per un empleat. En aquest exemple, els objectes del sistema són Customer i Teller, mentre que els esdeveniments del sistema són Customer-Arrival, Service-Start i Service-End. Cadascun d'aquests esdeveniments ve amb la seva pròpia dinàmica definida per les rutines d'esdeveniments següents:

  1. Quan es produeix un esdeveniment d'arribada del client, la longitud de la cua de la variable d'estat s'incrementa en 1, i si la variable d'estat caixer-estat té el valor "disponible", es programa un esdeveniment de seguiment d'inici de servei sense cap demora, de manera que el client acabat d'arribar serà atès immediatament.
  2. Quan es produeix un esdeveniment d'inici de servei, la variable d'estat caixer-estat s'estableix en "ocupat" i es programa un esdeveniment de seguiment de finalització de servei amb un retard (obtingut a partir del mostreig d'una variable aleatòria de temps de servei ).
  3. Quan es produeix un esdeveniment de finalització del servei, la longitud de la cua de la variable d'estat es redueix en 1 (que representa la sortida del client). Si la longitud de la cua de la variable d'estat encara és superior a zero, es programa un esdeveniment de seguiment d'inici de servei sense cap demora. En cas contrari, la variable d'estat teller-status s'estableix a "disponible".

Les variables aleatòries que s'han de caracteritzar per modelar aquest sistema de manera estocàstica són el temps d'interarribada per a esdeveniments recurrents d'arribada del client i el temps de servei per als retards dels esdeveniments de finalització del servei.

Components

[modifica]

Estat

[modifica]

Un estat del sistema és un conjunt de variables que capta les propietats destacades del sistema a estudiar. La trajectòria de l'estat al llarg del temps S(t) es pot representar matemàticament per una funció de pas el valor de la qual pot canviar sempre que es produeixi un esdeveniment.

Rellotge

[modifica]

La simulació ha de fer un seguiment del temps de simulació actual, en les unitats de mesura que siguin adequades per al sistema que s'està modelant. En les simulacions d'esdeveniments discrets, a diferència de les simulacions contínues, el temps "salta" perquè els esdeveniments són instantanis: el rellotge salta a l'hora d'inici de l'esdeveniment següent a mesura que avança la simulació.

Llista d'esdeveniments

[modifica]

La simulació manté almenys una llista d'esdeveniments de simulació. De vegades s'anomena conjunt d'esdeveniments pendents perquè enumera els esdeveniments que estan pendents com a resultat d'un esdeveniment simulat anteriorment però que encara no s'han simulat. Un esdeveniment es descriu pel moment en què es produeix i un tipus, que indica el codi que s'utilitzarà per simular aquest esdeveniment. És habitual que el codi d'esdeveniment estigui parametritzat, en aquest cas, la descripció de l'esdeveniment també conté paràmetres del codi d'esdeveniment. La llista d'esdeveniments també es coneix com a llista d'esdeveniments futurs (FEL) o conjunt d'esdeveniments futurs (FES).[4][5][6][7]

Generadors de nombres aleatoris

[modifica]

La simulació necessita generar variables aleatòries de diversos tipus, depenent del model del sistema. Això s'aconsegueix mitjançant un o més generadors de nombres pseudoaleatoris. L'ús de nombres pseudoaleatoris en lloc de nombres aleatoris veritables és un benefici si una simulació necessita una repetició amb exactament el mateix comportament.

Estadístiques

[modifica]

La simulació normalment fa un seguiment de les estadístiques del sistema, que quantifiquen els aspectes d'interès. En l'exemple del banc, és interessant fer un seguiment dels temps d'espera mitjans. En un model de simulació, les mètriques de rendiment no es deriven analíticament de distribucions de probabilitat, sinó com a mitjanes sobre rèpliques, és a dir, diferents execucions del model. Els intervals de confiança es construeixen normalment per ajudar a avaluar la qualitat de la sortida.

Condició final

[modifica]

Com que els esdeveniments estan arrencats, teòricament una simulació d'esdeveniments discrets podria funcionar per sempre. Per tant, el dissenyador de la simulació ha de decidir quan finalitzarà la simulació. Les opcions típiques són "en el temps t" o "després de processar n nombre d'esdeveniments" o, de manera més general, "quan la mesura estadística X arriba al valor x".

Enfocament en tres fases

[modifica]

Pidd (1998) ha proposat l'enfocament en tres fases per a la simulació d'esdeveniments discrets. En aquest enfocament, la primera fase és saltar al següent esdeveniment cronològic. La segona fase és executar tots els esdeveniments que es produeixen incondicionalment en aquell moment (s'anomenen esdeveniments B). La tercera fase és executar tots els esdeveniments que es produeixen condicionalment en aquell moment (s'anomenen esdeveniments C). L'enfocament de tres fases és un perfeccionament de l'enfocament basat en esdeveniments en què s'ordenen els esdeveniments simultanis per tal de fer un ús més eficient dels recursos informàtics. L'enfocament de tres fases és utilitzat per diversos paquets de programari de simulació comercial, però des del punt de vista de l'usuari, els detalls del mètode de simulació subjacent generalment s'amaguen.

Usos comuns

[modifica]

Diagnòstic de problemes de procés

[modifica]

Els enfocaments de simulació estan especialment ben equipats per ajudar els usuaris a diagnosticar problemes en entorns complexos. La teoria de les restriccions il·lustra la importància d'entendre els colls d'ampolla en un sistema. Identificar i eliminar colls d'ampolla permet millorar els processos i el sistema en general. Per exemple, a les empreses de fabricació es poden crear colls d'ampolla per l'excés d'inventari, la sobreproducció, la variabilitat en els processos i la variabilitat en l'encaminament o la seqüenciació. En documentar amb precisió el sistema amb l'ajuda d'un model de simulació, és possible obtenir una visió a vista d'ocell de tot el sistema.

Aplicacions hospitalàries

[modifica]

Un quiròfan generalment es comparteix entre diverses disciplines quirúrgiques. Mitjançant una millor comprensió de la naturalesa d'aquests procediments, pot ser possible augmentar el rendiment del pacient.[8] Exemple: si una cirurgia cardíaca dura de mitjana quatre hores, canviar l'horari d'un quiròfan de vuit hores disponibles a nou no augmentarà el rendiment del pacient. D'altra banda, si un procediment d'hèrnia dura una mitjana de vint minuts proporcionant una hora addicional, tampoc pot augmentar el rendiment si no es té en compte la capacitat i el temps mitjà passat a la sala de recuperació.

Idees de millora del rendiment de les proves de laboratori

[modifica]

Moltes idees de millora de sistemes es basen en principis sòlids, metodologies provades (Lean, Six Sigma, TQM, etc.), però no aconsegueixen millorar el sistema global. Un model de simulació permet a l'usuari comprendre i provar una idea de millora del rendiment en el context del sistema global.

Avaluació de decisions d'inversió de capital

[modifica]

El modelatge de simulació s'utilitza habitualment per modelar inversions potencials. Mitjançant la modelització d'inversions, els qui prenen decisions poden prendre decisions informades i avaluar alternatives potencials.

Simuladors de xarxa

[modifica]

La simulació d'esdeveniments discrets s'utilitza a la xarxa informàtica per simular nous protocols, diferents arquitectures de sistemes (distribuïts, jeràrquics, centralitzats, P2P) abans del desplegament real. És possible definir diferents mètriques d'avaluació, com ara el temps de servei, l'amplada de banda, els paquets perduts, el consum de recursos, etc.

Referències

[modifica]
  1. Stewart Robinson. Simulation – The practice of model development and use (en anglès). Wiley, 2004. 
  2. Matloff, Norm. «Introduction to Discrete-Event Simulation and the SimPy Language» (en anglès). [Consulta: 24 gener 2013].
  3. «A gentle introduction to discrete-event simulation» (en anglès americà), 12-03-2022. [Consulta: 24 març 2025].
  4. Park, Hyungwook; Fishwick, Paul A. (en anglès) Simulation, 86, 10, 2010, pàg. 613–628. DOI: 10.1177/0037549709340781. ISSN: 0037-5497.
  5. Dannenberg, Roger. «An Introduction to Discrete-Event Simulation» (en anglès). Carnegie Mellon School of Computer Science. [Consulta: 11 març 2022].
  6. Güneş, Mesut. «Chapter 3: General Principles» (en anglès). Freie Universität Berlin. [Consulta: 11 març 2022].
  7. Damerdji, Halim; Glynn, Peter W. Management Science, 44, 12, 1998, pàg. 1709–1722. DOI: 10.1287/mnsc.44.12.1709. ISSN: 0025-1909. JSTOR: 2634704.
  8. John J. Forbus; Daniel Berleant Modelling, 3, 4, 2022, pàg. 417–433. arXiv: 2211.00061. DOI: 10.3390/modelling3040027 [Consulta: free].