Está en la página 1de 7

Análisis algorítmico de las estrategias de simulación de sistemas discretos

Los lenguajes de simulación para la simulación de sistemas discretos se


eligen en base a lo atractivo de sus características, aunque hay una de ellas que
resulta determinante e impone la naturaleza del lenguaje, es la estrategia,
enfoque o visión del mundo inherente al lenguaje, utilizada para la selección del
«suceso siguiente» y la gestión del tiempo. Ellos se clasifican en los
procedimientos de control de tiempos de los lenguajes de simulación de sucesos
discretos, según la estrategia seguida en la selección de sucesos se clasifican en:

1. Programación de Sucesos (Event Scheduling).


2. Exploración de Actividades (Activity Scanning).
3. Interacción de Procesos (Process Interaction).

El hecho de que algunos lenguajes tales como; SIMSCRIPT II.5, SLAM,


SLAM II y SIMAN aparezcan tanto como lenguajes según una estrategia de
programación de sucesos (event scheduling), como de interacción de procesos
(process interaction), responde a que su estructura y naturaleza permiten al
usuario emplear ambas estrategias, lo que refleja la tendencia creciente a la
incorporación de múltiples visiones del mundo en la estructura de un solo lenguaje
el cual esta ordenada a sucesos incondicionales que se implanta de la manera
que, el procedimiento (ES) de control del tiempo selecciona de la lista de sucesos
aquel cuyo tiempo de ocurrencia es el más próximo, resolviendo los empates por
las prioridades asignadas o por defecto, actualiza el tiempo del reloj de simulación,
igualando su valor al del instante en que ocurre el suceso, y llama a la rutina
correspondiente al tratamiento del suceso.

Cada una de las estrategias de simulación que se que se presentaron en la


tabla anterior es susceptible de una representación algorítmica genérica, así como
las rutinas para el tratamiento de sucesos de la estrategia (ES), las rutinas de
condición y las de actividades para la estrategia (AS), y los segmentos de
condición y acción para la estrategia (PI).

Debemos demostrar que en toda representación algorítmica se utiliza algún


conjunto de procedimientos de gestión de estructuras de datos un ejemplo de ello
seria las listas, para ayudar a la introducción y recuperación de las
representaciones de la información sobre los sucesos y de esta manera
manteniendo el carácter genérico de la representación, evitaremos suposiciones
sobre las estructuras de datos que se pueden utilizar en las implantaciones
específicas de las estrategias tal descripción algorítmica sera precisa solo en la
descripción de los aspectos esenciales de la gestión del tiempo, incluyendo las
implicaciones correspondientes a las rutinas de modelización, aunque excluyendo
los detalles que no dependen de la estrategia y de esta forma la representación
algorítmica va concentrada en su análisis de las características que dependen de
la estrategia adoptada y de las que dependen del problema específico que se
simula el cual los lenguajes de simulación ofrecen, en general, las siguientes
capacidades y características:

1. Modelización del estado del sistema.


2. Modelización de la dinámica del sistema.
3. Herramientas para el muestreo estadístico.
4. Especificaciones sobre el proceso de recogida de datos.
5. Recogida de datos generados por la simulación.
6. Análisis de los datos recogidos.
7. Presentación de resultados.
8. Monitorización de la simulación y herramientas de depuración del modelo.
9. Procedimientos de inicialización de la simulación.
10. Herramientas auxiliares complementarias.
Un enfoque al análisis de estas características, seria que dentro de ellas
son intrínsecas aquellas que dependen solo de la estrategia elegida y por lo tanto
son las pueden ser objeto de una descripción algorítmica genérica de la estrategia
y ellas son; Modelización del estado del sistema, Modelización de la dinámica del
sistema y el Procedimientos de inicialización de la simulación, mientras que las
restantes son relativamente independientes de la estrategia y a partir de la
identificación de los elementos intrínsecos podemos dar las siguientes
descripciones de la estrategia en pseudocódigo.

Dentro de las estrategias de las estrategias de simulación de sistemas


discretos damos algunos conceptos de cada una de estas.

Programación de Sucesos (Event Scheduling).


La programación dirigida por eventos o de sucesos es un paradigma de
programación. Un paradigma de programación es una propuesta tecnológica que
es adoptada por una comunidad de programadores cuyo núcleo central es
incuestionable en cuanto a que unívocamente trata de resolver uno o varios
problemas claramente delimitados. La resolución de estos problemas debe
suponer consecuentemente un avance significativo en al menos un parámetro que
afecte a la ingeniería de software.
Probablemente el paradigma de programación que actualmente es el más
usado a todos los niveles es la orientación a objeto. El núcleo central de este
paradigma es la unión de datos y procesamiento en una entidad llamada "objeto",
relacionable a su vez con otras entidades "objeto".
En el que tanto la estructura como la ejecución de los programas van
determinados por los sucesos que ocurran en el sistema, definidos por el usuario o
que ellos mismos provoquen.
Para entender la programación de sucesos, podemos oponerla a lo que no
es, mientras que en la programación secuencial o estructurada, es el programador
el que define cuál va a ser el flujo del programa, en la programación dirigida por
sucesos será el propio usuario, o lo que sea que esté accionando el programa el
que dirija el flujo del programa. Aunque en la programación secuencial puede
haber intervención de un agente externo al programa, estas intervenciones
ocurrirán cuando el programador lo haya determinado, y no en cualquier momento
como puede ser en el caso de la programación dirigida por eventos.
Al crear un programa por sucesos se debe definir los eventos que
manejarán su programa y las acciones que se realizarán al producirse cada uno
de ellos, lo que se conoce como el administrador de evento. Los eventos
soportados estarán determinados por el lenguaje de programación utilizado, por el
sistema operativo e incluso por eventos creados por el mismo programador.
En la programación dirigida por sucesos, al comenzar la ejecución del
programa se llevarán a cabo las inicializaciones y demás código inicial y a lo que
el programa quedará bloqueado hasta que se produzca algún evento o suceso.
Cuando alguno de los eventos o sucesos esperados por el programa tenga lugar,
el programa pasará a ejecutar el código del correspondiente administrador de
evento. Un ejemplo seria si el evento o suceso consiste en que el usuario ha
hecho click en el botón de play de un reproductor de películas, el cual este
ejecutará el código del administrador de evento, que será el que haga que la
película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Lexico y
Visual Basic, en los que a cada elemento del programa (objetos, controles,
etcétera) se le asignan una serie de eventos que generará dicho elemento, como
la pulsación de un botón del ratón sobre él o el redibujado del control.
La programación dirigida por eventos es la base de lo que llamamos interfaz
de usuario, aunque puede emplearse también para desarrollar interfaces entre
componentes de Software o módulos del núcleo.
En los primeros tiempos de la computación, los programas eran
secuenciales, también llamados Batch. Un programa secuencial arranca, lee
parámetros de entrada, procesa estos parámetros, y produce un resultado, todo
de manera lineal y sin intervención del usuario mientras se ejecuta.
Con la aparición y popularización de los PC, el software empezó a ser
demandado para usos alejados de los clásicos académicos y empresariales para
los cuales era necesitado hasta entonces, y quedó patente que el paradigma
clásico de programación no podía responder a las nuevas necesidades de
interacción con el usuario que surgieron a raíz de este hecho.
En contraposición al modelo clásico, la programación orientada a eventos
permite interactuar con el usuario en cualquier momento de la ejecución. Esto se
consigue debido a que los programas creados bajo esta arquitectura se componen
por un bucle exterior permanente encargado de recoger los eventos, y distintos
procesos que se encargan de tratarlos. Habitualmente, este bucle externo
permanece oculto al programador que simplemente se encarga de tratar los
eventos, aunque en algunos lenguajes será necesaria su construcción.
Ejemplo de programa orientado a eventos o sucesos en pseudo codigo
lenguaje:
While (true){
Switch (event){
case mousse_button_down:
case mouse_click:
case keypressed:
case Else:
}
}

Exploración de Actividades (Activity Scanning).

La estrategia elige el suceso siguiente basándose en ambos, el tiempo


programado para la ocurrencia del suceso y la verificación de las condiciones. Un
concepto amplio básico en la actividad que determina una transición de estado del
sistema que requiere un periodo de tiempo. Esta actividad se presenta
habitualmente mediante dos sucesos distintos que marcan respectivamente el
principio y el final de la misma. Según la visión del mundo que corresponde a un
lenguaje, o modelo de simulación programado en un lenguaje, basado en la
estrategia AS, el cual considera que el sistema consta de componentes que
desarrollan actividades sujetas a actividades especificas. Se tiene en cuenta que
para un enfoque más priorizado en la implantación de esta estrategia se
particularizan las componentes de tipo activo, o componentes móviles del
sistema, que pueden tener asociada una rutina de actividad que cuando se ejecuta
modela las fases de la componente. Cada componente de tipo activo tiene
también asociado un reloj interno que indica en que instante la componente vuelve
a poder ser tenida en cuenta para ser activada de nuevo y una rutina de condición
para determinar si se reúnen las condiciones, distintas del tiempo, requeridas
para su reactivación. El procedimiento de control de tiempo AS explora las
actividades en orden de prioridad para su elegibilidad en el tiempo y otras
condiciones complementarias de activación y ejecuta la rutina correspondiente a la
actividad de la primera componente cuyas condiciones de actividad se satisfacen.

Interacción de Procesos (Process Interaction).

La estrategia contiene características hibridas que lo relacionan tanto con la


estrategia ES como con las AS, dentro de la visión del mundo la PI contempla el
progreso de las componentes del sistema a través de una secuencia de pasos, o
procesos, cada uno de los cuales puede tener dos posibles componentes, un
segmento de condición, cuya ejecución identifica si se puede pasar a ejecutar la
segunda componente, un segmento de acción. Dentro de la implantación de la
estrategia PI en un lenguaje como el GPSS, (General Purpose Simulation System,
este es un lenguaje pionero desarrollado por Gordon en 1964, que a pesar de los
años transcurridos mantiene su vigencia gracias a las continuas actualizaciones,
Schriber (SCH) el cual se basa en un procedimiento de control del tiempo que
utiliza dos listas de sucesos:
1. Una lista de sucesos futuros (Future Events List. FEL), que contiene
información sobre los eventos programados para ser ejecutados en un
instante posterior.
2. Una lista de sucesos en curso (Current Events List, CEL), que contiene
información sobre los eventos que ya son elegibles desde el punto de vista
del momento en que tienen que ser ejecutados, pero cuyas otras
condiciones pueden no satisfacerse aun.

También podría gustarte