Entidades en Simulación de Eventos Discretos: Una Guía Completa

hace 2 años

Valoración: 4.05 (6166 votos)

En el fascinante mundo de la simulación de eventos discretos, las entidades juegan un papel fundamental. Estos elementos abstractos son la clave para modelar sistemas dinámicos donde los eventos ocurren en momentos específicos en el tiempo, en contraposición a las simulaciones continuas. Si te estás adentrando en este campo o buscas profundizar tus conocimientos, este artículo te guiará a través del concepto de entidades, especialmente en el contexto de SimEvents®, un potente software para la simulación basada en eventos discretos.

Comprender qué son las entidades y cómo funcionan es esencial para construir modelos de simulación efectivos y precisos. A lo largo de este artículo, exploraremos en detalle la definición de entidades, su comportamiento, los diferentes tipos que existen y cómo se utilizan en la práctica. Prepárate para sumergirte en el corazón de la simulación de eventos discretos y descubrir cómo las entidades dan vida a tus modelos.

¿Qué son las Entidades en SimEvents?

En el contexto de SimEvents, las entidades son los elementos discretos de interés dentro de una simulación de eventos discretos. Imagina que estás modelando un aeropuerto: en este caso, las entidades podrían ser los aviones que esperan para acceder a la pista de aterrizaje. En esencia, las entidades son los objetos que fluyen a través de tu modelo de simulación, moviéndose a través de una red de colas, servidores, puertas y conmutadores.

Una característica crucial de las entidades en SimEvents es que pueden transportar atributos. Piensa en los atributos como datos o información asociada a cada entidad. Volviendo al ejemplo del aeropuerto, un atributo de una entidad (avión) podría ser su tipo (comercial, privado, de carga), su tamaño o su destino. Estos atributos permiten que cada entidad sea única y que el modelo de simulación refleje con mayor precisión la realidad del sistema que se está modelando.

Por lo general, un modelo de SimEvents siempre incluye al menos un bloque de origen (Entity Generator) que se encarga de generar estas entidades. Estos bloques de origen son el punto de partida para que las entidades entren en el sistema de simulación. Luego, otros bloques de SimEvents se encargan de procesar estas entidades, simulando diferentes partes del sistema que estás modelando.

Es importante destacar la diferencia entre entidades y eventos. Aunque ambos conceptos están relacionados en la simulación de eventos discretos, no son lo mismo. Los eventos son incidentes discretos e instantáneos que provocan un cambio en el estado del sistema, en una salida o en la ocurrencia de otros eventos. Por ejemplo, en el aeropuerto, un evento podría ser la llegada de un avión a la cola de espera, el inicio del aterrizaje de un avión o la salida de un avión de la pista. Las entidades son los objetos que experimentan estos eventos y que se ven afectados por ellos a medida que avanzan en la simulación.

El Significado de las Entidades en Diferentes Aplicaciones

La belleza de las entidades reside en su versatilidad. Tú, como modelador, tienes la libertad de definir qué representa una entidad, basándote en el sistema específico que estás simulando. Para ilustrar esta flexibilidad, veamos algunos ejemplos de cómo las entidades pueden representar diferentes elementos en diversas aplicaciones:

Contexto de la AplicaciónEjemplos de Entidades
Aeropuerto con cola para acceso a pistaAviones esperando acceso a la pista
Red de comunicaciónPaquetes, tramas o mensajes a transmitir
Banco de ascensoresPersonas viajando en ascensores
Cinta transportadora para ensamblaje de piezasPiezas a ensamblar
Sistema operativo de computadoraTareas computacionales o trabajos

Como puedes observar, el concepto de entidad es adaptable a una amplia gama de escenarios. Lo importante es identificar los elementos clave de tu sistema que fluyen a través de él y representarlos como entidades en tu modelo de SimEvents.

Variando la Interpretación de las Entidades

Incluso dentro de un mismo modelo, puedes utilizar entidades para representar diferentes tipos de elementos. Imagina que estás modelando una fábrica que procesa dos tipos diferentes de piezas, piezas tipo A y piezas tipo B. Aquí tienes algunas maneras de abordar esto utilizando entidades:

* Utilizar dos bloques Entity Generator: Puedes configurar un bloque Entity Generator para crear entidades que representen las piezas tipo A y otro bloque Entity Generator para las piezas tipo B. Esta es una forma directa de distinguir entre los dos tipos de piezas desde el principio.

* Utilizar un bloque Entity Generator y asignar atributos: Puedes utilizar un solo bloque Entity Generator para crear todas las entidades y luego asignar un atributo a cada entidad para indicar si es de tipo A o tipo B. Además, podrías agregar otro atributo para representar una propiedad específica de la pieza, como su tamaño o color. Esta aproximación es más eficiente si los dos tipos de piezas comparten muchas características en su procesamiento dentro del modelo, y solo difieren en algunos aspectos clave que pueden ser representados por atributos.

Es importante tener en cuenta que, fundamentalmente, las entidades de SimEvents son similares a los mensajes de Simulink® y Stateflow®. Esta similitud permite una integración fluida entre diferentes herramientas de modelado y simulación dentro del entorno de MathWorks.

Visualizando las Entidades

Un aspecto importante a considerar es que las entidades no son visibles explícitamente en la ventana del modelo. No verás representaciones gráficas moviéndose a través de las líneas de conexión de SimEvents. Los bloques gráficos representan los componentes que procesan las entidades (colas, servidores, etc.), pero las entidades en sí mismas no tienen una representación visual directa.

Sin embargo, esto no significa que no puedas obtener información sobre las entidades. Puedes utilizar scopes de Simulink para recopilar datos sobre el flujo de entidades, como la cantidad de entidades que entran y salen de una cola, el tiempo que pasan en un servidor o los valores de sus atributos. Estos scopes te permiten monitorizar y analizar el comportamiento de las entidades a medida que la simulación avanza.

Una limitación importante es que no puedes ramificar una línea de conexión de entidades. Si necesitas que una entidad llegue a múltiples bloques en tu modelo, debes utilizar el bloque Entity Replicator. Este bloque crea copias de las entidades entrantes, permitiéndote enviar la misma entidad (o copias de ella) a diferentes partes de tu modelo.

Almacenando Entidades

Ciertos bloques en SimEvents tienen la capacidad de almacenar o retener entidades. Estos bloques son esenciales para modelar sistemas donde las entidades deben esperar en colas, ser procesadas en servidores o ser retenidas por otras razones. Aquí tienes una lista de algunos bloques capaces de almacenar entidades:

* Entity Generator: Aunque su función principal es generar entidades, también puede almacenar entidades temporalmente antes de liberarlas al sistema. * Entity Queue: Este bloque representa una cola donde las entidades esperan en orden para ser procesadas. * Multicast Receive Queue: Similar a Entity Queue, pero diseñado para recibir entidades de múltiples fuentes. * Entity Server: Representa un servidor que procesa entidades, y mientras las procesa, las entidades están almacenadas dentro del servidor. * Entity Terminator: Aunque su función principal es destruir entidades, también puede retener una entidad brevemente antes de eliminarla. * Discrete Event Chart: Este bloque permite modelar lógica de control compleja basada en eventos y puede almacenar entidades internamente. * MATLAB Discrete Event System: Permite integrar código MATLAB personalizado para el procesamiento de eventos y puede almacenar entidades. * Entity Replicator: Aunque su función principal es replicar entidades, también puede retener brevemente la entidad original antes de generar las copias. * Resource Acquirer: Cuando una entidad necesita adquirir un recurso, este bloque puede retener la entidad hasta que el recurso esté disponible. * Resource Releaser: Similar a Resource Acquirer, este bloque puede retener la entidad hasta que se libere un recurso.

Por otro lado, existen bloques que permiten la llegada de entidades, pero deben procesarlas inmediatamente, es decir, deben emitir o destruir la entidad en el mismo instante de tiempo de simulación en que llega. Estos bloques no almacenan entidades; simplemente las procesan y las envían o las eliminan. Ejemplos de estos bloques son:

* Entity Input Switch * Entity Output Switch * Entity Multicast * Entity Gate * Composite Entity Creator * Composite Entity Splitter * Resource Pool

Tipos de Entidad

En SimEvents, cada entidad tiene asociado un tipo de entidad. El tipo de entidad es una etiqueta de identificación que se asigna a cualquier bloque que crea entidades en tu modelo. Para el bloque Entity Generator, puedes asignar un nombre al tipo de entidad en la pestaña "Entity type" del bloque. A partir de ese bloque, cada nueva entidad generada recibirá esta etiqueta.

Por ejemplo, si estás modelando un sistema de atención al cliente, podrías nombrar el tipo de entidad asociado a un Entity Generator como "Cliente". Cada entidad que se origine en ese bloque tendrá el tipo de entidad "Cliente". El bloque Composite Entity Creator también genera nuevas entidades, pero combinando dos o más entidades existentes para formar una nueva entidad compuesta. Puedes asignar un nuevo nombre de tipo de entidad a la entidad compuesta (el nombre predeterminado es "Combined").

Es importante destacar que el bloque Entity Replicator no crea nuevos tipos de entidad para las copias que genera. Como la entidad entrante ya tiene un tipo de entidad, las copias heredarán el mismo tipo. A medida que una entidad avanza a través de tu modelo, su tipo no cambia. Incluso si la entidad adquiere atributos, datos de tiempo de espera o temporizadores que le dan una estructura más compleja, el tipo de entidad original se mantiene.

Por defecto, cada nuevo tipo de entidad que SimEvents crea en tu modelo utiliza el nombre "Entity". Sin embargo, el bloque Entity Generator te permite generar diferentes tipos de entidades:

* Anónimo: Este tipo de entidad es una entidad no estructurada, sin nombre. Para las entidades anónimas, solo puedes especificar la prioridad de la entidad y el valor inicial de los datos.

* Estructurado: Este tipo de entidad te permite definir una estructura para la entidad directamente en el diálogo del bloque Entity Generator. Puedes nombrar las entidades, especificar prioridades y definir atributos para la entidad en la sección "Define attributes". Crear una entidad estructurada de esta manera es una forma conveniente de definir entidades simples sin necesidad de crear objetos bus en Simulink.

* Objeto Bus: Este tipo de entidad te permite utilizar objetos bus de Simulink para definir la estructura de la entidad. Para utilizar este tipo, debes tener un objeto bus ya creado en Simulink y utilizar su nombre como el nombre del tipo de entidad. Este objeto bus debe ser un objeto bus válido con uno o más elementos bus en un solo nivel y no puede contener elementos de tamaño variable.

Datos y el Rol de los Atributos de Entidad

Como mencionamos anteriormente, puedes adjuntar datos a las entidades, y estos datos se almacenan en atributos. Los atributos te permiten agregar información específica a cada entidad, haciendo que cada una sea única y permitiéndote modelar sistemas más complejos y realistas. Puedes definir nombres y valores numéricos para los atributos.

Por ejemplo, si tus entidades representan mensajes en una red de comunicación, podrías asignar un atributo llamado "longitud" que indique la longitud de cada mensaje en particular. Puedes leer o cambiar los valores de los atributos durante la simulación, lo que te permite modelar comportamientos dinámicos donde las propiedades de las entidades cambian a medida que avanzan por el sistema.

Las entidades y sus atributos pueden ser de cualquier tipo de datos que Simulink soporte, incluyendo tipos enumerados. Sin embargo, los tipos de datos soportados por MATLAB® pero no por Simulink podrían no ser compatibles para pasar datos entre el modelo de Simulink y las acciones de eventos. Puedes utilizar estos tipos de datos en las acciones de eventos como variables locales.

Si necesitas definir estructuras de entidad complejas que se utilizarán en múltiples ubicaciones en tu modelo, o si estás utilizando bloques como MATLAB Discrete-Event System o Discrete Event Chart, es recomendable especificar la estructura de la entidad utilizando objetos bus de Simulink. Los objetos bus te permiten definir la estructura de datos de forma centralizada y reutilizable.

Creando Entidades en un Modelo SimEvents

El bloque principal para crear entidades en SimEvents es el Entity Generator. Por defecto, este bloque crea entidades basadas en el tiempo. Puedes modificar el parámetro "Time Source" para seleccionar la fuente de tiempo para la generación de entidades. Existen diferentes métodos para crear entidades basadas en el tiempo:

* Entidades basadas en período: Utilizando el parámetro "Period" en el bloque Entity Generator, puedes especificar un período fijo en el que se crearán entidades de forma regular. Por ejemplo, si configuras el período a 1 segundo, el bloque generará una entidad cada segundo.

* Entidades basadas en señal: Puedes utilizar un puerto de señal en el bloque Entity Generator como fuente de tiempo. Para ello, conecta un bloque de fuente de Simulink, como un bloque "Repeating Sequence", al puerto de señal del Entity Generator. Los valores de tiempo proporcionados por la señal deben ser no negativos. Este método te permite controlar con mayor flexibilidad los momentos en que se generan las entidades, utilizando patrones de tiempo más complejos definidos por la señal.

* Entidades aleatorizadas: Puedes utilizar código MATLAB en el bloque Entity Generator para generar entidades en momentos aleatorios. En el parámetro "Intergeneration time action", puedes ingresar una llamada a una función de aleatorización de MATLAB, como rand. Por ejemplo, el código dt = rand(1,1); generará un tiempo aleatorio entre 0 y 1 para cada entidad. Este método es útil para simular sistemas donde las llegadas de entidades son aleatorias, como en sistemas de colas o redes de comunicación.

Crear entidades en SimEvents es el primer paso fundamental para construir modelos de simulación. El bloque Entity Generator te proporciona las herramientas necesarias para definir el tipo de entidad, la frecuencia de generación y las características iniciales de las entidades que poblarán tu simulación.

Preguntas Frecuentes sobre Entidades en SimEvents

¿Puedo cambiar el tipo de entidad de una entidad después de que ha sido creada? No, el tipo de entidad se asigna cuando la entidad es creada por un bloque Entity Generator o Composite Entity Creator y no cambia a lo largo de la simulación.

¿Cómo puedo acceder a los atributos de una entidad en un bloque Discrete Event Chart o MATLAB Discrete Event System? Dentro de estos bloques, puedes acceder a los atributos de una entidad utilizando notación de punto, por ejemplo, entity.attributeName.

¿Puedo utilizar entidades para modelar sistemas continuos? No directamente. Las entidades están diseñadas para la simulación de eventos discretos, donde los cambios de estado ocurren en momentos específicos. Para sistemas continuos, Simulink es más apropiado. Sin embargo, puedes combinar SimEvents y Simulink para modelar sistemas híbridos que tengan componentes discretos y continuos.

¿Qué sucede con las entidades que llegan a un bloque Entity Terminator? Las entidades que llegan a un bloque Entity Terminator son destruidas o eliminadas de la simulación. Este bloque se utiliza para representar el final del flujo de entidades en tu modelo.

¿Es posible crear entidades que representen entidades físicas con propiedades físicas? SimEvents se centra en la simulación a nivel de eventos discretos. Si bien puedes utilizar atributos para representar propiedades que podrían estar relacionadas con propiedades físicas, SimEvents no simula directamente la física de las entidades. Para simulaciones físicas, herramientas como Simscape™ son más adecuadas.

Conclusión

Las entidades son los bloques de construcción fundamentales en la simulación de eventos discretos con SimEvents. Comprender su naturaleza, sus atributos, sus tipos y cómo crearlas es esencial para construir modelos de simulación efectivos y precisos. Desde representar aviones en un aeropuerto hasta paquetes en una red de comunicación, las entidades te permiten modelar una amplia gama de sistemas dinámicos donde los eventos discretos son la clave. Con la flexibilidad de los atributos y la variedad de bloques de SimEvents, tienes las herramientas necesarias para crear simulaciones detalladas y obtener información valiosa sobre el comportamiento de tus sistemas. A medida que explores más a fondo SimEvents, descubrirás aún más formas de aprovechar el poder de las entidades para resolver problemas complejos de simulación.

What is an example of a discrete system simulation?
Example. A common exercise in learning how to build discrete-event simulations is to model a queueing system, such as customers arriving at a bank teller to be served by a clerk. In this example, the system objects are Customer and Teller, while the system events are Customer-Arrival, Service-Start and Service-End.

Subir