,pu¡ i\C ION
"!i8-:8-,633-B
"j!T"ll 1111 !·:¡ !I 1
f
¡·¡
¡·¡
MORIEGA
@; MEGABYTE
GR:;JF ~:)
~~
. ~ \ ::I:'.... '"''lES
1 ~
Acerca del autor:
Simulación por colllputadora
Nacido en Cracovia, Polonia, Stanislaw Raczynski realizó estudios profesionales en la Academia de Minería y Metalurgia en su país natal, recibiendo además, el grado de maestro-ingeniero electricista en 1964. En 1969 obtuvo el grado de doctor en Ciencias técnicas y, en 1977, el de doctor habilitado en el área de control automático en la Academia de Minería y Metalurgia, institución en la que además fungió como profesor de 1964 a 1972. A lo largo de su destacada trayectoria profesional, trabajó como investigador en el Grupo Internacional de Investigaciones del Instituto de Problemas de Control en Moscú, U. R. S. S.;comojefedeláreadeAnálisis de Sistemas, en la Academia de Minería y Metalurgia, en Cracovia; y como colaborador en el European Workshop on Industrial Computer Systems en París, Francia. Cuenta con amplia experiencia en el área docente, ya que ha impartido las cátedras de Control automático, Teoría de Control y Simulación por computadora en la Universidad Nacional Autónoma de México y en la Universidad Panamericana de México. Actualmente. el doctor Raczynski es vicepresidente de la Society for Computer Simulator con sede en San Diego, California, es miembro de la American Mathematical Society y revisor de Mathematical Reviews.
1
1
'
1
--'----- -~
Sirllulación
por computadora Stanislaw Raczynski Profesor de la Escuela de Ingeniería de la Universidad de Panamericana, México
•
"""
MEGABYTE ----"-----
GRU~,,~:,:'.:~:m ::TORES
............................................................................................................."""
--~""''"""'"""""""""'"""'"""""
Contenido
VIEGABYTE es una marca registrada por Editorial Limusa. S.A. de C.V.
Introducción
\!arcas R~g istrad a s: A !o largo de teda la obra. MEGABYTE hizo todo lo posible por diferenciar los nombres de marc.is registradas de los términos descriptivos usados en ella. Como es la costumbre. para hacerlo recurrió al uso Je letras mayuscuias. MEGABYTE no está afiliada a ningún fabricante.
CAPÍTULO 1.
Se ha hecho todo lo posible por proporcionar información precisa y completa. No obstante, MEGABYTE no asume ninguna responsabilidad por el uso de ésta, ni por violaciones a la ley de derechos de autor sobre la propiedad intelectual en que incurran terceras personas como resultado de dicho uso.
CAPÍTULO 2. l..n presentación .v disposición en conjunto de SI~1ULAClÓN POR COMPUTADORA
,-un propiedad del editor. Ninguna parre de e>ca obra puede ser reproducida o rransmirida, mediante ningún sistema o método, electrónico o mecánico !INCLUYENDO EL FOTOCOPIADO, la grabación o cualquier sis1ema dt! recuperación y ulmacenamiento de información), sin consentimienco por escrito de! editor. De re ~hos
15
Variables aleatorias - distribución básica y generadores
21
La función acumulativa y densidad de ia probabilidad Generación de los números aleatorios con distribución uniforme 2.3 La distribución exponencial 2.4 La distribución de Poisson 2.5 La distribución de Erlang 2.6 La distribución normal 2.7 La distribución Gamma 2.8 La distribución empírica 2.9 Un ejemplo de aplicación de los generadores de variables aleatorias 2.10 Problemas
reserv ados:
1993. EDITORIAL LIMUSA. S.A. de C.V. GRUPO NORlEGA EDITORES Baldaas 95. C.P. 06040, México, D.F. Telé fo no: 521-21 -05 Fax 512-29-03
9
Sistemas causales y clasificación de los sistemas dinámicos
2.1 2.2
~ !EGABYTE
s
. . ...... ............. ...
21 23
25 26 28 29
30 30
32 33
Miembro de la Cámara Nacional de la Industria Editorial Y!exicana. Registro número 121
CAPÍTULO 3.
Primera edición: 1993
Impreso en México
3.1 3.2 3.3
,39 ~2)
lSSN-96 8 -18-4633-8
--------
Especificaciones del modelo
Descripción informal del modelo Descripción formal del modelo \.lilr cos experimentales y modelos simplificados
37 37 40 42
Contenido 6
7
Contenido
3.4 3.5
Verificación y validación del modelo Problemas
CAPÍTULO 4.
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10
CAPÍTULO 5.
5.1 5.2
5.3
55 56 58 60 62 64 66 69 70 72
Ejemplos de programación usando lenguajes algorítmicos (Basic, Fortran, Pascal) en simulación de sistemas dinámicos continuos ............................... 75
Esquema general del programa de simulación, estructuración del programa Aplicaciones
75 77
5.2.1 5.2.2 5.2.3 5.2.4
77 80 80 83
Simulación en PASCAL .................................................. Simulación en FORTRAN ............................................... Simulación en BASIC ...................................................... Ejemplo con retraso-realización en PASCAL .............
Problemas
CAPÍTULO 6. 6.1 6.2 6.3 6.4 6.5
Modelos matemáticos de los sistemas dinámicos y algunos algunos algoritmos numéricos...................... 55
Introducción El método de Euler Los algoritmos de Runge-Kutta Los métodos lineales de maltipaso Estabilidad de los métodos numéricos La ecuación de muertes y nacimientos ................................ Sistem.a s con retraso ................................................... ............ Sistemas rígidos ....................................................................... Sistemas distribuidos-dificultades computacionales ......... Problemas ..................................................................................
Lenguajes de simulación
6.5.4 PAT 1: El translador de PASION a PASCAL ................ 116 6.5.5 El generador de los modelos con líneas de espera y el ambiente de PASlON .............................................. 1l!i 6.5.6 El editor de diagramas ............................... 121
48 54
87
91
Introducción ............................................................................. 91 Las estrategias de simulación de eventos y procesos ....... 92 El lenguaje CSL .......................................................................... 94 El lenguaje SIMULA .................................................................. 99 El lenguaje PASJON ................................................................... 106 6.5.1 Introducción ................................................................... 106 6.5.2 Procesos y eventos ........................................................ 107 6.5.3 Jerarquía de procesos y herencia de propiedades .. 112
6.6 6. 7 6.8 6.9
El paquete GPSS El lenguaje Dynamo y el método de Forrester Hoja extendida Otros lenguajes y paquetes de simulación
129 135 138 141
6.9.1 Lenguajes para simulación continua .......................... 141 6.9.2 Lenguajes para simulación discreta y discretocontinua ................................................................ .......... 143 6.9.3 Lenguajes orientados a ob jetos ................................... 148 6.9.4 LOO y simulación ........................ 151
CAPÍTULO 7. 7.1 7.2 7.3 7.4
Int roducción ................................... .......................................... 153 El modelo de demanda y ventas ............................................ 154 Los paquetes PAOM y PSOM .................................. ................ 156 Introducción a la simulación de la dinámica de mercado. 158 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5
CAPÍTULO 8.
8.1 8.2 8.3 8.4 8.5 8.6
Planteamiento del problema ........................ ................ 162 Identificación de los parámetros ................................. 164 Simulación ....................................................................... 166 Optimización .................................................................. 166 ···················· 171 Conclusiones
El uso de la simulación en algoritmos iterativos; control óptimo de vuelo
Introducción Planteamiento del problema Algoritmos de control óptimo Control óptimo y simulación Un ejemplo; control óptimo de vuelo Conclusiones
CAPÍTULO 9.
9.1 9.2
Aplicaciones de la simulación en mercadotecnia ..... 153
Simulación de SIDA y del sistema inmunológico humano
Simulación de la propagación del SIDA Modelos y simulación del sistema inmunológico
173 173 173 174 175 176 181
183 183 188
8
Contenido
9.2.1 Introducción 9.2.2 Teoría de redes en la simulación del sistema inmunológico 9.2.3 Un modelo'discreto del sistema inmunológico del SIDA 9.2.4 Algunos resultados Referencias
188 190
191 195
Introducción
201
Frecuentemente es necesario simular , es decir, r eproducir artificialm ente un fenómeno o las relaciones en trada-salida de un sistema. Esto ocurre siempre cuando la operación de un sistema o la experi mentación en él son imposibles, costosas, peligrosas o poco prácticas , como en el entrenamiento de personal de op eración , pilotos de aviones , etc. Si esta reproducción está basada en la ejecución de un programa en una computadora digital, entonces la simulación se llama digital y usualmente se conoce como simulación por computadora, aunque hay que recordar que este término también incluye la simulación en las computadoras analógicas. En este libro hablaremos solamente sobre la simulación digital. La simulación por computadora está relacionada directamente con los simuladores. Por simulador entendemos no sólo un programa de simulación y la computadora que lo realiza, sino también un aparato que muestra visualmente y a menudo físicamente las entradas y salidas (resultados) de la simulación, como es el caso de los simuladores profesionales de vuelo. Sin embargo, antes de seguir con las demás características de la simulación, se mencionará lo que no está incluido en el presente libro, es decir, no vamos a hablar sobre simuladores ni sobre la simulación analógica. La simulación llamada "Monte-Cario", que consiste en la investigación del comportamiento estadístico de ciertos modelos probabilísticos, se estudiará en este texto en forma limitada, dado que existen muchos libros que tratan este tema, como el libro de Coss Buf 26 l, o el de Naylor y coautoresr121. El enfoque del presente texto es la simulación de los sistemas continuos, simulación discreta (secuencias de eventos), métodos de modelado y simulación, lenguajes para simulación , 9
10
Introducción
Introducción
modelado y simulación de sistemas con procesos paralelos, las tendencias en el "software" de simulación contemporáneo, entre otros temas. L.a necesidad de los métodos para modelación de sistemas complejos fue reconocida hace tiempo, aun antes de la era de las computadoras. Rosenblueth y Wienerl 93 1 señalaron en 1945 que los modelos constituyen una necesidad central del procedimiento científico. La aparición de las computadoras analógicas y digitales abrió nuevas posibilidades para el análisis de modelos que podían ser procesados con más rapidez y exactitud. Así surgió el término simulación por computadora y toda la rama de "Computer Science" dedicada a este tema. Existen muchas definiciones de la simulación por computadora, algunas muy distintas (véase Pritsker' 84 f). Zeiglerll 101 en su libro dedicado a los aspectos teóricos de la simulación, dice: "La frase 'modelado y simulación' designa el complejo de actividades relacionadas con la construcción de modelos de los sistemas del mundo real y su simulación en computadora. En particular, modelado trata, en principio, sobre las relaciones entre sistemas reales y modelos; simulación se refiere principalmente a las relaciones entre las computadoras y los modelos." Esta definición refleja lo que comúnmente se entiende sobre modelado y simulación, aunque en la primera sentencia la palabra "simulación" se usa para definirse a sí misma. No obstante, Zeigler no dice nada sobre cuál es la naturaleza de los sistemas y modelos involucrados. Vamos a restringir un poco la clase de modelos, relacionando la simulación con el tiempo y propiedades dinámicas de los sistemas. Así lo hacen algunos autores, por ejemplo, Gordonl 37 1 dice que "podemos entonces definir la simulación de sistemas como una técnica de solución de problemas a través de la observación del comportamiento de un modelo dinámico del sistema en el tiempo". De manera similar definen la simulación Shruben y Margolinl 97 1, Naylor y coautoresl7 21, y Pritskeri86 1. Este último involucra el concepto de "estado" del sistema y trata su dinámica como "el movimiento de un estado a otro según las reglas de operación bien definidas". Algunos autores limitan la simulación a la simulación de tipo Monte-Cario (Kleijnenl 55 l, Tocheri 103 f) . Simulación por computadora es una herramienta interdisciplinaria y tiene aplicaciones en muchos campos de la ciencia y la tecnología, como ciencias técnicas, biología, medicina, sociología, mercadotecnia, desarrollo urbano e incluso la economía política y mundial. Los resultados de los experimentos obtenidos a través de la simulación influyen cada vez más en las decisiones tomadas no sólo en la industria. Por ejemplo, Thomas H. Naylor1 731 describe en uno de sus artículos el impacto de la simulación por computadora sobre las reformas económicas en la Unión Soviética. Las simulaciones de la economía de la URSS se usaban hace muchos años para analizar la dinámica de este sistema. De acuerdo con Naylor, las investigaciones que conducía el Instituto Central de la Economía Matemática de la Academia de Ciencias de la
11
URSS y la Agencia Estatal de Planeación (GOSPLAN) eran muy avanzadas en los años setenta. Puedo confirmar esta opinión completándola con mis observaciones del periodo 1972-1977, cuando trabajaba en el Grupo Internacional de Investigadores de la COMECON; este grupo actuaba dentro del Instituto de Problemas de Control en Moscú, donde un grupo muy fuerte y numeroso de economistas, matemáticos y expertos en simulación intentaban simular la economía del país. Según Naylor, los pronósticos para el desarrollo de la economía eran poco favorables y mostraban creciente escásez de bienes de consumo, insuficiente desarrollo del sistema energético y creciente falta de materia prima. En la década de los setenta se llevaron a cabo en la URSS simulaciones para averiguar la posibilidad de crear un "sector monetario" con bancos comerciales, el rublo intercambiable y mercado libre. Mijail Gorbachov fue el primer dirigente ruso que tomó en serio estos resultados, los cuales mostraban una quiebra inevitable del sistema comunista y una necesidad urgente no sólo de reformas económicas, sino también políticas. De esta manera, se puede observar que la simulación por computadora tuvo un papel importante en los cambios económicos y políticos en la URSS y en la Europa del Este, Jos cuales van a influir en la economía mundial. La simulación por computadora a veces puede provocar confusión cuando es mal interpretada. Un buen ejemplo se observó en la caída de la bolsa de Nueva York, en octubre de 1988. Los expertos opinan que una de las causas de este fenómeno fue el uso de los progr amas de simulación por los corredores de bolsa, quienes tuvieron acceso a pronósticos inmediatos y tomaron decisiones rápidas de venta de acciones. Esto probablemente desestabilizó el sistema financiero. La simuiación sirve a la sociedad en muchos campos, incluso en la medicina. Uno de los problemas de salud más importantes es el desarrollo del SIDA y el entendimiento de los mecanismos del sistema inmunológico humano. La revista Simulation (enero, 1990) dedica uno de sus recientes números a la simulación de la propagación de esta enfermedad. El capítulo 9 de este libro describe este importante problema con más detalles. Una parte del presente libro está dedicada a los métodos de simulación, los cuales permiten construir modelos y programas para los sistemas complejos con componentes que corren en forma paralela, tanto en la realidad como en el programa de simulación . El rápido desarrollo de las computadoras paralelas en los últimos años hace que el desarrollo del "software" para simulación (y el "software" en general) esté atrasado algunos años con respecto al "hardware". En realidad sólo se utiliza una pequeña parte de las posibilidades de las computadoras contemporáneas. El paralelismo es, sin duda, uno de los aspectos más importantes y poco aprovechados de los nuevos métodos de simulación. Las computadoras de la primera y segunda generación que se usaban para ejecutar simulaciones no tenían procesadores múltiples. Por eso, los lenguajes y paquetes para simulación desarrollados en la
r 12
Introducción
década de los cincuenta, utilizaban los conceptos de "tiempo de modelo" y de "iista de eventos" para reemplazar el paralelismo de los procesos por medio de una ejecución secuencial de instrucciones. Lo que constituye una ventaja de estos lenguajes (por ejemplo, Control and Simulation Language (CSL), es el "mecanismo de tiempo" que controla la simulación. El usuario no tiene control directo ni sobre el tiempo de modelo ni sobre la secuencia de eventos. El programa fuente en dicho lenguaje contiene sólo una parte declarativa, una definición del estado inicial y una secuencia de descripciones de eventos. El orden en el cual aparecen los eventos en el programa fuente tiene poco que ver con el orden e.le la ejecución, ya que el primero está controlado por el mecanismo de tiempo. CSLygran parte de los lenguajes de simulación de eventos contienen algunos mecanismos de álgebra de conjuntos y de generación de números aleatorios. En los años sesenta aparecieron nuevos conceptos provocados por el rápido incremento de la capacidad de los sistemas de cómputo. La idea más importante ha sido formulada en el lenguaje Simula 671 28 1. Esta versión del Simula (desarrollada en el Centro No-ruego de Cómputo en Oslo, en 1967) es en realidad un lenguaje algorítmico de alto nivel, basado en Algol 60. La idea fund amental del Simula 67 consiste en la creación de objetos en la memoria operativa; cada objeto contiene sus datos (atributos, parámetros formales, constantes y variables locales) y su lista de instrucciones, además puede funcionar en forma independiente, ejecutando sus instrucciones. El usuario tiene control sobre la creación, activación y desactivación de objetos. Consideremos, por ejemplo, un modelo de la dinámica de un avión: los datos de tal objeto contienen sus detalles técnicos (como tamaño, parámetros de los motores, número de pasajeros, carga, etc.), y su lista de instrucciones es el código computacional que simula su dinámica; el objeto aparece en la memoria operativa si el avión correspondiente (del sistema real que se modela) aparece en la pantalla del radar de la torre de control y desaparece, y si el avión aterrizó, salió del área de control o se estrelló. La simulación del tráfico aéreo consiste en la creación, activación y desactivación de los objetos. En el programa fuente de esta simulación existe, sin embargo. sólo una declaración (un modelo) del avión, que sirve como patrón para crear diversos modelos particulares de aviones. Otra idea importante del Simula se refiere al concep t o de herencia de propiedades y a las clases de objetos. Esto permite construir una nueva clase de objetos que obtienen todas las propiedades de otra clase, definida anteriormente. En este libro se mencionan estos conceptos por su importancia en los métodos contemporáneos y por su influencia en el desarrollo de los nuevos lenguajes de simulación y programación en general. El Simula y algunos de los lenguajes más importantes se comentarán en los siguientes capítulos. La simulación por computadora no es un cam po C":~-il·~o •..· h-iy que interpretarla como una h ern.mi enta int·':rdisr'a ·'~ ·:'''
Introducción
13
para aprovechar este libro, así como cualquier otro texto sobre esta materia, el lector debe tener ciertos antecedentes en el análisis de los sistemas dinámicos, ecuaciones diferenciales, diferencias, procesos estocásticos, métodos numéricos y, desde luego, computación. El conocimiento básico de estas materias permite comprender el contenido de los capítulos l a 6. El capítulo 7 está dedicado a unas aplicaciones de la simulación en mercadotecnia, por lo que se necesita un conocimiento elemental de los problemas de esta materia, como la demanda, modelos de mercado, influencia de la publicidad, etc. El capítulo 8 describe una aplicación en control y puede omitirse si el lector no está enterado de los métodos de simulación de vueio y los elementos de control óptimo que pertenecen a la parte un poco más avanzada de la teoría de control. Por otra parte, esta aplicación muestra el uso de los modelos no sólo para correr unas simulaciones, sino para llevar a cabo un proceso computacional más complejo. Aplicaciones como ésta son cada vez más visibles y útiles, gracias al tremendo crecimiento de la capacidad de las computadoras contemporáneas, sin duda más rápido que el desarrollo de algoritmos y sistemas de "software". Los métodos avanzados de la simulación por computadora pueden, quizás en el futuro, aprovechar adecuadamente la enorme capacidad de las supercomputadoras y, además, ofrecer herramientas útiles para los usuarios de las computadoras personales.
1 CAPÍTULO 1 Sistemas causales y clasificación de los· sistemas dinámicos
Existen varios métodos para representar gráficamente los sistemas dinámicos. Los esquemas de bloques y los reogramas pertenecen a los más usados. Los esquemas de bloques están compuestos por un número de bloques, casi siempre rectángulos, conectados con flechas: los bloques representan los subsistemas caracterizados por sus ganancias. funciones de transferencia u operadores más abstractos; las flechas son las señales de entrada y salida. En los reogramas ("gráficas de flujo") las señales son los nodos de y las flechas representan las funciones de transferencia. La figura 1.1 muestra un esquema de bloques y el reograma correspondiente, para un sistema compuesto por tres subsistemas 5 1, y 5 3 con retroalimentación. Los esquemas de bloques y los reogramas se caracterizan porque sus representaciones gráficas determinan las señales de entrada y de salida para todo el sistema y para cada uno de sus subsistemas. Un error grave es confundir estas señales o cambiar las direcciones de las flechas. Para cada subsistema y para todo el sistema en consideración, hay que definir bien cuáles son sus entradas y salidas. La entrada es la causa de lo que ocurre en un subsistema y la salida es el resultado. De esta forma llegamos al concepto de un sistema causal. Denotemos por ejemplo, para un sistema S una entrada con U y una salida con Y (figura 1.2). Al aplicar dos entradas lF y U" al sistema S, suponiendo que siempre empezamos en el mismo momento t0 y que el sistema se encuentra en las mismas condiciones iniciales en t0 , las entradas lF y U" pueden cambiar con el tiempo como lo muestra la figura 1.3 (ver página 17). Ahora bien, si las dos entradas son iguales sobre el intervalo [tj1], y diferentes para todo t>t 1• Decimos que el sistema Ses causal en un intervalo de tiempo [a.b] si y sólo 5i
s,
13
16
Sistemas causales y dinámicos
Siste mas caus a le s y dinámicos
17
N
Y(t) =
L
U(t+KH)
K= 1
donde Hes una constante real y N un número entero positivo, es causal si y sólo si Hno es positivo. Es fácil verificar que para cualquier valor positivo de H no.se cumple nuestra definición de causalidad, porque en este caso Y(t) depende de los valores futuros de la entrada. 3. Un sistema que obedece a la ecuación t
Y (t )
=
f
p (t + s) U (s) ds
o en donde p(t) es una función dada, es un sistema causal. Si cambiamos los límites de integración como sigue Figura l. l. Un esquema de bloques y el reograma correspondiente.
Y (t)
=
f
p (t - s) U (s) ds
1
y
s
u
salida
entrada
U'
Fig ura 1.2. Entrada y salida de un sis tema S.
U', U'
u· U(t) = U"(t) '\/ tE
[V 1 ] ~Y (t¡) = Y"(t¡)
par a todo t, E [a, b] . Esto quiere decir que si U' y U" son iguales para todo el intervalo pasado con respecto al momento ti' entonces las salidas corres pond ientes Y' y Y" también son iguales en el momento t 1• Ejemplos l.
2.
Un sistema descrito con la ecuación Y(t) =A U (t), donde A es una constante causal, porque ü(t)=U"(t) implica Y(t) = Y"(t). Un sistema descrito con !a ecuo.ción
tiempo
Figura 1.3. Dos señales de entrada U' (t) y U" (t) .
18
Sistemas causales y dinámicos
Sistemas causales y dinámicos
el sistema descrito con esta ecuación ya no es causal.
3. El número de /(Is clases de equivalencia es infinito, pero numerable.
Denotemos con U{a, b) la señal U sobre todo el intervalo [a, b], con a 5 t $; b, y con e+) la siguiente operación
4.
U {a, b) (+)U {b, c} =U {a, c) Consideremos un sistema cuyo funcionamiento está descrito con un operador S que convierte la entrada en la salida correspondiente, esto es,
Y {a, b)
=
5.
S (U {a, b))
Vamos a decir que las entradas U' y U" son equivalentes sobre un intervalo de tiempo [t0 , t 1) si
S (U' {t0 ,t1) (+)V en donde t0 < t intervalo [t 1,t ].
$;
IV))= S(U"{V 1l
(+) V{t 1,t))
t, y V (t) es cualquier entrada definida sobre el
Estos sistemas se llaman autómatas infinitos. Por ejemplo, un sistema de servicio con una fila no limitada y un puesto de servicio es un autómata infinito. El número de clases de equivalencia es infinito no numerable, pero existe una correspondencia biunívoca entre los números reales y las clases de equivalencia. Éstos son los sistemas con parámetros concentrados. Cualquier sistema descrito con un sistema finito de ecuaciones diferenciales ordinarias pertenece a esta clase. Hay más clases de equivalencia que los números reales. I;:n este caso sedicequeelsistemaesdeparámetros distribuidos. A esta clase pertenecen todos los sistemas descritos con ecuaciones diferenciales parciales. Ejemplos: l. El proceso de propagación de temperatura en un pedazo de metal, donde la temperatura depende de la posición (dentro de la pieza) y del tiempo. 2. El proceso de difusión de un componente químico dentro de un tanque con una solución, sin mezclar el contenido del tanque.
Más intuitivamente, esta clasificación se puede relacionar con el número de los estados posibles de un sistema dinámico en el momento. Recordemos que un vector (o un punto de un espacio más abstracto)Xrepresen-
Ejemplo Consideremos un sistema de control digital de temperatura, cuyo instrumento de medición compara la temperatura actual (controlada) con la temperatura deseada (de referencia) cada diez segundos, esto es, en los momentos t=O, 10, 20,30,40, ... Para este instrumento de medición todas las entradas (temperaturas) iguales en los momentos de comparación y distintos en otros momentos (figura 1.4) son equivalentes. Podemos definir la clase de equivalencia de las entradas de un sistema S como el conjunto de todas las entradas equivalentes de este sistema, sobre un intervalo dado [t0 ,t]. Hay que observar que esta propiedad depende del intervalo de tiempo, y constituye una relación de equivalencia. El concepto de la clase de equivalencia nos permite clasificar los sistemas dinámicos de la siguiente manera [refiriéndose siempre al intervalo [tJ ]:
l. Hay sólo una clase de equivalencia. En este caso el sistema se llama algebraico. Por ejemplo, un sistema descrito con la ecuación Y(t) = In (U(t )) es algebraico, porque para cualquier t > t 0 todas sus
2.
entradas son equivalentes y pertenecen a la misma clase de equivalencia. El número de clases de equivalencia es finito. Estos sistemas llevan el nombre de los autómatas finitos. Esta situación ocurre, si un sistema puede encontrarse solamente en unos estados fijos, cuyo número es finito. Por ejemplo un sistema digital compuesto de un número finito de compuertas NANO, NOR y flip-flops es un autómata finito.
19
J tiempo 10
20
30
40
-=-•·p:ra 1. 4. Algunas entradas equiva lentes para un muestreador de temperatura.
50
20
Sistemas causales y dinámicos
ta el estado de un sistema dinámico, si y solamente si existe una función Ftal que para todo t ~ t 1• X (t)
=
CAPÍTULO 2
F [t,U{t 1, t}. t 1, X (t1)]
En otras palabras, X es el estado del sistema, si, al conocer X en un momento dado y la entrada del sistema, podemos calcular los estados • futuros. Podemos observar que el número de las clases de equivalencia es igual al número de los estados posibles en el momento, desde luego, para los sistemas cuyo estado está bien definido. Esta clasificación de los sistemas dinámicos es muy útil en la etapa de la definición del modelo que se va a usar en la simulación. Si, por ejemplo, sabemos que nuestro sistema es un autómata finito, podemos suponer que la simulación podrá realizarse utilizando un lenguaje o paquete de simulación que describe eventos, los cuales cambian el estado del sistema dentro de un número finito de estados posibles. Si el sistema tiene un estado bien definido que cambia de la manera continua en el tiempo y espacio de N dimensiones, podemos buscar una posible herramienta de simulación entre los métodos que involucran las ecuaciones diferenciales ordinarias. En los siguientes capítulos vamos a referir frecuentemente a lo descrito aquí.
Variables aleatorias distribución básica ·y generadores
2.1
La función acumulativa y densidad de la probabilidad Una gran parte de los sistemas a simular contienen elementos que generan señales indeterminadas, caracterizadas por sus propiedades probabilísticas. Usualmente los sistemas de este tipo se llaman sistemas estocásticos. Desde luego, los resultados de simulación de estos sistemas son variables aleatorias, con cierta distribución de probabilidad, en ocasiones difíciles de analizar teóricamente. Observemos que, en estos casos, una corrida del programa de simulación proporciona solamente una de las posibles trayectorias del modelo y, para llevar a cabo los experimentos de simulación, hay que estimar los valores esperados, varianzas, etc., para las variables de salida, corriendo el mismo programa muchas veces. Si el objetivo de simulación y el modelo simplificado están orientados sólo o casi sólo a los aspectos probabilísticos del problema, decimos que ésta es la simulación Monte-Car/o. Como se ha dicho en la introducción, la simulación Monte-Cario no está incluida en el temario de este libro y, por eso, no discutiremos aquí problemas tales como los métodos de reducción de la varianza y la verificación de las hipótesis estocásticas. Sin embargo, vamos a repasar un poco los métodos de generación de los números aleatorios y algunas distribuciones de probabilidad, ya que estos conceptos se usan frecuentemente en la simulación de eventos. Consideremos un evento aleatorio, cuyo resultado está dado por un valor real X Denotemos con P (X 5 Y) la probabilidad de que el resulta-
•
21 ,.--.~-
_, __
,
-
22
Generación de los números aleatorios
Variables aleatorias
1
Hay que observar que, en este caso, la densidad f(x) no es exactamente una función, sino una distribución o función genera liz ada, porque para expresarla hay que usar impulsos de Dirac en los puntos 1, 2, 3, 4, 5 y 6. La función de distribución acumulativa es, p ues, una función con discontinuidades. 2. Escogemos al azar un valor real dentro del intervalo [0, 1] de ta! manera que cada número tenga la misma probabilidad de ser escogido. El resultado es un número aleatorio con la distribución uniforme en [O, l ]. Su función ac.umulativa y la densidad de probabilidad se muestran en la figura 2.2.
l
1 i
23
1
1
De las propiedades de la función de densidad de probabilidad resulta que la probabilidad P [a:::; X:::; b] de que el resultado X Oa variable aleatoria X) caiga en un intervalo [a, b ] está dado por la integral
i i
1
I IIIII:
b
X
P=
J
f (x ) dx
a
Figura 2.1. Función de distribución acumulativa F y la densidad de probabilidad (ejemplo 1).
2.2 do X sea menor o igual a un valor dado Y La función F ( Y ) = P (X:::; Y) (que depende sólo de Y) se llama la función de distribución acumulativa de probabilidad. Tenemos O:::; F (Y) :::; 1, porque la probabilidad de un evento no puede ser negativa y tampoco mayor que uno. Si existe una función f (x ), tal que
Generación de los números aleatorios con distribución uniforme Para realizar una simulación que necesita el uso de unas variables aleatorias hay que disponer de las secuencias de números aleatorios con cierta distribución de probabilidad. Uno de los métodos antiguos que se usaban hace, tiempo fue sacar los números aleatorios de una tabla preparada y grabada de antemano. Ahora, casi siempre, e stos números
y
F (Y) =
f
f (x) dx
t 1.0
f
1----------,
1.0 1
FI
1
!
entonces f (x) se llama la función de densidad de probabilidad correspondiente.
\ 1 1
Ejemplos l. Si tiramos un cubo cuyos lados llevan 1,2, ... ,6 puntitos y el resultado es el número de puntitos en el lado superior al pararse el cubo, entonces, suponiendo que el cubo es simétrico, tenemos las funciones Fy f como muestra la figura 2.1, ya que el resultado puede ser 1,2,3,4,5 o 6 co n la misma probabi lidad.
X
X
Figura 2.2. La densidad de probabilidad y función acumulativa para la distribución u nifo rm e.
_.,,__,
24
Variables aleatorias
La distribución exponencial 25
Los generadores con distribución uniforme permiten obtener series de números con otras funciones de distribución de probabilidad. Uno de los más sencillos es el método de la transformación inversa. Si la función acum4lativa de distribución deseada es F(x), entonces los números definidos con la fórmula
se generan dentro de la computadora. Se usan dos métodos: generación por medio de procesos físicos aleatorios y generación por medio de una relación de recurrencia. Como un proceso físico aleatorio podemos usar, por ejemplo, el ruidot@rmico en un circuito con semiconductores, que, convertido en un número binario, representa un valor numérico aleatorio. Esta realización, sin embargo, necesita un elemento especial de "hardware". La generación por medio de una relación de recurrencia • es una realización por "software" y por esto se aplica más frecuentemente. Un buen generador de los números aleatorios con distribución uniforme en [O, l] debe cumplir con los siguientes requisitos: l.
Y,= F· 1(r1), i=0,1,2, .... forman la serie deseada. Aquí r, son los números con distribución uniforme en [O, 1] y F· 1 significa la función inversa con respecto a F (x ). Este método a veces es un poco incómodo, porque se necesita un procedimiento para la evaluación de la función inversa. Por eso, siempre hay que buscar algoritmos más sencillos y rápidos. Si queremos, por ejemplo, generar números con distribución uniforme en un intervalo [a,b], simplemente hay que multiplicar un número aleatorio R (uniforme en [O, 1]) por (b-a) y sumar el valor de a. La siguiente función en PASCAL realiza esta operación
La distribución de los números debe ser uniforme en el intervalo [O, l ].
2. Los números deben ser independientes dentro de toda la serie generada. 3. El ciclo del generador debe ser bastante grande, esto es, si ocurre la repetición de los números, entonces debe ocurrir después de generar muchos números distintos. 4. Toda la serie debe ser repetible. Hay que tener la posibilidad de correr el mismo programa otra vez con la misma serie de los n úmeros aleatorios. 5. El generador debe ser rápido y ocupar poco espacio en la memoria operativa.
FUNCTION RU(A,B:REAL):REAL; BEGlN RU:= A+ (B - A)*RND END; Aquí, y en los siguientes procedimientos, RND significa una llamada ala función (sin parámetros), cuyo valor es un número aleatorio en [0.1] (en Turbo-Pascal, por ejemplo, esta función se llama RANDOM). Vamos a caracterizar brevemente otras de las más importantes distribuciones de probabilidad y algunos de los generadores de las variables correspondientes.
Los generadores más usados que satisfacen estos requisitos pertenecen a la clase de los llamados métodos de congruencias. Si rl'r2,r3, ••••• son los números de la serie deseada, entonces la fórmula (aditiva) de congruencias correspondiente es como sigue
2.3
z,. 1 = (Az; + B) (mod C)
r,. i
1
=
La distribución exponencial
z,.JC
= 0,1,2,3, .....
en dondez es el valor inicial (dado),A, By Cson constantes. Los valores de z A, By C determinan toda la serie. En consecuencia, estos generadores no son, en realidad, generadores de números aleatorios. Sin embargo, los números que se generan (las series seudoaleatorias) tienen ciclos bastante grandes y aproximan satisfactoriamente las series aleatorias. Los valores óptimos de A. B y C se pueden evaluar teóricamente, pero éstos dependen de las propiedades de la computadora. Siempre el mejor generador es el que fue diseñado para la computadora en la cual se usa, y rara vez el usuario puede mejorar a un generador que proporciona el producente de "software" para una computadora concreta. Para más información sobre éstos y otros generadores de los números aleatorios con la distribución uniforme el lector se puede referir a Naylorf 721 y Shrubenf 97 1.
La función de densidad para variables con esta distribución se puede expresar como
0
0 ,
f (x)
=
A EXP (-Ax )
y la función de distribución acumulativa es
t
F (x) = 1 - EXP (-Ax)
1
Aquí A es una constante, denotada también comol/A. en la literatura. El valor esperado correspondiente es igual a l/A y la varianza l/(A2). La figura 2.3 muestra la forma de la función de densidad f (x ). Esta distribución tiene muchas aplicaciones en la simulación de eventos aleatorios, ya que usualmente los flujos de entrada y tiempos
La distribución de Poisson 26
27
Variables aleatorias
sí (constituyen el flujo de Poisson), entonces el intervalo de tiempo entre las ocurrencias de los eventos tiene la distribución exponencial. Ahora, si calculamos la probabilidad P de que ocurran x eventos dentro de un intervalo T, resulta que
f(x)
P = EXP(-T /A) (T /A
Y /x !
en donde A es una constante, x! significa "x factorial". Esto implica la siguiente función de densidad para el número de ocurrencias dentro del intervalo T = 1. ·
f (x) = EXP(-1/A) (1/A
X
Figura 2.3. La función de densidad para la distribución exponencial.
de servicio en los modelos de Jos sistemas de servicio masivo están relacionados a la distribución exponencial. Por ejemplo, si el flujo de los clientes que entran a una tienda es aleatorio en el sentido de que los tiempos de llegada son completamente independientes entre sí, entonces el intervalo de tiempo entre las llegadas consecutivas tiene la distribución exponencial. Este flujo se llama el flujo de tipo Poisson. Una de las propiedades interesantes del flujo de Poisson es que cualquiera que sea el momento inicial de la observación, el tiempo que queda hasta la próxima llegada tiene la misma distribución exponencial, independientemente del momento de la llegada anterior y de toda la historia de las llegadas. Usando un generador de los números aleatorios con distribución uniforme en [O. l] es muy fácil generar números con la distribución exponencial, usando el método de transformación inversa. Una de las realizaciones en PASCAL es como sigue FUNCTION EX(A:REAL):REAL; BEGIN EX:=-A *LN(RND) END; en dende RND es un número con distribución uniforme en [O, l ].
2.4
La distribución de Poisson Consideremos una secuencia de eventos, por ejemplo Ja llegada de los clientes a un sistema de servicio. Si los eventos son independientes entre
~
Y /x !
Ésta es la densidad para la distribución de Poisson. Hay que recordar que en esta interpretación x es una variable entera. El valor de una variable aleatoria con distribución de Poisson es, por la definición, el número de ocurrencias de un evento descrito con el flujo de Poisson, dentro de un intervalo de tiempo T. En consecuencia, para generar estos números, podemos simular dicho proceso de ocurrencias o llegadas. Así, hallamos que el número deseado N tiene que cumplir con la siguiente desigualdad N
N
I
u,~ T~
+
1
L
u,
i= 1
i= 1
donde u, tiene la distribución exponencial. Para generar v, podemos usar un generador de las variables r, con distribución uniforme en [O, l] y calcular u, =-A In r,. Este algoritmo se puede simplificar, tomando en cuenta que la suma de logaritmos es el logaritmo del producto de sus componentes. La desigualdad anterior se convierte en la siguiente N+l
N
1t
r,
~ EXP(-T/A) ~
i =l
7t
r,
i =l
La siguiente función en PASCAL genera los valores de N (denotados como el valor de la función POISS ON), para T =1 FUNCTION POISSON(A:REAL):INTEGER; VAR Y,V:REAL; N:INTEGER; BEGIN Y:=l.O; V:=EXP(-1.0/A); N:=O;
~
,=-
28
Variables aleatorias
La distribución normal
29
FUNCTION ERLANG (N:INTEGER; A:REAL) :REAL; V AR K:INTEGER; S:REAL; BEGIN
f(x)
5:=0,0; FOR K:=l TO n DO S:=S + EX(A); ERLANG:=S END .
2.6
X
Figura 2.4. Un ejemplo de la distribución de Erlang.
WHILE Y>=V DO BEGIN Y:=Y*RND; N:=N+l END; POISSON:=N END;
La distribución normal Ésta es una de las más importantes distribuciones de probabilidad. El conocido Teorema Límite en la teoría de probabilidad dice, que la distribución de la suma de unas variables aleatorias independientes tiende a la distribución normal si el número de las variables tiende a infinito. aun cualquiera que sea la distribución de cada una de dichas variables. La función de densidad para esta distribución es
1 [-1 (X- V)~]
f (x) =-exp S../21t 2
--
S
en donde Ses el valor esperado y V1 es la variancia.
f(x)
2.5
La distribución de Erlang \ Esta distribución es la de la suma de un número de variables aleatorias independientes que tienen la misma distribución exponencial. La distribución Erlang tiene aplicaciones en los modelos de los sistemas de servicio masivo, por ejemplo en las situaciones donde el servidor tiene que efectuar dos operaciones cada una con tiempo de servicio exponencial. El tiempo total de servicio tiene en este caso la distribución Erlang. (Ver figura 2.4.)
\
La siguiente función en PASCAL puede servir como un generador de los valores aleatorios con distribución de Erlang, para el caso de la suma de N variables con distribución exponencial, cada una con el parámetro A (valor esperado l/A). En esta función se usa la función EX descrita anteriormente, para generar valores con la distribución exponencial.
X
Flgura 2.5. La función de densidad para la distribución normal.
30
Variables aleatorias
La distribución empírica
pongamos, por ejemplo, que para un puesto de servicio se registraron los tiempos de servicio durante un intervalo de tiempo bastante largo. Según las observaciones x 1 veces el tiempo de servicio fue menos de cinco minutos, x 2 veces entre cinco y diez minutos, x 3 veces entre diez y quince minutos, etc. Al -primer intervalo le asignamos su valor promedio y 1 =2.5 min., al segundo y 2 = 7.5, al tercero y 3 =12.5, etc. Así, los resultados de las observaciones forman dos arreglos X= (xl' .... ,x;> y Y= (y 1, ... .,y¡), en donde N es el número de .Jos intervalos posibles de tiempo de servicio. Para hallar la función de densidad para el tiempo de servicio de dicho puesto, hay que normalizar el arreglo X dividiendo cada uno de sus componentes por la suma de los x (que es igual al número total de las observaciones). La serie normalizada X, tratada como la función de tiempo de servicio como muestra la figura 2.6, es una aproximación de la función de densidad para el tiempo de servicio, moderado con el incremento 5 min. Luego se determina la función acumulativa F (7), sumando (integrando) los valores de f (7). Para generar los valores de tiempo de servicio T podemos aplicar el método de transformación inversa. La siguiente función en Pascal proporciona las realizaciones de la variable aleatoria T con la función acumulativa F, dada por el arreglo H
Una de las consecuencias del Teorema Límite es que muchos de los fenómenos físicos cuyos resultados dependen de muchas variables independientes, generan valores con la distribución normal. Hay algunos algoritmos para generar variables con esta distribución. Uno de los más sencillos consiste en sumar algunas variables independientes con distribución uniforme. Aprovechando el hecho de que la suma de 12 • variables uniformes en [O, i] tiene el valor esperado 6 y la variancia 1, podemos obtener valores con distribución normal con parámetros S y V (valor esperado y desviación estándar respectivamente), como valores de la siguiente función (en PASCAL). FUNCTION DNOR(S,V:REAL):REAL; VAR SU:REAL; K:lNTEGER; BEGIN SU:=O.O; FOR K:=l TO 12 DO SU:=SU + RND; DNOR:= V"(SU-6.0) + S END Esta función no es la más exacta, porque los valores que proporciona son truncados y nunca pueden aparecer números mayores o menores que el valor esperado más o menos seis veces la desviación estándar. Para lograr más congruencia con la distribución normal teórica, hay que sumar más números o usar algoritmos más sofisticados.
2. 7
FUNCTION SAi'V1PLE(N:INTEGER; H,Y:TABLA):REAL: VAR K:INTEGER; S,S l:REAL; B:800LEAN;
La distribución Gamma Ésta es una generalización de la distribución de Eriang, en donde el número de las variables a sumar (con la distribución exponencial) ya no es un entero. La distribución Gamma puede relacionarse con la distribución normal como la distribución de la suma de los cuadrados de unas variables con la distribución normal. La función de densidad para la distribución Gamma puede tener una variedad de formas según sus parámetros y puede describir diversos procesos físicos.
2.8
La distribución empírica A menudo la distribución de una variable del modelo no se puede calificar como ninguna de las distribuciones conocidas y no se puede expresar con ninguna expresión determinada. La única información sobre la variable son los valores de un número de sus realizaciones. Su-
31
t
F
1
1
1.0
1
1
1
f
1
t
T I T ll TITllT
X
1
r'
,
X
1 F1~ura
2.6. La función de densidad y la función acumulativa para una distribución empírica.
Problemas 32
Variables aleatorias
El problema es ~imular un número de días de funcionamiento del almacén para averiguar cómo cambia el número total de piezas almace-
BEGIN B:=TRUE; S:=RND; Sl:=Y[N]; K:=l; WHILE B ANO (l«M) DO BEGIN IF H[K]>=S THEN BEGIN Sl:=Y[K]; B:=FALSE END; K:=K+l END; SAMPLE:=Sl END;
nadas. Con la tabla de observaciones formamos los arreglos Y y X (vea la descripción del generador de la variable con distribución empírica). Tenemos N = 8 , Y= 10, 20, 30, 40, 50, 60, 70, 80 y el arreglo X normalizado que contiene los valores 0.017, 0.043, 0. 148, 0.383, 0.261, 0.104, 0.035, 0.009. Ahora podemos usar ·estos arreglos para generar el número de piezas vendidas. La simulación de un día de trabajo consiste en sumar al estado actual AL del almacén el número de piezas que llegaron, generar el número de compradores C que vinieron durante el día y restar C veces del estado AL el número de piezas vendidas que proporciona el generador con distribució n empírica. El siguiente diagrama de flujo (figura 2.7) muestra el algoritmo de simulación correspondiente. Éste es uno de los ejemplos más sencillos de la simulación MonteCarlo, donde se usan algunos de los generadores descritos antes. Este problema es difícil de resolver analíticamente, ya que el número de piezas que compra un mayorista tiene distribución empírica. La simulación Monte-Carla no es el tema principal de este libro y no vamos a discutirlo más (vea -las referencias [26], [74]). Hay que observar que Jos generadores de las variables aleatorias se usan no sólo en los problemas de este tipo . Cada sistema o lenguaje para simulación de eventos cont iene una biblioteca de los generadores para las var iables aleatorias que sirve para generar los intervalos aleatorios de tiempo del modelo y para simular todas las variables descriptivas no
Aquí H [K] es el valor de F (T) en T = Kh + 10, y Y [K] es el valor de yK, en donde h es el incremento de tiempo de servicio (5 min para el ejemplo anterior), y 10 es el valor inicial para T(2.5 min. para el ejemplo). El tipo TABLA debe ser declarado como TABLA=ARRAY[ 1..100] OF REAL; suponiendo que N
2.9
~
33
100
Un ejemplo de aplicación de los generadores de variables aleatorias Una fábrica produce calentadores para agua de uso doméstico. Los calentadores llegan al almacén en unos momentos aleatorios durante todo el día. Las ventas (salidas) se efectúan también en unos momentos indeterminados, cuando llegan los compradores (mayoristas). Según las observaciones las llegadas de los calentadores forman un flujo de Poisson, que significa que el número de piezas recibidas durante el día tiene Ja distribución Poisson. Los compradores también llegan en los momentos que también forman un flujo de Poisson, pero el número de los calentadores que compra un comprador tiene una distribución empírica, según la siguiente tabla.
determinísticas.
1
2.10
Problemas Un experimento consiste en tirar un dado dos veces y sumar los resultados. Calcule la probabilidad para cada uno de los resultados posibles (1.2.3, ...,12), trace la función de densidad de distribución y la función acumulativa para el resultado. Construya un procedimiento para generar los valo res aleatorios según la distribución obtenida. 2. Suponga que el resultado de los tiros en el problema 1 es el promedio de los resultados de cada tiro. ¿Cuál de Jos generadores descritos en este capítulo puede usarse para generar Jos valores aleatorios con la distribución que aproxima la distribución del resultado. suponiendo que el número de tiros es grande (tiende a infinito) ?
l.
Número de piezas vendidas
Número de casos
10 20 30 40 50 60 70 80
2 5 17
1 44 30 12
4 1
Problemas
esrr)
3. Una variable aleatoria tomó el valor de 4.5 en 25 casos registrados y el valor de 8 en 37 casos. Construya un algoritmo y un programa para la computadora para generar números con la distribución que aproxima la de la variable observada. 4. Escriba un programa para la computadora para simular el problema de almacén según el diagrama de flujo de la figura 2. 7. @ Modifique el esquema de flujo de la figura 2. 7 y el programa correspondiente para resolver el siguiente problema: En el almacén caben C calentadores y el costo de mantenimiento es $1 OO*C por día. Si el número de piezas por álmacenar es mayor de C, hay que rentar un espacio adicional, que cuesta $1000 por pieza por día. ¿Cuál es el tamaño óptimo del almacén, que minimice el costo total? Además, instale en el programa un mecanismo que impida que el número de piezas en el almacén pueda ser negativo .
Entrada de datos: O - El número de días a simular A 1 - el parámetro de la distribución de Poisson de las piezas producidas durante un día A 1 - el parámetro de la distribución de Poisson de las llegadas de los compradores AL - estado inicial del almacén X, Y - los arreglos con las observaciones sobre las ventas
<
I K=1 to O
AL = AL + Poisson (A 1)
1
H = Poisson (A2)
~{
r~
1
1
l l
1
1
l,.
L= 1 toH
AL= AL - Sample (N, X, Y)
t
l ~
Imprimir; K =el número del día al= EL ESTADO DEL ALMACÉN
~ Figura 2.7.
35
t 1
1 1 1
CAPÍTULO 3 Especificaciones del modelo
i
3.1
•
Descripción informal del modelo Antes de construir un modelo matemático y un programa de simulación de un sistema real hay que preparar una descripción suficientemente completa para evitar posibles errores o deficiencias en la modelación. Primero hay que darse cuenta del objetivo de todo el proceso de modelación y simulación que queremos realizar. Este objetivo influirá en toda la especificación del modelo y en la construcción del programa de simulación correspondiente. Como veremos en las siguientes secciones, el objetivo de simulación, junto con otros aspectos de la misma, nos permitirá escoger una simplificación adecuada del modelo. La descripción informal del modelo incluye las siguientes tres partes: l.
2.
3.
Los componentes del modelo. Éstos pueden ser partes físicas de un sistema real, partes imaginarias de un sistema en diseño o partes de · un modelo abstracto que aún no existe físicamente. Las variables descriptivas. Éstas sirven para describir las condiciones en las cuales se encuentran los componentes del modelo. La mayoría de las variables descriptivas son funciones de tiempo. Las reglas de interacción entre los componentes. Según estas reglas los componentes influyen recíprocamente y cambian los valores de sus variables descriptivas.
La descripción informal del modelo no tiene que incluir ninguna descripción matemática y sólo sirve para dividir el modelo en componentes,
37
··-- -
-~· · ü
~...:..;..'li&R@
ií!@M'efif-i,fR#?i!·FM<§·tM!WP#Wl*.S. \#
Mf! g;
::: :;:::;-'-
',__;._;::~.l:"Z''"'~·~·
Descripción informal del modelo 38
39
Especificaciones del modelo
~F1
estado del modelo puede expresarse a través de sólo dos variables, por ejemplo hAy ha. Las demás variables no son de estado. El flujo F1 es la variable de entrada, el flujo F3 es la variable de salida y el flujo F2 es una variable interna del modelo, que puede calcularse a través del nivel hA. Esta descripción no es única. Por ejemplo, otra versión de la descripción informal puede interpretar aF2 como una de las variables de salida, según el objetivo de simulación (los objetivos pueden ser "evaluar F3 sobre un intervalo de tiempo dado" o "evaluar F2 y F3 sobre el mismo intervalo"). Este ejemplo muestra cómo el objetivo de simulación influye en la descripción del modelo. Las ecuaciones de estado para este modelo se mostrarán en la siguiente sección.
A
hA
~3
Ejemplo 2
Se considera un tanque con un mezclador con dos flujos: F1 y F2 (figura 3.2). La descripción informal de este modelo es como sigue. l. Componentes: El tanque. 2. Variables descriptivas: Flujos F1 y F2 , el volumen V del agua en el tanque, la temperatura T1 del flujo F1, la temperatura T dentro del tanque. Las variables de entrada son F1, T1 y F2 , las variables de estado son Vy T, las variables de salida son también V y T. 3. Las reglas de interacción: El agua entra al tanque con el flu jo F 1 (litros/ segundo) y con la temperatura T1• La temperatura dentro del tanque es uniforme (el tanque tiene un mezclador ideal). No hay flujo del calor a través de las paredes del tanque. Los dos flujos F 1 y F2 son controlados independientemente del nivel en el tanque.
Figura 3.1. Un sistema de presas.
listar las variables descriptivas con sus interpretaciones físicas y describir el funcionamiento del sistema. La descripción informal puede expresarse en palabras. Ejemplo 1
La figura 3.1 muestra un sistema real de suministro de agua que contiene dos presas, cada una con un flujo de entrada y un flujo de salida. La descripción informal de un modelo de este sistema puede ser como sigue: T1
~\'
Componentes: La presa A , la presa B. 2. las variables descriptivas: El flujo de entrada F 1, e! nivel hA en la presa A, el flujo F2 de salida de la presa A, el nivel ha en la presa B, el flujo F3 de salida de la presa B. La variable de entrada es el flujo F1, las variables de estado son hA y ha, las variables de salida son F2 y F3 • 3. las reglas de interacción: El agua entra al sistema según el valor del
l.
flujo F1• El volumen acumulado en la presa A es la integral de la diferencia entre los flujos F 1 y F2• El volumen del agua acumulada en la presa Bes la integral de la diferencia entre los flujos F2 y F3• El flujo F1 es el flujo de entrada de todo el sistema y está dado como una función de tiempo. El flujoF2 depende del nivel en la presaA, y el flujo F3 depende del nivel en la presa B. Hay que observar que el conjunto de las variables descriptivas incluye todas las variables de estado, pero no sólo éstas. !::n este ejemplo el
Figura 3.2. Un tanque con mezclador.
>---
--·"'
40
Descripción formal del modelo
Especificaciones del modelo
entrada
"'"' a. u "' "O "' 15
-~
estado
·i:::
$
J.
$
"'
· i:::
salida
"'
>
Figura 3.3. Variables de:;criptivas y las funciones o y A..
..... _ Descripción formal del modelo ~? Para pasar de una descripción informal a la descripción formal correspon di ente hay que especificar los espacios a los cuales pertenecen todas las vari ables descriptivas y dar una descripción exacta de la función de transici< )n de estados, que dice cómo cambia el estado del sistema con el tiempo, y la función de salida, la cual muestra cómo depende la sa li da de l sistema de su estado. Vamos a anotar con U el espacio de las variables de entrada, con Q el espacio de las variables de estado y con Y el de la snlida. Si el modelo cont iene otras variables descriptivas, también tene mos que describir exactamente cuáles son los espacios donde pertenecen estas variables. Entonces, si u es una de las variables de entra da. q es una de las variables de estado y y' es una de salida, tenemos u E U, q E Q, y y E Y. La función de transición de estados calcula el nuevo estado basándose en las variables de entrada y de estado actual. Podemos decir que esta función, llamada 8 actúa desde el prod ucto de los espacios Uy Q hasta el espacio Q, en otras palabras 8: U~ Q. La función de salida es A.: Q ~ Y. La descripción formal del modelo es el conjunto
~ !~iiS
:a:·, rcnce s F
E
R+.
41
El espacio de estado: Q=R+ xR+ (el espacio de vectores con componentes no negativos con dimensionalidad 2). Tenemos (hA,h;J E Q. El espacio.de salida: Y=R+. En nuestro caso F3 E R+. El flujo F2 (una variable interna del modelo) pertenece a R+. Las reglas de interacción en la descripción formal del modelo tienen que definir el funcionamiento del modelo de manera única y exacta. Casi siempre esta parte de la descripción formal consiste en un sistema de ecuaciones. Si el sistema tiene el estado discreto y se modela a través de secuencias de eventos. la descripción formal de las reglas de interacción puede expresarse en la forma de esquemas de bloques (como en el paquete de simulación GPSS) o directamente en la forma del programa correspondiente para la computadora. Vamos a derivar las ecuaciones de estado para los modelos de los ejemplos l y 2 de !a sección anterior. Las ecuaciones de estado para el modelo del ejemplo 1 resultan del balance de volumen. Considerando un pequeño intervalo de tiempo dt tenernos dV 1 = dt(F1 -F)
dV,
=
dtCFt F)
donde dV 1 y dV, son los cam bios en los volúmenes del agua almacenada en las presas A y B respectivamente, dentro del in tervalo dt. Tornando en cuenta que el cambio de volumen es dV =S dh para un cambio pequeño del nivel dh con el área de la supelicie actual S. podemos reordenar estas ecuaciones como sigue (observe que la superficie actual del agua es una función del nivel). dh /t)/d t = [F1(t) - F/h ) ]!S /h) dh 13 (t )/dt = [F/ h) -Fj(hJ]/S ¡¡ ChJ
En estas ecuaciones F1 es la función de entrada y por eso sólo depende del tiempo t. F, y FJ dependen de los niveles correspondientes hA y h 8 • La forma de estas funciones depende de las ca racterísticas de las válvulas a través de las cuales salen los dos flujos. Las superficies SÁ y 5 8 también depend en de los niveles según los perfiles de los fondos de las presas. Integrando ias dos ecuaciones del bal ance de volumen obtenemos otro modelo matemático eq uival ent e. donde las alturas se expresan a través de las integrales de las d iferencias de los flujos correspondientes. Las ecuaciones para el ejemplo 2 resultan de los balances de volumen y de la energía calorífica. El balance para el volumen dentro de un intervalo de tiempo pequeño dt es muy sim ple:
42
Especificaciones del modelo
dV(t)
=
dt[F1(t) - F/f)]
El balance para el calor se obtiene considerando el calor almacenado dentro del tanque durante el intervalo dty la diferencia de los flujos de calor que corresponden a los flujos F1 y F2 • Este balance tiene la siguiente forma: d[T(t)cV(t)]
=
m1~
dt c [F¡(t)T 1( t)-F2 (t)T(t)]
1
donde c es el calor propio del agua. Una simple reordenación de estas dos ecuaciones nos proporciona las ecuaciones de estado: dV(t)/dt
F 1(t) - F/t)
dT(t)/dt
[F1(t)T1(t)-F/t)T(t) - T(t)dV/dt]/V(t) =
o o
>~
·.;= :J
~E
a.
.o·-
º
W-0
!
1
~
e
-F2 (t)T(t)]/V(t)
1 1
La manera de derivar las ecuaciones para los dos ejemplos es común para muchos sistemas físicos. Para hallar una descripción matemática correcta siempre hay que buscar los balances que se cumplen en los sistemas, por ejemplo balances de fuerzas o de los momentos en los sistemas mecánicos, o los balances de masa y de energía en los sistemas con flujos de masa y energía.
3.3
:~
n 1
1
1 1
i
~
~
jl
~ ~ ~ Q)
. -8 \ o~
•
1
-o
¡ 11 1
2
N
1
.gro
1
,g
Qi
-o
1
+
e
/
//
~ ro
E Q)
N
a.
/
/
X
Q)
a.
o
Q)
ro
X
o
2
ro
2
~
~
-~
(J)
l.
~~
~~
~
a.
'
Q)
J '
~
'
X
1
Según las consideraciones anteriores podemos observar que ni la descripción informal ni tampoco la descripción formal del modelo son únicas. Para escoger la descripción adecuada, que implicará cierta simplificación del modelo, hay que considerar los siguientes seis aspectos de simulación:
...........
(i 1
~~ i
1
- -- -
1
:-=
1it1
Marcos experimentales y modelos simplificados
El objetivo de simulación. Es la tarea que intentamos resolver a través de la simulación. 2. El sistema real. Éste es el objeto, cuyo comportamiento intentamos modelar y simular. 3. El modelo básico. Este modelo refleja todas las propiedades del sistema real. Podemos decir que, excluyendo algunos casos triviales, el modelo básico nunca se puede construir.
1
/ j
1
8
!
L__jro\. 1
1
o"'
-o
¡ 2
·;;;;
o"'
~
-o
~
..,; M
"'... Se
G:
¡ ~~~~~&;:;.;-¡;.
t ··- ·:!t«tf*WS#A·,i#Bk ·irii'iiNMWAA*JA·&H ·ES·
i·M&tb&@iifü@~._~~~ -~~
Marcos experimentales y modelos simplificados 44
45
Especificaciones del modelo
4.
5. 6.
Las variables descriptivas:
Marco experimental. Determina lo que queremos medir, calcular y observar durante la simulación. Se define como un conjunto de variables descriptivas. Para el mismo sistema real podemos definir urio o más marcos expe~imentales. .Vfodelo simplificado. La simplificación del modelo se determina con el marco experimental actualmente aplicado. A cada sistema real le corresponden algunos modelos simplificados. La cor.iputadora. Es una herramienta de simulación. La computado: ra impone ciertas limitaciones técnicas al marco experimental y al modelo simplificado. Sólo los modelos que cumplen con estas limitaciones pueden ser realizados prácticamente.(Figura 3.4 ver página anterior.)
A cada CLIENTE N (cliente número N) lo describen las siguientes variables: el momento TL de su llegada a la puerta de la peluquería, y un conjunto de variabl es lógicas Dln, D2n, ... , DMn que definen sus deseos (cortar el pelo, afeitar, etc.). Las variables para la FILA son: L - la longitud actual (el número de clientes en la fila) y LMAX - 1? longitud máxima. Para el PELUQUERO las variables descriptivas son las siguientes:
VI, V2, ... ,VM ,donde Vi es el tiempo promedio de servício para un cliente (no. n) con deseos Dni, E - una variable co n valores "ocupado" o "desocupado" , T- el tiempo que queda para terminar el servicio realizado actual-
Ejemplo Vamos a modelar una pequeña peluquería. cons iderando dos posibles marcos experimentales y las simplificaciones correspondientes del modelo.
mente. Todo este conjunto de variables descriptivas define un MARCO E.XPERIMENTAL ai cuai le corresponde un MODELO simplificado.
Simplificación 1
Lus reglus de interacción entre los componentes.
Los clientes llegan a !a puerta de la peluquería en momentos aleatorios. según un fl ui o de tipo Poisson. La llegada de un cliente es una actividad del CLIENTE. ya que éste sí es un compon ente del modelo. Si la FILA está llena (esto es. si L = UYfAX:), el cliente no entra y sale del modelo (va a buscar otra peluquería). La FILA es de tipo FJFO (first in, first out). El peluquero atiende a los clientes que vienen de la FILA. El tiempo de servicio es aleato rio con la distribución negativa exponencial, y el tiempo promedio de servicio depende de los deseos Dn 1, ... , DnM del clie!lte actualmente atendido. Después de ser atendido, el cliente sale
La figura 3.5 muestra un modelo de una peluquería con un peluquero y una fila. La descripción informal de este modelo puede expresarse como sigue: Los componentes:
CLIENTE 1. CLIENTE 2..... CLIEi\ITE N, donde N es el número de clientes que pueden solici tar un servicio en la peluquería. La FILA es un conjunto limitado de clientes que esperan ser atendidos por el peluquero. El PELUQUERO es el servidor , que puede atender a un cliente en el momento.
del modelo. Este marco experimental implica una simplificación del modelo. Vamos a ver que ésta no es la única simplificación posible.
Simplificación 2
• --¡
Los clientes
[
La cola
1
••
11
_
El peluquero
1
¡;~_J'"'".'
En esta simplificación rechazamos a los clientes como componentes del modelo. La descripción informal es como sigue:
l
l
Los componentes.
1
•Peluquero • Fila
Figura 3.5. Una peluquería.
~~~~~~~~~~~~~~~~~~~~~~~--~Jsn-,..k'~"~~
~
~
;-:
.....
-~~~~~~,~~"""
"""""'.......................................................................
Marcos experimentales y modelos simplificados 46
47
Especificaciones del modelo
(1-/....Dt-µDt)P(n, l)(t). Las variables descriptivas: 2. Para el PELUQUERO y la FILA las variables descriptivas son como en la simplificación número 1, menos el conjunto de variables Vl ,... , VM del peluquero. Las reglas de interacción: Son similares a las reglas de la simplificación l. La diferencia es que la llegada de un cliente ahora significa sólo un cambio en la longitud de la fila, y no una acción de un CLIENTE, ya que los CLIENTES, en esta simplificación, no son componentes del modelo. El tiempo promedio de servicio se calcu l a como una variable aleatoria y no como una función de los deseos de los clientes. La distribución para esta variable se deriva de las observaciones estadísticas sobre el comportamiento del sistema real en el pasado. Hay que observar que la simplificación 2 implica un modelo más sencillo. que necesita mucho menos de la memoria operativa de la computadora y corre más rápido que el modelo que corresponde a la simpli ficación 1. Los marcos experimentales de estos modelos son distintos . La simplificación 2 no permite, por ejemplo , observar la «historia» de uD cliente durar.te su «Vida» en el modelo. Sin embargo, si e! objetivo de la simulación es nada más observar la longitud de la fila. el número de clientes atendidos y la ocupaci ón promedio del peluquero, la simplificación 2 es suficiente. Es común que ios marcos experimentales más .. grandes» incluyan los más simplificados. Sin embargo , no siempre es así. Vamos a construir un marco experimental y el modelo simplificado correspondiente para la misma peluquería, que es completamente distinto de los marcos ele las simplificaciones l y 2. Anotemos con P(n.l) (t) la probabilidad de que en el momento t la fila tiene la longitud n y que el peluquero está ocupado. y con P{n.O}(t) la probabilidad de que en el momento t la fila tiene una longitud n y el peluquero está desocupado. Por supuesto P(n.O)(t) = O es posible siempre y cuando n > O. Averiguamos cómo cambia. por ejemplo. P (n. l ) dentro de un intervalo de tiempo Dt, suponie:-ido Dt suficientemente pequeño para que no ocurran dos eventos dentro Dt. y que el tiem po de atención de cada cliente tiene la distribución negativa-exponencial con la constanteµ. La probabilidad de que el peluquero termine el servicio dentro del intervalo DTes igual aµ Dt. La probabilidad de que ilegue un cliente en este intervalo es f.. Dt, donde f.. es una constante. Hay que pensar cómo el sistema puede encontrarse en el estado "n, I" (esto es. con fila = n y el peluquero ocupado) en el momento ( t + Dt). Esto puede ocurrir cuando: l.
El sistema estuvo en el estado "n, l" en el momento t, no llegó ningún cliente y el peluquero no terminó la atención actual. La probabilidad de esto es igual a
~-'""*";--21\
ii!·ic
-.,1{$,
'"-il ~-·: -·-t'~:_:"" ':__:;:_;'":_ :.~;q'bt-~~~:¡:~-
3.
El sistema estuvo en el estado "(n-1), 1", llegó un clierite y e! peluquero no terminó la atención actual. La probabilidad de esta opción es A.Dt(l- µ Dt)P{ (n-1), l) (t). El sistema estuvo en el estado "(n+l),l", el peluquero terminó la atención actual y no llegó ningún cliente. La probabilidad de esto es µ Dt(l - /.... Dt)P{(n+l),I)(t).
Considerando las posibilidades 1,2 y 3 y rechazando todos los términos que contienen el factor Dt al cuadrado (por ser muy pequeño) podemos concluir que la probabilidad P(n,l} de estar en el estado "ni" en el momento (t + Dt) es P\n. l} (t+Dt)
=
(1 - /....D T- µDT)P{n, I} (t) + f..DtP{ (n-1),1} (t) +µDtP( (n -1 ), l} (t)
o P \n . l} (t
+
Dt) - P [n. l} (t)
- >. P l (n
= [ - (/.. +
- 1), l} (t) + µ P ( (n
T
µ) P {n, l} (t)
1, 1} ]DT
Si divi dimos es ta ecuación por Dty pasamos con Dt a cero. tenemos
dP\n.l) - - =-(f..+µ) P (n. l) (t) dt +µP[(n 1).1)} (t)
+
AP \(n-1. 1)} (t)
T
donde n >l. n < LA1AX Lo que obtuvimos es una ec_¡ación diferencial ordinaria lineal del primer orden . Siguiendo así podemos hallar las ecuaciones diferenciales para las probabilidades de todos !os estados posibles del sistema. Este sistema de ecuaciones es bien conocido como el sistema de ecuaciones de "muertes y nacimientos", que tiene muchas aplicaciones (consulte, por ejemplo. el libro de Fellerí°"l y los artículos ! 94 1Y1~1. vea referencias). Es-tas ecuaciones describen los cambios de probabilidades y no los cambios de estados, como los de~inimos en las simplificaciones l y 2. La forma general de la ecuación de muertes y nacimientos se discutirá en el apartado 3.4. Por otra parte. hay que observar, que al conocer las probabilidades en un momento dado. podemos calcular las probabilidades para todos los momentos en el futuro. Esto significa que el con junto de las probabilidades P In. m) cumple con la definición de estado. En consecuencia. podemos definir un marco experimental para
J,-..P-
,.~~~:~"'~7:7,~:
48
Verificación y va lidación del modelo
Especificaciones del ;nodelo
el mismo sistema real (la pe!uqt'.<::ria en este c aso), como el conjunto de probabilidades P {n, m), las cuaies. en este rr:arco experimental. son las variab les descrip tiv as. Así. hemos o btenido un marco experimental completamente distinto de los marcos de las simplificaciones 1 y 2. Podemos decir que la intersección de este marco con los anteriores está vacía. Claro que usando esta simplificación simulamos :as propiedades probabilísticas del sistema y no su comportamiento real. De todas maneras. el marco experimental tiene que ser congruente con el objetivo · de la simulación.
tema real y construir un modelo adecuado para generar los valores aleatorios con una distribución empírica. La verificación del modelo de simul ación es la responsabilidad del autor del modelo. Sus conocimientos tienen que permitirle comple tar la descripción informal y formal del modelo y transferirla en un programa para la computadora que funcione y cumpla con los requisitos del usuario. Lograr esto puede ser más fácil si se toman en cuenta los siguientes consejos:
l.
3.4
Verificación y validación del modelo Cada modelo matemático o orograma de simulación de un sistema real tiene que ser aceptado por ei usuario con respecto a su exactitud. Para aclarar los términos vamos a oecir que: /u vulidució n es el proceso en el cual se establece si el modelo refleja el comportamiento del sistema real con la exactitud deseada y si el modelo puede se r usado para tomar decisiones que se aplicarán en e! sistema real. Le. cenficurnin ~s e! proc:oso ;:ior el cual el autor dei modelo da las respuestas a !as pre;,;untas: ¿funciona el modelo setjún sus objetivos?, ¿es el cuúigo computacional coi recto y correspondiente al diagrama de iillJO°! Vamos a decir que un modelo es confiable si es aceptado por el usuario como válido empleándolo para tomar decisiones que afectarán al sistema real. Desde luego. los datos tienen que ser conf iables y antes de usarlos hay que revisar de dónde ·;ienen y qué realmente representan. Si la íábricc1 proporciona. por ejemplo, los datos sobre intervalos de tiempo cuando una máquina esperaba sin carga . hay que verilicar si éstos fueron los tiempos de repar;:ición. !os tiempos de espera a la reparación, espera por falta de material, por falta del oper ado r o un cambio en el perfil de producción. Si estos datos se usan para evaluar, por ejemplo, qué tan eficaz es el operador de la máquina, los resultados pueden ser confusos. L'na situación típica ocurre también, cuando el autor del modelo necesita datos sobre la distribución de una varia ble aleatoria, pero la única información alcanzable es el valor promedio sobre un periodo en ei pasado. Lo que se hace J menudo. es suponer una de las funciones de distribución típicas para !os modelos semejantes y ajustar sus parámetros de tal manera. que el vaior esperado sea igual al promed io dado. Así se aproximan. casi siempre. los tiempo s de servicio para los cuales no hay suficientes datos sobre sus distribuciones y los intervalos entre las llegadas consecutivas de ios clientes, suponiendo que tienen la distribución negativa exponenc!al o la de Erlang. Otra posibilidad (pero más difícil) es hacer un esturL•.J .;;..:s profundo del funclonamiento del sis-
49
2.
3. 4.
5.
Usar los lenguajes de 'simulación, o de uso general, bien estructurados, como Pascal, C, Simula, Modula 2. etc., o paquetes adecuados para simulación de sistemas del mismo tipo que el sistema dado. Verificar el funcionamiento del programa con una gran variedad de datos de entrada, analizando la sensibilidad con respecto a los cambios en los parámetros del modelo. Captar y procesar un gran número de estadísticas sobre las salidas del modelo. Sacar las gr áficas de todas las variab les descrip tivas que cambian .con el tiempo del modelo. usar la animación y todas las gráíicas posibles que puede producir la computadora. para facilitar ei proceso de verificación. Aplicar todas las demás técnicas ne venficación, ("trace") oe soitware de uso general. alcanzables en .a computadora.
La validaci<ín del modelo es la responsc.oiiidad del equipo aL:tcn,:osr usuario(s). Teóricamente, se considera un modelo simplificado como válido, si el diagrama de la ligura 3.6 conmute. En este diagrama x (t) es el estado ael siste ma real en el momento t. y (t) es la salida del sistema real, S es la operación de simplificación del modelo, x (t) y y (t) es el estado y la saíida del modelo simplificado respectivamente. La hes un incremento de tiempo y 8 representa ia función de transición de estados para el sistema real y 8, es la misma íunc'.ó n para el modelo simplificado. El diagram a conmute, esto es. el modelo es válido si la transformación x (t) __, y U ~ h) proporciona el mismo resultado, independientemente del camrno que utilizamos y del intervalo h. La teoría de modelación proporC1ona métodos para mostrar la validez de los modelos (consulte el libro de Zeigler, vea Referencias). En pocas palabras, es suficiente mostrar que el diagrama de la figura 3.6 conmute. En la práctica. sin embargo , se cons idera suficiente que el error (la distancia) entre las salidas de! sistema real y el modelo es bastante pequeño, como lo ilustra la figura 3.7. Esta condición se :lama validez "entrada-salida". Las dificultad es que pueden aparecer en este enloq ue se deben a la falta de la definición exacta de la distanc:a entre las señales de entrada y salida o , a menudo, a la falta del objetivo de toda la tarea de simulación. La validez depende no sólo de la simplificación del mod elo sino también del marco experimental que usamos. Vamos a considerar un
:-iu
t.specllicaciones del modelo
Yerificaciún y v;iJid
Entrada
x(t)
a
1
-
9 r
¡¡
¡¡
SI
~el
v.
_I s\
\
Is
IS figura 3.8. Cn circuito RC con Ja tensil>n de excitaciún. X5(tTh)
X5 (t)
ós
ejemplo que muestra cómo el mismo modelo simplificado puede ser válido en un marco experimental y ser inválido en otro. (Ver figura 3.7) La figura 3.8 muestra un circuito eléctrico RC con una fuente ideal de tensión de Vl volts conectada a través de un interruptor (también ideal. con tiempo de cambio de estado cero). Suponemos que R = O.O! ohm¡os. e= 0.1 microfarads, y que el interruptor cambia su posición cada segundo. Así. al circuito RC aplica una tensión "rectangular" con fr ecuencia 0. 5 Hz. Se consideran dos modelos simplificados:
). ).
Y 5 (t-h)
Y5 (t)
Figura 3.6. El diagrama para validación de modelos.
SIMPLIFICACIÓN A: se supone que la resistencia R y la capacitancia
e son elementos ideales.
SIMPLIFICACIÓN B: Rechazamos la resistencia. por ser muy pequeria. prácticamente cero. Las demás suposiciones son las de Ja simplificación A.
Consideremos dos marcos experimentales.· entradas El sistema real
iguales
salidas
'.\1ARCO EXPERIMENTAL 1: Observamos la tensión v de la capacitancia y la corriente i. La tensión y la corriente se mide con el error posible de 0.1 %. para todo t (tiempo) sin medir la tensión en los momentos cercanos a los momentos "ts" de cambio de la posición del interruptor. esto es, para ts - e< t < ts +e. donde e = l milisegundo. La variable de entrada es la posición del interruptor y la de la salida es la tensión i:. MARCO EXPERIMENTAL 2: Observamos la tensión y la corriente de la capacitancia. como en el marco 1, y también el flujo de la energía que sale de la fuente. Este flujo es el valor de la variable descriptiva E. igual a la energía suministrada por la fuente. por el periodo T(dos segundos). Las variables de salida son u y E. Con la simplificación A la capacitanc i a se carga y descarga a través de la resistencia R. La constante de tiempo de estos cambios de la tensión es muy pequeña (igual a 0.00000001 seg). así que la tensión de
¿ bastante cercanas?
_J ~
~dolo
1
W--
Figura 3. i. Validación .. entr;ida-salida".
... -
-.. ??
;.i(~:'t"''Ñ.T
··-í
,. ·_ ~ .....~;- , ~?tM.~(~
5 ··:e""vef4iis1:1th ·~
- .\i'~s
·+
~¿é-,
. . ·:
·± iif~\..7_:if$4.(f-lL ,¿\J¡#q~fff~~ - ~;.\):..,~,# ~
,;k(~'.;~l'!-~-·rn~ék~'bkffi,:t'.:i("&'{',,,wfi;~)t.--
.\i:t,, .".;;!\r...,s..,:;,,u;GAA~~-+tJk '.%11
~n
·;;-,~
.-¡;,;.; &_,.t'~"•.;¡~;;_...._,.,"'~,,..t ....i'rt> -;r11:."
1
:-t:w ·u
¡t·>_.la·
·:;:
')¿
Especificaciones del modelo
Ve 1ifk ;"
la capacitancia cambia muy rápidamente de O a VI y al revés. según la posición del interruptor. Con la simplificación Bel funcionamiento de nuestro modelo es muy simpie: la tensión del capacitor sigue a los cambios de la tensión de la excitación. esto es, v(t) =O o VI, según la posición del interruptor. Podemos observar que los dos modelos simplificados son válidos con el marco experimental l. Para analizar la validez con el marco 2. hay que calcular la energía suministrada por la fuente. Con la simplificación A tenemos:
=
(1)
V/Re
donde 1(!) es la corriente de la capacitancia. La potencia instantánea suministrada por la fuente es u(t)i(t) . Para calcular la energía suministrada por la fuente dentro del periodo T hay que integrar la potencia i nstantánea desde el momento en que el interruptor cambia a la posición "ª" (el momento ta) hasta ta + T/2. El valor de esta integral es la energía suministrada por la fuente dentro de un periodo. Tomando en c uenta que la tensión r; ( t) es constante y vale V1 y sustituyendo la expresión ( !) para la corri ente , el resultado de integración es
~ ~~ './i u u\..)
~
.
1 1
.~.,· . .-¡,:.,~y.v~'rtú· ~+
fS'ti'titf'
.ó/ ·ilif,;-g:..,.
· - "-::i~'h;.·;it'ikr!'ei··r¡.i!"Et hr&,;
1
M2
1
>'( t )
M1
!
·.
¡
1
¡
:
!
s
F2
1 1
!
Fi
Figura 3.9. L: n sist e ma mec[;nico.
(3)
a-
· - Sw-' 4-tifY·~
fü(tf'-
L~ ~~
1
1
..
-
1
L___J
- i 1 1
11
!
1
11\ 1 ¿ ;
V
M,
1 1
1
!
Figura 3.10. Suspen s i1'in d e un -iu t o m livil.
\~
,,-
1
1
§:b//~/////~~~0'//%7//~//,/:;;,,-;¿/7
porque la energía del capacitor cargado con la tensión VI es VI cuadrada multiplicado por Cy dividido entre dos. En el sistema real la potencia suministrada es prácticamente igual a la que resulta de la expresión (2), y no la de la (3). Esto significa que el modelo simplificado según la simplificación B no es válido con el marco experimentul 2. Hay que responder a la pregunta: ¿adónde se fue la mitad de la energía en el modelo simplificado B? Es que la capacitancia recibe só!o la mitad de la energfa suministrada por la fuente, y la otra mitad la recibe la resistencia, independientemente del valor de su resistencia. Así. no podemos rechazar el resistor, aunque es muy pequeño. Las propiedades del modelo simplificado B que parecían •obvias», resultaron falsas. En otras palabras. simplificando los modelos matemáticos, no es cierto que siempre podemos pasar a cero con parámetros que son muy pequeños, como lo hicimos con R en la simplificación B. Podemos decir que. con el marco experimental 2. la simplificación B no es el caso límite de la simplificación A con R ~O. Además de mostrar la validez de un modelo y verificarlo. el autor del modelo tiene que hacerlo confiable para el usuario. Esto no provoca
ri="'::0. 4 -\o;'¿-·'·1."":;-,_-{
~-j ¡ - ' ~· \J \J ------¡I 1
1
1
Con la simplificación B toda la energía suministrada por la fuente tiene que ser almacenada en el capacitor, porque no hay pérdidas de energía en el circuito. Así, obviamente
E= C(VIY/(27)
1
!
(2)
E= C( VI)' (! - e'1 r' 111 1)/ T = C(VI/ / T
53
dificultad es. si durant e el proceso de co ll strucción del modelo y su validación el autor mantiene ei contacto con el usuario l cliente) y si éste participa en el proceso de validación. Por otra parte , podemos decir que no existen modelos absolutamente confiables. y que la confiabilidad total del usuario puede conducirle a errores en la interpretación de los resultados y a tomar decisiones erróneas sobre el sistema real. Aun si el modelo es casi perfecto. el sistema real puede cambiar paulatinamente por causa de unos eventos impredecibl es. En consecuencia. un modelo confiable tiene que ser verificado y comparado con el sistema real y corregido si es necesario. Esto es el "mantenimiento" de software, que es indispensable para software de cualquier tipo , no sólo para programas de simulación.
- t/(RC) i(t)
¡;,n y validación del modelo
a.- ii-~-·-;;:_#¿;~ "'-t ... ·-
·te +:
-~~......-.~,,.
¡ . -;;f·&'i-b --&·~
mh~~~Q~~....--~
~-·. -...-.¡•••r.••P·;---?!!'''""",................,'"" " ~~
....
t
La-~~::;.._.-
-~,.,,,i~-~
.._
t"".• c
"''"
¡:j
54
3.5
Especificaciones del modelo
Problemas l.
2.
3.
4.
5. 6. 7.
Dado un sistema mecánico que contiene dos masas lvf1, lvf2 (figura 3.9 ver página anterior) y dos resortes. Las masas se mueven sobre la superficie S, sujetas a las fuerzas de los resortes correspondientes, las fuerzas de fricción F1 y F2 • y una fuerza externa F(t), dada en función de tiempo. Establezca la descripción informal de un modelo simplificado de este sistema, especifique el marco experimental, las variables de entrada, salida y estado, suponiendo que el objetivo de simulación es investigar el movimiento de las masas. Establezca la descripción formal para el modelo del problema 1, suponiendo que la fuerza de fricción es proporcional a la velocidad de la masa correspondiente. ¿Cómo cambiar la descripción informal para el modelo de la iigura 3.9. si el objetivo de la simulación sería "averiguar la potencia disipada debida a la fricción entre !a masa y la superficie S"? Encuentre dos (o más) posibles marcos experimentales y modelos simplificados con sus descripciones informales y formales correspondientes. para la suspensión de un automóvil. Considere las simplificaciones que corresponden a una sola rueda ( figura 3.1O ver página anterior) que tiene la masa :vl 1• Considere dos casos: primero. cuando la llanta funciona como un resorte con amortiguamiento y segundo, cuando la llanta tiene la rigidez infinita. ¿Cuál es la diferencia entre la validación y verificación de los programas y modelos de simulación? ¿Puede un modelo válido no ser confiable? ¿Cuál de los modelos mencionados en este capítulo es válido pero no puede ser programado y verificado?
CAPÍTULO 4
Modelos matemáticos de los sistemas dinámicos y algunos algoritmos numéricos 4.1
Introducción En este capítulo se d iscuten algunos modelos matemáticos y métodos numéricos que pueden utilizarse para si mular el comportamiento dinámico de sistemas con parámetros concentrados y se comentan algunos aspectos computacionales que surgen en la simulacion de sistemas con parámetros distribuidos (vea la clasificación de sistemas del capítulo 1). Para mayor información sobre métodos numéricos se recomienda consultar, por ejemplo, los libros de Conte y Boor o Lambert (vea referencias) . Antes de hablar sobre los métodos n uméricos, hemos de suponer que la mayoría de los modelos que aparecen en este capítulo pueden ser descritos por sistemas de ecuaciones diferenciales ordinarias lineales o no-lineales del primer orden. Al final del capítulo se discuten problemas computacionales que aparecen cuando el modelo matemático es un sistema de ecuaciones diferenciales parciales. Hay que observar que la mayoría de los modelos dinámicos de los sistemas con parámetros concentrados pueden expresarse en esta forma. A veces hay que introducir unas variables auxiliares y reordenar las ecuaciones para hallar el sistema equivalente de ecuaciones del primer orden. Consideremos, por ejemplo. la ecuación del segundo orden
ux ~ bx • ex ; f(t. x)
(1)
donde un punto encima de la variable significa la diferenciación con respecto al tiempo t. Esta ecuación puede interpretarse como el modelo
S6
El rnd"
'vlodelos matemi1tic o s
donde y es la variable dependiente. tes la variable independiente (el tiem po en nuestro caso) y fes una función continua. El problema es resolver esta ecuación sobre un inte rvalo de tiempo [t. t + h] dado el valor y(t) y el incremento h. Para calcular y(t + h) se usa l a siguiente fórmula:
matemático de un sistema mecánico con un cuerpo. un resorte y un amortiguador, sujeto a una fuerza f(r. x) que depende del tiempo y de la posición (de la manera lineal o no-lineal). Introducimos la siguiente notación:
x 1 = x, x,
=
.'i7
dx/dt
(2)
Y,, . 1 - Y,, = hf (t. y.) = h~, Tenemos
x
1
ux,
+
=
donde y 0 es el valor en el punto t y ' Y,,. 1 es y(t + h). Desde luego Y,,. 1• calculada según la fórmul a (2), es una so lución aproximada. normalmente distinta de l a solución exacta y (t). La fó rmula (l) tiene también otra interpretación: si el sistema es .. de tiempo discreto». esto quiere decir. si su estado c ambia de t,. a tn. , y este cambio depende sólo del estado en t. la fórmula ( 2) es la ecuación completa ( en d1ferencws) de estado. En este caso /J está fijo y no podernos pas ar con /1 a cero. Si el sistema es con tinuo y su ecuación o ri ginal es ( 1) . la fórmula ( 2) solamente proporciona una aproximación a la solución exacta. Hay que subrayar . que las ecuaciones ( 1) y ( 2) pueden proporcionar soluciones con las propiedades cualitativas compietarnente distint as. por ejemplo. no es cierto que a una ecuación de tipo ( 1) que describe un sistema dinámico estable I"' corres ponda una ecuación en diferencias (2), la solución de la cual es estable. Teóricamen te . si h _, O. entonces la sol ución y ( aproximada) tiende a y V,) ( verdadera). En realidad esto no es cierto. Si resolvemos !a ecuación ( 2) por computadora. no podemos dismin uir /J demasiado por dos razones: primero. si calculamos la solución sobre un inter valo [t. t •A]. entonces e! número de pasos (cálculos) según la fórmula ( 2) es por lo menos A /h . .Si h tiende a cero. el tiempo de cómputo tiende a infinito. Segundo. si h es muy pequeño. aparecen los errores de compu tación. Si. por ejemplo. la computadora tiene la exactitud hasta 7 dígitos. el valor de y es l OO. f vale 0.1 y h es igual a 0.0000 l. obtenemos siempre Y,.. 1 =Y.. ~ hf =Y,,. ya que el producto hf es muy pequeño y la comput adoralo ignora sumándolo ay,,. La so luc ión que obtuvimos es constante y aparentemente falsa ya que f ~O. Podemos conc luir que siempre exi ste un valor óptimo pa r a h . Existen fórmulas que nos permiten estimar el error del método de Euler. Supongamos que y es la solución aproximada. la solución exacta y(t) tiene la segunda der ivada en (t, t + A), f(t. y) es diferenciab le con respecto a y y'
x,
bx, + cx 1 = f(t, .\'.)
o. después de una simple reordenación
x 1 = x, x,
=
[f(t. :t) - bx, - bx1 ]/a
(2) (3)
El sistema (2).(3) es un sistema de do s ecuaciones diferenciales ordinarias de! p rimer o rden . equivalente a la ecuación original ( 1). Así podemos reord enar el modelo siempre y cuando la ecuación origi nal pueda resolverse (algebraicamente) con respecto a la derivada de orden más alto de la variable dependiente. Por eso la mayoría de los métodos numéricos están diseñados para los sistemas de ecuaciones del primer orden. Lo mismo podemos decir sobre los procedimientos elaborados y grabados en diversas bibliotecas de programas de uso común o bibliotecas de procedimientos matemáticos que son disponibles en cada sistema de computación. La simulación de los sistemas continuos ( esto quiere decir de tiempo continuo). casi siempre. tiene como uno de sus objetivos evaluar la trayectoria del movimiento de! sistema sobre un intervalo de tiempo, saliendo de un estado dado por las condiciones iniciales. Para observar la trayectoria hay que resolver las ecuaciones del modelo. paso por paso. con un incremento de tiempo h. mucho menor que el intervalo en consideración y grabar o imprimir los resultados. Vamos a discutir algunos de los algoritmos de cálculo que pueden utilizarse.
f (t, y)
4.2
<
L y '. y"(t)
<
Y
El método de Euler don de L y Y son unas constantes positivas. Entonces. el error e = y(t) - Y,, cumple con !a desigualdad Éste es quizás el más simple de los métodos para resolver ecuaciones diferenciales del primer orden. Consideremo s !a ecuación
y(t)
=
f [t. y (t) l
e
( 1)
"
hY S:: - ( eAL - 1)
2L
~-
..
~
~-
....-
.
--~ · .._~,.¡•_
-~
IA..,~
S8
Lo s .i lgorí tnws de Runge-Kutta
Modelos matemáticos
59
Si susiituirnos K calculado según la fórmuía (5) a Ja fórmula (3) y las or de namos según las po tencias de h. obtenemos un polinomio con resp ec to a h. Ahora, si queremos que el error sea del orden o(h 1) o m eno r, hay que suponer que los coeficientes que multiplican h y /1 2 en es te polinomio son iguales a cero. Esto nos proporciona las siguientes condiciones:
donde A = t,, - t0 • t = t0 + nh, t0 es el momento inicial. Esta cota superior para el error es el valor teórico y no incluye Jos errores de cómputo. que dependen de la computadora. Hay que observar que el error máximo es proporcional al valor de h (el incremento de tiempo). El método de Euler tiene algunas versiones mejoradas, las cuales no se discutirán en este texto. Para mayor información se puede referir a los libros de Conte, Boor o Lambert.
a+ b
=
1
y
4.3
Los algoritmos de Runge-Kutta
1 /2(~
=
Y
0
aK,
+
+
b
íl =
+
b~
rr,.
b
~ =
1/ 2.
(3)
bK2
T enerno s dos ecuaciones con cuatro incógnitas. que signific1 que la solución no es única. Podemos. por ejemplo. escoger
donde
K1 K2
=
u
= hf(t Y,,), •
0
hf(tn + CI. h. Yn + ~ K 1 ).
y(f
0 •
1)
= y(f) +
hy(t.)
+
y(t,)
+ hf(t0 ,
h'((,
+
2ffty
h 2 y(f)/2!
Y.)
+
h¿
+
h3"ji (tn )/3!
+ .... =
(~ +{ f)/2! +
+ ~ f' + ~ fy +
r:f)j3!
+ o(h')
(4)
donde~ y fyson derivadas parciales con respecto a ty' y respectivamente y o(h') es una función que tiende a cero más rápidamente que h 3 • Desarrollando la expresión para K en la serie de Tay!or y tratándola como una función de dos variables a y~ obtenemos
Kjh
=
f(t" +a h. Y,,
a hf t
+
~
+
~
K¡)
=
f(t. , Y,)
a2h2 2
K,, f y - - - ftt
+
a
~2kf +
'
2
f fY
+
o(h 3 )
(5)
[~~~. ~===:~,~~~±:~=~;¡~~~~~:--~~;~:~ r.~'·';~.:·~"TC7.'.· .,
•
. ~,
~··-..-·
&c)
r
't:
.~
ui
. ,, •·
'J;
-~·(· .efc4i#i":f,.¡~~;;6· 4lhj:L¡.¡.,;,;-, ·1' =:-" rj/~$\,:.•' -.;.;{-::'.Jtfú¡·zl:.ot~"'& ¡, w
y
íX=~=l
K;
=
M(t,,. Y)
K,
=
M(t,,
K,
=
hf(t,, ... h¡2. Y,, - Kj 2)
K,
=
hf(t,, +h. Y,, - K)
y
=
Y,,
+
+
h/2. Y,, - K /2)
l / 6(K1 ... 2K,
+
2 K3
+
K,)
Hay que observar que para aplicar el método de Runge-Kutta de orden n. la función {tiene que ser continua y diferenciable por lo menos n veces. En éste y en otros algoritmos de Runge-Kutta (de otros órdenes) las variables y, K1..... K,, y la funció n f pueden tener valores vectoriales. As í !os algoritmos de Runge-Kutta se aplican también a los sistemas de ecuaciones ordinarias del p rimer o r den. El error máximo para un algoritmo de Runge-Kutta de orden n es o(h'" ') .estoquiere decir que si h tiende a cero. el error tiende a cero más rápi damente que h.
+
í3 K 1f ry
b = 1/ 2
=
Lo 4ue resulta con estas suposiciones es el algo ritmo de Runge-Kutta clel segundo orden. De una man era similar podernos hallar los algoritmos de orden más al to (n). que r es ultan de la suposic ión que el error es de orden 0(/1") . Po r ejem plo. el algoritmo de orden 4. fre cuen temente usado, es como sigue:
Se supone que la función fes diferenciable con respecto at y' y tantas veces cuanto sea necesario en las siguientes fórmulas. El problema es calcular a. b. a y~ de tal manera. que la solución Y,,. 1 de ( 3) aproxime, de cierta manera óptima. la solución exacta y(t ). Para hallar estas constantes. desarrollamos la función y(t) en la serie de Taylor con respecto al tiempo en el punto t, ycalculamosy(t"_ 1) como la solución exactay(t" ... h). Tenemos
}
ff.) = b a~
o
Según estos métodos se busca una solución aproximada a la ecuación (1) en la forma
Yn.i
+
#')-.\,:J.>=
·;
·> z.~..,
'P-:;+..B'.___ _.._~
. -
......
-L-'~'-:.:..~,,;;_,,.,,_,-~
....
- ~--~;_,_,,~:,!"'""~;.h)
nO
L" s m é tod o s lineales d e mult ipas o
Mo
Existen muchas versiones y modificaciones de los algoritmos de tipo Runge-Kutta. Una de las más útiles en simulación es el siguiente algoritmo llamado Runge-Kutta-Fehlberg (RKF).
k
k
I j
a.i Yri .,
I
=h
={)
j
K, = hf(y(t), t) Ki
=
hf(y(t) +0.25K1), t +0.25h)
K3
=
hf(y(t)
K4
=
hf(y(t) + (!932/ 2197)K1 - (7200/2197)K2 +
K,
=
+
(3/32)K, + (9/32)Kz, t + (3/8)h)
(7296/2!97)K.j' t +(12/13)/J)
hf(y(t)
+
e439; 216)K, - sK.
T
C36so1s 13) K,
K.,
=
hf(y(1) - (8/ 27)K1
+
o
+
h)
=
y (t)
T
(6)
O'. = Ü y J
~
¿
k .
¡ a1
o
) ,/-J
~I
o
2K,_ - (3544/ 2565)K,
- (1859/ 4104)K4 - (1 l í 40)K5' t y(t
J. ..;
=o
k
k L..
h)
+
~)
donde a.1 y ~1 son unas constantes. k es el número de pasos del método, h es ei incremento de t iempo. Se supone q ue a,= l. Según la fórmula ( 6) , el valor Yn.1 depende de los valores anteri ores de y y' d e f li nealmente, q ue no ocurre por ejemplo, en el método de Runge-Kutta. El método de multipaso es explícito si~.= O e implícito si ~.-¡,O. El método de Euler se puede interpretar como un método explíci to de multipaso (con k = 1). El método de multipas o es consistente si
'<\"""'
- (845/4104)K4 , t
n1
T
o5h)
(25/ 2 ! 6)KI (1408/ 2565)K, T
Se usan diversas fó rmulas para los métodos m ultipaso. Un ejem p lo es el método de Aciam s-Bashforth . usado fr ecuen temente:
Y,, ., - Y,, = fi/ 24 (55!,, - 59( ,.,
+
37(., - 9(. J
+(2191/4104)K4 - 0.2K, Este algoritmo es de quinto orden. Su gran ventaja consiste en que RKF permite calcubr una estimada del error, sin evaluaciones adicionales de la función í(y. t). El error está dado por la siguiente expresión:
E= (l / 360)K, - (128/ 4275)K3 - (2197/ 75240)K4 +
(1¡ 50)K5 + (2/55)K0
Utiiizando el valor E es posible programar algoritmos que ajustan el paso h automáticamente según el valor de error actual. de tal manera que el error siempre es menor que un error permisible. RKF se usa, por ejemplo. en el paquete SL.\.J\.11! y en el sistema PASlON.
4.4
Los métodos lineales de multipaso El concepto principal de estos métodos es la búsqueda de la solución "y" corno una forma lin eal de algunos valores anteriores de la misma solución. de algunos valores anteriores de la función !(del lado derecho de la ecuación) y de! valor actual de f. La forma general de la solución es
Existen fórmulas para estimar los errores de estos métodos. que no se discutirán aquí. Prácticamente la ut ilidad de los métodos multipaso se debe a que en un cálculo de la solución y se necesita sólo un cálculo d e la función ! (los lados derechos del sis tema de ecuaciones a resolver) . Comparando con los algoritmos Runge-Kutta podemos o bservar que cada algoritmo de ese tipo (de orden mayor que uno) necesita algunos cálculos de la función f. Por otro lado, para seguir con los cálculos, los métodos multipaso necesitan unos pasos anteriores guardados en la memoria. Existen diversos procedimientos numéricos que utilizan el método de Runge-Kutta para empezar el proceso de cálculo y , después de calcular la solución para unos paso s iniciales. cambian a uno de los métodos multipaso. para avanzar más rápidamente. Si~.#- O, el método se llama implícito. En este caso el lado derecho de la fórmula (6) depende no sólo de los valores anteriores de y , sino también del valor actual dey. Por eso, para calcular y, hay que resolver una ecuación algebraica (puede ser no-lineal) con respecto a y. Esto podemos hacerlo aplicando, por ejemplo, el método iterativo de Newton. Los métodos imp lícitos son más exactos, pero e! t iempo de cómputo crece considerablemente. Los procedimientos que usan los métodos impiícitos son frecuentemente de ti po "predictor-corrector", donde el valor aproximado de la variable "y" se calcula con un m étodo explíci to ( esto es, el "'predictor"') y después se ca lcu la el valor más exacto con un método implícito ( el "corrector") .
~~~"j¡,¡j¡;~--~-~.J
n2
Modelos matem:1ticos
Esta bilidad de los métod os numér icos
don de U y V son funciones de tiempo t. Esta ecuación es una ecuación diferencial ordinaria lineal de orden uno y tiene soluciones estables para las entradas U acotadas. Por ejemplo, suponiendo la condición inicial V= O, l a respuesta de este modelo a un escalón (esto es, a la entrada U = O para todo t negativo y U= A para t ~O, A constante) es
R
+
+ 1
u
v_¡_c
-º
T
V= A [ 1 - EXP(-t/ RC) ]
Todas las fórmulas anteriores se aplican tanto en el caso de una sola ecuación. como en el caso de un sistema de N ecuacio nes simultáneas de orden uno. En este último ca so la variable y así como la función f del lado derecho de la ecuació n tienen valores vectoriales.
Estabilidad de los métodos numéricos No vamos a comentar aquí los problemas de estabilidad de los sistemas dinámicos. La t eoría de estabili dad de sistemas se discute en muchos libros sobre sistemas en general, sistemas de control automático llC!. 177 1 y en la teoría de las ecuaciones diferenciales. Intuitivamente, vamos a considerar a un sistema como estable, si su respuesta a una señal de entrada acotada es también acotada (estabilidad de tipo B!BO -bounded input, bounded output). pero hay que tomar en cuenta que existen también otras deiiniciones de estabilidad. Por ejemplo. se dice que un sistema lineal es estable si y sólo si la respuesta del sistema a una señal de entrada acotada no contiene componentes de la forma LXP(at) donde a es una constante con la parte real positiva. La respuesta de un sistema inestable es una función de tiempo, que de alguna manera tiende a la infinidad con el tiempo. Hay que distinguir entre la estabilidad del sistema real, la estabilidad de un modelo simplificado de este sistema y la estabilidad de un método numérico que aplicamos para llevar a cabo la simulación. Desafortunadamente, la estabilidad del sistema real y la estabilidad de su modelo matemático no implican la estabilidad del algoritmo numérico. Consideremos. por ejemplo, un simple circuito RC (figura 4.1). Suponemos un marco experimental para un modelo simplificado que dice que la variable de entrada es la tensión U. y la v ariable de salida es la tensión V en el condensador. La ecuación diferencial del modelo correspondiente es
dV -=
dt
1/(RC) ( U - V) = f( V, t)
di y A. = - l / (RC). Esto implica que para RC = 1 la condición de estabilidad es O < h < 2. Para los algoritmos de Runge-Kutta las regiones de estabilidad son como indica la siguiente tabla.
Orden del algoritmo
( A , 8) (-2 . o)
2
(-2 . o)
3
(-2.51, o)
4
(-2 .78, o)
En el caso de un sistema de .V ecuaciones or dinarias lineales, que tienen la forma matricial x =Ax. la desigualdad para h tiene que cumplirse pa ra todos los va lor es propios de la matriz de coeficientes A. Las condiciones de estabili dad para !os métodos multipaso involucran la teoría de estabilidad de sistemas descritos con ecuaciones en
dV
V+RC--=U
(8)
Suponemos ahora, que RC = 1 y que la respuesta se calcula usando el método de Euler con h = 3. Los siguientes pasos de cálculo, según la fórmula (2) proporcionan la secuencia de números 3, -3, 9. -15. 33, -63 , 129. -255 ...... que t iende a la infinidad y representa una solución inestable. El mismo algoritmo con h = 0.3 proporciona la secuencia 0.3. 0.5 1. 0.66. O. 76. 0.83. 0.88. 0.92. O 94. 0.96 ..... q ue es una solución estable y que nos aproxima a la so lución exacta con un error que tiende a cero. Las condiciones de estabilidad se pueden derivar teóricamente en la forma de la desigualdad A< /...h
Figura 4.1. Un circuito RC.
4.5
(7)
___....,..._.
-j¡~
•
r
'>t
..;. _ ;;_·,,-;~,, --ys\i{ .lr" 'ii ' -~
1> c'r-?hcWm
~'-fuhúEL -~w~,"''i·
63
1+-l '&&t~ ·t#1~t'?afaf>:Fti"i@ti*-'f;;,h#iQ'i{~'.'"1\>ii-f.:~v:-.Fs~W.·ñ+ '.Y~;;, -~1tz•rjp,¡;J4n- if~~
;
,.,,m"••.(@.-,1.;7:e&;.
d
:' ·J"-~),'"· '"/,
s ;l
":"'"-:~- ~-~
~:f -A~w he.:
f.+-rn. ..
J,.
4, I~"
·~~
.e .: --·-----~~:.....t.:.::_.__C\~~;~-~_¿~
fi4
Modelos m a tem:iticus
Ec u01 c i1»n de muertes
difer encias, basándose en el lu ~ ar geométrico de las raíces de la "ecuación característica" derivada d e la fórmula del método, en el plano complejo. Estas condiciones no se discutirán en este texto.
4.6
2.
3.
Consideremos una secuencia de eventos aleatorios¡ Ek} = E11 • E 1, E2 , •••••• por ejemplo, cambios en el número de miembros de una población. Esta secuencia constituye una cadena de Markov de eventos. si y sólo si la probabilidad de que la ocurrencia de cada subsecuencia particular E;i' E1, . ..... E¡,, es igual al producto ui-0 P10 , 11 P11 1, P1, 1, .... P1,. 1_1,,. donde P., significa ia probabilidad co ndicional de que ocurre el evento E, si Ek fue el evento anterior. " u -0" es fa probabilidad de que E fue el primer evento de la secuencia. Así.' si :vt es el número total de los eventos posibles, entonces el vector (u ,. u, ..... u ) y la matriz IP.,l de la dimensionalidad .\!! x ,'v/ describen d e l a manera única las propiedades estadísticas de la secuencia de eventos. Hay que observar que M puede ser finito o infinito. Ahora vamos a considerar un sistema con el estado discreto e identificar los eventos con los estados. Esto quiere decir que un evento E significa el cambio de un estado anterior al estado E. Además. suponemos que:
En el momento t el sistema está en E,,. , y ocurre un nacimiento en el intervalo [t. t + h] . La probabilidad correspondiente es A,,_ , hP,,_, (t). En el momento t el sistema está en E,,, 1 y hay una muerte en el intervalo [t. t + h] . La probabilidad correspondielite esµ,,_, hP,,. 1 (t).
Entonces
P,, (t
E'°.
2.
Sólo hay eventos que significan cambios de un estado a un estado vecino (desde E,, hasta E,,_ 1 o E,, _, ). Si el sistema se encuentra en el estado E en el momento t. entonces la probabilidad que dentro del intervalo(!, t + h) cambie a E,.. 1 es igual a Ah + u (h). y la probabilidad de que cambie a E,.. 1 esµ h +o (h), donde A.yµ son unas constantes (que pueden depender den). yo(h) es una función de h que tiende a cero con h ~ O, más rápidamente que h.
La interpretación más natural de esta secuencia de eventos es el crecimiento de una población, donde "el sistema está en el estado E,," significa que "existen n miembros en la población" en ese momento. A cada nacimiento le corresponde el cambio E,. 1 ~E,, y a cada muerte le corresponde el cambio E,,_ 1 - t E,,. Denotemos con P,, (!)la probabilidad de que el sistema se encuentra en el estado E,, en el momento t. Vamos a calcular la probabilidad P,, (t + h). Observamos que el sistema puede encontrarse en E,, en el momento t + h sólo si ocurre una de las siguientes opciones:
l.
fi.S
Además suponemos que h es suficientemente pequeño para que no ocurran dos eventos (dos muertes. dos nacimientos. etc.) en el intervalo [t, t + h].
Ecuación de muertes y nacimientos
l.
y n;:cimientos
En el momento t el sistema estuvo en el estado E,, y no hubo cambios. La probabilidad de que no nazca nadie es 1 - A.,, h, y la de que no muera nadie es 1 - µ,,h . Entonces. la probabilidad para esta opción es (l - A.,, h - µ,, h) P,. (t).
+
h)
=
P (t)(l-A,, h - µ ,, h)
,. µ,,_ 1 hP,,_, (t)
+
+ \,_ ,
hP,,. ; (t)
+
o(h)
do nd e o (h) es una función que ti end e a cero con h - t O más rápid am ent e que h. Después de r eorden ar esta ecu ac ió n. div idirla entre /1. sustitu ir h = dt y pasar co n h a cero o btenemos dP(r) - - = -(\. -
µ,) P,, (1) • \,., P,,_ 1 (t J
+
dt paran
~
1. Paran
=
µ ,,,, P,,, (t)
(1 )
O tenemos dP0 (!) _ \ p" (t)
dt
+
µ, P1 (t) (l a)
Las ecuaciones (1) y (la) son las "ecuaciones de muertes y nacimientos". Hay que observar que éste es un sistema infinito de ecuaciones ordinarias lineales de primer orden. Si conocemos las probabilidades iniciales P (0). P ( 0) ..... el sistema ( 1) ( 1a) describe las probabilidades futuras P (t). P (!),. ... . El modelo matemático (1) (la) es un modelo continuo que descr i be el comportamiento de un sistema real discreto. El marco experimental para este modelo (simplificado) es el de las probabilidades y no de los estados. Con este marco experimental sólo se pueden simular y observar las propiedades estadísticas del modelo y no las trayectorias reales ( los estados). La ecuación de muertes y nacimientos tiene varias aplicaciones . Por ejemplo, para simular el crecimiento de una población hay que observar que P,, (!) significa la probabilidad de que existen n miembros de la población en el momer.to ry que tanto la intens idad de nacimientos comola de muertes es proporc ional al número de miembros de la población. Esto significa. que en este caso hay que sustituir en las ecuaciones (l) y (la) \ ,= A,. yµ,, = µ 0 , donde A. yµ son unas constantes positivas . La condición inicial son las probabilidades iniciales P (O) .
.., -~.:~~--
--'·-
...A-!... __..__......_ _ _
.,._
Sistemas con retraso nn
Consideremos otro ejemplo, que parece un sistema completamente distinto al anterior, pero, en realidad. está descrito con la misma ecuación de muertes y nacimientos. Se trata de un sistema de comunicación telefónica a larga distancia, que tiene M líneas para llamadas simultáneas. Se supone que el flujo de clientes que intentan efectuar sus llamadas es de tipo Poisson con el parámetro A.constante y que el tiempo de servicio de una llamada ya iniciada (el tiempo de hablar) tiene la distribución exponencial con el valor esperadoµ. El estado del sistema se define como En, esto quiere decir que si el sistema está en el estado En, hay n clientes en el sistema (hablando, o esperando). Las Mlíneas se otorgan a los clientes hasta que n = 1"1, después crece la línea de espera. Observamos que la intensidad de desocupación de las líneas depende de cuántas personas hablan en el momento. Así, tenemos
n para n µ,.
<
M
mulación. hay que actualizar esta parte de memoria y sacar los valores con el retraso deseado. Vamos a mostrar un ejemplo de la realización de este mecanismo en los lenguajes FORTRAN y PASCAL. Suponemos que nuestro modelo es de parámetros concentrados y contiene] componentes de puro retraso cuyo valor es R unidades de tiempo del modelo. Si el paso de solución de las ecuaciones del sistema es H, tenemos el retraso de L pasos, igual (aproximadamente) a R/H. Para guardar la historia de las señales de entrada en la memoria operativa reservamos un espacio de L = R/H + l registros. cada uno del valores de tipo REAL. Este conjunto de registros, que vamos a llamar RET y declararlo como un arreglo con dos índices. tiene que ser «cíclico», esto es, la posición actual NC tiene que recorrer el registro como muestra la figura 4.2. Para recordar los valores actuales de entradas en el registro RET podemos usar el siguiente procedimiento en FORTRAN
~
Jf para n <::M
y \, = A. constante. Para calcular P (t) para t > O hay que sustituir estas funciones J.,, yµ,, en las ecuaciones ( 1) y (la), definir las probabilidades iniciales y resolver las ecuaciones sobre un intervalo de tiempo deseado. La ecuación de muertes y nacimientos es, en el caso general. un sistema de ecuaciones infinito. Esto implica ciertas dificultades computaciona l es. Hay que observar que cada ecuación para P,,, n >O. depende de la probabilidad P,. 1 y de P,,. 1• Por eso. si limitamos el número d e ecuaciones a. por ejemplo, L. la solución para PL (t) será seguramente falsa. Prácticamente. desde luego, tenemos que limitar el número de ecuaciones. pero si queremos observar L probabilidades. el límite tiene que ser mucho mayor que L.
4.7
67
.v1oaelos n1aten1at1cos
SUBROUTl:'-iE REC (U. T. H. J) COMMON¡ RETRASO/ NC. RET (10. 100) DlYlENS!O\ L'(J) l = T/ H + 1
NC = l - l 00 * ( (l-1)/ 100) DO l K = l. J l RET(K. NC) = U(K) RETURN END
Sistemas con retraso En muchas ocasiones los sistemas que intentamos simular contienen componentes que provocan retrasos en el flujo de señales. Un ejemplo típico es un elemento de transportación de masa o de energía. como una banda transportadora o un tubo a través del cual pasa un líquido. A este tipo de retraso vamos a llamarlo .. puro retraso» y modelarlo con la ecuación
x(t)
=
" ~
~
' ii
Mpasos
1s=T=r 1
1 11
1
NC
u(t - r)
dondex es la señal de salida. u es la se11al de entrada para el elemento de retraso y r es el valor (intervalo de tiempo) de retraso. La simulación numérica de retraso requiere que guardemos en la memoria la historia del sistema par3 el intervalo r. Con el avance de tiempo. durante la si-
.. ""'ª
¡
Los registros
Figura -t.2. Los registros de retraso.
_,..,,,__ '1".
~
~-
~-:.l
f)8
Modelos m
Se supone que J:::; 10 y L:::; 100. U es el vector de señales que deseamos guardar en el RET (!, NC), ... , RET (J, NC), donde NC es la posición en RET. que corresponde a tiempo actual. La variable (parámetro formal) T representa el tiempo, Hes el paso (incremento) de la solución. El valor /representa el número de paso actual, según el cual se evalúa NC de tal manera que no sea mayor que 100. La posición NCy el arreglo RET se guardan en el bloque COMMON/RETRASO/para ser visibies desde otros procedimientos de este «paquete de retraso•. Así, el valor actual de U(l), .... U(J) será guardado en el lugar NC como lo muestra la figura 4.2. El siguiente listado muestra una realización del mismo procedimiento en PASCAL. PROCEDURE REC(U:VECTOR: T. H:REAL; J:INTEGER); VAR l. K:lNTEGER; BEGlN 1: = TRUNC(T/ H)+ 1; NC: = l - 100* (TRUNC((l-1)/100)); FOR K: = l TO J DO RET[K.NC]: = U[K] END;
6lJ
FUNCTION UR(N, M: INTEGER): REAL; V AR 1: lNTEGER; BEGlN 1: = NC - M; lF l < l THEN 1: = l + 100; UR: =RET[N ,l] END; Hay que anotar que en la versión PASCAL las variables NCy RETtienen que ser globales. La única posibilidad de protegerlos ante un uso inadecuado es declarar los dos procedimientos como una unidad (UNlT. si la versión de PASCAL que usamos lo permite) y meter NC y RET en la parte "privada" de la unidad. para que sean invisibles para el usuario. En este caso la unidacl tiene que iniciar la variable NC. por ejemplo con el valor l. El uso de estos procedimientos se mostrará en el capítulo 5.
4.8
Sistemas rígidos
En este caso la variable NCy el arreglo RETtienen que ser globales. El tipo VECTOR tiene que ser declarado como ARRA Y[ l .. J] OF REAL. Se puede abreviar un poco este procedimiento usando la función iv10D. Para sacar e! valor de U(N) con retraso M pasos, podemos usar la siguiente función
Consideremos un sistema dinámico descrito con las siguientes ecuaciones :( ,(t) = -1000x 1 (!)
FUNCTION UR(N, M) COMMON/RETRASO/NC, RET(!O, 100) 1 = NC-M IF (l.LT.l) 1=1+100 UR = RET(N, l) RETURN END
.t-p)
=
T
x, (t)
l 000x 1 (t) -2x, (t)
donde x 1 y x 1 son las variables de estado. Es fácil ver que la solución de este sistema es como sigue
Esta función usa los valores de NCy RET. Se calcula la posición I donde se encuentran los valores guardados hace M pasos. El valor I se corrige de tal manera que 1::; ¡:::; 100 y se asigna RET(N, !) al valor de la función. El usuario de estos procedimientos sólo tiene que definir el valor inicial para NC y RET. Después ya no se preocupa por estos valores. que no aparecen en forma directa en el modelo. El modelo sólo contiene llamadas a REC (para guardar los valores actuales) y UR (para sacar valores con retraso). Por ejemplo. CALL REC(X, T. 0.1, 5) guarda los valores actuales de un arreglo X de cinco componentes. El paso de tiempo es igual a 0.1. En el modelo se puede usar. en cualquier expresión, por ejemplo. el valor UR(3, 17) que devuelve el valor deX(3) con retraso de 17 pasos. La función UR proporciona los valores con retraso de un número entero de pasos. Con una simple interpolación podemos obtener el valor interpolado para cualquier retraso real. La realización de esta función en PASCAL es como sigue
x 1 (t)
=
A 1e
x, (t)
=
A,e ' ' '
ii.i +
+
A,e
ii.:.!.
A,e '''
donde /.. 1 =-1001 yi..,= -1. La solución contiene componentes que cambian muy rápido y componentes muy lentos. Si queremos que el algoritmo numérico que se aplica para resolver estas ecuaciones numéricamente sea estable, hay que usar el incremento de tiempo h muy pequeño. por ejemplo, para el algoritmo de Runge-Kutta de segundo orden tiene que ser h:::; 0.002. aunque algunas soluciones cambian lentamente (et componente "rápido" no se nota o desaparece rápidamente). Sistemas de ecuaciones de este tipo se llaman rígidos (stiff equations) y provocan dificultades computacionales11•1 . i""I . La rigidez se debe a que hay graneles diferencias en los valores absolutos de los valores propios de lamatr iz de coeficientes del sistema. En general. no se puede hacer mucho para evitar la rigidez. porque ésta tiene el origen en !a naturaieza física de l sistema real. Por ejemplo, un sistema mecánico que está compues-
~-;·
"'t""~'f"
.~•"
,.__
-·"""
...
~
.....,;,.~~.
-'·
70
Sis temas distribui dos
Modelos matemáticos
la barra co n x. y el tiempo actual con t. La te mperatura en el punto x y en el momento tes T (x , t). Ahora dividimos la barra entre N elementos con longitudes iguales D cada uno. Tenemos D ; L/N (figura 4. 3). Consideremos el flujo de calor entre dos elementos v ec inos. Este flujo es proporcional a la superficie A que atraviesa. al recíproco de la distancia entre los elementos D. a la d iferencia de temperaturas entre los elementos y al recíproco de un coeficiente R (la resistencia térm ica) que solamente depende del material. Encont raremos el balance de en er gía para un elemento dentro de un intervalo pequeño de tiempo (t. t + h). Este balance se expresa con la siguiente ecuación: (2) CAD [ T (t + h) -T (t)]; h [(T,, · 7) - (T- T)] /(D R)
to con un número de masas. resortes y amortiguadores. va a mostrar rigidez, si algunos de los resortes son mucho más rígidos que otros. En algunos casos es posible descomponer el sistema en un número de subsistemas y resolver las ecuaciones de los subsistemas con diversos incrementos de tiempo. Esta descomposición tiene que hacerse con cuidado y basándose en la estructura física del sistema real. Si tratamos, por ejemplo, de modelar una planta termoeléctrica con un solo sistema de ecuaciones, incluyendo los procesos eléctricos rápidos que ocurren en los generadores y turbinas, y los procesos térmicos lentos que pasan en los hornos, lo que resultará será seguramente un sistema rígido. En este caso, !os dos tipos de procesos pueden modelarse como modelos separados. tomando en cuenta. sin embargo, sus interacciones. De todas maneras. ésta será una simplificación del modelo básico del sistema real. Los aspectos de cómputo son los más importantes en la simulación de sistemas rígidos. Parece que el futuro pertenece a modelos numéricos que usan lenguajes orientados a objetos (vea el capítulo 6) que permiten especificar procesos que corren de una manera paralela o quasiparalela en la memoria operativa. permitiendo. sin emb argo, modelar todas las interacciones entre los componentes del sistema real que les corresponden.
El lado derec ho de esta ecuació n es la d iferenci a de flu jos de c alor ent re los elementos u-b y los elem entos b · c. multiplicado por h. Ést a es la en ergía c1lorífica q ue entró en el elemento b dentr o del intervalo de tíem µoh . T es iguai a la tempera tura T,,. El lado izq uier do de esta ecu ación es la energía almacenada en el elemento b. do nde Ces el calor propio de! matelial. Después de dividir ios dos lados de ( 2) po r 11 y po r Dy pasar con h y con Da cero obtenemo s la ecuación p arcial siguiente:
rlt
Sistemas distribuidos - dificultades computacionales
.....,.,..
.....
X
(4)
DC AR
dt
donde i es el número consecutivo de elem ento. esto es . T , ; Th. Así. en
ib
a T
----'
1
le
T
1
T
1 1 1
-+-
Figura 4.3. Fluj n de calo r en una barra.
·:...,
.......... ~:
.. ,,
T,. 1 ... T,. , · 2T
d T, (x . l)
~..,,.
~·
(3)
Una de las posibilidades de resolver esta ecuación numér icamente es discretizar el sistema con respecto a ía posició n x . Es to significa que después de dividir (2) entre hD pasamos a cero solamente con h y no con D. La ecuación que o btenemos es
Según la clasificación de los sistemas dinámicos introducida en el capítulo 1. los sistemas distribuidos tienen el conjunto de clases de equivalencia de entradas más grande que el conjunto de todos los números reales. Corrientemente estos sistemas son descritos por ecuaciones diferenciales parciales. El estado de un sistema distribuido no puede ser representado por un número real ni tampoco con un vector de números reales. El estado de tal sistema pertenece a un espacio más amplio, con la dimensionalidad infinita. El caso más típico es el del estado dado como una función (toda la función y no su valor en el momento), por ejemplo la distribución de temperatura en una región o la función que describe la concentración de un componente en todo el volumen de un tanque donde avanza el proceso de difusión. Los problemas computacionales provocados por la naturaleza de los sistemas distribuidos son bien conocidos y descritos en la literatura sobre métodos numéricosl6 ll. 1«1. Vamos a mostrar aquí un ejemplo que muestra las dificultades en su simulación y explicar de una manera sencilla las causas de estas dificultades. Consideremos el proceso de distribución de temperatura en un pedazo de metal. suponiendo. para simplificar las ecuaciones. que el sistema es unidimensional (por ejemplo. una barra cilíndrica delgada con longitud L y diámetro constante D). Denotamos la posición a lo largo de
~._......_..
a~ T (x . t) /( C AR)
(x. t)
(J T
4.9
71
~:~
__,.,t..,·_,~....,¡¿:..... _~~
-~·j
72
P ro blemas
Modelos matemáticos
lugar de una ecuación diferencial parcial (3) obtenemos un sistema de ecuaciones diferenciales ordinarias ( 4), donde i = 1, 2,. .. , N. Para cada N fijo. este sistema puede resolverse con cualquiera de los métodos numéricos adecuados, por ejemplo con Runge-Kutta. Sin embargo, hay que observar una propiedad muy desagradable de este sistema: si queremos aumentar la exactitud de la solución aumentando el número de elementos N, el parámetro D baja (D = l/N). Pero D aparece en el lado derecho de ( 4) en el denominador y en el cuadrado. Esto significa, que el valor de ar¡aT, sube con el cuadrado de D, y el paso de tiempo para la · solución tiene que disminuir por lo menos de la misma manera, para mantener el algoritmo numérico estable (vea Ja sección 4.5). Además, el número de ecuaciones también aumenta. Esto significa, que el consumo de tiempo de la computadora aumenta por lo menos con l /D cúbica, prácticamente aún más. Esta propiedad de las ecuaciones parciales de tipo (3) tiene razones más profundas. Observe que el lado derecho de (3) tiene !a forma YT donde. Yes un operador diferencial. Este operador es lineal. pero no es continuo con respecto a T. Esto provoca que sus aproximaciones. como el lado derecho de (4) tienen también "malas" propiedades desde el punto de vista de los métodos numéricos. Parece que el futuro de la simulación de sistemas distribuidos pertenece a las computadoras paralelas y algoritmos que aprovechan el alto grado de paralelismoi'" i-¡.,o ¡ para resolver las ecuaciones diferenciales parciales. Sin embargo. ya existen los paquetes para este tipo de sistemas . El artícu10111muestra un ejemplo de un paquete de este tipo.
4.10
6. 7. 8.
9.
73
¿Cuál es el valor máximo del incr emento de tiempo "h" para que el algoritmo de Runge-Kutta de ord en 4 aplicado a esta ecuación sea estable? ¿Qué hay que suponer sobre un proceso estocástico discreto para hallar la ecuación de muertes y nac imientos que lo describe? ¿Cuál es la información que proporc iona y cuál es la que no proporciona la ecuación de muertes y n acimientos? Encuentre unos ejemplos de sistemas mecánicos (masas. resortes y amortiguamientos) cuya descripción matemática resulta en las ecuaciones rígidas. . ¿Cuáles son las principales causas de las dificultades computacionales en l a simulac ión de !os sistem as d istribui dos.,
Problemas l.
Un proceso está descrito con la siguiente ecuación diferencial. x(t)
2. 3.
4.
5.
[x (t) x(t) J ... X< (t) +
=
u(t)
Reordene esta ecuación en la forma de dos ecuaciones de primer orden. suponiendo que siempre x(t) >O. ¿Por qué el incremento "h" de tiempo para el método de Euler no puede ser demasiado pequeño? ¿Cuáles son las condiciones necesarias para los lados derechos de las ecuaciones de modelo para que el método de Runge-Kutta de orden 4 pueda usarse con el modelo? ¿Cuáles son las ventajas y desventajas de los métodos de multipaso en comparación con los algoritmos de Runge-Kutta? (Compare el algoritmo de Runge-Kutta de orden 4 con el método de Adams-Bashforth, averigüe cuántos cálculos de los lados derechos de las ecuaciones del modelo efectúan estos algoritmos para avanzar un paso "h" en el tiempo) . Un sistema dinámico está descrito con la siguiente ecuación. dx(f) i dt
=
-5x (t)
+
sen (O.lt)
""-
. ...,.
..._ ·
~.
CAPÍTULO 5 Ejemplos de programación usando lenguajes algorítmicos (Basic, For.tran, Pascal) en simulación de sistemas dinámicos continuos 5.1
Esquema general del programa de simulación, estructuración del programa La simulación de sistemas dinámicos continuos o. brevemente. la simulación continua. puede llevarse a cabo usando unos paquetes elaborados para este fin, o. lo que parece más común . se realiza con ayuda de los programadores profesionales usando los lenguajes algorítmicos. Este último modo de realizar simulaciones es quizá más flexible y permite al programador tener pleno control sobre todas las funciones del modelo. aunque comúnmente necesita más trabajo. Vamos a dar unos ejemplos y proponer una estructura general del programa, que permite usar procedimientos anteriormente preparados en diversos modelos y evitar o detectar los errores en programación más rápido que cuando se hacen programas mal estructurados. Siguiendo los pasos de programación y los ejemplos que se muestran en este capítulo. la simulación se puede llevar a cabo también por las personas con poca experiencia en programación. suponiendo que éstas poseen un conocimiento básico de los lenguajes correspondientes. Vamos a simular. con un ejemplo, un sistema dinámico compuesto con una masa. un resorte y un amortiguador. sujeto a una fuerza externa U (figura 5.1 ). Se supone que la fuerza del resorte depende linealmente del desplazamiento x y que la fuerza del amortiguador es proporcional a la velocidad dx/ dt. Se considera sólo el movimiento horizontal de la masa. sin tomar en cuenta ninguna fuerza de gr;:ivedad.
a -s.- ;,.·
°44."'z'As,{;-
..ifJf''.J°'r:j· -':;~ a"
T
f--~- -;- ,'é&1
-"r.· ...,
a~1 -~· ':...\r~ í..;~~~-"'"'"'......_.;;,xj,.--.'..,_
~"'}~'u,.__
... ~-~ . -:,;;"
ll.-.:..
~
il!
7¡;
Aplicaciones
Ejemplos de programación
nada en otros segmentos. cambiar la funció n de fue rza, o usar el mismo procedimiento Runge-Kutta en otros prob lemas de simulación. El esquema de flujo para el programa es como muestra la figura 5.2. (ver página siguiente).
LJ Figura 5.1. Un sistema mecánico
Fl balance de fuerzas para la masa nos proporciona la ecuación x (!)
T
Bx (t) • Ax (t)
=
5.2
Aplicaciones
5.2.1
Simulación en PASCAL
( 1)
U(t)
El listado 1 muestra el programa correspondiente en PASCAL. En este programa podemos fácilmente localizar los segmentos mencionados antes e indicados en el diagrama de flujo. La func ión FlJNCTlON U evalúa la fuerza. Los parámetros for males péira esta func ión son el est ado X y el t iempo T. que significa que la fuerza puede depender no sólo de x 1 sino de todo el estado del sistema y también del tiempo T. El modelo matemático del sistema está descrito por el procedimiento PROCEDURE RHS cuyos parámetros form ales son: la dimensionalidad del modelo N. el vector de estado X, el vector de los lados derechos de las ecuaciones D y el tiempo actual T. Observemos q ue los demás parámetros y variables, como las constantes A , By la fuerza U no pertenecen a los parámetros formales de RHS, porque RHS está evocado por el procedimiento de Runge-Kutta y no por el programa p rincipal. Por esto, todo lo que depende de la estructura y la descripción matemática de un modelo particular no puede ser parámetro formal de RHS, para que no aparezca en e! procedimiento Runge-Kutta el cual, por la suposición. tiene que ser independiente del modelo. Los parámetros A y B son visibles en RHS como variables globales, y la fuerza U como una función global. El procedimiento PROCEDURE RK4 contiene el algoritmo de RungeKutta de cuarto or den que evalúa el vector de estado X en el momento T + H, basándose en el valor de X en el momento T. Los parámetros fo rmales de RK4 son: la dimensionalidad N, el vector de estado X. el tiempo actual Ty el incremento de tiempo H. Este procedimiento evalúa también el valor nuevo para el tiempo T; T +H. Los valores de K" Kz, K 3 y K 4 corresponden a los valores de los coeficientes del algoritmo Runge-Kutta (vea el capítulo 4), pero no son multiplicados por H como lo requiere el algoritmo. La multiplicación por H se hace después de sumar los Ks, una sola vez, para ahorrar el tiempo. En este modelo se supuso que la fuerza es un impulso que dura una unidad de tiempo y después desaparece. Hay que subrayar que el algoritmo de Runge-Kutta requiere que las funciones que aparecen en el modelo sean continuamente diferenciables N veces. Por esto hay que tener cuidado con las funciones que no cumplen co n esta suposición. Por ejemplo, si intentamos aplicar una fuerza que tiene puntos de dis-
donde A es el coeficiente del· resorte y Bes el coeficiente del amortiguador. Reordenando la ecuación (1) en la forma de dos ecuaciones del primer orden obtenernos
x ,(t)
=
xJt) (2)
-~., (t) = U (t) - Bx.,(t) -Ax1(t)
Para este modelo las variables de estado son x 1 (el desplazamiento) y x 2 (la velocid:id) . La fuerza U es la variable de entrada y las de salida sonx1 y x.,. Vamos a escribir los programas de simulación para este modelo en los lenguajes PASCAL, FORTRAN y BASIC. La idea general es construir un programa que resuelve las ecuaciones (2) dentro de un intervalo de tiempo (0, TFJ1\) en Af pasos con el incremento H = TFIN/M. imprimiendo los resultados (las variables x 1 y x) en cada paso. El programa contendrá los siguientes segmentos: l.
El programa principal, donde se definen los parámetros del sistema, se hace una llamada al procedimiento Runge-Kutta de orden 4 M veces, y se imprimen los resultados. 2. El procedimiento Runge-Kutta de orden 4, que utiliza un procedimiento para evaluación de los lados derechos de las ecuaciones (2). 3. El procedimiento que describe el modelo, esto es, que evalúa los lados derechos de las ecuaciones (2), utilizando un segmento de tipo FUNCTlON para evaluar el valor de la fuerza U. 4. Un segmento FUNCTION que define el valor de la fuerza U. Hay que observar que el procedimiento Runge-Kutta no incluye ninguna información sobre el modelo mismo. E! modelo está descrito por otro procedimiento, que, a su vez. utiliza una función que describe la fuerza. Así, el programa está compuesto de un número de segmentos que pueden ser cambiados sin intervenir en otros segmentos. Podemos, por ejemplo. cambiar fácilmente las ecuaciones del modelo sin cambiar
-=--~~...._.,...,.~ "' ...._:....
~"'-..~~
P+
)'t" - _ _ _ . _
M+'·
F·
""1
.P
* ~'L,
¡.,____
-;.; ~:. . _,. ~~ '~
.~
"!"~". · · t1 ~-~-
77
W
- J· 2f&'1~·;;..,_-
..,.-44
tL·-#
s.+.,,_
¡¡#~!~
..,....;-..
· .:.=.tT~H;éih-~f-':"~ -~-
r
1---46''
.._
....._.......
..;;...,. } ..._.~.:..,.-
~...._
___._ .. ...,""' ~
~.,..,;,E~ ..'Y.:....;...,_-
_•
i _.....,,;;._.
....
~
=:~.d
7X
Ejemplos de programaciún
9
Aplicaciones 79
Listadol PROGRAM MECAN; {Esta verison es compatible con Turbo-Pascal 3 de Borland. Para hacerlo compatible con Turbo-Pascal 4 o 5 hay que agregar aqui la clausula USES correspond iente} TYPE VECTOR=ARRAY[l .. 2 ] OF REAL; VAR A,B,T,H:REAL; K:INTEGER; X:VECTOR ;
-&
[Oetiniciones de las condiciones 1 iniciales y parámetros
FUNCTION U ( X: VECTOR; T:REAL) :REAL; BEGIN IF T<0.99 THEN .U:=lO.O ELSE U:=O.O END;
1
!
~ .c..
i) (
i> j
M veces ) 1
i 1
1
'V
.
Procedimiento Runge-Kutta
,
T
~ 1
¡ , 1
1 - -:
i
1
1 .
l
Almacenamiento o impres1on de los resultados
: j
¡
'
1
"7
1
~ i 1 I
I mpres1on .. d e /os resultados almacenados
,- -------------¡
- - 1--;)j
1 1
, j
l
~ Figura 5. 2. El diagrama de flujo del programa de s imulaciú n.
Eva luación de los lados derechos de (2)
.
~
!
.¿,
i 1
E•1aluación de la fuerza
\
j
PROCEDURE RHS ( N:I NTEGER; VAR X,D: VECTOR ; T : REAL) BEGIN D [ 1 ] : =X [ 2 ] ; D( 2]:=U (X,T)-B*X [ 2 ] -A* X[ l ] END; PROCEDURE RK4(N :INTEGER; VAR X: VECTOR ; VAR T:REAL; H:REAL ) ; VAR L:I NTEGER ; XA,Kl, K2 ,K3 , K4: VECTOR; H2:REAL; BEGIN H2:=H*0.5; RHS(N,X,Kl,T); FOR L:=l TO N DO XA[L ] :=X[ L] +Kl [ L] *H2; RHS(N,XA,K2,T+H2); FOR L:=l TO N DO XA[L]:=X[L]+K2[L ] *H2; RHS(N,XA, K3,T+H2); FOR L:=l TO N DO XA [ L]:=X [ L] +KJ[L J *H; RHS(N,XA,K4,T+H); FOR L:=l TO N DO X[L]:=X [ L]+ (Kl[L]+2.0*(K2 [ L] +KJ [ L]) +K4[ L] ) *H/ 6 . 0 ; T:=T+H END; BEGIN H: =O. 1; X[ 1 ] : =O. O; X[ 2 ] : =O. O; T: =O. O; A:=0.5; B:=0.5; WRITELN ( 'TIEMPO Xl X2 ' ) ; FOR K: =l TO 150 DO BEGIN{l } RK4(2, X,T,H); WRITE LN (T:5:2,' ', X[ l L ' ' ,X(2]) END { l } END.
80
Ejemplos tle programación Aplicaciones 81
continuidad dentro del intervalo de solución (dentro de un paso de solución) , la solución puede ser erró nea. Otra observación sobre este programa es que la fuerza se evalúa sólo cuando se evalúan los lados derechos de l as ecuaciones del modelo, y esto ocurre en los momentos T = O, 0.1. 0.15. 0.20 .... etc. según el algoritmo que usamos. En consecuencia, los resultados no cambiarán si cambiamos la condición en la FUNCTION U, por ejemplo. T < 0.999 o T < 0.96. Por otra parte, no podemos poner T < 1.0, porque el resultado de esta comparación puede ser incierto. Tes el resultado de múltiples sumas y después de 10 pasos del algoritmo tiene el valor aproximadamente 1.0, y por eso el resultado de la comparación T < 1.0 depende de la implementación y los errores de la computadora. El programa imprime los valores de tiempo de modelo y de las variables de estado X , y X,, para toda la trayectoria simulada. esto es. para 150 pasos de tiempo con el.incremento de 0.1 segundos.
5.2.2
Listado 2 DIMENSION X(2) COMMON /PARAM/ A,B H=0.1 A=0.5 B=0.5 T=O.O DO 1 K=l,150 CALL RK4(2,X,~ 1 H) 1 WRITE(2,3) T,X 3 FORMAT(JH T=,F5.2,3X,7H ENO FUNCTION U(T,X,N) DIMENSION X(N) U=O.O IF (T .LT. (0.99)) U=lO. O RETURN END
Simulación en FORTR.\.N El listado 2 muestra una realización del mismo modelo en FORTRAN. Este programa tiene la misma estructura de la realización en PASCAL descrita en la sección anterior. La función U es la función de la fuerza. el procedimiento RHS describe el modelo (los lados derechos de las ecuaciones) y el procedimiento RK4 es el algoritmo de Runge-Kutta del cuarto orden. Hay pocas diferencias en la programación: por ejemplo, los arreglos en FORTRAN que son parámetros formales de procedimientos y funciones pueden ser declarados dinámicamente y así se hace en este programa. Los parámetros del modelo que no son parámetros formales del procedimiento RHS se mandan a las ecuaciones a través del bloque COMMON/PARAJ\11/.
5.2.3
SUBROUTINE RHS (N , X,D,T) DIMENSION X(N),D(N) COMMON /PARA.."1/ A, B D(l)=X(2) D( 2)=U(T,X,N) - A*X(l) - B*X ( 2 ) RETURN END SUBROUTINE RK4 (N ,X,T,H) DIMENSION X(N),F(N) ,XA( N) , Kl(N) ,K2 (N) , * K2 (N) I K3 (N) I K4 (N) H2=H*0.5 CALL RHS(N,X,Kl,T) DO 1 L=l, N 1 XA(L)=X(L)+Kl(L)*H2 CALL RHS(N,XA,K2,T+H2) DO 2 L=l,N 2 XA(L)=X(L)+K2 ( L)*H2 CALL RHS(N,XA,K3,T+H2) DO 3 L=l,N 3 XA(L)=X(L)+K3(L)*H CALL RHS{N,XA,K4,T+H) DO 4 L=l, N 4 X(L)=X(L)+(Kl(L ) + 1 H*(Kl(L)+2.0* ( K2 (L )+K3(L) )+K4(L)) /6 . 0 T=T+H RETURN END
Simulación en BASIC El mismo problema de simulación puede tener también una realización en BASIC. como lo muestra el listado 3. Este programa tiene la misma estructura que las versiones PASCAL y FORTRAN aunque en BASlC es un poco más difícil realizarla. El programa principal empieza con la línea 100 y termina en la 170. Las funciones del programa principal son las mismas que en las versiones PASCAL y FORTR.~'\/. El procedimiento de Runge-Kutta empieza en la línea 1000 y termina en 1270. Los lados derechos de las ecuaciones del modelo están descritos en el procedimiento que empieza en la línea 2000 y termina en 2040. Las líneas 3000 hasta 3020 describen la fuerza. Los procedimientos de BASIC no tienen parámetros formales. Por esto, hay que usar las variables auxiliares T.4 y XA para guardar el valor del
.... ,, ~ '
..,N
•;"':.:. '!iP"
·~~,.,.,......~..,
~;
~
-
Xl,2=,2(F8.4,2X ))
-1.,_ .
t;~
·:·~
~A' •
t ..,
' _.Jtm
, 4 iAi=.;,'~~-o.:..cd.-...i:......,f- _..._:__~--. .·;.¡,_
;.,:¿
Ejempios de program'-lciún
Aplicaciones
tiempo y estado respectivamente. que se usa en el procedimiento Runge-Kutta y no dañar a los valores de Ty X que representan el tiempo y el estado mientras que el algoritmo cambia a TA y XA como lo necesita. Las demás funciones y resultados de este programa son iguales a las versiones PASCAL y FORTRAN.
Listado 3 1 OO DIM XA ( 2) , Kl ( 2) , K2 ( 2) , K3 ( 2) , K4 ( 3) 110 DIM F(2) ,X(2) 115 N=2 120 A=.5: B=.5: X(l)=O: X(2)=0: T=O: H~.l 125 PRINT 11 TIEMPO Xl X2" 130 FOR K=l TO 150 140 GOSUB 1000 150 PRINT USING"#####. ####" ;T,X(l) ,X(2) 160 NEXT K 170 END 1000 REM ******************************* 1010 REM RUNGE-KUUTA 4 1020 REM PARA SISTEMAS DE ORDEN mas ALTO 1030 REM HAY QUE CAMBIAR DECLARACION DIM 1040 TA=T 1050 FOR I=l TO N 1060 XA(I)=X(I): NEXT I 1070 GOSUB 2000 1080 FOR I=l TO N 1090 Kl(I)=H*F(I): NEXT I 1100 TA=T.,-H/2 1110 FOR I=l TO N 1120 XA(I)=X(I)+Kl(I)/2: NEXT I 1130 GOSUB 2000 1140 FOR I=l TO N 1150 K2(I)=H*F(I): NEXT I 1160 FOR I=l TO N 1170 XA(I)=X(I)+K2(I)/2: NEXT I 1180 GOSUB 2000 1190 FOR I=l TO N 1200 KJ(I)=H*F(I): NEXT I 1210 TA=T+H 1220 FOR I=l TO N 1230 XA(I)=X(I)+KJ(I): NEXT I 1240 GOSUB 2000 1250 FOR I=l TO N 1255 K4(I)=H*F(I) 1260 V=l / 6*(Kl(I)+K2(I)*2+K3(I)*2+K4(I)) 12 7 0 X(I)=X(I)+V: NEXT I: T=T+H : RETURN 2000 REM ************************************** 2010 REM AQUI VIENEN LAS ECUACIONES DEL MODELO 2020 F(l)=XA(2) 2030 GOSUB 3000: 2040 F(2)=U-A*XA(2)-B*XA(l): RETURN 3000 REM ************************************** 3010 IF TA<.99 THEN U=lO ELSE U=O 3020 RETURN
5.2.4
1
....;._
-.·..
-~
R
1 1
TB
11
T
p segundos
T
u
j
1 RG
1
f
l
Figura 5.3. Un sistema de c:ontrol con retraso.
....-'"'
-~ -~·.·
Ejemplo con retraso - realización en PASCAL Se considera un sistema de control de temperatura con retraso, indicado esquemáticamente en la figura 5.3. Se controla la temperatura de aire en un r ecipiente (R) . El aire circula entre el recipiente y un calentador ( C) a través del ventilador (V) y la tubería ( TB) de tal manera que después de calentarse alc anza el recipiente con retraso p segundos. La temperatura Tse mide en el recipiente y se compara con la temperatura deseada U en el controlador (RG). El controlador manda una señal proporcional al error de control U- Ta la vál vula ( v'.4) que controla el flujo de combustible para el quemador (Q). según la señal del controlador. La descripción y el an álisis de este sistema se puede encontrar en el libro de Oga ta 1''1. Con la simplificación que se considera en 1'' ' se supone que el objeto de control (el recipiente con aire) es un objeto
;-y-· · ~·,
f
83
:,;,_.s.
-
e 1
X4
Ejemplos de programación
u+ ,~
-----4
l
e 1 )--__..,
. ... ·
Aplicaciones
---1.--------!Vá1vul~~l
!
'
L _ _ ____ _ ____
~T=X
~
Regulador
_j
¡
quemador
'u~~ · •u
,
t _ _ _ _ . __ _ _ _ __J
T
recipiente
Listado 4 PROGRAM CONTROL; {Simulacion de un sistema de control con retraso} TYPE VECTOR=ARRAY[l .. 1] CF REAL; TABLA=ARRAY(l .. 500] OF REAL; VECTOR2=ARRAY(l .. 2] OF REAL; VAR RET:ARRAY[l .. 2,1 .. 100] OF REAL; NC,K,TR,KMAX,M,L:lNTEGER; Tl,KR,H:REAL; X: VECTOR; Y:TABLA; T,TX,TFlN,XMl, XMA:REAL; DEL:VECTOR2;
~
, 1
i
1
!
! 1 ¡
Gr(sl=
4 - - - - -·------ - ·---
1
__}--------
--- -c:i~~:t~º
1
_J
Figura 5.4. Esquema de bloques del sistema de control de la figura 5.3. Se supone que la función de transierencia de la válvula. del quemador y del termómetro son iguales a uno.
FUNCTlON UR(N,M:l NTEGER) :REAL; VAR l:lNTEGER; BEGlN l:= NC - M; lF l
l:neal de orden uno con la constante de tiempo T ,. y que la tubería introduce el "puro retraso" al sistema_ Así. la función de transferencia de la tubería es EXP(ps) donde pes el retraso y ses la variable compleja de la transformada de Laplace. La función de transferencia para el recipiente es
PROCEDURE REC (U:VECTOR2; T,H:REAL; J:l NTEGER ) ; VAR I,K:l NTEGER; BEGlN l:=TRUNC (T/ H)+l; NC:=l - lOO*(TRUNC((I-1) / 100)); FOR K:=l TO J DO RET [ K,NCJ:=U [ K] END;
G(s)= - - 1 + T1s
donde T, es la constante de tiempo para el recipiente. El esquema de bloques para este sistema se muestra en la figura 5.4. Las ecuaciones correspondientes para la tubería y el recipiente son x(t)
+ T1 .~(t) =
FUNCTlON U(X:VECTOR; T:REAL) :REAL; BEGlN U:=l.O END;
K e(t- p)
{$1 TRR.PAS}
(según la función de transferencia G(s)). donde "e" es el error de control, e = U(t) - x ( t). Ü(t) y x(t) representan e! valor deseado y el valor real de la temperatura respectivamente. K es el coeficiente de ganancia del controlador. Reordenando estas ecuaciones tenemos x(t)
=
PROCEDURE RHS (N :lNTEGER; VAR X,D: VECTOR; T: REAL ) ; BEGlN D(l]:=(KR*(UR(2,TR)-UR ( l,TR))-X [ l ])/Tl END;
[K(U(t-p)-x(t-p))-x(t)J!TI
{$1 RK4.PAS)
El marco experimenta! para este sistema comprende las siguientes variables descriptivas: la variable de entrada U, la variable de estado (y a la vez de la salida) x y las constantes que caracterizan el modelo K. TI yp, El siguiente programa de simulación es una realización en PASCAL de este modelo. (Ver listado 4.) Este programa tiene la estructura general indicada en la figura 5.2. El tipo VECTOR es el tipo del vector de estado, en este caso con di-
ft'
-.r!""::~
f. ~-- ··'"-
•••..> ..... _,...
BEGIN WRlTE ( 'KR --> ') ; READLN ( KR) ; WRlTE('Tl --> '); READLN ( Tl ) ; WRlTE('TX --> '); READLN (TX ) ; WR1TE( 1 H --> ' ) ; READLN ( H); TR:=TRUNC ( TX/ H) ; WRITE('TFIN --> ' ) ; READLN(TFIN ) ;
~-'?!t.~
85
8n
Problemas
Ejemplos de programaciún
PAS . Novamos a comentar aquí cómo funciona TRAZA 1. Hace notar que en lugar de TRAZA 1 podemos usar cualquier procedimiento de graficación o. simplemente. imprimir los resultados. El listado 5 muestra el procedimiento TRAZA 1 que se usó en esta simulación. La figura 5.5 (ver página 89) muestra un ejemplo de la simulación. En este caso T = 5, TX (el retraso)= 0.3, TFIN = 10. H = 0.05. Las curvas muestran los cambios de temperatura para tres valores de la ganancia del regulador: KR = 8, 12 y 16. Es fácil ver cómo el sistema pierde estabilidad si la ganancia del regulador crece demasiado.
M:=TRUNC(O.l/H); IF M=O THEN M:=l; KMAX:=TRUNC(TFIN/H); X [ 1 J : =O. O; NC: =l; T: =O. O; FOR K:=l TO 100 DO BEGIN RET[l,K]:=O.O; RET[2,K]:=O END; L:=l; Y[l]:=X[l]; FOR K:=l TO IO'T.AX DO BEGIN{l} DEL[l]:=X[l]; DEL[2]:=U(X,l) REC(DEL,T,H,2) ¡ RK4 ( 1 f XI T, H) ; IF K MOD M=O THEN BEGIN{2} L:=L+l; Y[L]:=X[l] END{2} END{l}; GRAPHMODE; HIRES; HIRESCOLOR(l5); TRAZAl ( 1, 1, 600, 2 00, L, 5 I y I 1.? fo. o, FALSE f TRUE! ' END.
5.3 1
Problemas
)
l.
mensionalidad uno (hay sólo una ecuación del primer orden con retraso). El tipo T ..\BLA es un arreglo auxiliar que sólo sirve para gua rdar e imprimir o trazar resultados. Las variables declaradas en el programa
2.
tienen la siguiente interpretación
RET. .'VC- pertenecen al "p aquete de retraso" descrito en la sección 5.4 n - constante de tiempo del tanque KR - ganancia del regulador TX: - el retraso p TR - número de pasos del retraso H - el paso (incremento de tiempo) de la solución T- el tiempo TFIN - el tiempo final de la simulación X - el vector de estado
~~
t',,
.......
..,_..,,.., .. -..,.....
........ -fl'O-.,;·"!'<;-·-~~':--:- ..- · -
.,...,...._~--.---~r'"'"'... ?f,_,~----:-..,..~~·;b~~-·:,._ --:~!-~
;;,
:....Jtt• •
..... _,_-~--!;&~~-_a...__
~
¿Por qué en el esquema 5.2 el cálculo de los lados derechos de las ecuaciones de modelo está separado en forma de un p rocedimi ento . fuera del algoritmo de Runge-Kutta 7 ¿Para qué sirven las variables TA y .\'A en el programa de simuiación en BASIC de la sección 5.2.3? ¿Por qué en los programas correspondientes en PASCAL y FORTRAN no aparecen estas variables?
Listado 5
Las demás variables son auxiliares. FUNCT!ON U es la función U(t) del modelo. los segmentos REC y UR realizan el retraso. RHS contiene las ecuaciones del modelo y RK4 es el algoritmo de Runge-Kutta. el mismo que se usó en el programa descrito en la sección 5.2.L Se supone que RK4 se encuentra en el archivo RK4.P AS. El valor de UR(l, TR) es el X[ l] con retraso . y UR(2, TR) es el control con retraso. Este programa simula la respuesta del sistema al escalón unitario. esto es. a una señal escalonada de la temperatura deseada. Se le pide al usuario definir los valores de la ganancia del regulador, la constante de tiempo del tanque, el retraso. el incremento para la solución y el tiempo íinal. Se supone que el tiempo inicial es cero. El programa resuelve la ecuación del modelo y guarda los resultados en el arreglo Y cada M pasos. Después de calcular toda la trayectoria , los resultados se muestran en la forma gráfica. El procedimiento TRAZA 1 hace la graficación yse lee del archivo TRA.ZAl.
,.
87
~:;
PROCEDURE TRAZAl (Wl, W2, WJ, W4, N, M: INTEGER; Z: T.'\BLA; XMA, XMI: REAL; REG,CLEAR:BOOLEAN; CH:CHAR); {Pararnetros formales: Wl, W2 : coordinadas del punto mas arriba a la izquierda de la grafica (puede ser Wl=O, W2=0) WJ, W4 : coordinadas del punto·mas abajo a la derecha N : numero de puntos a trazar M : cada M puntos (pasos) seran marcados en el eje horizontal Z : un arreglo de tipo TABLA , que guarde los valores a trazar. El tipo TABLA tiene que ser: TABLA= ARRAY[l .. N] OF REAL; XMA, XMI : el valor maximo y mínimo de los valores en Z. No se necesita sustituir ninguno de estos parametros si REG=TRUE. REG si igual a TRUE, el procedimiento evaluara automaticarnente XMI y XMA. Si FALSE, hay que sustituir valores para XMI y XMA. CLEAR : Si CLEAR=TRUE, el prucedimiento borra la pantalla y despues de trazar espera hasta que el usuario teclee RETURN. Despues borra la pantalla y sale. Si CLEAR=FALSE no se borra la pantalla antes de trazar y el procedimiento no espera a return. En este caso la grafica queda en la pantalla .
88
Ejemplos de programa<.:iím
1
El usuario tiene que usar GR.l\PHMODE antes de llamar a TRAZAl si CLEAR=FALSE. CH : Character para marcar la linea. Puede ser:*, O, X. Este programa corre bajo el Turbo-Pascal 3 } PROCEDURE PLCH(X,Y:INTEGER;CH:CHAR); (un procedimiento auxiliar para TRAZAl} BE GIN IF CH='*' THEN BEGIN DRAW(X-4,Y,X+4,Y,l); ORAW(X,Y-3,X,Y+4,l); DRAW(X-3,Y-3,X+4,Y+4,l); ORAW(X+3,Y-3,X-4,Y+4,l) IF CH='O' THEN BEGIN DRAW (X-3, Y-2, X+3, Y-2, 1) ; ORJ..W (X+3, Y-2, X+3, Y+2, 1) DRAW(X+3,Y+2,X-3,Y+2,l); DRAW(X-3,Y+2,X-3,Y-2,l) IF (CH='x') OR (CH='X') THEN BEGIN DRAW(X-3,Y-3,X+4,Y+4,l); DRAW(X+3,Y-3,X-4,Y+4,l)
END;
r8 I~
; END;
1
END END;
1 1
r
PROCEDURE DRAWP(A,B,C,D,E:INTEGER); (un procedimiento auxiliar para TR.l\ZAl} VAR K,L,M:INTEGER; BEGIN L:=ROUND(A/ 2); M:=ROUND ( C/ 2); FOR K:=L TO M DO PLOT(2*K,ROUND((K-L) /( M-L)* ( D-B))+B,l) END;
1
1
1
l
1
1
-
J..-L~ -
~
V
= o ., V
-o
~
B
.,
.
)
'~
v -o
., )
! i
o ::;
..:: = .§ "'
1
1
!
=
~
1
-
-
)
"'
!I
§
1
V
-o
2 ·;;¡
"'
:::;:
"'o 1
y
,,
1
;'.
1 1
1
':2
..::i
.,,;
"'... <'ll
;,, e
8!-l
:;;..,..
§
1
~-, L~-..,..,,J-.:
i
í ~
1
Al:=Wl+l5; A2:=W2+15; A3:=W3-15; A4:=W4-15; H:=TRUNC((AJ-Al) / N); IF H=O THEN H:=l; DRAW ( Al,A4,A3,A4,l); DP.AW( Al,A4,Al,A2,l); IF REG THEN BEGIN(l} XMA:=Z[l]; XMI:=Z[l]; FOR K:=l TON DO BEGIN(2} IF Z[K]>XMA THEN XMA:=Z[K]; IF Z[K]
A2)) THEN FOR K:=Al TO A3 DO IF K MOD 5 = O THEN PLOT(K,ZZ,l); FOR K:=2 TO N DO BEGIN X:=Al+H*(K-2); Y:=A4-ROUND(Z[K-l]*(A4-A2)); Xl:=X+H; Yl:=A4-ROUND(Z[K]*(A4-A2)}; IF CH<>'.' THEN DRAW(X,Y,Xl,Yl,l) ELSE DRJ.J-J P(X,Y,Xl,Yl,l); IF FPAC((K-1)/M)=O.O THEN BEGIN DRAW(Xl,A2,Xl,A2+4,l ) ; DRAW(Xl,A4,Xl,A4+4,l); PLCH(Xl,Yl,CH) END END; IF CLEAR THEN BEGIN RE1\DLN (U); TEXT~ ODE ( BW80) END; l: END;
~.b-;._,,..
..."'"' E
~
I ~
LABEL l; VAR ZZ,Al,A2,A3,A4,K,H,X,Y,Xl,Yl:INTEGER; U:STRING[20]; BEGIN I F CLEAR THEN BEGIN HIRES; HIRESCOLOR(lS) END;
~
o
1
r"
,:!-~ ..............
YO
Ejemplos de programación
3.
4.
Modifique el programa CONTROL (Sección 5.2.4) suponiendo que el termómetro tiene la función de transferencia GT(s) = 1/(1 + T,s). Verifique todos Jos programas de este capítulo corriéndolos en la IBM PC.
,
CAPITULO 6 Lenguajes de simulación
6.1
Introducción Hay dos áreas principales donde se desarrollan los lenguajes de simu· [ación: el área de sistemas continuos con parámetros concentrados o distribuidos, y el área de simulación discreta (sim ulación de eventos o actividades). Recientemente se pone más atención a los lenguajes orientados a objetos. los cuales permiten crear programas más flexibles, donde los objetos continuos y discretos corren en la forma paralela o semiparalela en el mismo mode!o. Hace notar que la simulación de sistemas co ntinuos es reJlmente continua sólo al usar las computadoras analógicas. Hablando sobre aplicaciones de las computadoras digitales podemos observar que la simulación continua se realiza siempre con un incremento pequeño, fijo o variable. de tiempo de modelo. En consecuencia. los cambios de estado de modelo ocurren en unos momentos discretos de tiempo. que constituyen una secuencia de eventos. Esto no significa que podemos usar lenguJjes diseñados para la simu lación discreta en los problemas ele simulación continua. aunque existen lenguajes basarlos en la simulación de eventos que sí permiten simular sistemas cu1 1 procesos continuos y discretos corriendo simultáneamente. Empezamos nuestra discusión con la simulación de eventos y procesos discretos. ya que éste p;:irece ser el campo más importante. L11ego v¡¡n1os J mencionilr algunos lenguajes y métodos para la simulación continua. corno ACSL. DY:\A~lO y el métoclo de Forrester.
,_.. ,_ -·~
.-...:::· ....... -.,,
··~·--
--- .. ~,~ ... ~J.~-
-..-.~ ....
L.is estr;itegias de sim ulación <.¡:¿
6.2
Las estrategias de simulación de eventos y procesos
fuse l. fuse 2. lúse
Se han desarrollado tres estrategias principales de simulación: Escrutamiento de uctividudes (EA) ("activity scanning"), programaci(;n de euenrris (PA) ("even t schecluling") e interucci<>n de procesos (IP) ("process interaction") 1:n1.1••1.1 7•'I. En lo que sigue trataremos" actividad" y "evento" como sinónimos. EA fue la primera estrategia de simulación que apareció en los años cincuenta en Europa. Una de las primeras imp lementaciones ele EA fue el lenguaje CSL - Control and Sim11lation Language 11"1 . Según esta estra tegia . el tiempo de modelo avanza !lasta que puede llevarse a cabo la próxima actividad. L11ego se ejec11tan todas las activideños. Si el nú mero de ;ictividades crece. el tiemµo µerclido para el escrutamiento crece rápi damente y el algoritmo EA resulta ser ineficiente. La idea de programación de eventos (PE) es muy simple: hay que guardar en la memoria operativa no sólo el momento de ocurr encia ele! próximo evento. sino también la información scbre cuál evento se ejecutará. Esto resulta en una lista de eventos según la cual los eventos se ejecutan sin revisar o buscar en todo el conjunto de ev entos. La lista es dinámica. esto es. puede ser modificada por los eventos que pueden programar la ejecució n de otros even tos en unos mom entos determinados a aleatorios. Lo que consume más tiempo es l a actualización de la lista ele eventos y. por supuesto. las partes operacionales de tos eventos. PE fue implementado en lenguajes como SIMULA ''"i ( aunque en SIMULA se habla sobre " procesos" y no sobre "eventos") . en GPSS 1•• 1. en PAStON :"' '" '" ..,;¡ y muchos más. Alguno s lenguajes usan el algoritmo de "tres fases". que es un a combinación ele EA y PE. Este algoritmo se aplica si en el modelo hay eve ntos que no son r elacio nados al tiem po. sino a las condiciones que dependen del estado de modelo. Estos eventos condicionales no se pueden ubicar en la lista de eventos y tienen que ser revisados cada vez cuando camb ia el estado. El algoritmo de t res fases es c omo sigue:
:r
~\ ,'\.:'
43
Lengu;ijes ele simu la c iún
-
...:. .
~_¿:
-=-~
:r
avanzar el t iempo hasta el pró ximo evento de i a lista de eventos. ejecutar los evenros de la lista. programados para este momento, revisar todos los eventos cond icionales y ejecutar los que pueden activarse en el mom ento. según sus condicio nes.
Este algoritmo es más ilexible y, a v eces. más rápido que pur o EA o puro PE. Fue implementaclo, por ejemp lo. en FORSSIGHT/ WITN ESS . BASSIM y PASCAL-SIM. El algoritmo de tres fases puede ser acelerado al agrupar los eventos condicionales en grupos (" modular sim u lation") que pueden ser activarlos o desactivados para evitar la r evisión ele eventos cond ic i on;iles sobre los cuales se sabe que no se p ueden ejecutar en el m omento. Este 111étuclo se i111ple111entó . por ejemplo. en los lenguajes A l ~S 1' " 1 y GSP !• 1. La i11teracción de p rocesos (IP) es una idea muy profunda de sim ut ~1 c ión . En et sistema real se buscan procesos que corren (fís ic amente) en paralelo y se est ablece et int ercambio de infor mación y las reglas d e in ter;icción en tre los procesos. Ésta es ia idea princ ipa l d el lenguaj e SLvllU1.'. '' 1 y otros lengu;:i jes o r ientados a objetos y desarrollados c;:isi '.!O años después ele SIMULA como Obj ect-Oriented PASCAL i"'-1, MODULA-21;¡,·.¡ . SMALLT ALK¡·... ;; ¡ y PASlONI"'·""·"'':'º'· IP aparece t ambién en paq uetes de simulación que no r efieren directamente a procesos, por ejemplo la transacción ("tr ansaction") d el paquete GPSS ''" ' es. en r ealidad. un proceso que corre en paralelo c o n otros procesos d el modelo. La principal ventaja que ofrece IP es l a posibilidad de crear o bjetos en ta memoria oµerativa. Los objetos simulan el comportamien to de los co111pw1enlt:!s del modelo . Ésta es una est ructura más comp leja que un conjunto ele eventos o actividades. Las declaraciones de procesos son "genéricas". esto q uiere decir. que cada objeto es una rea lización de 11n proceso. Así. los objetos pueden mult ipl icarse en la mem o ria operativa. actua r y desaparecer. Ade más, un proceso puede con tener un número de eventos y sim ula r un subsistema discreto . Otros procesos ele! mismo modelo p ueden . por ejemplo. re presentar partes continuas del sistema r eal e interactuar con los demás procesos. realizando modelos discr eto-cont inuos. Últimamente se habla cada vez más. sob r e una nueva tendencia llam ada s1rnulucHjn d ístn buidu. Este en foq ue apareció cuando se desarrollaron modelos gr and E:'s con muchos o bjetos. en t;is supercomp utaclo ras paralelas . Supongamos que hay qu e simular tres procesos real es A. B y C en et mismo intervaio de tiempo real T. Si lo s procesos son di ferenres. es probable que tos objetos correspondien tes en la computa dora corran con velocidades diferentes. Si A y B son o bjet os "rápidos" y Ces e! " lento". y si A.B y C ocupan tres d iferentes procesadores de una computadora paralela. entonces los ob jetos A y B tienen q ue esperar h;:ist a que el C avance en el tiempo de modelo, ya que el tiempo de mo delo es una vari;:ible global. En la simulación distribuida se permi te que los objetos A y B av;incen más rápido. desocupando sus procesador es
94
El len!tuaje CSL
Lenguajes de si1111ilaci<'>n
tuvo una influencia considerable en el desarrollo ele los métodos de simulación.
antes que el objeto C llegue al mismo momento del tiempo de modelo. Esto significa que cudu unu de tus uó¡etos tiene su propio "reloj" que uuunzu independ1enternenre de lm re/u¡es de otros objetos. Esta idea parece muy simple y correcta. pero en realidad no es así. El mecanismo ele "relojes independientes" funcionaría bien si no hubiera intercambio de información entre los objetos. En un modelo complejo, los objetos emiten mensajes para otros objetos. y actúan según los mensajes que reciben. Si, por ejemplo. el objeto A se adelantó en el tiempo y recibe un mensaje de un objeto mas lento. por ejemplo C. este mensaje se ubica en el pasado del objeto A. ¿Qué pasa si el mensaje influye en el comportamiento del objeto A? Ya que puede cambiar algo en sus actividades pasadas. el reloj ele! objeto A tiene que regresar al momento del mensaje y la trayectoriél de A tiene que ser recalculada a partir de este momento . Ahor:l. ~quÉ' pasa si el obje to ...\ pasó un mensaje al objeto B d en tro del period o que se repite. y ahora Pste mensaje desaparece o cambia? H:1y que regr es ar también 'el reloj d el objeto By r eca lcular su trayectori;1. Y ;,qué p;1sa con otros mensaji>s entre los objetos A y B dentro de las tr:1yecto ri:1s rec ;Ilcui aclJs·> Así. un mt-nsa je que em it e nn objeto lento put•car tocl;i un:.i cadena de reµeticion es y cambios. Este proceso puede ser bast;inte co stoso porque. además de un aumento en el número ele operaciones. hay que guardar en la memoria los estados pas;1clos de cada objeto. para poder r eg resar a un momento anterior en su trayectoria. En la simulación distribuida hay clos tendencias o enfoques: enfoque optimista. y enfoque conservador. En el "optimista" se supone que ei moclelo se puede descomponer en los objetos separados. ele talmanera q1w t>! flujo ele información \intercambio de mensajes) entre los objetos es r educido y que vale la pena seguir con relojes independientes. arriesgando la posibilidad de repeticiones en algunas situaciones. Se desarrollaron diversos algoritmos dentro de este enfoque. a los que se refiere con el nombre .. Time Warp"' (vea los trabajos de J.B. Gilmer. G. Lornow. B. Beckman entre otros. vea "Simulation series" vol. 19 no. 3. :)ES. San Diego 1988. Hasta el momento no existen suficientes bases teóricas para los algoritmos 'Time Warp". El enfoque conservador no µermite !as repeticiones en la simulación (consulte T .C. Hartum. O.A. R.eecl. R..\1. Fujimoto y otros. en el mismo libro). ..\hora \'amos a describir con más detalles algunos paquetes y lengt1;1_ies de simulación.
6.3
Hay clos conceptos que distinguen CSL ele FORTRAN: el mecanismo ele escrutamiento de actividades (EA) y la declaración de clase de elementos (CLASS). El mecanismo EA se realiza a través del conjunto de "variables de tiempo" ("time-cells") y el " procedimiento ele reloj" que controla al tiempo de modelo y a las variables ele tiempo. Los nombres de las variables de tiempo tienen prefijo "'T", por ejemplo T.X es el nombre de una variable de tiempo. Todas las variables ele tiempo son globales para todo el programa y son de tipo entero. El tiempo de modelo se llama CLOCK y es también una variable entera. Los cambios de los valores de CLOCK y ele tocias las variables ele tiempo se realizan por el procecli-miento ele reloj, al cual llamaremos brevemente "reloj". Suponiendo que en un momento dacio CLOCK y todas las variables ele tiempo tienen valores definidos. el reloj busca a la variable de tiempo qt1e tiene el valor más ¡wque1io pero positivo. digamos tm. L11ego. el CLOCK avanza hasta el momento CLOCK(anterior¡. tm y el valor tm se r esta de todas las variables ele ti empo. Ahora se revisan tocbs las actividades clel modelo y se t>jecuta11 sólo lasque cumplen con las condiciones correspondientes. clefiniclas por el programador. Las actividades pueden cambiar los valores ele todas las variables de tiempo. pero no ele CLOCK. Después se repite el procedimiento de reloj. Este ciclo se repite hasta cuando ya no hay más variables cte tiempo con valores positivos o hasta que se interrumpe la t>jec11ción ele! programa. Así. las variables ele tiempo y el reloj definen el avance ele ti empo ele modelo. y las actividades pueden ejecutarse sólo cuando una ele las variables ele tiempo se anula. Podemos decir que las variables ele tiempo sirven corno "despertadores" para las actividades. La manera más sencilla de relacionar a una actividad con el tiempo es . por ejemplo. usar la condición T.Z EQ O que significa "¿Es el valor ele T.Z igual a cero?" donde T.Z es una variable de tiempo. Ésta puede ser una ele las condiciones necesarias para llevar a cabo la actividad. Si. por ejemplo. la misma actividad tiene la instrucción T.Z = 10 en su parte operacional, la actividad se va a repetir ca el a 1O unidades de tiempo . La declaración ele clase (CLASS) introduce una clase ele elementos ("entities") que son los componentes clel modelo. Cada declaración CLASS contiene la siguiente información:
El lenguaje CSL CSL (Control and Simulat ion Language)i 'º! fue desarrollado en la década ele los cincuenta en lng!aterr:i. basándose en FORTRAN. Aunque CSL es un lenguaie antiguo y recientemente no se usa mucho. vale la pena comentarlo como uno ele los primeros lenguajes de simulación que
:JI"
..
~~~=-___.- ..,...,.....~--~
~::;
..._
l. 2. 3.
El nombre de la clase. El número máximo de los elementos ele la clase. Dice sí a cada elemento de la clase le corresponde una variable ele tíem po.
4. 5.
Declara los atributos que describen a los elementos. Declara los conjuntos a los que pueden pertenecer los ele mentos ele la clase.
9fi
El lenguaje CSL
Lenguajes de simulación
La variable de tiempo, los atributos y la pertenencia a los conjuntos constituyen el estado actual del elemento correspondiente. Así. las declaraciones de clases corresponden a la parte que describe el estado de modelo en la descripción formal (vea el Capítulo 3).
La parte declarativa declaraciones de clase
Ejemplo
CLASS TIME CLIENTE.100(3) SET FUERA, FILA. VENTANILLA
Definiciones de las condiciones iniciales
Esta declaración introduce la clase llamada CLIENTE. En este ejemplo se subrayan las palabras "llaves·· del lenguaje. TIME ( es optionuf) significa que a cada CLIENTE le corresponde una variable de tiempo. En el modelo pueden existir 100 CUENTES. cada uno con 3 atributos que lo caracterizan . Además, cada CLIENTE puede pertenecer a uno de Jos tres conjuntos llamados rUERA, FILA y VENTANILLA. El programador puede referir a los CLIENTES como, por ejemplo, CLIENTE.5 o CLIENTE.K que significa "CLIENTE número 5" y "CLIENTE número K" respC'ctivamente. Las referencias a las variables de tiempo de los clientes tienen la forma T. CLIENTE. K Oa variable de tiempo del CLIENTE no. K). La parte declarativa del programa en CSL especifica a los componenentes del modelo y a sus variables descriptivas. Las reglas de interacción se definen en una serie de segmentos llamados actividades. La figura 6.1 (ver página siguiente) muestra la estructura general del programa. Después de la parte declarativa siguen las instrucciones que establecen las condiciones iniciales. Luego. con la palabra ACTIVIT!ES empiezan las descripciones de todas las posibles actividades del modelo. Cada actividad contiene una serie de condiciones y una parte operativa que consiste en una serie de instrucciones ejecutables. Si las condiciones se cumplen, se ejecuta la parte operativa de la actividad. A la hora de correr el programa. primero se ponen las condiciones iniciales y se revisan las actividades. Se ejecutan las que pueden ejecutarse según sus condiciones. Luego empieza a actuar el reloj de CSL, como se describió anteriormente, realizando el algoritmo EA. El reloj avanza el tiempo y controla las variables de tiempo. Después, se revisan de nuevo las actividades, llevando a cabo las que deben ejecutarse en el momento. Este ciclo se repite hasta el fin de la simulación. cuando ya no hay variables
1'''
~... ~
:~ -..,,.,;._"..d;¡ ~
.&,¿_·L~l;.,_.,,..,_
-
~~....; . .:__·
.:.-......;_e,.........:_
ACTIVIDAD 1
ACTIVIDAD2
~ 1 1
'V
[
~.,,;:~
~.:...-~
-·
i....-~.
.t..r.....~...:..i.. _- _ '"
ACTIVIDAD N
1
l 1
FIN
1
Figura 6. l. La estructura general del pro&'T ama en CSL.
.............
- --·,.,.e--~~~-
& di'.-' ·
"' ACTIVIDADES
97
~
lJ8
Lenguajes de simulación
El lenguaje SIMULA
El siguiente listado muestra un ejemplo de una actividad en CSL.
99
bir modelos más complejos e impiden la evolución y desarrollo de CSL. Lo mismo podemos decir sobre todos los lenguajes de simulación antiguos que pertenecen a la "época de FORTRAN".
BEGIN T.LLEGADA EQ O T.LLEGADA
6.4
= NEGEXP(20)
El lenguaje SIMUIA
FINO K FUERA FIRST Éste es un lenguaje algorítmico de alto nivel. Aplicado a simulación, SIMULA permite implementar el algoritmo IP (interacción de procesos) y PE (programación de eventos). La versión más conocida y completa, llamada SIMULA 67, fue desarrollada por Ole-Johan Dahl, Bjorn :Vlyhrhang y Kristen Nygaard en el Centro Computacional Noruego en 1967 1c"1. El lenguaje es una extensión de ALGOL 60. En los años setenta se usaba mucho en Europa y fue implementado en casi todas las computadoras de esa época. En América SIMULA (así vamos a referir a SIMULA 67) no ganó mucho terreno por dos razones: primero. parece que fue un lenguaje demasiado sofisticado para cumplir con la demanda para herramientas de simulación durante los últimos 20 a1ios. Segundo. SIMULA es una extensión de ALGOL que nunca fue popular en los EE.CU. Cuando aparecieron las computadoras personales, ninguna tenía un compilador de ALGOL y tampoco de SIMULA. Últimamente aparecieron implementaciones de SIMULA para la IBM PC (vea el catálogo de "Software" para Simulación, la revista SIMULATION, publicado cada año). Aunque SIMULA tiene más de 20 años. podemos decir que el lenguaje es plenamente contemporáneo, por su perfecta estructura y diseño. El concepto básico de Simula es el objeto. Cada objeto tiene sus atributos e instrucciones, como muestra esquemáticamente la figura 6.2.
CLIENTE K FROM FUERA CLIENTE K T AlL FILA Se supone que en el programa se declaró la clase CLIENTE según la declaración mencionada anteriormente. Esta actividad describe la llegada de un cliente a un sistema de servicio. Una de las condiciones de la ejecución de esta actividad es T.LLEGADA EQ O, donde T .LLEGADA es una variable de tiempo independiente ( no relacionada con ningún elemento del modelo). La siguiente instrucción redefine la variable T.LLEGADA dándole un valor aleatorio que proporciona el generador '.'JEGEXP. Suponiendo que NEGEXP tiene la distribución negativa exponencial, las repeticiones de esta actividad modelan el flujo de CLIENTES de tipo Poisson. Observe que si el valor de T.LLEGADA es igual a x. T.LLEGADA se va a anular después de x unidades de tiempo, y en este preciso momento se vuelve a ejecutar la actividad. Así, los intervalos entre las llegadas consecutivas tienen la distribución negativa exponencial. que es la propiedad del flujo de Poisson. La instrucción FINO busca al primer cliente (su número K) que pertenece al conjunto FUERA (está fuera del sistema). Si FUERA está vacío, no se ejecutará la actividad. Por lo contrario. la variable K contendrá el número del cliente deseado. Las dos últimas instrucciones son las que constituyen la parte operativa de la actividad. El CLIENTE número K sale del conjunto FUERA y se forma en la FILA. como el último, que determina la palabra TA!L. De esta manera se construye todo el modelo, describiendo las demás actividades, como el inicio del servicio, terminación de servicio en la VENTANILLA.. etc. CSL está fuertemente relacionado a FORTRAN. Se pueden usar procedimientos escritos en FORTRAN. toda la ortografía del programa es igual a la de FORTRAN y las instrucciones de entrada/ salida son compl.etamente iguales. La compilación de CSL se hace en dos etapas. Primero se traduce el programa fuente a FORTRAN y luego actúa un compilador de FORTRAN para obtener el código ejecutable. Esta relación a FORTRAN es. por otra parte, una de las desventajas de CSL. Las estructuras primitivas de FORTRAN resultan insuficientes para descri-
~,
......~--~~1'"'·•-1·
·--..~~
-r~-.-~. . . .--.~~ ~·'T.,,...._"'.'"~.....,...'(t----~~~~~
al a2 ........ an <
,;p,
I>
Figura 6.2. Un objeto de SIMUU..
En este esquema al, a2, ... , an son los nombres de los atributos y vi, u2, .... un son los valores correspondientes./ es la lista de instrucciones del objeto. Los atributos pueden ser variables de cualquier tipo y también procedimientos. Si un atributo es de tipo "procedimiento", su nombre es el nombre del procedimiento y su valor es todo el "cuerpo" del procedimiento con sus declaraciones locales e instrucciones. La lista de instrucciones I describe las propias actividades del objeto. Si la lista está vacía Oo denotamos como f =O) , esto significa que el objeto es "pasivo" y no puede actuar independientemente. La figura 6.3 muestra un objeto pasivo que puede interpretarse como un número complejo ( 7. 0.5) o como un vector que incluye componentes 7 y 0.5.
'"':.:-t-
~~
--.'-
'-'-.,,,.:••_¡,¡_. •
•
ul u2 ........ un
~
~ ~~·- -- --•--<"
""
--
.1.
l 00
Lenguajes de simulación
El le n guaje SIMULA
Re lm <
,
Ninguno de los dos objetos puede t erminar sus accio nes, porque nunca se ejecutará el último "end". "Almacén" es una varia bl e global. El Consumidor. al ser creado, suspende sus actividades con la instrucción detach. El objeto llamado Productor define el valor de su at ributo xy lo pone en el Almacén. Luego activa al Consumidor con la instrucción "resume". El Productor suspende sus acciones y el Consumidor "consume" lo que se encuentra en el Almacén , con la instrucción y:= Almacén. Después de efectuar algunas operaciones sigue resume(Productor) que suspende al Consumidor y reactiva al Productor, etc. Este modelo Productor-Consumidor es sólo un ejemplo de dos objetos que interactúan desactivando y reactivándose mutuamente sin ser todavía un modelo de simulación, ya que no refiere a tiempo de modelo. Sin embargo, este ejemplo muestra las posibilidades de SIM ULA como una h erram ienta para construir modelos con el algoritmo IP. El segmento básico de cada progr ama en SIMULA es la decla ración de clase de objetos. Esta declaración tiene la siguiente fo rma gen era l.
o>
7 0.5 Figura 6.3. Un número complejo como objeto de SIMULA.
En la Figura 6.4 se muestra un objeto cuyos atributos son las coordinadas de dos puntos (al, a2) y (bl, b2) . El último atributo de este objeto es el procedimiento "Odl" que calcula la distancia entre los dos puntos. al a2 bl b2 real procedure Odl <
,
Odl:
be gin sqrt(bl -al)"2 (b2 - a2)"2; end;
=
o>
+
PR Class A(PA) : SA:
Figura 6.4. Ejemplo de un objeto.
begin DA:
Este objeto también es pasivo (la lista de instrucciones vacía). Los atributos al, a2. bl, b2, así como el procedimiento Odl son visibles desde afuera del objeto y pueden ser usados por otros objetos. Si la lista de instrucciones no está vacía, el objeto al ser creado empieza a ejecutar las instrucciones de la lista. Ejecutando la última instrucción "end" de la lista, el objeto termina sus actividades. Cada objeto puede ser suspendido en sus acciones con la instrucción "detach" y reactivado con "resume". El siguiente ejemplo (figura 6.5) muestra un bosquejo de dos objetos que tienen listas de instrucciones no vacías e interactúan mutuamente.
end A: en donde PR es el prefijo de la clase (lo explicaremos después) . A es el nombre de la clase, PA son los parámetros formales , SA son las especificaciones de los parametros formales, DA son las declaraciones de los atributos de la clase e l es la lista d e instrucciones. Consideremo s el siguiente ejemplo: Ésta es una declaración de una clase de o bjetos c uyo nombre es Vector. La clase tiene un parámetro form al n de tipo entero. Desde luego, a cada declaración le corresponde uno o más objeto s en la memoria operativa. Los objetos ~e crean con la inst rucción New. Por ejemplo New Vector(k) crea a un objeto de tipo V ector con n = k (k es el parámetro actual), y New Vector(5) crea un o bjeto de tipo V ector con n = 5. El arreglo A es un atributo de la clase. Est e arreglo es local para cada objeto. pero visible desde afuera con la construcción X.A. suponiendo que X es una referencia (" pointer") al objeto. Otros dos atributos son los procedimientos Suma y Norma. Suma calcula la suma d e t odos los componentes de A y Norma calcula la longitud de A tratá ndolo como un vector. La lista de instrucciones está co ntenida en el últ imo bloque que empieza con la línea begin integer i;. Un objeto de t ipo Vector al aparecer pide los datos con la instrucción A[i ] : = inreal. para todos los componentes de A . Después de leer estos n n úmeros reales el o bj eto termina sus actividades y permanece en la memoria operativa como una estructura de datos (el arreglo A) y dos procedimientos Su ma y Norma .
Listado 6
Producto r:
... .
)(
. ...
<
beqin Nhíle true d o begin
x:= ... . ... . ; Alr:'lacen:=x; resuwe(Co nsumido r }; end ; end Productor;
Consumidor: ..•. y ...• < -----------
101
begin detach; .,..hile true do begin y : - Al macen ; ~e sume { Productor ) ;
end; end Consumidor;
.......
102
Lenguajes de simulación
Listado 7 Class Vector(n); integer n; begin array A[l .. n]; real procedure Suma; begin real s; integer i; for i:=l step 1 until n do s:=s+a[i]; suma:=s; end Suma;
N
real procedure Norma; begin real s; integer i; s:=O.O; for i:=l step 1 until n d o s:=s+a[i ]A 2; No rma:=sqrt ( s ) end Norma; begin integer i; for i:=l step 1 until n do A[i ] :=inreal; end; end Vector;
~
s
~
z Los ejemplos anteriores muestran las posibilidades de SIMULA para construir modelos bastante complejos y abstractos. Otro mecanismo muy valioso que ofrece este lenguaje es la jerarquía de clases y la herencia de propiedades . Es común que al desarrollar modelos se agreguen nuevas propiedades a los abjetos que ya tienen su descripción en el programa. En lenguajes como ALGOL o PASCAL cada cambio de la estructura de los atributos o instrucciones es una intervención en los segmentos ya programados y necesita una reedición del programa. La jerarquía de clases en SIMULA facilita estas operaciones . Supongamos que X (figura 6.5 ver página siguiente) representa gráficamente el conjunto de propiedades de una clase llamada X. por ejemplo la clase de los pacientes de una clínica. Si ahora queremos describir una clase Y con más atributos y actividades que posea todas las propiedades de la clase X. por ejemplo un "paciente-mujer", podemos hacerlo simplemente poniendo prefijo X en la declaración de la clase Y, esto es. X Class Y. Después sigue la d ecla-
"ción de y que ,6\o contiene la> prnpiedade> nueva>. Lo' ª"ibuto' Y
...;_--.,,-~-::-- --
Vi e:
"'
><
-::i
"' -::i "' CJ
-::i
·~
o
a.
1 ;
-::i
.::'!
¡·
~
~
~ ......
1
.,;
1
.
! j 1
""'""
>-
<.::> ~
:..
S'ti ;,;..
104
Lenguajes de simulación El lenguaje PASION
actividades de X se agregan automáticamente a Y. Así, por ejemplo, si Y es "paciente-mujer", Z es "paciente-hombre" y N es "paciente-niño" (vea figura 6.5), en el programa ponemos las siguientes declaraciones:
objetos correspondientes, creados por las instrucciones Prod: Productor, y Con s: = New Consum idor. (Ver listado 8)
En este caso se dice que Y, Z y N son subclases de la clase X. La herencia de propiedades permite preparar unas clases predefinid as y guardarlas en la biblioteca del compilador. Así se hizo para ofrecer al usuario todas las herramientas necesarias para simulación. Hay que observar que SIMULA (puro lenguaje) no contiene estas herramientas que pertenecen a su "ambiente" y no al lenguaje mismo. Existe una clase predefinida en el ambiente de SIMULA llamada SlMULATION, que sirve para simulación de sistemas dinámicos y realiza los conceptos de !P (interacción de procesos). Para usar esta c lase se aplica el prefijo SIMULATION a todo el programa, haciendo visibles todos los atributos Qa mayoría de ellos son procedimientos) de la clase. También son visibles en todo el programa las subclases predefinidas de SIMULATlON. La más importante es la subclase Process. Los objetos de tipo Process son modelos simplificados de los procesos que corren en paralelo en el sistema real. Por supuesto los procesos de SIMULAT ION corren en paralelo sólo en el tiempo de modelo y no en el tiempo real. Para programar el modelo de un proceso se usa el prefijo Process en la declaración de la clase correspondiente. Ahora, dentro de esta declaración se pueden usar, entre otros, los siguientes procedimientos.
La id ea de lP tiene una imp lemen t ac ión muy comp leta en SIMULA. A dem ás, SIMULA, por ser un lenguaje algo r ítmico de alto nivel. per mite construir modelos complejos y abs tr actos. Por otra parte. si necesitamos una herramienta "amistosa" y fácil de aprender . SIMULA no es la mejo r opción. No obstante su estructura casi perfecta y amplio campo
Li stado 8 Pr o cess Class Product o r; begin while tru e d o begin X := .• . • .• . •;
Al macen :=x ; hold ( 2 ) ; activate (Cons ) ; passiv a t e; end ; end Prod uctor;
Activa te - para activar un proceso Hold( 7) - suspender un proceso y reactivarlo dentro de T unidades de tiempo Passivate - desactivar un proceso
Process Class Consumi dor; while tru e d o beg in pass ivate ;
Wait - poner un proceso en un conjunto (sirve para modelos con filas).
........ ........
y :=Al macen;
l'
h old ( J ); activate ( Pr od) ; end ; e nd Consumi d or;
1 ~-
~~ ·'\;.._, ..
_,~
New
El objeto Prod, al aparecer , ejecuta unas operac iones, y, después de esperar 2 unidades de tiempo (con ho ld( 2)], activa el objeto Cons, que representa el proceso "consumidor". Luego, Prod se desactiva con la instrucción passiv ate. El consumidor al ser creado se desactiva y espera. Cuando lo activa el prod uctor, el consumidor "consume" lo que co locó el prod uc tor en el Almacén y luego espera 3 uni d ad es de tiempo y activa al prod uctor, desactivándose a sí mismo con la instrucció n passivate. Est os o bjetos actúan como procesos de un modelo de simulación, p orque sus actividades se ubican en el tiempo de modelo. Los procedimien tos "hold", "p assivat e" y "actív ate" son los de la clase predefin ida Process.
Class X;............ end X; X Class Y;.......... end Y; X Class N; .......... end N; X Class Z;.......... end Z;
Consideremos el siguiente ejemplo que representa dos procesos: Productor y Consumidor. La diferencia entre estas declaraciones de clases y los objetos Productor y Consumidor mencionados anteriormente es, que éstas son declaraciones de clases que son procesos de SIMULA ( tiene prefijo Process). Se supone que Prod y Cons son referencias a los
=
!OS
1
~~.--,O.
.M..... _:~' - .._.
~~,
l-l ICll~ Udj'::: í
de aplicaciones, hay que ser un programador con mucha experiencia y buen conocimiento de ALGOL para usar SIMULA. No vamos a mostrar aquí más ejemplos de programas en este lenguaje, porque esto necesitaría mucho más de las reglas de programación, prácticamente todo un manual de programación. Los ejemplos de las aplicaciones de IP se discutirán en la sección que describe al lenguaje PASION que es más sencillo y fácil de aprender. Mayor información sobre SIMULA puede encontrarse en los manuales del lenguaje y en muchas publicacionesl7 1. : 2 ~1.1 • 4 1 _
6.5
El lenguaje PASION
6.5. l Introducción
PASION (el nombre es una abreviación de PASCAL Sllv!úIACIÓN), es una extensión de PASCAL. Su relación con PASCAL tiene ciertas razones. Primero. PASCAL es casi perfecto para fines didácticos. Segundo, como las tareas por resolver a través de la simulación por computadora son cada vez más complicadas, nuevos lenguajes deben ser relacionados con lenguajes algorítmicos de alto nivel. Leyendo los manuales de los paquetes de simulación existentes, uno podría llegar a la conclusión que todo el "software" de simulación de los sistemas discretos fue desarrollado para simular funcionamiento de peluquerías, bancos y elevadores. En realidad. los sistemas que hay que simular son mucho más complicados. En consecuencia. paquetes como GPSS o SLA.iV111 son perfectos para simular sistemas con filas y eventos simples, pero resultan insuficientes para modelos con procesos combinados (continuos y discretos). o cuando los procesos (las "transactions·· de GPSS) tienen que comportarse según algoritmos más complejos. La simulación basada en procesos y eventos no es nada nuevo. Cabe mencionar el libro de Zeigler (1976) o cualquier manual del lenguaje SiMULA o las publicaciones relacionadas con este lenguaje (Dahl y Nygaard. 198612"'). Las ideas nuevas, como "tasking" ( tareas que corren en paralelo en el tiempo real) y el lenguaje Ada están bien descritas por Hibbard y coautorest·121 (1985) y Ledgardl02 1 (1983). Otros problemas, más generales de simulación, los podemos encontrar en los libros de Fishman!33 1(1973) y Tocheri 1º3 ' (1963). La idea de extender PASCAL para soportar la programación de los procesos semiparalelos no es nueva. La descripción de una de las implementaciones de corrutinas en PASCAL está publicada por Kritz y
"">f
.,,W\''.;;,
c"flP'~~/'{JI
·~
~1"'"--'
J-\.:)IUN
107
Sandm ayr·· '1 (1980). El mismo problema para el lenguaje C está descrito por Bailes!•! (1985). PASION. en lugar de usar cor rutinas, utiliza Ja estructura "proceso/evento", donde la ejecución de un proceso puede ser suspend ida, pero no la ejecución de un evento. Los códigos de eventos son secuencias de instrucciones descritas en PASCAL. Un PROCESO es una declaración que dice cuáles son los atributos (parámetros y variables) del proceso y cuáles son sus eventos. Ésta es una declarac ión que puede ser usada para generar objetos (u no o más para cada proceso). Los objetos son los segmentos ejecutables del programa. Cada objeto, según la declaración del proceso correspondiente, tiene sus atributos y así existe en la memoria operativa. Los códigos de los eventos se guardan en un solo lugar, no obstante el número de objetos del mismo tipo que se generaron. PASION no es la única extensión de PASCAL destinada a la simulación. Un paquete también ~elacionado a PASCAL (llamado PASSli\1) está descrito por Uyeno y Vaessen ( 1980). PASSIM es un puquete y no lenguuje , ya que programas en est e len . guaje son secuencias de invocac iones de procedimientos. PASION tiene características muy distintas y no funciona a t ravés de procedimientos. Algunos procedimientos auxiliares existen. desde luego. en el "'ambiente'" del lenguaje (graficación. reportes. etc.). pero éstos solamente tienen un papel auxiliar.
6.5.2 Procesos y eventos Para describir una secuencia de eventos de un mode lo. hay que definir cada evento. sus propiedades dinámicas (relación al tiem po de mod elo) y las interacciones entre los eventos. Un lenguaje orientado a procesos, a lo más. define una estructura en el conj unto de eventos. Para explicar el concepto de proceso. consideremos. por ejemplo. una población de bacterias. Una bacteria puede moverse. reproducirse. comer o morir. Así. la vida de una bacteria puede describirse como un proceso que con tiene los cuatro eventos: movimiento. reproducción. alimentación y desaparición. El modelo. desde luego, consiste en muchos objetos de tipo "bacteria" que corren en paralelo. En el programa fuen te, sin embargo, hay sólo una declaración de proceso que sirve como patrón , según el cual se engendran los objetos en la memoria operativa. Los objetos son fuertemente relacionados uno a otro. ya que cada evento "reproductor" crea un nuevo objeto. una bacteria puede comer a otra, y toda la población tiene un ambiente común. Una vez creado. el objeto aparece en la memoria operativa, corre y desaparece si sus acciones han terminado. El estado de objeto en PASION consiste en sus atributos yen !os momentos de ejecución de sus eventos. Los atributos son variables de cual.quier tipo, locales para el objeto pero accesibles desde afuera. Todos los tipos de PASCAL. tales como arreglos. registros u otros pueden usarse. Los tiempos de eje-
108
Lenguajes de simulación
El lengua je PA.S! ON
Listad o 9
cución de los eventos (llamados también "variables de tiempo") sirven para programar los momentos de ejecución de los eventos. Esto se realiza a través del "mecanismo reloj", predefinido en el lenguaje. En pocas palabras, existe una variable global llamada TIME, que representa el tiempo de modelo y se inicia con valor cero. Luego el valor de TIME avanza al próximo (en el tiempo) evento. Este evento se ejecuta y se busca el siguiente evento a ejecutar. Este procedimiento se repite. si existe por lo menos un evento programado para ejecutar. Cada evento, por supuesto, puede cambiar el estado del objeto correspondiente y de los demás objetos, y también programar o reprogramar a sí mismo o a otros eventos del modelo. El avance de TIME y la fila de eventos se manejan automáticamente por el mecanismo "reloj". El listado 9 (ver página siguiente) es una declaración de proceso. Para mayor claridad las palabras reservadas del lenguaje están subrayadas (esto no s·e .hace en el código fuente). Con la palabra PROCESS empieza la declaración del proceso. El tipo de proceso es Py el número máximo de objetos de este tipo es igual a 25. El proceso tiene los atributos A y B de tipo REAL y un atributo fD de tipo STR!NG' 20 1. El proceso incluye dos eventos llamados ONE y 1WO. NEXT es la "var iable de tiempo" del evento ONE. que sirve para programar el momento de ejecución del evento. La palabra BEGIN marca el principio del texto del evento, y la palabra ENDEV termina el código del evento. Al ejecutar el evento. los atributos A y B obtienen nuevos valores y el evento se reprograma con la instrucción NE..XT: =TIME+ 5.0. para volver a ejecutarse dentro de 5 unidades de tiempo. Hay que observar que esta instrucción no es la instrucción de substitución como parece. porque NEXT no es una variable "normal". Dicha instrucción es de programación de tiempo (scheduling), que pone el evento en la fila de eventos a ejecutar. El siguiente evento, 1WO. tiene la variable de tiempo con el nombre NOW. Este nombre significa que el momento de ejecución del evento no se programa, sino que el evento será ejecutado cada vez que esté en ejecución cualquier otro evento del objeto correspondiente, en este caso el evento ONE. Así, cada 5 unidades de tiempo el objeto mandará el mensaje "Algo pasa .... tiempo =". y mostrará el tiempo y valor del atributo ID. ID puede servir como el identificador del objeto, es decir, mostrar cuál de los procesos paralelos que corren en el momento mandó el mensaje. En el programa principal (no se muestra aquí) hay que crear uno o más objetos de tipo P y activar el evento ONE de cada uno de estos objetos. Los procesos de PASION pueden ser discretos o continuos. Un proceso continuo puede declararse como proceso que contiene un evento que invoca a un procedimiento para resolver una ecuación diferencial ordinaria sobre un intervalo del tiempo dado. Este evento debe reprogramarse de tal manera que sería ejecutado periódicamente con incrementos pequeños del tiempo de modelo.
-~I""
~.......~· ...
~
~~z:,,Ak_... _ ..,..,¡,
•.;.._~ ~A_
.... .. 1.-(
109
PROCESS P,25; ATR A,B:REAL; ID:STRING[20 ] ; EVENT ONE,NEXT; BEGIN A:=A + 2.0; B:=J. O*A; NEXT:=TIME +5.0 ENDEV; &VENT TWO, NOW; WRI TELN('Algo pasa .... ENDEV
tiempo =',TIME, ID )
Listado 10 PROGRAM TRIGGER; REF A,B: Y; PROCESS Y,2; {Y es el tipo de proceso } ATR N:STRING[ 5 ] ; EVENT UNO,T; BEGIN WRITELN( 'Objeto activo:' , N) ; IF THIS=A THEN B.T:=TIME+l.O ELSE A.T:=TIME+l.O ENDEV; START {Aqui empieza el programa principal} NEWPR A; {Esta instrucción crea un n u e v o objeto l l amado A} A.N:='Pedro'; NEWPR B; {Esta instrucción crea un nu e v o objeto llamado B} B.N:='Paco'; A.T:=TIME; {El proceso A e mpieza c o rre r. B esp era. } $ {Este caracter termina el te x to d el pro grama }
· -_..:;_
l l ()
Lengucijes de simulaciún
El lenguaje PASION
Ejemplo de aplicación
PASlO>i proporciona dos útiles tipos predefinidos: tipo REF y tipo QUEUE. Precisamente. REF es una palabra reservada que principia las declaraciones de las variables de referencia. Este concepto es similar a la declaración REF del lenguaje SIMULA. Cada objeto que existe en la memoria operativa puede ser alcanzable a través de una de las variables de referencia. Esto permite el acceso a los atributos y a las variables de tiempo de todos los objetos . La palabra reservada THIS también representa una de las variables de referencia y permite referir al mismo objeto. es decir. es la referencia al objeto desde el texto de su declaración de proceso correspondiente. Cada variable de tipo QUEUE es una línea de espera (fila), esto es. un conjunto ordenado de objetos . Un proceso puede formarse en una fila, esperar, salir, etc. Filas pueden ser globales o locales con respecto a los procesos. Por ejemplo. si el proceso representa una tienda, podemos generar un número de procesos de tipo "tienda" y correrlos en paralelo, cada uno con sus filas de clientes. compartiendo. sin embargo, un ambie¡1te común. Los atributos de los procesos son directamente visibles dentro de los procesos correspondientes. El acceso desde afuera se realiza a través de !a notación "punto". Por ejemplo, si A es una variable de re ferencia. A.X es la referencia al atributo X del proceso al cual se refiere A. Si Pes un tipo del mismo proceso. entonces P[K]X es la referencia al atributo,:..· del K-ésimo proceso de tipo P que actualmente existe en la memoria. El listado 10 ( ver página anterior) muestra cómo los procesos pueden actuar recíprocamente. Esto es un programa completo en PA.SlON. Las dos variables de referencia A y B se usan para referir a los dos objetos de tipo Y que se generan en el programa principal. La declaración del proceso contiene un solo evento "UNO". que se ejecuta cada unidad de tiempo. El objeto correspondiente manda a la pantalla el mensaje "Objeto activo:" y muestra el valor de su atributo N (igual a "Pedro" o "Paco"). Luego, el evento reprograma el evento del otro objeto para ejecutarlo en el momento TIME+ 1.0. La frase "IF THIS =A THEN B.T: =TIME+ 1.0 ELSE A.T: =TIME + 1.0" significa "si éste es el objeto A, entonces programa el evento UNO del objeto B. por otra parte programa el evento UNO de!'objetoA". En el programa principal se generan los dos objetos A y B con los valores de ,V iguales a "Pedro" y "Paco" , respectivamente. En la hora de ejecución, los objetos A y B se activan recíprocamente. y el programa genera la siguiente secuencia de mensajes: Objeto activo: Objeto activo: Objeto activo: Objeto activo: Objeto activo: Objeto activo: .......... etc.
Regresemos al modelo de una población de bacterias, mencionado anteriormente. El modelo consiste en dos especies de bacterias, llamadas A y B. Cada bacteria puede dividirse, es decir, generar un nuevo objeto de tipo "bacteria A (o B)", moverse o morir, esto es, terminar sus actividades y desaparecer de la memoria operativa. Además, las bacterias de tipo A pueden comer a las de t ipo B. Luego de hacerlo, la bacteria que acaba de comer se divide ( reproduce) inmediatamente. Cada evento del modelo puede mandar un mensaje a la pantalla, o mostrar l a situación actual en la forma gráfica. El listado I con t iene el programa completo correspo ndiente en PASION. La parte declarativa del progr ama principal incluye declarac iones de las variables 01 AR) en PASCAL. declaraciones de las varia bies de referencia (REF) y el procedimien to RYSB. escrito en PASCAL que pinta las bacterias como rectángulos en la pantalla. Los rectángulos pequeños son las bacterias de tipo By las grandes son las de tipo B . BACTA es el tipo de proceso para las bacter ias de tipo A , y BACTB para las de tipo B. Las variables BA y BB pueden r eferir a los objetos de tipo BACTA y BACTB. respectivamente. Después de las declaraciones globales siguen las declaraciones de los procesos del modelo. La declaración para las bacterias de tipo A empieza con PROCESS BACTA.500; donde BACTA es el tipo de proceso y 500 es el número máximo de los objetos correspon dientes. El proceso tiene tres atributos: X. Yy ID. Xy Y represen tan la posición actual de la bacteria. El evento EATS (come) tiene la palabra NOW en lugar de su variable de tiempo. Esto significa que la bacteria come o intenta com er siempre que ocurre cualquier otro evento de este obj eto. La instrucción FINO es la búsqueda dentro del conjunto de las bacterias de tipo B. Se busca la bacteria de tipo B que se encuentra bastante cerca para atrapar y devorarla. El resultado de la búsqueda es el valor de la vari able local K. que es el número (índice) de la bacteri a seleccionada actualmente. El valor K > O significa que FINO sí encon tró a la bacteria deseada. En este caso se hace NEXTB: =TIME+ 0. 01 que significa que la bacteria que come se dividirá d entro de 0.01 unidades de tiempo . La bacteria devorada desaparece de la pantalla y de la memoria (con KILL BACTB[K]). El evento DNIDE crea un nuevo objeto con la instrucción NEWPR. Se definen los valores de los atributos del nuevo proceso y se reprograma el momento de ejecución del mismo evento. El evento MOVES cambia las coordenadas X y Y del objeto. Los movimientos son aleatorios. aunque las bacterias de tipo A , además del movimiento aleatorio, siguen a las de tipo B . El evento DIES significa la muerte ( natural) de la bacteria . El objeto se "mata" a sí mismo con la instrucción KILL THIS. Las acciones (eventos) de los objetos de tipo BACTB (bacterias "B') son parecidas a las de tipo BACTA menos el evento EATS, que no aparece en la declaración del proceso BACTB.
Pedro Paco Pedro Paco Pedro Paco
........,.,,._.,...,._
~~~~
111
·~
112
El lengua je PASlON
Lenguajes de simulación
¡---
Listado 11
o
o o o QJ o o ooo oo o
o o
o
o
o
B
o
Cª3
n
'_J
B~ o~
ººº o o o ºº o o o o oo o o
o
PROGRAM BACTER;
o~
liº o o@
Q []] ü O(]
ºº
{Simulación de dos populaciones de bacterias ) {S. RACZYNSKI , MEXICO, 1985 ) VAR REG:CHAR; RYS:BOOLEAN; WM,IDA,IDB:INTEGER; REF BA:BACTA; BB:BACTB ; {BA y BB son variables de referncia. BACTA y BACTB son procesos para la Bacteria A y Bacteria B ) PROCEDURE RYSB (A:CHAR; X,Y,COLOR:INTEGER); {Este procedimiento pinta la bacteria en la pantal la ) V!l.R K: INTEGER; BEGIN Y:=TRUNC(Y*0.5); Y:=Y+lO; IF A='A' THEN K:=4 ELSE K:=2; DRAW(X-K,Y-K,X+K,Y-K,COLOR ) ; DRAW(X+K,Y-K,X+K,Y+K,COLOR); DRAW(X+K,Y+K,X-K,Y+K,COLOR); DP..AW(X-K,Y~K,X-K, Y -K,COLOR );
END;
Figuras 6.6, 6. 7 y 6.8. El programa principal crea dos bacterias: una de tipo A y una de tipo B. define sus atributos y las activa. Los dos objetos corren en paralelo ejecutando sus eventos. En la figura 6.6 se muestra la situación de una de las bacterias de tipo A cuando sigue a un grupo de las de tipo B. Después de alcanzar al grupo perseguido, la bacteria A empieza a comer y reproducirse (figura 6. 7). En la figura 6.8 se muestra la situación cuando ya no existen las bacterias de tipo By la población de las de tipo Bes bastante numerosa. 0f er listado 11.)
6.5.3 Jerarquía de procesos y herencia de propiedades Al construir modelos más complejos es conveniente poder agregar nuevas propiedades a los procesos que ya existen. sin reeditar el programa. En PASION esto es posible a través de procesos derivados que heredan sus propiedades de otros procesos. Este mecanismo se realiza usando prefijos en las declaraciones de procesos. Si, por ejemplo. PA es el nombre de un proceso que ya existe y deseamos declarar un proceso nuevo. PB, de tal manera que éste tenga todas las propiedades. esto es, todos los atributos y eventos del proceso PA, simplemente usamos el nombre PA/PB en la declaración correspondiente, después de la palabra PROCE.SS.
PROCESS REPLOT , l; ( Este proceso reconstru y e la irnagenes de la bacterias en la pantalla ) EVENT Tl; VAR K:INTEGER; BEGIN Tl:=TIME+O.l; FORALL K BACTA BEGIN RYSB ( 'A' ,BACTA[K].X,BACTA [K] .Y,l) ENDALL; FORALL K BACTB BEGIN RYSB('B' ,BACTB[K].X,BACTB[K].Y,l) ENDALL ENDEV; PROCESS BACTA,500; ATR ID,X,Y: INTEGER; {BACTA es un proceso que representa las actividades de la bacteria de tipo A ) EVENT EATS,NOW; {Bacteria de tipo A devora a una de tipo B) VAR K:INTEGER; BEGIN FINO BACTB,K, (ABS (X-BACTB [K] .X) O THEN BEGIN NXTB:=TIME+0.01; IF RYS THEN RYSB('B',BACTB [ K].X,BACTB(K ] . Y,O ) EATS BACTERIUM A', ID ); ELSE WRITELN('TIME=',TIME , ' KILL BACTB(K] END ENDEV; EVENT DIVIDES,NXTB; BEGIN (La bacteria se reproduce ) NXTB:=TIME+NEGEXP{20.0); NEWPR BA; IDA:=IDA+l; BA.ID:=IDA;
113
114
Lenguajes de simulación
El lenguaje PASION
BA.X:=X+l; BA.Y:=Y+l; IF RYS THEN RYSB{'A',BA.X,BA.Y,l) ELSE WRITELN('TIME=',TIME,' DIVIDES BACTERIUM BA.NXTB:=TIME+NEGEXP(15.0); BA.NEXTC:=TIME+O.l; NEXTC:=TIME+O.l; BA.NXTD:=TIME+7.0 ENDEV;
A ',ID);
EVENT MOVES, NEXTC; (La bacteria se mueve) VAR K,DX,DY:INTEGER; BEGIN FINO BACTB,K,TRUE; IF K=O THEN BEGIN FORALL K BACTA BEGIN RYSB{ 'A' ,BACTA[K].X,BACTA(K) .Y,l) ENDALL; READ(KBD,REG); IF RYS THEN CLOSEGRAPH; HALT END; (K=O significa que ya no hay bacterias de tipo B. En este caso la simulacion termina} NEXTC:=TIME+0.7; IF RYS THEN RYSB('A',X,Y,O) ELSE WRITELN('TI~E=',TI~E,' MOVES BACTERIUM A ',ID); IF BACTB[KJ.X>X THEN DX:=IRND(50) ELSE DX:=-IRN0(50); {El movimiento depende de la posicion} IF BACTB[K).Y>Y THEN {de una de las bacterias de tipo B) OY:=IRND(30) ELSE DY:=-IRND(30); IF (X+DX>600) OR (XTDX200) OR (Y+DY
ELSE WRITELN('TIME=',TIME,' KILL THIS ENDEV;
DIES BACTERIUM B ',ID);
EVENT MOVES, NXTOVB; VAR DX,DY:INTEGER; {La bacteria se mueve} BEGIN IF RYS THEN RYSB('B',X,Y,O); DX:=IRND(WM)+IRND{65); DY:=IRND(WM)-IRND(50); IF (X+DX>600) OR (X+DX200) OR (Y+DY
A ',ID);
PROCESS BACTB,500; ATR ID, X,Y,K:INTEGER; (BACTB es un proceso que representa las actividades de la bacteria de tipo B) EVENT DIVIDES,NXTB; (La bacteria se reproduce) BEGIN NXTB:=TIME+NEGEXP(J.O); NEWPR BB; IDB:=IDB+l;BB.ID:=IDB;BB.X:=X+l; BB.Y:=Y+l;IF RYS THEN RYSB('B',BB.X,BB.Y,l) ELSE WRITELN ( 'TIME=' , TIME, ' DIVIDES BACTERIUM B 1 , ID) ; BB.NXTB:=TIME+NEGEXP(5.0); BB.NXTDB:=TIME+5.0; BB.NXTOVB:=0.5+TIME ENDEV;
$
EVENT DIES,NXTDB; (La bacteria muere) BEGIN IF RYS THEN RYSBf'B',X,Y,O)
-~~·-"'""'
115
116
Lenguajes de simulación
El lengua je PASION
A la hora de translación , todos los atributos del proceso PA se agregan a los atributos del PB y también los eventos de PA entran a PB como sus eventos. El usuario indica dónde buscar el proceso "pariente" PA en el momento de translación. La declaración puede empezar, por ejemplo, como:
Listado 12
PROCESS PA/PB,25;
PROGEAM BACTER;
El programa del listado 11 (modelo con las bacterias) puede ser mucho más corto, si primero declaramos el proceso BACTB y luego el proceso BACTA como el proceso derivado, ya que los dos procesos tienen Jos mismos atributos y tres de los eventos se repiten en las dos declaraciones. El programa correspondiente puede ser como el listado 12 (ver página siguiente) (es una abreviación). Por supuesto, hay que _modificar un poco los eventos para preservar las diferencias (en los eventos DIVIDE y MOVES), pero la estructura general es como se muestra en el listado 12 y e! programa queda más corto que el programa original d el listado 11.
VAR REG:CHAR; RYS:BOOLEAN; WM,IDA,IDB:INTEGER; REF BA:BACTA; BB:BACTB ; {BA y BE son apuntadores q u e refieren a los dos procesos BACTA - bacter i a A y BATCB - bacteria B} PROCEDURE RYSB (A :CHAR; X, Y, COLOR:I NTEGER ) ; END; PROCESS BACTB, 50 0; ATR I D, X, Y,K :I NTEGER ; {BACTB es u n proceso que rep rese nta las act ividades d e l a b acteria d e t ipo B} EVENT DI VIDES, NXTB;
6.5.4 PATl: El translador de PASION a PASCAL PATl es un programa que traduce programas fuentes escritos en PASlON al lenguaje PASCAL. Para correr el programa resultante en PASCAL hay que usar a un compilador de PASCAL. En e! proceso de translación PATI usa la biblioteca de procesos predefinidos PASLIB.PAS. Algunos procedimientos adicionales, escritos en PASCAL se agregan al programa en la etapa de compilación del código correspondiente en PASCAL. (Ver página 118 figura 118)
6.5.5 El generador de los modelos con líneas de espera y el ambiente de PASION El lenguaje PASION tiene un ambiente bastante desarrollado que consiste en una biblioteca de procesos predefinidos para realizar la simulación interactiva. generar reportes. gráficas de los resultados, las estadísticas sobre los resultados . etc. El ambiente también incluye algunos módulos auxiliares, como el Gener::idor de los Modelos con Líneas de Espera descrito en lo que sigue. que facilita considerablemente la simulación. Este módulo puede ser usado aun sin ninguna programación en PASION o en PASCAL.
............
.-~~':"-
.,}
117
EVENT DIES, NXTDB; BEGIN
{La bacteria muere }
EVENT MOVES, NXTOV B; VAR DX,DY:I NTEGER; {La bact eria se muev e } BEGIN PROCESS BACTB/ BACTA,50 0 ; ATR ID,X,Y: INTEGER; {BACTA es u n proceso qu e representa l as actividad es de la bact eria de t i po A} EVENT EATS,NOW; {Bacteria de t i po A devo ra a una de t i po B} START {Aquí empieza el program principal. Se crea una bacteria de tipo A y una de tipo B. Se d etermi n an los atributo s de los dos objetos. } $
El lenguaje PASION
z
_g
"'º Q) ~
-
<11
(/)
-~ < ~a..
::J
"' ::J
::J Q) C1l "O
z
º
"'
(/)
< a..
Q)
"O
"'o
Q)
o> -e :.eo ..o -~
.2:
<~
~
~
e
Q)
..c. o
E
Q)
e: Q)
::J
C1l
E C1l
o, ~
a..
_J _J
o
ca
<ñ e"""
~ 1-
-< za.. o <ñ < a..
ü
(/)
< a..
< a..
1
e
Q)
o
Ol
1
<
<
ü
:o ·o ü
(/)
Q)
"O
o "O ~ a.
E
o
Q)
:o
Q)
·¡v o O> '5 -o
()
ü
lJ r '
~
"' ~
""'
::i ':io
::
~~.·---··"!':."0'-0''.""\~ .. _.,,...-
119
Modelos con filas es una de las aplicaciones más populares de la simulación por computadora. Ningún banco , tienda , oficina postal o sistema de manufactura puede analizarse sin tomar en cuenta líneas de espera donde se forman clientes , trabajadores o piezas. Los mismos métodos se usan para simular sistemas flexibles de manufactura (FMSFlexible Manufacturing Systems). Modelos de este tipo son de gran importancia porque los FMS cambian frecuentemente su configuración y cada nuevo diseño tiene que ser verificado rápidamente. Recordemos que un FMS es una configuración de puestos de operación y un sistema de manejo de material, diseñado para producir eficazmente más de un tipo de piezas en lotes pequeños o medianos. (fhe Charles Stark Draper Lab ., 119 1 1984). Para lograr esto, el sistema tiene que funcionar bajo control de una o más computadoras . Actualmente existen muchas herramientas para simular por computador a los FMS. Entre los más usados hay que mencionar SIKTAS (Stute et al. ,1 10 11 1982), GCMS (Lenz and Talavage1•4 1 1977), FMSSlM (El Maraghy,1 3o1 1982) . FORTRAN FMS model (Mam alis et al. ,1 6 j J 1987), el modelo CHAMELEON basado en PROLOG (Fan and Sackett ,1""1 1988 ) , Expert FMS Design Syst em (Mellichamp and Wahab ,f"'I 1987) entre otros . Adem ás. se pueden aplicar lenguajes y paquetes de "uso general". tales como GPSS, PASS!M, SIMTOOLS, SLAMll, etc. (vea las referencias), o lenguajes algorítm icos de alto nivel como Ada . Simula 67. o lenguajes orientados a objetos como SMALLTALK. Sin embargo. la mayoría de los paquetes diseñados para la simulación de los FMS son sistemas de simulación de eventos y tienen ciertas restricciones. Hay que observar que los FMS están incluidos en un ambiente de control bastante complejo donde el control se realiza a través de un sistema digital equ ipado con algoritmos de control muy sofisticados. En consecuencia, cualquier paquete o lenguaje de simulación para estos sistemas no sólo tiene que ser flexible , sino tamb ién ser incluido en un ambiente de programación de alto nivel algorítmico, preferentemente orientado a objetos (Pascoe, 1986). Esto hace posible simular no sólo los puestos de operación , sino también el nivel más alto de control. Para este fin los paquetes de simulación de eventos, como GPSS o SLAMII no son suficientes. El modelo descrito en este artículo pertenece al ambiente de un lenguaje algorítmico y orientado a objetos. Cada método de simulación por computadora es el resultado de un compromiso. Los paquetes de simulación son casi siempre enfocados a cierto campo limitado de aplicaciones. Por otro lado. los lenguajes de simulación son más flexibles, pero el usuario tiene que aprender el lenguaje y esto puede ser difícil si él no es un programador. Una de las posibles soluciones es usar un lenguaje de simulación equipado con un amplio ambiente programístico. Si el lenguaje es de " uso general", no se pierde ninguna de sus ventajas. El ambiente facilita la creación de modelos y aun puede ser tan "transparente", que el lenguaje mismo deja de ser visible para el usuario. Muchos de los paquetes de simulación (como SLAMI!. GPSS) están relacionados a la representación gráfica del sistema que se modela. Así,
120
Lenguajes de simulación
El lenguaje P ASION
la gran parte del trabajo conceptual consiste en componer un diagrama de bloques o gráfica correspondiente. Una vez c0ncluido este trabajo, la programación del modelo resulta muy fácil y rápida. Un enfoque similar se implementó en el presente método. Vamos a ver un módulo del ambiente de un lenguaje de simulación. El módulo se llama QMG (Queuing Model Generator) y es un generador de programas para la simulación de modelos con líneas de espera. El enlace del QMG con el usuario es completamente independiente del lenguaje. QMG funciona como un editor de textos, donde en lugar de un texto del programa editamos el diagrama de bloques que representa la estructura del modelo. Los principales bloques que usa QMG se muestran en la figura 6.10. Éstos son los siguientes: GENERADOR es un bloque que genera los objetos o elementos del modelo. Éstos pueden ser los clientes en una tienda o en un banco, las piezas que entran a un puesto de trabajo o ensamble de una fábrica. o autos en un taller de ser\iicio. Cada objeto puede tener un número de atributos que caracterizan sus parámetros y su estado actual. Los atributos (sus tipos y valores) están definidos por el usuario, que puede utilizar todos los tipos que permite PASCAL. Los objetos pueden ge-
¡-- ~,...._._ ! 1
1
•
nerarse con una cierta distribución de intervalos de tiempo entre llegadas y pueden aparecer uno por uno o en lotes. Todos los demás bloques describen a todos los posibles eventos en la "vida" del objeto en el modelo. Así, los bloques del esquema gráfico corresponden a los eventos del modelo. Si un objeto entra al bloque TERMINAL, entonces termina sus acciones y desaparece del modelo. SERVIDOR es un puesto de servicio o trabajo. Es te bloque puede ser disponible u ocupado en el momento, y el objeto tarda un cierto tiempo al pasar por este bloque. El tiempo de servicio puede ser calculado por una expresión o puede ser aleatorio con una distribución predefinida o definida por el usuario. SERVIDOR puede tener una o más entradas, donde el objeto a servir se puede escoger por prioridad. probabilidad o a través de cualquier otra regla definida por el usuario y descrita en PASCAL. Un retardo adicional puede agregarse al salir del SERVIDOR. En la OPERACIÓN DE ENSAlY1BLE dos o más objetos se convierten en un nuevo objeto. Los objetos que entraron al bloque desaparecen y el nuevo objeto sigue con sus eventos. Este objeto puede "recordar" todos los atributos de los objetos que han sido usados para construirlo . El SERVIDOR, la OPERACIÓN DE ENSAlY1BLE. el GENERADOR y el bloque TERMINAL pueden efectuar cualquier número de operaciones definidas por el usuario sobre los atributos de los objetos que los atraviesan. Estas operaciones tienen que ser programadas en PASCAL. FILA es una línea de esper-a donde los objetos pueden formarse antes de entrar en otros bloques. Filas pueden ser de tipo FIFO (first-infirst-0ut), UFO Oast-in-first-0ut) o RANDOM (con salida aleatoria), y pueden tener la longitud limitada o ilimitada. La fila de tipo RANDOM puede usarse como un lugar ('storage" de GPSS) o sala de espera sin ningún orden de salida establecido. El flujo de objetos puede dividirse al entrar a un bloque de DIVISIÓN. Este bloque tiene una entrada y algunas salidas que se determinan por probabilidad, por prioridad o a través de cualquier otra regla definida por el usuario y programada como una función de P..\SCAL. La secuencia de eventos se define con flechas que conectan a los bloques. Antes de entrar al servicio o ensamble, el objeto puede esperar solamente en una de las filas. Si un objeto no puede entrar al servicio y no puede formarse en una fila, entonces se pierde y desaparece del modelo. Para canalizar estos objetos a otros bloques se puede usar el bloque de DIVISIÓN. En general, cada fila debe corresponder a uno o más servidores . Por ejemplo, la fila número 5 en la figura 6.11 contiene objetos que esperan para entrar al bloque número 8.
-O' 4
1
'
121
.
5
6.5.6 El editor de diagramas Figura 6.10. Los bloques que usa el QMG: 1 - Generador; 2 - punto terminal; 3 - servidor: 4 - división de flujos: 5 - operación de ensamble: 6 - línea de espera.
Éste es un módulo de QMG dirigido por monus, que permite definir la estructura del modelo. El usuario puede mover el cursor en la pantalla
'~..,.. ~·
1.c..~
LengUilJes
L
El lenguaje PASION
a.e s1n1u1ac1on
2FIFO
-1
,---¡ . 3 l,___~o-<
5 FIFO
j-J
agregando, por ejemplo, más procesos al modelo, relacionarlo con bases de datos, etc. De esta manera QMG puede ser usado por tres categorías de usuarios: los que no saben o no quieren programar, los que pueden programar en PASCAL y los que saben programar en PASION. Estos tres grupos de usuarios pueden efectuar los siguientes trabajos:
(1 6
LJ
)>-----<•
¡----, .
l. Sin programar: Edición gráfica de modelos, salida estándar de QMG.
a~
2.
_J
Figura 6.11. Un fragmento de esquema QMG. 3. usando las flechas u otras teclas típicas para editores como Wordstar y poner o borrar los bloques. Los bloques pueden ubicarse en los nodos de una red con 80 nodos en horizontal y 30 en vertical. La pantalla es una ventana que muestra una parte de esta área y se mueve automáticamente según los movimientos del cursor. La opción "zoom" permite ver una parte mayor del modelo. El editor hace una verificación preliminar de la estructura y no permite crear modelos "obviamente" inconsistentes. Es imposible. por ejemplo, ubicar una fila directamente después de un bloque terminal, o poner un generador de objetos de tal manera que nada puede ser conectado a él. El diagrama se define con bloques y líneas (flechas) que los conectan . Si es difícil o imposible trazar una línea de conexión, se pueden usar etiquetas (parejas de números enteros) para conectar cualquier punto con cualquier otro punto del esquema. El editor es fácil de usar y se maneja a través de un sistema de menús. Con cierta experiencia se pueden generar estructuras muy rápido, por ejemplo un modelo con 10 bloques se puede definir en menos de 40 segundos. Después de generar la estructura, QMG pide al usuario que proporcione los parámetros necesarios (distribuciones de probabilidad, otros parámetros fijos). Si el usuario tiene estos datos preparados, teclearlos no tarda más que unos minutos para un modelo mediano. El editor también permite grabar el modelo en un archivo de disco, leerlo del archivo y corregir. Una vez definido y grabado el modelo, el resto del trabajo se hace automáticamente. Hace notar que QMG es un generador de programas y no un programa de simulación. El precio que pagamos por la facilidad con que se define el modelo es el tiempo de preprocesamiento y compilación. La presente versión de QMG pertenece al ambiente del lenguaje PASlON (vea las referencias) y produce el código fuente en PASION. Este código se traduce automáticamente a PASCAL y puede ser compilado con un compilador de PASCAL. Sólo_el último módulo de QMG está relacionado a PASION, así que el generador podría ser adaptado a cualquier otro lenguaje de simulación. Esta relación a PASION y PASCAL tiene también un aspecto didáctico. QMG puede ayudar al alumno a ver un posible código (en PASlON y P.A.SCAL) de su modelo. Después de generar los códigos. el usuario puede trabajar con los programas,
~
~
~·
~--~~
123
.........--..-~-~~---
Programación en PASCAL Selección de entradas y salidas para servidores y puntos de división de flujos a través de algoritmos definidos por el usuario, distribuciones no estándar de tiempos de llegadas y servicios, operaciones adicionales sobre los atributos de los objetos. Programación en PASION- Se pueden agregar procesos adicionales de cualquier tipo (incluso procesos continuos) definidos por el usuario, se pueden usar otras facilidades de PASION, como la herencia de propiedades, procesos predefinidos de la biblioteca del translador, etc.
Ejemplo de aplicación Consideremos un sistema de producción con tres puestos de operación conectados a través de un transportador "en línea" que consiste de un carrito-robot que puede moverse solamente a lo largo de una trayectoria recta ( ver figura 6.12) . Los puestos de operación tienen bufors en la entrada y salida. Las piezas que entran al sistema esperan en tres líneas correspondientes a los puestos , antes de ser transportadas. Los puestos Wl y iV2 pueden procesar piezas de cualquier tipo y el puesto W3 solamente procesa piezas de tipo A o 8 (que entraron en puntos A y 8 respectivamente) . El mismo carrito transporta las piezas procesadas que esperan en bufors 87 , 88 y 89 al punto de salida T. El tiempo de transporte depende de la distancia que tiene que cubrir el carrito y puede depender de algunos de los atributos de la pieza (como el peso, dimensiones o tipo de pieza). La computadora que controla el sistema determina en qué orden las piezas son transportadas por el carrito. La tarea consiste en simular los eventos en el sistema junto con el algoritmo de control, para comparar diferentes estrategias de control. La figura 6.13 (ver página 125) muestra un posible diagrama de QMG para este modelo. El robot transportador se modela como un puesto de servicio con 6 entradas Oas tres filas de entrada y las tres filas en las salidas de los puestos de operación) . En la salida de este bloque hay un bloque de división de flujos con 4 salidas Oas tres filas en las entradas de los puestos de operación y el punto terminal El algoritmo de control (sus diversas versiones) está programado en PASCAL en la forma de dos funciones que determinan los puntos de
n.
--,
124
Lenguajes de simulación
A lenguaje PASlON
lenguaje algorítmico y orientado a objetos. Si nuestro único fin es simular un sistema de filas sencillo (esto no qui,ere decir pequeño) o el nivel más bajo de un sistema flexible de manufactura, entonces paquetes como GPSS o XCELL pueden ser suficientes. Por otra parte, si queremos aprovechar las estructuras y posibilidades de un lenguaje de nivel más alto para agregar más procesos al modelo, multiplicar los objetos, usar los mecanismos de herencia de propiedades o enlaces con bases de datos, etc., entonces sistemas como PASION con su ambiente podrían ser más adecuados. El ambiente de PASION tiene más módulos que no se discutirán aquí. Por ejemplo, para simular los sistemas continuos existe un Generador de Modelos Continuos (CMG), similar al QMG en el sentido de que el usuario puede generar programas de simulación en PASION o en PASCAL sin programar. El CMG interpreta el reograma del modelo creado por el usuario en la pantalla, y genera automáticamente las ecuaciones. el programa fuente en PASION y el programa correspondiente en PASCAL. El programa en PASION es una descripción completa de un proceso. que se puede incluir en cualquier programa en PASION, junto con procesos discretos, y, a la hora de correr, generar uno o más objetos correspondientes.
84 W1
87 85 W2
88 1
~
1
L:J
i
l !
1
T
¡----
1
_
1
___J
Figura 6 . 12. L' n ejemplo de un sistema flexible de manufactura.
entrada y salida para el carrito. El programa de simulación correspondiente que genera QMG proporciona hasta 56 diferentes gráficas, tales como las longitudes de todas las filas, longitudes promedio, conjuntos alcanzables para estos valores, variancias, intervalos de confianza, etc., todo en función del tiempo. La figura 6.12 indica una pantalla típica de los resultados. Las barras móviles representan la longitud actual de las filas correspondientes. El número de piezas en la salida corresponde a la barra marcada TER18. "TRUE" y "FALSE" para los servidores (puestos Wl, W2 y \V3) significan "disponible" u "ocupado'', respectivamente. La figura 6.14 (ver página 126) muestra la traza de la longitud promedio de la longitud de una de !as filas junto con los intervalos de confianza para este valor, en función del tiempo. En la figura 6.16 (ver página 128 podemos ver la imagen tridimensional de la distribución de la probabilidad (función de densidad) para una de las filas en función de la longitud de la fila y del tiempo del modelo.
2 FIFO 4 FIFO
13 UFO
(2)
oFIFO
17 UFO
(3)
( 1 ) ______...¡
(2)
(3)
Conclusiones Es posible desarrollar un sistema de simulación rápido y fácil de usar también en el caso en que !a simulación se lleva a cabo a través de un
r:!l.'
.~
125
....,,_.,...~
Figura 6.13. El esquema Q\\IG para el modelo del sistema FJS de la figura f:i . 13 .
Scale = 66 Oueues:
Model time=
88.000
OUE2 OUE9
-
OUE14 OUE4 OUE11 -
,.e
OUE13 •
r
OUE6 OUE15 OUE17 Terminal points: TER18 Servers:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SER7
BUSY
SER10 BUSY SER12 BUSY
SEH16 FREE
Figura ti.14 . Salida gráfica ge11ei;1da P"'
<¿rw;.
J
l
-.J '"
Maximum =
- - --,-- - -- - - -.-----···
63.2500
Minimum
=
0.6000
Tiempo
Figura 6.15 Una trayectoria promedio y los Intervalos de confianza para la longitud de una de las colas del modelo en función de !lempo.
El paquete GPSS
6.6
.,1i
:::>
o
o
o
v
"O
1
1
o
E 'V "O
o"'"'
<.)
(\J
w
:::>
"' .2
:::>
"O
2.
e"'
w
"'
~O~~~~~~~~~~~~~~~~~~~~~~~~-,
:i
"'
.§ :; .a · ;:
"O "O
·& e o
:i
~
·.g
.2
.a
~
o
"'o.
ci:
El paquete GPSS
GPSS es un paquete para simulación de uso general (General Purpose Simulation System), desarrollado por Geoffrey Gordon en 1961 l3 s1. Éste es un paquete y no un lenguaje como SIMULA, porque lo que ofrece es un número de procedimientos típicos para simulación de eventos. Lo que hace el usuario es establecer la estructura del modelo en forma gráfica y escribir una secuencia de instrucciones que invocan a los procedimientos correspondientes según la gráfica. El modelo se describe como un diagrama de bloques donde los bloques representan a los eventos. Hay más de 40 tipos de bloques. cada uno identificado con su nombre y su símbolo gráfico. Usando GPSS, la tarea para el usuario es construir el esquema gráfico y no programar. Pasar del esquema al programa correspondiente es un paso sencillo y casi automático. La idea general de GPSS es descomponer el mod elo en un número de componentes activos llamados transacciones (' transaction ") y establecer todos los eventos posibles en los cuales participan las transacciones. Así, la "vida" de cada transacción en el modelo está descrita por una parte del esquema gráfico. Esta parte, que constituye la descripción de todos los eventos posibles en los cuales participa la transacción, empieza con el bloque Generate y termina con Terminate. Según este segmento, se generan una o más transacciones que corren en el programa en forma semiparalela. Vamos a describir algunos de los bloques más típicos de GPSS. Los símbolos de estos bloques se muestran en la figura 6.17 (ver página siguiente.)
(\J
w :::> w
129
"O
"'
"O
1i
"' ~
.Cl
!:
"'
"O "O
"'
GENERATE. Las transacciones son generadas por uno o más bloques de este tipo. En el modelo pueden correr simultáneamente muchas transacciones . Cada bloque tiene algunos parámetros que lo caracterizan. Vamos a describir sólo algunos de ellos . El parámetro más importante de GENERATE es el intervalo entre los momentos de creación de las transacciones. Si este parámetro es un número fijo, las transacciones llegan en intervalos iguales. El parámetro de GENERATE puede ser una referencia a una función , por ejemplo a un generador de números aleatorios . Si este generador proporciona los números que tienen la distribución exponencial, las llegadas de las transacciones constituyen el flujo de Poisson.
"O
üi
e
"__::"' l)
-o
-;o e
o üi e
"'
E ;¡; :.:i e:
.
"""'
_§"'
e N
1
"'
TERMINATE. Este bloque termina las activid ades de una transacción. Al entrar a este bloque la transacción desaparece de la memori a.
...l
-
"' "'...
"'
ADV ANCE. Representa un retraso en e! avance de la transacción a través de su esquema de bloques. El primer parámetro es el valor prcr
::1
t>O
¡: 12!$
...;
.
~
""'··-
l:lO
Lenguajes de simulación
El paquete GPSS
¡-Cb
medio de retraso, el segundo es un modificador que multiplica al valor promedio para determinar el retraso. Este modificador también puede referirse a un generador de números aleatorios.
---
~
generate, termínate
1
1
1
en ter
~
advance
lea ve
c=JA seize
~ ralease
íl
1
n
link
1
un link
~
gate
test
p
1
131
queue
Figura 6.17. Símbolos de GPSS.
a==r> select
SEIZE. La transacción que entra en este bloque ocupa una facilidad (facility), por ejemplo un puesto de servicio o cualquier lugar en el cual cabe sólo una transacción. La facilidad se identifica con el parámetro de SEIZE (el número de Ja facilidad). Después de entrar en SEIZE, la facilidad está ocupada. La transacción puede entrar a SEIZE sólo si la facilidad no está ocupada en el momento. Si la facilidad está ocupada, la transacción espera. RELEASE. Desocupa la facilidad en la cual se encuentra Ja transacción . La transacción sale de la facilidad . ENTER. La transacción entra a un "depósito de t ransacciones", que hay que des ignar antes con !a declaración STORAGE. Por ejemplo, STORAGE SI ,5 significa que en el sistema existe un depósito ( almacén , sala de espera , etc.) con lugar para 5 transacciones. El parámetro de ENTER especifica a cuál de los depósitos entra la t ran sacción. LEAVE. La transacción sale de un depósito y desocupa un lugar. LINK. La transacción se forma en una línea de espera. Los parámetros son: el número de la línea y su tipo. El tipo FIFO es "first in first out" (lo que entra primero, sale primero). UFO significa que el que entró como último sale primero. Después de entrar a LINK la transacción suspende sus actividades. La salida de la línea de e~pera tiene que ser provocada por las actividades de otras transacciones. UNLINK. Sign ifica que una (o más) transacciones salen de cierta línea de espera. Los parámetros especifican de cuál línea sale la transacción, cuál será su siguiente evento y cuántas transacciones van a salir si sale más de una. Hay que observar que UNLINK no afecta a la transacción que lo ejecuta. Esta transacción pasa a sus eventos (bloques) siguientes. La ejecución del.JNLINK activa a una o más de las otras transacciones. GATE. Este bloque es una "puert a" que está abierta si se cumple cierta condición. En el caso de cumplirse la condición, la transacción pasa al siguiente bloque. En el caso contrario hay dos opciones: si no se especifica ninguna otra salida. la transacción espera. Si se define otra salida para el caso de no cumplirse la condición , la tran sacción pasa a este bloque. La condición casi siempre refiere a una facilidad o a un depósito. ?or ej emplo, las letras '.'lU en el símbolo gráfico significan "facility not in use" - "facilidad desocupada", y SNF significa "storage not full" - "depósito no está lleno". TEST. Tiene dos salidas. La salida que se aplica a la transacción depende de una condición que es !a comparación de dos valores arit-
132
El paquete GPSS 133
Lenguajes de simulación
méticos. Si la segunda salida no se especifica, la transacción espera hasta cuando se cumpla la condición. QUEUE. Anota que la transacción entró en una línea de espera. Este bloque sólo sirve para sacar estadísticas sobre filas y no pone a la transacción en ninguna fila. Para formarse en una fila, la transacción tiene que entrar en LINK. DEPART. Sirve sólo para anotar la transacción que salió de una cola. La salida se realiza a través de UNLJNK. SELECT. Busca una facilidad o un depósito que cumple con cierta condición. La condición se indica con dos o tres letras en el símbolo gráfico. Por ejemplo NU significa "facilidad disponible", SNE significa "depósito no lleno". Hay dos salidas de SELECT: La primera cuando se encontró la facilidad o depósito y la segunda en el caso contrario.
3
14
Éstos son sólo algunos de los bloques de GPSS y sus descripciones son abreviadas. En el manual del paquete vienen más de 40 bloques, cada uno con la descripción que ocupa hasta 4 páginas. Consideremos un ejemplo de aplicación. En una clínica pequeña hay dos doctores que atienden a los pacientes. Los pacientes entran a !a clínica según el flujo de Poisson. Se supone que hay siete sillas en la sala de espera y si todas las sillas están ocupadas (la fila tiene longitud 7), los pacientes no entran a la clínica. Si hay menos de 7 pacientes en la fila, el paciente que entró actualmente toma una silla formándose en la fila de tipo FIFO y espera su turno. Cada uno de los doctores al desocuparse empieza a atender inmediatamente al paciente que sigue (el primero en la fila). Si al entrar un paciente nadie espera en la lila y hay uno o dos doctores desocupados, el paciente será atendido de inmediato. El tiempo de atención tiene la distribución exponencial. En el modelo los pacientes son representados por transacciones de GPSS. El esquema gráfico correspondiente se presenta en la figura 6.18. El bloque GENERATE (GEN) engendra los pacientes según el generador de números aleatorios FNI que genera los intervalos entre las llegadas de los pacientes. Se supone que FNI es un generador con distribución exponencial. El siguiente bloque TEST sirve solamente para cortar el flujo de pacientes (cerrar la puerta de la clínica) si el tiempo de modelo Cl es más de 480 (minutos). Si Cl > 480, cada paciente creado por GENERATE desaparece de inmediato, entrando a TERMINATE(TER). Si Cl $ 480, el paciente entra a GATE con la operación SNF ('depósito no lleno"). El "depósito" (STORAGE) está declarado en el programa como STORAGE Sl ,7 que representa a una sala de espera con 7 lugares. Si la sala SI está llena, el paciente desaparece con TEM11NATE. Si hay menos de 7 pacientes en la sala, el paciente entra a la sala con E:'ffER y ocupa una silla. Esto todavía no significa que el paciente se forma en la fila y espera, porque si es el único en la sala y uno de los doctores está disponible, el paciente sale de la sala de inmediato y será atendido.
ph l
,3
link
IV
Figura 6 .1 8. Esquema gráfico de un modelo en GPSS.
-
....
~
lL
,_:.,_
ph1
fito
Ll4
Lenguajes de simulación
El lenguaje Dynamo y el métodn de Forrester
El siguiente bloque SELECT revisa si hay doctores disponibles. Si es así. la variable PHI recibe el número de uno de ellos. En este caso el paciente pasa al bloque SElZE. Si los dos doctores están ocupados, el paciente pasa al bloque LINK con parámetros l y FIFO. Éste es el momento cuando se forma en la fila. La fila tiene número I y es de tipo FIFO. Al formarse, el paciente suspende sus acciones y espera hasta que le active otro paciente ejecutando UN LINK. Observemos que los lugares en la sala de espera son los lugares en STORAGE SI, pero el mecanismo_de la fila lo modelan LINK y UNLINK. Así, si no hubiera ninguna limitación para la longitud de la fila no se necesitaría ni STORAGE ni los bloques ENTER y LEAVE. Si SELECT encontró a un doctor desocupado, su número se guarda en la variable PHI y el paciente pasa al bloque LEAVE. esto es, desocupa un lugar en STORAGE Sl (en la sala de espera), pasa a SEIZE y ocupa al doctor número PHI (la facilidad cual número se encuentra en PHI). El tiempo de at~nción se modela con ADVAi"llCE que usa a un generador de números aleatorios llamado FN2 para determinar el retraso. Después de permanecer un rato siendo atendido ("dentro" de ADVAt'\ICE), el paciente desocupa al doctor número PHI con RELEASE y hace salir al primer paciente de la fila con UNLINK. Aquel paciente que sale de la fila, entra de inmediato a SELECT, yendo a la operación 6. Hay· que subrayar que la flecha que sale de UNLINK yendo a 6 (SELECT) es una de ias acciones de aquel que salió de la fila y no del que éjecutó UNLINK. De lo anterior se desprende que el esquema gráfico de una transacción de GPSS no es lo mismo que un esquema de flujo convencional de un algoritmo, como lo hacemos para FORTRAN o PASCAL. Si confundimos estos esquemas, podemos cometer errores lógicos en la modelación. Después de ejecutar UNLINK, el paciente termina sus acciones con TERMINATE (TER). En el programa que corresponde a este esquema hay que declarar STORAGE y las funciones FNI y FN2. Después sigue la palabra SIMULATE y la descripción de la (única en este caso) transacción del modelo. Luego sigue la instrucción START que inicia la simulación. A cada bloque del esqu_ ema le corresponde una línea en el programa, así que todo el programa para este modelo ocupa no más de 20 líneas. Los resultados de la simulación se imprimen automáticamente y proporcionan todas las esta.dísticas necesarias para analizar el funcionamiento del modelo. Por ejemplo. para el modelo que describimos, se imprimen tiempos de ocupación, en las unidades de tiempo y en porcentaje, para los dos doctores y para la sala de espera. Si necesitamos más información sobre la fila. como su longitud promedio. etc., hay que usar la operación QUEUE antes de LINK y la operación DEPART después de UNUNK, yendo a SELECT. De lo anterior se puede ver que GPSS es una herramienta eficaz para simular sistemas de servicio masivo. Los programas son muy cortos y los esquemas gráficos bastante claros. La intención de los autores de este paquete fue facilitar lo más posible la simulación y esto se logró en
--·
-
-.~-~.--~-~--
ti.' .y·.~-
. ....
-"~~..;~~.w--;..,":-.-~ .........!...t:.- ~-~•.
~-~~~~~.~----- -~--,---~-~w~-~~~-
135
un principio. Sin embargo, hay que observar que cada simplificación impone ciertas limitaciones, y para lograr una flexibilidad suficiente y un amplio campo de aplicaciones hay que aumentar el número de operaciones (bloques) y los parámetros correspondientes. Por eso, lo qu~ resultó es un paquete cuyo manual contiene las descripciones de alrededor de 43 bloques, cada uno con hasta 10 parámetros. En consecuencia, no es tan fácil entender y aprender GPSS sin cierta experiencia en simulación y programación.
6.7
El lenguaje Dynamo y el método de Forrester DYNA,'\110 es un lenguaje para simulación de los sistemas continuos descritos con ecuaciones ordinarias diferenciales o de diferencias. Aunque es un lenguaje antiguo, vale la pena mencionarlo porque está basado en el método de simulación de Forrester que contiene algunas ideas valiosas de modelción matemática. El método fue desarrollado y publicado en 1961 por J.W. Forrester en su libro "Industrial Dynamics" psi. La primera versión fue orientada a la simulación de las organizaciones industriales. Después fue adoptado para modelos de desarrollo urbano y sistemas económicos. Según Forrester, para modelar un sistema industrial y simular por computadora su comportamiento hay que seguir los siguientes pasos:
l. 2. 3. 4. 5.
Formulación de la tarea económica de producción. Formulación (en palabras) de la estructura del sistema. El esquema gráfico del sistema. El modelo matemático (las ecuaciones que describen los bloques del esquema gráfico) y el programa en el lenguaje DYNAMO. El análisis de la dinámica del modelo, experimentos simulacionales.
Las variables descriptivas de los modelos de Forrester son: Los niveles: éstos son los valores acumulados de materias primas, fondos. maquinaria, mano de obra, etc. Representan el estado del modelo. Los flujos: son los flujos que determinan a los cambios de los niveles. Se consideran los siguientes flujos: -
-
-
-
-
->
flujo de información
--------------------> flujo de materiales 0--0--0-0->
flujo de órdenes (encargos. pedidos)
=================>
flujo de mano de obra
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=->
S-S-S-'5-> flujo de fondos
flujo de maquinaria
J:lfi
Lenguajes de simulación
-
FO
-
El lengu de For rester
-~~~o
-
FE-::: -
>-:::::-
:::: 7
-
-
Por ejemplo. si U es un flujo. UJK significa su promedio en el intervalo JK y UKL es su promedio sobre Kl. Ahora podemos formular las ecuaciones para los niveles que simplemente resultan de los balances correspondientes . Por ejemplo. la ecuación que describe al bloque NI de la figura 6.20 es
:::::::
NI .K = NI J
--- -<.- /
I
FA
\
t1'
'-...
- ----- --/
'/
/ __,.-
I
---
FG
....
N4
dNl j dt =FA - FB
\
\0 /
l
/ /
-/
¡
-
-
-
La sintaxis de las ecuaciones del método de Forrester es precisamente la del lenguaje DYNAMO. El programador escribe las ecuaciones del modelo sin preocuparse por el orden de las ecuaciones. El resto del trabajo lo hace el programa compilador. Las ecuaciones son analizadas y se establece si el modelo es correcto en el sent ido de q ue todos los flujos pueden evaluarse antes de evaluar los cambios de niveles. Si es así. se establece el orden de las ecuaciones y el programa empieza a correr saliendo de las condiciones iniciales que tiene que proporcionar el programador. DYNAMO puede aplicarse a modelos con tiempo discreto (DTfijo) o con tiempo continuo (DT pequeño o variable), y el usuario tiene posibilidad de escoger el método de integración que se aplicará. Podemos
/
/
F1
-
__,.-
/
Figura 6.19. Ejemplo de un esquema gráfico de DYNAMO.
En el esquema gráfico aparecen bloques de tres tipos: niveles, control de flujos y funciones auxiliares. La figura 6.19 muestra un ejemplo. Este esquema puede representar una parte del modelo de una fábrica. Nl y N2 son los niveles de materiales en unos dos puntos de almacenamiento. N3 es el nivel de la mano de obra y N4 es el nivel de maquinaria. FA, FE y FC son flujos de materiales, FD y FE son flujos de mano de obra. FG y FH representan flujos de maquinaria. El cambio de nivel NI depende de la diferencia entre los flujos FA y FB, el cambio de N2 depende de (FB-FC), etc. El flujo FA está controlado por la información sobre los niveles N3 y N4. El flujo FB sólo depende de N2. El flujo FG depende de la información sobre N4 y N2 a través de la función Fl. Así, el esquema gráfico representa las interacciones entre los componentes del modelo. sin especificarlas en deta!le. En las ecuaciones que describen los bloques siempre se usan por lo menos dos de los siguientes tres momentos de tiempo: K que es el tiempo actual de modelo, J es el momento anterior igual a K - DT, y Les el momento futuro K + DT, donde DTes un incremento fijo, como lo muestra la figura 6.20. Cler página siguiente.) Un nivel X en el momento K se denota comoX.Kylos flujos siempre se refieren a un intervaloynoaun momento de tiempo. interpretándose como flujos promedios dentro del intervalo.
¡
·E:.
'
~-·
1
X 1
X.K
X.L X.J
tiempo
figura 6.20.
¡
t
(D7) (FAJK - FBJK)
que es sólo un balance de materiales para el bloque N l. Los fluj os FA y FB, a su vez. son los resultados (lados izquierdos) de otras ecuaciones del modelo. Si el sistema real que modelamos tiene tiempo continuo. esta ecuación equivale a la siguiente ecuación diferencial.
/
__z1 "
+
N2
FB
N1
¡37
'•up.• '-h'-'l::UUIOa
observar que si hay pocas ecuaciones DYNAMO no ofrece mucho. El mismo problema puede resolverse fácilmente usando directamente cualquier procedimiento para ecuaciones diferenciales o en diferencias. DYNAMO es más eficaz con modelos grandes, porque ordena las ecuaciones y analiza Ja estructura del modelo. Las aplicaciones típicas del método de Forrester y DYNAMO es la simulación de los sistemas de producción. El método de Forrester deja una buena y clara documentación de la estructura del sistema (descripción informal y formal del modelo), y el lenguaje DYNAMO facilita la simulación. Sin embargo, después de ser aplicado a unos sistemas grandes de producción. el método fue criticado porque a veces los resultados no fueron congruentes con la realidad. Parece que Forrester en sus modelos simplificó demasiado algunos procesos que siempre corren en las organizaciones industriales. Éstos son los procesos de toma de decisiones que determinan los flujos. Forrester intentaba describir estos procesos como se describen los elementos de sistemas de control automático . esto es. describir las decisiones con ecuaciones algebraicas y diferenciales. En realidad la toma ele decisiones se ejecuta por hombres y no por autómatas y no puede describirse con ecuaciones. Si !o intentamos hacer. los resultados de s(mulación pueden ser c o mpl et:rn1ente falsos. L.:na de las posibles soluciones de este problema es modelar las decisiones y suponer que son correctas, esto es, óptimus. Es to significa que en el modelo tiene que existir un algoritmo de optimización dinámica. en otras palabras, un algoritmo de contrul <Íptimo. El algoritmo que resulta en este caso. ya no es un algoritmo ele simulación, aunque contiene la simulación como una parte indispensable. La discusión de estos casos excede el temario de este libro, sin embargo, algunos aspectos de este enfoque se presentarán en los capítulos i y 8.
6.8
mento de la hoja. visto a tr3vés ele una "ventana" pequeña. El usuario puede mover la ventana sobre la hoja y tener acceso a las células que desea (figura 6.21). Cada célula puede contener un valor numérico, un texto o una fórmula. Si la célula contiene una fórmula, lo que se ve en la pantalla es el valor calculado según la fórmula. Las células pueden moverse o copiarse ele un lugar a otro. Al copiar una célula que contiene una fórmula. el valor correspondiente se evalúa de inmediato en el lugar n u evo. Así. copiando las fórmulas podemos programar algoritmos iterativos, en particular los algoritmos que resuelven ecuaciones diferenciales. Vamos a ilustrar esta aplicación usando como ejemplo el programa LOTUS que es quizás una de las más populares implementaciones de hoja extendida. Los nomr;res de las columnas son A, 8. C. ..., Z, AA , AB. AC... . etc. La referencia. por ejemplo. a la célula que se encuentra en el renglón número 3 y en la quinta columna es EJ. En las fórmulas se pueden usar las células corno se usan las variables en un lenguaje convencional de programación. Por ejemplo . si colocamos la fórmula +81 -82+A3 en la célula 84. el valor ele 84 se calculará como !a suma de los valores de Bl, 82 y A3 . suponiendo que estas células sí tienen valores definidos. Lo más importante en la interpretació n de l as fórmulas es que las referencias a las célul::is \un rt:iut/uLJ\, de t::il man era que la referencia "BI" colocada en la célula 84 significa ex;ictamente "el valor de la célula de la misma columna que se encuentra a tres renglones más arriba de lacélula actual". Ahora si, por ejemplo. copiamos a la fórmula +81 +B2+A3 de la célula B4a la célula. dig;imos. CS. la fórmula se convierte en +C2+C3+B4. La operación de copiar fórmulas (Copy) puede ejecutarse cíclicamente para un gran número de células. Así. podemos copiar por ejemplo
Hoja extendida Existe toda la familia de programas de uso general de tipo "hoja extendida" ( spread-sheet) l " l como Multiplan. Visicalc li"I. Su perca le. Lotus, etc. El objetivo de estos programas fue desarrollar un software que hace todo lo que necesita el usuario de una computadora personal. en particular cálculos aritméticos. operaciones sobre series de datos y matrices. creación de bases de datos. ordenamiento, manejo de archivos. graficación. estadísticas, etc. Veremos que hoja extendida también tiene aplicación para algunos problemas de simulación. Un programa de tipo hoja extendida ejecuta sus operaciones sobre datos que tienen la forma de una matriz grande o una hoja de papel enorme rellena con células. Por ejemplo, en el caso del programa LOTUS. e! tamario de la hoja es 256 columnas y 2048 renglones. en total 52-!,288 c él ulas. Cacl:i céluia se identifica a través del nombre de la columna y el número del renglón donde se encuentra. Las células pueden tener valores o ser indefinidas. Lo que se puede ver en la pantalla es un frag-
l
....-., ...
,....~_...,.,_--.-,......
~
~~·. . . , ~· . . ~--~--:....-._~..,__~
~
'
'
;
"
~~_:~;....~~~-~. ,.,-~}~~-t-~~~-~-~:,_,,;&;..._~•• ¿,~~~-~.~-~~--•• ~ • ..:.....-:.~.-~
ABCDrGHI
: e ( ·Ó 1 5
Ceiuia E4
)
Figura 6. 21. La hoja extendida. la p.intaila y la céiul;i E4.
~;-ll>"'.'j4WWWt.}_
----~~~~~""~~".'.'l'l"!""~
V
l:~~
S
P-~
1
140
Lengu;_ijes de s imul;_ición
Otros lenguajes y p;_iquetes d e s im ulación
una parte de un renglón a las partes correspondientes de un gran número de renglones consecutivos. que, como veremos, puede realizar un algoritmo para ecuaciones diferenciales. Consideremos como ejemplo las ecuaciones de movimiento de un sistema mecánico de segundo orden compuesto de una masa, un resorte y un amortiguador, sujeto a una fuerza externa f(t). Las ecuaciones correspondientes son como sigue:
dx/dt =
LOTUS proporciona también procedimientos de graficación que muestran inmediatamente la solución en la forma gráfica (x 1 y x 2 contra t). Hay que observar que no hay ningún problema con realizar otros algoritmos de solución, por ejemplo los de Runge-Kutta. Preparando y guardando las hojas correspondientes para diversos algoritmos, para ecuaciones diferenciales el usuario puede preparar herramientas para simulación continua. Este método es rápido y fácil para los usuarios que conocen y usan programas de tipo hoja extendida. Para los que no están familiarizados con estos programas esto va a llevar un poco de tiempo, porque de todas maneras hay que aprender a usar el paquete. El objetivo de LOTUS fue facilitar las cosas, creando un programa que "hace todo". Así es en realidad si nos limitamos a las necesidades de un usuario típico de lo s micros. Sin embargo, todo tiene su precio. El uso de LOTUS es realmente fácil y rápido, pero !el manual del usuario tiene 360 páginas!
x,
dxj dt = f(t) - ax1 - bx, donde x 1 es la posición de la masa, x 2 es la velocidad, a, b son unas constantes. Vamos a simular este sistema resolviendo sus ecuaciones con LOTUS, usando el método de Euler. Primero h ay que colocar las variables x 1 y x, en la hoja. Escogemos la siguiente colocación: x ¡(n) -> An. x.,(n) - > En, f(n) - > Cn. donde n = t/h , h es el incremento del método de Euler. El algoritmo que intentamos realizar es el siguiente:
x 1(t - ht) = x 1(t) x;(t
+
hr)
=
x,(t)
+
6.9
+ hx~(r)
h[f(r) - ax1(t) - bx,(t)]
6.9.1
+A 1+0.05* El en la célula A2
+Bl-0.05*(CI-D.5*Al-0.5* El) en la célula 82
Si. por ejemplo, queremos simular la respuesta del sistema a la fuerza constante igual a uno (un escalón) , ponemos el valor 1 en c ada una de las células Cn. En el r englón núm.l ponemos las condiciones iniciales x 1(0)->A 1, x,(0)->Bl , f(O)->Cl). Ahora lo único que necesitamos hacer para simular el comportamiento del sistema sobre un intervalo. digamos t =Ohasta t =25. es copiar el renglón 2 (su parteA2. C2) en el lugar correspondiente de los renglones núm. 3 hasta 500. Ya que las fórmulas siempre usarán a los valores del renglón anterior con respecto al actual, el programa va a calcular toda la trayectoria deseada paso por paso. Una vez construida la hoja según este algoritmo, podemos cambiar algunos valores, por ejemplo las condiciones iniciales o los valores de la fuerza en la columna C. Cada cambio provocará la recalculación automática de toda la hoja. De la misma manera podemos cambiar las fórmulas del modelo. que significa que la misma hoja puede usarse para simular el comportamiento de diversos sistemas.
A:..á-.n·--· - --- "'-;.,_._. __ ~ ....
, ...
~ --:0-- -~-~:...
Lenguajes para simulación continua ACSL. "Advanced Continuous Simulation Language". Un lenguaje para simulación de los sistemas descritos con ecuaciones diferenciales. Sirve para sistem as pequeños y grandes. Alcanzable en muchas computadoras.
el valor de la fuerza en el momento nht en la célula Cn.
__.... ..,.......
Otros lenguajes y paquetes de simulación Vamos a caracterizar brevemente algunos otros lenguajes de simulac ió n, indicando sus posibilidades y aplicaciones.
según el método de Euler. Traduciéndolo en la notación de LOTUS con h = 0.05. a = 0.5. b = 0.5 tenemos que colocar a las siguientes fórmulas.
.
141
CSMP. Un programa para simular sistemas continuos.Permite pasar de un esquema analógico que se usa para simular sistemas dinámicos en computad o ras analógicas. a un programa de simul ación en una computadora digital. Se especifican los bloques típicos como integradores, sumadores, multiplicadores y funcio nes, y sus entradas y salidas, así como las condiciones iniciales. El resto lo hace CSMP, calculando y graficando la trayectoria del modelo. Corre en la VAX 11/ 780. MATR!X':(/ WS. Ésta es una familia de programas para la simulación de los sistemas d inámicos continuos, desarrollado por lntegrated Systems lnc .. EE.UU. El sistema tiene enfoque en esquemas de bloques y muestra el esquema del sistema que se simula en la pantalla. El usuario puede usar bloques típicos, lineales o no lineales . así como definir nuevos bloques a través de las funciones de transfer encia. El sistema corre en los terminales DEC. Apollo y SUN.
~-
142
Otros lenguajes y paquetes de simulación
Leng11ajes de simulación
SSDC2. Un programa para simulación continua de los sistemas dinámicos continuos. Relacionado a FORTRAN, aplica el método de Runge-Kutta de cuarto orden. Usa esquemas de bloques para representar la estructura del sistema. Desarrollado en el Instituto Politécnico Nacional, México l]J.
ISlM. Un lenguaje interactivo para simulación continua. Alcanzable para la IBM pc1• 11. CSSL IV. "Continuous System Simulation Language". Un lenguaje de simulación continua. Además de resolver las ecuaciones del modelo, ofrece procedimientos para el análisis lineal, la transformada rápida de Fourier, ecuaciones rígidas, el análisis del estado estacionario, diagramas de Bode y Nyquist, lugar geométrico de las raíces y graficación. Alcanzable en muchas computadoras.
COL. "Control Oriented Language" desarrollado por J.P. Siebert y D.J. Winning 199 1_ Sirve para simulación de sistemas de control automático que contienen microprocesadores. El programa de simulación corre en tiempo real y consiste en un número de tareas "tasks", basadas en CSSL.
SYSL/M. Para la simulación continua de sistemas grandes. Además de evaluar las trayectorias del modelo ofrece mecanismos para el análisis de estados estacionarios. linealización de modelos y gráficas. Alcanzable para la V AX y la lBM PC, de E' Consulting, Poway, EE.UU.
TOP. Es un paquete para simulación continua de los sistemas distribuidos descritos con ecuaciones diferenciales parciales 1z1 (vea la sección 4.9). La solución de las ecuaciones del modelo se hace con el programa TWODEPEP IUJ. TWODEPEP utiliza un "archivo de entrada" preparado por el usuario, que describe el modelo. Este archivo se traduce a FORTRAi'\l y las ecuaciones se resuelven con el método de elementos linitos. TOP ofrece la posibilidad de simular sistemas distribuidos de control con retroalimentación. Está implementado en la computadora VAX 11 / 780.
ATOMCC. No es exactamente un lenguaje de simulación sino un generador de programas, desarrollado por Y. F. Chang, Claremont McKenna College, EE.UU. AT0~1CC genera programas en FORTRAN para resolver sistemas de ecuaciones diferenciales ordinarias. El usuario crea un archivo que describe las ecuaciones y las condiciones iniciales. El generador ofrece mecanismos especiales para sistemas r!gidos y un número de procedimientos sofisticados para resolver las ecuaciones, basándose en series de Taylor. Se pueden manejar sistemas de ecuaciones en el plano complejo. Alcanzable para la IBM PC y computadoras más grandes. STELLA. Es un lenguaje para simulación continua desarrollado para la computadora Macintosh, por High Performance Systems, lnc., Lyne, NH, EE.uu.1n1 Los principios de este lenguaje son casi los mismos que los de DYN.Ai\10. Los niveles de DYNAMO se llaman " depósitos" (stocks), los flujos se usan de la misma manera como en DYNA"vtO. Los "convertidores" y "enlaces de entrada" conectan los depósitos en el esquema gráfico determinando la estructura del modelo. Al definir (gráficamente) a la estructura del modelo y determinar a las condiciones iniciales, se calcula automáticamente Ja trayectoria del modelo. El lenguaje ofrece buenas facilidades para graficación y animación para visualizar los resultados. TUTSIM. Un lenguaje para simulación continua en computadoras pequeñas t 1cr'1. Es útil para sistemas con elementos no lineales. El modelo se define en términos de diagramas de bloques o gráficas llamadas "bondgraphs". Las gráficas se traducen fácilmente en el programa correspondiente en TUTSIM. MICRO-CAP 11. Un programa para simulación y diseño de los circuitos electrónicos. Permite simular, graficar y analizar circuitos con transistores. amplificadores operacionales y circuitos lógicos. Desa1 rollado por "Spectrum", Sunnyvale, California, EE.UU.
'
... ~¿_,___,
143
SIMNON. Un lenguaje para simulación de los sistemas no lineales descritos con ecuaciones diferenciales o ecuaciones en diferencias . Desarrollado por Lun lnstitute of Technology, Suecia.
6.9.2
Lenguajes para simulación discreta y discreto-continua PASSlM. Un paquete para simulación de eventos y sistemas continuos1 10•1. Ofrece un número de procedimientos escritos en PASCAL, a través de los cuales se lleva a cabo la simulación. El programa se escribe en PASCAL y consiste en una secuencia de llamadas a los procedimientos. WlTNESS. Un sistema interactivo que facilita la simulación desistemas de manufactura, ofrece modelos listos para simular algunos elementos típicos como cintas transportadoras, puestos de producción, etc. Relacionado a FORTRAN. SIMSCRIPT. Un sistema de simulación orientado a eventos, desarrollado por Kiviat, Villanueva y :vtarkowitz 15•1. Las unidades que representan a los componentes de modelo tienen sus atributos y pueden pertenecer a conjuntos. Hay dos tipos de unidades: permanentes, que permanecen en el modelo durante la simulación como puestos de
144
Otros lenguajes y paquetes de simulación
Lenguajes de simulación
145
je C. El lenguaje sirve para simular sistemas digitales con elementos sencillos (NA.NO, NOR, flip-flops, etc.), así como para simular sistemas compuestos de elementos con muy alto grado de integración (VLSI). Desarrollado por David E.Van den Bout 1ios1_
servicio, almacenes, etc .. y temporales. que son creados y destruidos, como por ejemplo, los clientes que entran y salen del sistema. Fácil de aprender para los usuarios de FORTRAN. SIMON. Un lenguaje para simulación de eventos. similar a CSL. Basado en ALGOL 60 143 1.
VERISIM. Un paquete para simulación de los procesos de toma de decisiones desarrollado por la AccuQuest Corporation, Texas, EE.UU. El usuario describe su modelo de una manera similar a la que se usa en los programas de tipo "hoja extendida". Para cada una de las variables del modelo se determina el rango correspondiente de los valores posibles basándose en la experiencia e intuición del usuario. El paquete evalúa las estadísticas sobre posibles eventos cuya ocurrencia depende de dichas variables. Los resultados permiten minimizar riesgos que corresponden a las decisiones que toma el usuario.
SIMAN. Un lenguaje para simulación de eventos, filas, sistemas de manufactura, desarrollado por C.D.Pegden !79 1. GASP IV. Un lenguaje de simulación basado en FORTRAN, orientado a eventos y modelos discret~ontinuosl 85 1. Más parece un paquete que lenguaje, debido a que la simulación se realiza a través de las llamadas a más que 20 procedimientos que manejan los eventos. Las versiones nuevas son GASPPL/! relacionado a PL/1, GASP/ E la versión interactiva y GASP V que ofrece más facilidades para los procesos continuos 11·•1.
PASION. ción 5.5.
E~1SS. "Expert Manufacturing Simulation System" es un sistema experto para simulación de los sistemas de manufactura, desarrollado por D.R. Ford y B.J.Schroer ps1. Contiene algunos elementos de la Al (inteligencia artificial), para interpretar las comandas del usuario formuladas en el lenguaje natural (Inglés). El sistema contiene los siguientes elementos: el interfase con el lenguaje natural, el generador del código de simulación, el analizador de simulación y el lenguaje de simulación SIMANl 7 ~1 . Después de interpretar y aceptar las comandas de entrada, el "generador" produce el código correspondiente en SIMAN. Luego, el "analizador" procesa el código. checando su eficiencia, y hace cambios necesarios para mejorar el programa y agregar procedimientos que analicen los problemas "what if" ('qué pasaría si ... "). Corre en la V AX 785.
Un lenguaje de uso general en simulación . Vea la Sec-
MODSIM 11. Un lenguaje de simulación orientado a objetos. Es similar a SIMULA pero relacionado con el lenguaje de programación C. SlAM 11. Un lenguaje de simulación orientado a procesos y eventos l""l. Por el proceso se entiende una secuencia de eventos, actividades y decisiones. Los componentes u objetos (entities) atraviesan el proceso , como lo hacen transacciones de GPSS atravesando el esquema gráfico. SLAM 11 usa esquemas que tienen la forma de redes. Los nodos representan creación de los objetos, terminación de actividades, líneas de espera. toma de decisiones, etc. Las ramas representan actividades. por ejemplo el servicio que dura cierto tiempo. Cambios continuos del estado de modelo pueden simularse usando las ecuaciones diferenciales o en diferencias. Esto permite simular sistemas continuos o discret~ontinuos. Los eventos de SLAM describen los posibles cambios en el estado de modelo. Las reglas matemático lógicas de la ocurrencia de los eventos las programa el usuario, en FORTRAN. SLAM proporciona un conjunto de procedimientos típicos que facilitan la simulación, incluso el "mecanismo de reloj" para controlar la ejecución de los eventos. La primera versión de SLAM fue desarrollada en 1979. La nueva versión, llamada SLAM II 2.3, elaborada por Pritsker & Associates, EE.UU., corre en la lBM PC y otras computadoras. · Vamos a describir unos bloques de SLAM 11 y una simple aplicación con más detalles, ya que el lenguaje parece ser bastante completo Y popular entre los simulacionistas. La figura 6.22 (ver página siguiente) muestra el símbolo gráfico del nodo de creación de objetos. TF es el momento cuando el nodo empieza a funcionar (cuando aparece el primer objeto). TBC es el intervalo entre las llegadas consecutivas. MC es el número máximo de objetos que puede generar el nodo. Cada objeto tiene un número de atributos que tienen el papel de las variables descriptivas. El valor MA muestra el número del atributo,
SIMPA C. Un lenguaje de simulación de líneas de espera yplaneación, desarrollado por M.R. Lackner y J. Kagdis, para la máquina IBM 7090. GSP. Es un "programa general de simulación" (General Simulation Program), desarrollado por K.D.Tocher. Sirve para simular plantas de manufactura. Se usaba en las máquinas Ferranti Pegasus y Elliot 503, principalmente en el Reino Unidol"l. SYSMOD. Un lenguaje de simulación para modelos continuos y discretos. Emplea la sintaxis similar a PASCAL y ADA. Ofrece gran número de mecanismos para simulación, como procedimientos de integración. ordenación automática de relaciones matemáticas del modelo, solución de ecuaciones diferenciales y algebraicas, graficación. Desarrollado por Systems Designers ple., Reino Unido. Corre en las computadoras V AX e IBM. A-XE. Un lenguaje para la simulación de los sistemas digitales de "hardware". La compilación de AXE se lleva a cabo a través del lengua-
:«"~'
· -'--".\, -'
~- - -
-- · --·- - ~-. ,__
··-·-·--
14()
Lenguajes de simulaciún
( Jtros lengua jes y paquetes de s imulación
147
determina. significa que después de entrar TC objetos en el nodo, la simulación termina. La figura 6.25 muestra el nodo de asignación. Al pasar por este nodo algunos de los atributos del objeto o algunas de las variables del m~ delo obtienen o cambian sus valores. M significa el número de las posibles salidas.
Figura 6.22. Nodo de creaciún de objetos.
----•"'-1.1 donde se puede guardar (si MA esto presente) el momento de creación del objeto. para análisis posterior.Mes el número de salidas (posibles ramas de la grofica). donde puede proceder el objeto. La figura G.~3 muestra el símbolo del nodo de tipo líneu de esperu (quew:). IQ es el número inicial de objetos en la línea. QC es el número máximo posible. IFL es el número de archivo donde se guarda la información sobre los objetos que esperan en la línea.
Número inicial
Capacidad de la línea
Número del archivo
-
Este símbolo indica que &I nodo es una línea de espera
Figura 6.23. Nodo ··línea de e spera"
El símbolo pora el nodo terminal se muestra en la figura 6.24. Un objeto al entrar a este nodo. desaparece. El único parámetro TC. si se
¡·~~~~~~~~~~~~~~~~~~~
VAR •valor VAR = valor
I '\
.
Figura 6 . 25. Nodo de asigna<: iún
Cada nodo en SLAJ\tl 11 puede tener una etiqueta, cuyo valor se muestra aba jo del símbolo. en una cajita rectan gular . Las etiquetas sirven para referir a los nodos en el programa. Las uctiuidudes en SLAM 11 se expresan como rumas de la red. La figura 6.26 muestra el símbolo para una actividad de servicio. N es el número de los servidores que atienden a los objetos (funcionan en paralelo), y A es el número de la actividad. que la identifica en el programa. DUR es el tiempo de servicio, PROB es la especificación de la probabilidad para escoger l a actividad entre otras, cuando la rama es una de las que salen de un nodo "línea de espera". En lugar de PROB se puede especificar una condición (COND) para escoger la rama.
DUR, PROS o CONO
80 Figura 6 .26. Representación de la actividad
en SLlM 11.
Figura 6.24. Nodo terminal
Consideremos. como un ejemplo. la situación donde hay dos ílujos de entrada d e objetos (por ejemplo. "cliente hombre" y "cliente mujer") los cuales. después de esperar en una línea de espera están atendidos por un solo servidor.
148
Lenguajes de simulación
~
Otros lenguajes y paquetes de simulación
en el espacio. Ahora, conecte los procedimientos con los datos que usan y con los segmentos que desempeñan funciones semejantes con cuerdas y trate de minimizar la longitud total de las cuerdas. Lo que resultará son unos objetos compuestos con procedimientos pegados a los datos correspondientes . En otras palabras, la idea de LOO es simplemente poner las cosas donde pertenecen. Los LOO se distinguen por los siguientes elementos: protección (u ocultamiento) de datos, tipos de datos abstractos, atadura dinámica de datos y herencia de propiedades de objetos. Algunos autores f7 8J. J79J tratan estos cuatro elementos como indispensables para que un lenguaje sea "relacionado a objetos". En este texto no se supone que es así. Vamos a tratar un lenguaje como uno de los LOO en el caso cuando el ,lenguaje permite crear objetos independientes en la memoria operativa, que corren en forma paralela o cuasi-paralela. La protección de datos hace el lenguaje más confiable y elimina la dependencia indeseable entre los módulos de sistemas de software. Gran parte de las variables descriptivas del objeto se guarda en su parte "privada" o local de datos y está oculta y protegida ante el acceso desde afuera del objeto y la destrucción accidental. Hay que notar que las declaraciones locales dentro de los procedimientos no proporcionan , en general, mecanismos suficientes para la protección de datos. Por ejemplo, las variables locales en PASCAL no se pueden usar para guardar al estado de ningún objeto, ya que se destruyen al salir del procedimiento. En el lenguaje C, por ejemplo, y aun en FORTRAN sf existe esta posibilidad (datos "estáticos"). Tipos abstractos de datos es un mecanismo importante que hace el programa más flexible. En el código fuente no se especifica ningún tipo particular (ya declarado), dejando la tarea de sustituir el tipo adecuado al compilador. Este mecanismo se ha usado en muchos lenguajes pero sólo para tipos y operaciones básicas. Por ejemplo "+" y"-" en FORTRAl'l sirven igualmente para datos de tipo REAL e INTEGER. La generalización de este concepto es usar segmentos con propiedades "genéricas" donde no se especifican tipos. Los tipos actuales se definen a la hora de compilación y no de programación, según los tipos actuales de los datos en el momento. Este concepto es relativamente nuevo y no se usa en lenguajes más viejos como SIMULA Atadura dinámica de datos permite ejecutar las operaciones sobre datos sin preocuparse por sus tipos y estructuración. La operación no es una llamada a un procedimiento, pero consiste en mandar un mensaje a un objeto. El objeto ejecuta la operación sobre sí mismo, usando sus métodos. Por ejemplo "Print" no es un procedimiento pero sf un mensaje que hay que mandar a un objeto (un número real, complejo, una matriz, etc.) para que ése imprima su valor. Así. "Print" es el mismo mensaje para todos los objetos y no hay que cambiar nada en el programa principal o en los segmentos que mandan el mensaje en el ~aso de c ambiar completamente la estructura de los objetos. Herencia de propiedades permite construir clases de objetos con propiedades nue-
[ATRIB (1) •EXPON (5 1
ATRIB (1) + RNORM (0.02)
Q Figura 6.27. Esquema de un modelo en SLAM 11.
La figura 6.27 muestra el esquema correspondiente en 51..AM 11. Los hombres llegan en intervalos de 7 minutos, y las mujeres en 5 minutos. Se va a simular el servicio para 100hombresy120mujeres, en total. Cada hombre guarda en su atributo (núm.l ARTIB(l)] un número aleatorio con distribución exponencial con el valor promedio 5. El promedio correspondiente para mujeres es igual a 8. Todos los objetos entran en la fila "FILA" con capacidad infinita, número inicial de objetos cero y número del archivo l. La rama que sale de la FILA representa al servidor . Hay un solo servidor (el número N ausente) que se identifica con número l. El tiempo de atención depende del valor del atributo núm .l del objeto que se atiende. De esta manera, el tiempo de atención va a ser diferente para los hombres y para las mujeres. Después de ser atendidos, los objetos desaparecen en el nodo terminal. Para realizar la simulación. hay que preparar, aparte del esquema gráfico, el programa correspondiente en SLAi\4 11, que no se discutirá aquí. El programa es casi siempre corto. Para el ejemplo anterior, el programa correspondiente tiene 10 líneas. De todas maneras, lo que recibe la computadora sí es un programa que hay que escribir. Vamos a ver que existen paquetes y programas auxiliares que pueden interpretar directamente las gráficas creadas en la pantalla, sin necesidad de programar la simulación (como, por ejemplo, el paquete XCELL o el programa QMG que es una parte del sistema PASION).
6.9.3
Lenguajes orientados a objetos La idea de todos estos lenguajes no es nueva. En lo anterior describimos a SIMULA. cuyo concepto principal es el objeto con sus atributos, procedimientos e instrucciones. Después de casi ·20 anos de ser bien conocido y usado en Europa, el concepto de lenguajes orientados a objetos (LOO) ("object-0riented languages") fue descubierto en América. Después de 1980, junto con el desarrollo rápido de las computadoras personales aparecieron muchos lenguajes de este tipo. Los LOO pueden usarse también para problemas de simulación. aunque son lenguajes de uso general. Koehler y Patterson. los autores del lenguaje SMALL-TALKl56 1· 157 1 dan una buena explicación intuitiva de lo que es la idea de LOO. Según ellos. imagínese que los datos y los segmentos de su programa giran
·"-WL~.J
\F.i_. -"~,.-,..v:
iL;'>'
•
x:~~
-·""t'' ·'>i;
ar , ::.'¡
·r,yr,.w.:··-·,;_· ,ft;t;sJC'§.h'é6·:áf$ &ñtkfi·t-itZrlif'.51lf@n,k'*á-·!::;tpt1i.\-.i~--é<,.·:1sfr'.i-}i'::~á!!Lif$; "!.'.:h""';& .....1$4~
149
;.~;t ;A ,¡:14--:tA ~ - '.,_-,;.¡( l:~1•:1•f
~~·--------- --:M=-! _,: •
A--"'!!'r".....,,.,,~:~-''"""..._
• ""
dr% ,!:í,¡.:\'.¡•{v- -:.:.,,;'?~,....¿.,.~,: 1
rlfl
~
• L
,,
;....."
.:.. ....
"S'~
...-....:.~,~;t.:~.:.
150
Lenguajes de simulación
Otros lenguajes Y paquetes de simulación
vas basándose en las clases que ya existen. Es un mecanismo que facili ta la programación y es muy útil en el desarrollo de modelos grandes para simulación. Como cualquier enfoque relativamente nuevo, el de LOO tiene sus ventajas y desventajas. Las ventajas son, según los autores de estos lenguajes, la protección de datos y uso de datos abstractos, que puede aumentar la confiabilidad y separar las especificaciones representacionales y la implementación. La atadura dinámica aumenta la flexibilidad y permite agregar nuevas clases de objetos sin cambiar a los programas que ya existen. La herencia permite mejorar la "factorización" del código, porque el código que corresponde a ciertas propiedades del modelo se encuentra en un solo lugar. Las desventajas son relacionadas más a las implementaciones que a los lenguajes mismos. La mayor es, que casi todas las implementaciones son más lentas, comparando operaciones correspondientes o semejantes entre LOO y otros lenguajes. Por ejemplo pasar un mensaje a un objeto, que corresponde a Úna llamada de una función o procedimiento en un lenguaje convencional, es casi dos veces más lento que la llamada a una función. El consumo de memoria es también más grande para LOO. Entre los lenguajes del grupo LOO hay que mencionar los siguientes: SMALLTALK. Es una implementación típica y completa de LOO, con fuerte separación de objet os y protección de datos !>6 1. Facilita la programación a través de modo interactivo con "ventanas" y menús. Es relativamente lento y necesita casi 1 Mb de memoria para trabajar normalmente. ACTOR. Un lenguaje interactivo para la IBM PC. Tiene todos los mecanismos de LOO y ofrece un software adicional para editar y v erificar programas. Desarrollado por Whitewater Group !ne., Evanston lL, EE.UU. OBJECT PASCAL. Es una extensión de PASCAL. La palabra OBJECT permite declarar objetos como se declaran los records de PASCAL. El objeto, además de una estructura de datos, contiene métodos que se declaran como procedimientos dentro de la estructura del objeto. NEON. Está relacionado a FORTH. Usa la sintaxis de FORTH, es relativamente rápido, aunque no es una implementación completa de LOO. ExperCommon L!SP. Relacionado al lenguaje de inteligencia arti ficial LISP, implementación completa de LOO. OBJECTIVE-C. Relacionado al lenguaje C. La extensión cons iste en nuevo tipo de expresión que es el mensaje, y en las declaraciones de clases. OBJECT ASSEMBLER. Relacionado a ASSEMBLER, corre en el procesador de Motorola 68000. Es rápido, pero no cont iene todos los conceptos de LOO. OBJECT LOGO. Relacionado al lenguaje LOGO y COMMON LISP. Implementación completa de LOO. Más difícil para aprender que otros lenguajes de la familia LOO. OBJECT-ORIENTED FORTH. La versión LOO del lenguaje FORTH ¡sz1.
151
Algunos lenguajes r ealizan parcialmente las ideas de LOO, como por ejemplo PASlON (vea sección 6.5). Otro ejemplo es MODULA 2 (una extensión de PASCAL), el cual proporcio na mecanismos para proteger datos. Otro ejemplo es el lenguaje ADA, desarrollado por el Departamento de Defensa d e los EE.ULJi•21.1621 ·1s31. 19s1. El fin del proy ect o "ADA" fue crear un lenguaj e nuevo que podría reemplazar a todos los lenguajes de programación, convirtiéndose en el único lenguaje de uso general. Ahora, después de algunos años de la definición de ADA se p uede ver q ue este fin no se logró como lo desearon los autores del proyecto. Sin embargo, ADA sigue siendo u n lenguaje bastante útil y bien disei'lado. Desde el punt o de vista de LOO, ADA proporciona, en p rincipio, los mecanismos necesarios. Los más importantes son unidades genéricas y traslape de operadores (operator overloading). Las unidades genéric as permiten sustituir tipos actuales en lugar de ti pos abstractos a la hora de compilación. El tras lape de operadores consis te en el uso de diversos operadores con el mismo nombre. El operador que actúa en el momento se escoge según el contexto del uso, esto es, según tipos actuales de los par ámetros con los cuales actúa. Otro mecanismo impor tant e de ADA es la tarea (task). Las t areas son objetos que se crean en la memoria operativ a y que pueden correr en paralelo en el tiempo real. Así. ADA es un lenguaje de tiempo real cuyas aplicaciones más importantes son en fas computadoras paralelas con procesadores múltiples. Recientemente podemos obser var un d esarrollo rápido de sistemas paralelos. El paralelismo, t anto en hardware como en software, es lo que emp uj a las investigaciones en la inteligencia artiíicial y en simulación, aunque lo ú ltimo todav ía no se puede decir con r especto a software de simulación de uso masivo. Vale la pena notar que el nivel de paralelismo alcanzable recientemente no es de dos o diez objetos corr iendo en paralelo. Por ejemplo. la compañía Thinking M achines de los EE.UU. produce un modelo de computadora que tiene 64000 (sesenta y cuatro mil) procesadores que actúan en paralelo en su unidad central, cada uno con su memoria loc al y con acceso a la memor ia c entral.
6.9.4
LOO y simulación No todos los aspect os de LOO son de igual importancia en l a simulación. Los más impo r t ant es son la posibilidad de crear objetos independientes en la memor ia y construir clases de o bjet os con propiedades nuevas usando el mecanismo de herencia. Los lenguajes LOO no son , en princi pio. lenguajes de simulación. Por otra part e. hay que o bservar que hay una relación clar a y dir ecta entre los conceptos de LOO y la descripción formal de modelos. A los componentes del modelo les corresponden !os objetos de LOO. a las variables descriptivas -el estado de o bjeto y sus atributos, a las reglas de int eracción- la imp lementación
152
Lenguajes de simulación
(las operaciones, métodos y procedimientos). Es difícil comparar la utilidad de LOO y la de los paquetes y lenguaje:; de simulación, como GPSS o SlMSCRIPT. Es obviamente más fácil usar a GPSS para simular un sistema con filas, que programándolo, por ejemplo, en OBJECTIVE PASCAL. Por otra parte, casi no hay lenguajes que existan solos en los sistemas de cómputo. Cada lenguaje tiene su ambiente que son las bibliotecas de procedimientos del sistema y del usuario, y otros mecanismos "fuera del lenguaje", como clases predefinidas S!MULATION y PROCES de SIMULA, o todo el sistema de soporte para ADA (APSE -Ada Programming Support Environment). El ambiente del lenguaje es quizás de igual importancia que el lenguaje mismo. Además, basándose en la experiencia en programación, se producen paquetes de uso especial y de simulación para ADA. Sin duda los lenguajes de más alto nivel algorítmico las ideas de LOO y el paralelismo de sistemas de cómputo van a determinar las tendencias futuras en los métodos de simulación.
CAPÍTUL·o 7
Aplicaciones de la simulación en mercadotecnia
7.1
1 !
1
1
Introducción Hay dos funciones básicas que desemperian todos los negocios: crear un producto o servicio y comercializarlo. Las computadoras pueden ayudar no sólo en el proceso de producción sino también en las aplicaciones de los métodos de mercadotecnia para establecer las estrategias óptimas de comercialización. Los paquetes que vamos a describir brevemente fuero n diseñados para sistemas de cómpu t o pequeños y empresas pequerias o med ianas. Cada mercado es un sistema complejo y su comportamiento es difícil de predecir. Un analista o vendedor con cierta experiencia puede prever la respuest a del mercado en un estímulo simple. pero difícilmente puede confiarse en su intuición al determinar la estrategia óptima de comercialización en una situación más compleja. y éste es el trabajo que la computadora puede facilitar. Los objetivos de este trabajo, que se !levó a cabo en la Universidad Panamerican a. fueron lo s siguientes: l.
1
l ¡
2.
Desar rollar métodos de simulación del mercado y optimización de las estrategias de comercializació n para los prod uc tos con la respuesta rápida y lenta del mercado. Desarrollar los paquetes de programas correspondie ntes de talmanera que realicen los métodos adecuados. para que sean bastante ··amistosos" y fáciles para los usuarios y corran en computadoras personaíes. J5:l
154
7.2
Aplicaciones de la simulación en mercadotecnia
El modelo de demanda y ventas Los métodos de simulación y optimización para ambos tipos de productos (de respuesta rápida y lenta de mercado) usan el mismo modelo de demanda, que tiene la siguiente forma:
Q(t)
=
v(t)(l
+
g)' (
P(t) P(O)
)e
p
(
)eA
A(t) v(t)A(O)(l
+
Y(t) (
g)'
Y(O)
)ey (1)
en donde - es el tiempo del modelo, O < t
g
<
T,
- es la tasa anual de crecimiento del mercado,
P(t) - es el precio actual. A (t) - es el gasto publicitario actual (por la unidad de tiempo) .
Q(t) - es la demanda actual (por la unidad de tiempo), v(t) - es el índice de temporada,
I:
Y(t) - es el ingreso promedio del consumidor (por la
t00-Z--- ~flAfm /ºC3 n
unidad de tiempo),
ü
::;
Este modelo determina la demanda en el caso de la respuesta rápida de mercado (consulte 15•1). La ganancia se calcula tomando en cuenta el costo de producción o adquisición, las ventas y los gastos de publicidad. esto es
G = (P - cp) Q - A donde cp es el costo de producción. La figura 7.1 muestra la gaiiancia como la función de las dos variables P y A (precio y gastos de publicidad), donde las ventas Q se calculan según el modelo (1). En la gráfica se muestran sólo los valores positivos de la ganancia. Se puede ver que sí existe un punto óptimo que proporciona la ganancia máxima. El modelo para los productos con respuesta lenta usa. en lugar de los precios y los gastos de publicidad, ciertas variables que describen la dinámica del mercado y se conocen como la "benevolencia" de mercado (marketing goodwíll). Estas variables dependen de la historia de pre-
CD
::::>
a..
< ü z z< < (!'
...:
i...:
e
=
~ ¡,.,
!Sf-i
Aplicaciones de la simulaciún en merc;.idotecnia
cios y de la publicidad y reflejan los retrasos de anotación, retrasos entre la anotación y la compra. entre el gasto promociona! y el estímulo correspondiente, etc.(todos los llamados "carryover effects").
7.3 Los paquetes PAOM y PSOM Se desarrollaron dos paquetes: Paquete para Análisis y Optimización de \lercado (P AOM) para los productos con respuesta rápida de mercado y Paquete para Simulación y Optimización de Mercado (PSOM) para los productos con respuesta lenta. PAOM es un simulador estático, esto quiere decir que en esta simplificación del modelo se rec;haza la dinámica del mercado. suponiendo la respuesta r ápida, prácticamente inmediata. Esta simplificación no cabe en las consideraciones sobre la simulación de sistemas dinámicos de las secciones anteriores. PAOM se menciona aquí porque contiene unos procedimientos de identificación del modelo que se utilizan también en la simulación de la dinámica de mercado (paquete PSOM) y porque el modelo que se utiliza. aunque estático. no es trivial. El paquete PAOM utiliza los datos sobre las ventas. precios. gastos de publici dad. indice de t em porada. ingreso del consumidor, la tas a de crecimiento de mercado y la inflación para los últimos 12 meses. Se calculan las elasticidades er. eA y er del modelo. Luego. se produce un pronóstico para el año siguiente basándose en el modelo de la demanda. Los dos paquetes no resuelven ningún problema de inventarios o almacenamiento. Se supone que las ventas siguen a la demanda. El pronóstico se muestra en forma numérica y gráfica en la pantalla y en la impresora. La tabla 7.1 muestra una de las pantallas del paquete PAOM. Éstos son los datos sobre la historia del mercado llamado " D.F." y el producto llamado "PAPlTAS" (datos ficticios). Cada renglón de la tabla contiene datos de un mes del año pasado . que son el precio. ventas. gastos de publicidad. índice de temporada e ingreso promedio del consumidor. Además se muestra la tasa de crecimiento total (por ejemplo territorial) del mercado. Ja tasa de crecimiento de ingreso del consumidor, el costo de producción o adquisición (por la unidad de ventas) y la ganancia total. El usuario tiene que captar todos estos datos y meterlos en el registro correspondiente de la base de datos del paquete PAOM. El paquete crea y maneja con su base de datos que sirve no sólo para analizar un mercado particular. sino también para archivar los datos y usarlos en comparaciones de mercados y otros tipos de análisis. Luego se calculan las elasticidades del modelo de demanda y se produce un pronóstico para el siguiente año. suponiendo que el índice de temporada. los gastos de pub licid ad . los precios y el ingreso del consumidor tienen la lorma similar ( no necesariamente l os mismos valores) que en el año p:isado.
Lo s paquetes PAOM Y PSOM
157
Tabla7.1 Producto: PAPIT AS Mercado : D. F.
Unidades: KILOS
MES
PREC IO
VENTAS
GASTOS P.
10 11 12 1 2 3 4 5 6 7 8 9
53.00 57.50 52.00 52.00 49.00 40.00 40.00 47 .50 53.00 57.50 65.50 71 .00
10000.00 8400.00 8700.00 11600.00 11000.00 13700.00 13700.00 850 0 .00 8600.00 7600 .00 5600.00 5100.00
100000.00 100000.00 100000.00 11 4000.00 123000.00 100000.00 100000.00 57000.00 99000 .00 102000.00 105000.00 107000 .00
ÍNDICE TEM.
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1. 00 1.00 1.10 1. 10 1. 06
INGRESO CON .
80000.00 80000.00 81600 .00 8 1600.00 84000 .00 84000.00 86400.00 86400.00 88800.00 90400 .00 92000.00 96800 .00
Tasa crec :m. de mercado (% anual): 35 .00 Ta sa crec im. ingreso de consumid. (% anu al) : 30.00 Cos10 de producción: 20 .0 0 Ganancia = 2,046. i 30
Tabla 7.2 El pronóstico para el siguiente año: Producto: PAP ITAS Unidades: KILOS Mercado: D. F. MES
PRECIO
VENTAS
GAS TOS P.
10
68.90 74.75 67.60 67.60 63.70 52.00 52.00 61.75 68.90 74.75 85.15 92.30
9422.18 8473 . 13 10077 .65 10800 .56 12533.72 15755.76 16213 .72 10085 .59 1 1107 .03 10786.75 92 14 .44 8394.85
175500.00 175500.00 175500.00 200070.00 215865 .00 175500.00 175500.00 100035.00 173745.00 179010.00 184275.00 187785.00
11 12 2 3 4
5 6 7 8 9
ÍNDICE TEM .
1.00 1.00 1.00 1.00 1.00 1. 00 1.00 1.00 1.00 1.10 1. 10 1 06
Tasa crec im. de mercado (%anual): 35 .0 0 Tasa crec im. ingreso de consumid. (~o anual) 30 .00 Costo de producción: 26.00 Ganancia = 2 .886,5 13
INGRESO CON.
104000 00 104000.00 1060 80.00 1060 80.00 109200. 00 109200.00 112320.00 112320.00 11 5440.00 11 7520 .00 i 19600.00 125840 .00
1:;¡.;
Aplic1ciones de la simulaciún en mercadotecnia
La tabla 7.2 muestra el pronóstico en la forma numérica y la figura 7.2 (Ver página siguiente) indica la gráfica correspondiente para los dos años (pasado y futuro). Ahora. el usuario puede cambiar cualquiera de los datos y ver la influencia que tienen sobre el pronóstico. Una de las ventajas de los paquetes PAOM y PSOM en comparación, por ejemplo con Visicalc u otros paquetes de tipo "hoja extendida" es que PAOM y PSOM contienen procedimientos de optimización. El pronóstico que generan. procesado por el procedimiento de optimización, se convierte en un nuevo pronóstico con precios y gastos de publicidad óptimos (figura 7.3 ver página 160). El criterio de optimización es maximizar la ganancia total para el año del pronóstico. PAOM resuelve también el problema con mercados múltiples. Si hay más de un mercado para el mismo producto. se comparan los mercados y se resuelve el problema de ubicación óptima de los gastos de publicidad y precios, para maximizar la ganancia total. La figura 7.4 ( ver página 161) muestra la comparación de diversos mercados para un producto en forma gráfica. El paquete PSOM simula la dinámica de mercado y se parece más a un "juego de mercadotecnia" que a un paquete de procesamiento de datos. Se le pide al usuario determinar la respuesta en demanda a un estímulo simple, por ejemplo a una campaña publicitaria o una baja de precios que dura una semana. Después. el usuario determina su estrategia en precios y publicidad y otros parámetros de mercado. como la tasa de crecimiento de costo de producción. ingreso del consumidor. etc .. para las futuras 52 semanas. Basándose en estos datos y en el modelo de demanda. PSOM calcula la trayectoria del mercado y la ganancia para cada semana. así como la ganancia total. Vamos a describir este paquete con más detalles.
oa:
:;)
1-
:l
u..
u: ci
o
]
!:? m :E
=~~~~~~~=-~=-=-=-=~= = ~=-
= -====:E-UJ= ----o:_
oo
<(
7.4
Introducción a la simulación de la dinámica de mercado
1
-8 !:? "'m
l.
en <(
o..
E ~
Los modelos estáticos de mercado son insuficientes para describir relaciones entre la demanda, ganancia, promoción, precios y otros parámetros. si existe un retraso o inercia de la respuesta de mercado (carryover effects). Estos efectos son provocados por retrasos entre gastos promocionales o cambios de precios y cambios de demanda correspondientes. La inercia de mercado es . en realidad. una combinación de diversos procesos dinámicos tales como retraso de anotación, retraso entre la anotación y compra. retraso entre el gasto promociona! y estímulo correspondiente. retraso de anotación de ventas. etc.'"" " '"" Algunos autores suponen que la demanda actual es una !unción de la "benevolencia de mercado" l marketing goodwill) que a su vez depende
~
"'c.o .a 2
~
. 1 1 1
1
\
~ j en
1
o..
1
~
o.. ••
,..¡ r-
1
...eo: = "" ......
--·-· ·------ ·---··---· - ----------·--·····-·-· -
Pasado y futuro para su marcado:
Precio
Publ.
DEMANDA
'1 "" ¡" .. ,..
PASADO Producto: PAPITAS
FUTUl'.10 Mercado: D.F .
------·-------·------------1 Figura 7.3.
----------
Sumario de mercados (ganancia) para PAPITAS
D
c
B
11IIJJJI JLOJ
A:
CHIAPAS 23.00 %
B:
TULA
22. 81%
C: MONTERREY 20.93 % D:
D.F 16. 67 %
E: CIUDAD OBREGÓN 16. 59 %
_ _ _J
ih _!.
..-~f,!h. ·ICÍ 1 1:H_''.'j
de
J¿¡ Sl!ltllld\..it.;¡ t'!l llH-!•.: .nl:>t~·\tti."!
Int rod u cc ió n a la simulación de la dinámica de mercado
163
q(t) - el gasto publicitario actual (por la unidad de tiempo),
rprecio 1
l
j
puthcidad
.1
~ 1 Función de l demanda VJ~ 2 1~---__¡·
¡
n
1
DE
- la demanda actual (por la unidad de tiempo),
1
I
!
s(t)
l
~-----,..-__¡
!
t
1
1
J
j
utilidad
v(t) - el índice de temporada,
utilidad acumulada
,_____.
r(t)
- la ganancia (por la unidad de tiempo),
!
1 L __ _ ___,
c(t) - el ingreso promedio del consumidor (por la unidad de tiempo),
1
1
t
FP!Ul:":l -
1 - j
; _
P
- la ganancia total en el periodo [O. T].
g1
-
(}
<>2
,¡¡o
J;¡ llistpn;; d,_.i
mf'tT'Hi0. Esta ic!e;1 parece
Sé'~
i': tiL s: ia iJenev0íenc1 ;:i.
:;e ccn ~idrr:t cnrnu r.._.. su it:1tio cj ,:. ~ndn s :i)~ prcH..~e~n s din.1n1icos aci ::1erc:idu. ?.,.; 1111!'ns:bie c onstruir un rnodeiu que rdleje to(ios ·los procesos que corr,..n en rn1 nien·;irlo real. El enfoqtie q ue se pr0pont> t>n este texto •-.:011sistt' en l!na s1rnµiifiCéKi<'>n que crniteng a un modelo no line;!I ele Ot•n1; ~nd¡1. un tnv d Plo JJi'lr~1 itl gan~u1cia y dos bloques r~inttnncos qui: reilrt' Sentan !o,.: t'ft>ctos de in ercia en ias resu11estas de mercado a !os c;1111h ius de los ¡ire<'io ~ y de lzt puhlic i d;1d (f i~ur:1 75¡ ...\c!t•111ás. se dese-a t 1 t•s ;1rn_.1 lf~1r un !l!é tot !o cie sHnulación y 0Dt!rnizltc1,) n de ias estrtneg1l1 S lit' :11e1T;Hlu que se pue
7.-L l
Planteamiento del problema St> ccnsidtera !a trayectoria del mod elo diná mico de rnerc1do de un p rod ucto snb~e u11 mterv;1lo de tiempo J = [ O. T] . DPnotcrnos e i : :empo dei mocic>lo :l
_:..;
i :i :asa
<
t
<
- la benevolencia del merc ado co n respecto a la publicidad.
En nues tro enfoque la benevolencia de mercado r efie re tamb ién a los precios y no sólo a la publicidad. corno . por ejemplo. en [3]. Suponemos que la demanda actua l se comporta según el siguiente modelo.
s(f)
=
s0 }'(t) (1
+
gy
( g 1g(t)~e"( }
V
\eª(c(t))e,
g,(t)
(t) (1
+
g)
g)
t
(1)
en donde ep. a•. y e, son las elasticidades de la demanda con respecto a los precios. a la publicidad y al ingreso promedio del consumidor. El índice cero significa el valor inicial. Este modelo de demanda se propone en el libro de Kotlerl 5"!, para el caso estático. Las ventajas dependen de la historia de los precios y los gastos promocionales según los dos bloques dinámicos lineales DP y DE. como se muestra en !a figura 7.7. Suponemos que la respuesta de mercado a un estímulo s imp le tiene la parte ascendente y la parte descendente que se pueden aproximar co n curvas exponenciales. En consecuencia. suponemos que los elemen tos DP y DE son elementos de inercia lineales del segundo orden. descritos con la siguiente ecuación.
T.
a11 11al de cr c>ci111ient<) ciE"l m<>rc:ico.
n\t\ - t.:! p r eci o
la ben evoiencia del mercado con respecto al precio,
ac~u~1!.
IH il - e! cus to de ¡nod ucciún 1_pu r l a unidad del producto}.
d' g, T d.,;¿
'¡
do T • ~ (T • '·· dt 1¡
T.' ".! ) - g
1
=
u !
(::'.)
en donde i = 1, 2. u 1 = p (t). u2 = q (t). Las dos constantes de tiempo T. y T hacen al modelo bastante flexible para aproxi mar l a r espuesta de ~~reacio conocida a través de las observaciones prácticas.
l 64
Aplkaciones de la simulaciún en mercadotecnia
Introducción a la simulación de la dinámica de mercado
La función de ganancia es r(t)
=
se propone utiliza, de la forma más intensa posible, el conocimiento y la intuición del usuario. La identificación empieza con la pregunta: ¿Cuáles son las constantes de tiempo T 11 y T 12 para la respuesta a un estímulo simple en los precios? Es muy probable que el usuario no sepa la respuesta. En este caso el programa muestra en la pantalla la forma de la respuesta del mercado (la demanda) al estímulo con los valores de las constantes 1 y 5 (en semanas). Si la respuesta no es aceptable, el usuario teclea nuevos valores y obtiene una respuesta nueva. Esto se repite hasta que la respuesta del mercado es congruente con el conocimiento y la intuición del usuario (figura 7.6). Las constantes de tiempo para la respuesta a un estímulo en la publicidad se establecen de la misma manera. Para determinar las elasticidades de la función de demanda (1). el programa pide al usuario que teclee los valores. Es muy probable que en este caso él tampoco pueda responder correctamente. Si es así, entonces se le pide al usuario decir cuál incremento de ventas puede ocasionar una baja del l Q'.X, en precios. Responder a esta pregunta es más fácil. si el usuario conoce el mercado donde vende sus productos. En la siguiente pregunta el programa pide lo mismo para la baja del 30% en precios. Basado en las respuestas dadas. se calcula la elasticidad "e P.. para los precios. El mismo procedimiento se repite para las elasticidades con respecto a la publicidad y al ingreso promedio del consumidor. Así, el programa actúa en una forma interactiva y fácil de manejar, parecida a los juegos electrónicos.
(p(t) - h(f)] s(t) - q(t)
donde s(t) se calcula según (1). Las ecuaciones (1) y (2) constituyen el modelo del sistema en consideración. La ganancia total se calcula como la integral
T
P=
f
(3)
r(t) dt
o Se supone que para todo ten el intervalo [O .
71
los valores de p(I).
!1(1 ) . q(t ). s (i). u (!). e( !). ft. (t) . e ... e . y Tno son negativos y que el valor de
" ,. es negat ivo. La ganancia acti.1al puede ser positiva o negativa en algun as µart es ele lo. Se consid eran los siguientes problemas.
n.
l.
2.
3.
7.4.2
165
Determinar los parámetros del modelo , esto es, establecer los valores de T 11 • T1, , T, 1• e 1,. e,.. ev. g, y u(t) y todos los valores iniciales necesari os. Simular por computadora la trayectoria del sistema dentro del intervalo [O. Jl. Determinar la estrategia óptima de mercado p(t) y q(t). En realidad hay tres problemas de optimización: (1 ) calcular los gastos óptimos de publicidad q(!) sin cambiar precios . (2) calcular los precios óptimos sin cambiar los gastos q(t), y (3) calcular la estrategia óptima para los gastos q(I) y los precios p(t) simultáneamente. El criterio de optimización es maximizar la ganancia total P en el periodo [ O. 71.
r
Identificación de los parámetros El problema de determinación de los valores para los parámetros del modelo es difícil. El modelo es dinámico no lineal de orden cuatro y las variables g 1 y g, no se pueden observar directamente ( medir) en el sistema real. Para determinar todos los valores necesarios basándonos en las observaciones de un mercado real hay que captar un gran número de datos y aplicar métodos bastante sofisticados de identificación. Aquí. sin embargo. se propone un enfoque diferente. La idea general es que los sistemas desarrollados para computadoras personales tienen que ser simples . "amistosos" y bastante rápidos. El método que
-
Demanda
1
1
1
1
r-\
1
1
1 5
Figura 7.6. Respuesta dinámica del merca
·~:;>:<•··-···
10
semanas
l t;1)
.·\plic~n. :1011es
7.4.:3
de la sin1uL1ci1.ll\ en n1erc;1dotecnia
Simulación Las ecuaciones del modelo (1) y ('.2) se resuelven a través del método de Runge-Kutta. No hay ningún problema con implementar el algoritmo correspondiente. El incremento de tiempo es una semana. aunque el alsoritmo puede disminuir automáticamente el paso según los parámetros del modelo. El programa simulador correspondiente fue escrito en Pascal e implementado en la !BM PC con 256K de memoria. El tiempo real necesario para calcular una trayectoria del modelo (un año. 52 pasos). tarda aproximadamente 1O segundos. incluyendo todas las operaciones necesarias para graficar la trayectoria en la pantalla. Después ele correr una simulación. el usuario puede cambiar alg1Jnos parámetros del modelo y ver los cambios correspondientes en la trayectoria. Las gráficas incluyen e1 precio. gastos prornocionaies. la demanda y la ganancia como funciones dei tiempo. Todas las variables Jparecen. además. en iorma gráfic:1 en la impresora. El simubdor resultó ser útil tanto como un método para evaluar pronósticos de comport:imiento de mt'rcado. así como también una herramienta didáctica para los analistas ele mercado. Algunas tr:iyectorias obtt'nidas de la simulación se muestran en las figuras 7.7 y 7.8 (ver p3ginas 167 y 168). como resultados del procedimiento de opt irnización. La explicación ele estas gráficas está tbda en la siguie;ite sección.
i..t...t
~~
',
//
..u
~( Uj
/
1
¡
I ¡
1
1
{
__
_,
-,--
¡\ 1
;::
I \ ¡· il .
.
f;1
Los t rc-s problemas de optimización ( 1-3 )(sección 7.4.1) son problemas típicos de control óptimo. bien descritos en la literatura. :"ctorial el modelo del sistema en consideración puede expresarse como la ecuación vectorial
c..
.... =
dxU)
=
1
-..... - !
f [x(I). uuJ. t]
dt en donde x es el estado del sistema. en nuestro caso xU) = [g, (t). g., (t). [p(t). q(t)] y fes una función vectorial que se puede obtent'r de las ecuaciones (2). Además. x(O) = x es una condición inicial dada. u(t) E C. donde C son las restricciones para el control. El problema es maximizar la ganancia total P dada por la fórmula (..\ ) .Existen algunos algoritmos conocidos en la teoría de control óptimo para problemas ck este tipo. El algoritmo que se aplicó es un algoritmo itérarivo !Jasado en el principio de :Vláximum de Pontriagin. H La idea principal clet>ste método es la siguiente. Se introduce el vector z = (z," z 1, z, . z .. z, J ele las !la macias variables conjugadas. Este vector satisface a un
(ñ
·.;:
>¡
I w1)
Optimización
1
f
1 1
I
.
:-21 i::
"O
I; , (t) . ge (t) ]. u es el vector de con trol u(t) =
·~
·"~"'º
U) .!9
"O
~
~~~~ =:;o..>:::
- .. .
i...
1.
WJ
'
' tt-
::
~
¡:¡:
lntr o ducciím a la s imulaciún de la dinúmica ele men.:ado
sistema de ecuaciones que se puede derivar de la ecuación (5). También se conoce la condición final para las z. El principio de Máximum dice que para resolver el problema hay que maximizar el "hamiltoniano" que es el producto punto de los vectores (x0 , x,. .... x.,) y z. donde x 0 representa el valor de la función objetiva (con signo menos), esto es, según la fórmula ( 4),
g_
...
1(ilJ
~
·::;
dx,,
dt
= _r
(/)
(5)
Ya que no se conocen las condiciones iniciales para las variables conjugadas z. surge el problema de dos puntos de frontera. Esto significa que el problema de optimización no se puede resolver con una sola corrida del modelo. El procedimiento iterativo que fue aplicado es como sigue .
l. 2. 3.
~
:'2"" (/) ~
·8 ..0g :.:: .g CD ._ :l 'Zl Q.CL:::i
>
o.. w ....
U)
C: 12)
4. ~
"O
~
o
a. E
2
5.
"'o
"O
"5
~ -¡¡;
6.
:!)
Se escoge un control u permisible. Se calcula la trayectoria según las ecuaciones (5) con la condición inicial x y se almacena en la memoria. Basándose en la trayectoria calculada en el paso 2 y en el control actual. se calcula la trayectoria para la variable conjugada z. empezando en el punto final. Se calcula el hamiltoniano y su derivada con respecto al control. para todos los pasos de tiempo. Esto resulta en el gradiente del hamiltoniano en el espacio de control. Según este gradiente podemos cambiar el control para maximizar el hamiltoniano. Se cambia el control actual u en la dirección del gradiente. de tal manera que el criterio de optimización tenga el valor más bajo posible. Vamos al paso 2.
La solución de las ecuaciones conjugadas tarda aproximadamente lo mismo que para las ecuaciones de la trayectoria. Además. el paso 5 necesita que sean calculadas algunas trayectorias del modelo. Todo el algoritmo también incluye algunas repeticiones de los pasos 2-5 . Esto significa que el consumo de tiempo de la computadora para este algoritmo es mucho mayor que el tiempo de una corrida de simulación. y alcanza aproximadamente 10 minutos. Afortunadamente, esto es el único problema computacional. El algoritmo puede programarse e implementarse en una computadora personal con 256K de memoria.
w
Algunos resultados ~
..
Ejemplo l
t-
~
:::
;:;;: ""'
..
La compañía vende su producto en el mercado que tiene las elasticidades -1.4 . íl .6 y !l.3 para el precio. los gas tos de public!dad y e! ingreso del cons umidor respectivamente. Suponemos que el ingreso del con-
J ";"O
.·\.p!lcdci
de la
si1nuldc!<'111en1 ner L¡1d•ltee11 1ü
sumidor. el costo de producción y el índice de t empor ada sun constantes y que la tasa de Gecimíento del mercado es iguai a ceru. Los eíectos de inercia ( carryover) son del segundo orden. con las co nst;intes de tiempo (l.6 y 3.0 para los precios y 1.0 y 2.0 para los gastos de publicidad. Se supone también que el precio ya fue programado para todo el año y, en consecuencia. el único instrumento de control que queda es la publicidad. Se supone que ei precio es constante para las primeras 16 semanas . sube en la semana nüm. 17 y queda constante para el resto del año. El pro blema de optimización es como cambiar los gastos de publicidad para maximizar la ganancia total para un afio de actividade s. Los resuitaclos ele una corricla dd µrograma de optimi zación para este p roblema se nn;estran en la fit:ura 7. 7. Las p r imeras 5 s tman as ( interv:.ilo !) representan un pe nodo inicial compañía terminan en la sem:.ina 52. Es claro que en esta situación no tiene caso p romover al producto en las ú lti m as semanas y así dice t;i.mhién el program;i. de optimización.
Ejemplo 2 Con siclc>re rnos dt nue\'O el mercido del ejemp lo 1. ,\hora suponemos que c·l indice de té' r11µor<.1da es igual a 1 para todas las seman as exce pto la serna n;i. número 17 . cua ndo alca nza el valor de~- El problema es o ptimizar !:i estrJtegia de merc:ic!o tanto µara l os precios como µara la pu blic icla cl. El resultado se muestra en la figura 7.8. Observe que antes del "pico" del índice de temporada (las vacaciones. navidad. etc.) bajan los precios. Dur:rnte el "p ico" el precio incrementa casi 300'K•. pero la inercia en la respllesta de mercado (la ventaja) es bastante grande para que la cornpa1ií::J. gane en este periodo. Los result;;.dos muestran que en este caso la pub li cidad no tiene mucha importanc ia y aun baja en el periodo de "pico". Después de la serna na l 1 los precios y la publicidad vuelven Jl est ado est:icionar:o óptimo . LJs estr:itt>gias de mercado en los ejemplos l y? son típicas para :os prnductos que nt'cesi tan una µ u l>i icidad perma11c:me. Desde ha~go
liitrCJducci1.1n ;1
la
s i111uf.:n·i,·n1 el e la dinún1ic¿1 cie n1erc<.Hio
l ll
tanto las propiedades cualitativas cu1110 las cuantitativas dependen fuertement e de las elasticidades y ele los demás parámetros de mercado y pueclen cambiar significativamente ele un caso a otro.
7.4.5
Conclusiones
Es posible implementar el método descrito anteriormente en una computadora personal. El simulador ele mercado es bastante rápido y permite observar las trayectorias en la pantalla. El usuario puede cambiar !os parámetros del modelo y "j ugar·· con ei programa para comprender y meio rar las es tratc>gi:is de mercado. El método de opt im iz aciún . q11e perterwce a la teo ría de control. pro porciona en est e caso buenos resuitados. con tiempos cie cómp11to razonabl es. Así. la computaclora puede ayuda r al usuario a resolver alg:111os proble1nas de mercadotecnia. cuando éste sabe cómo responde el m ercado a los estímulos simples. pt-ro no pueJe p rever qu é pasará cuc.ndo más var iables de cont rol cam bien simultáneamente. PAO:Vl y PSO:\l pueden servir para estabiecer ias estrategias óptimas en mercadotecnia. comparar las estrategias, comparar los mercados y pronosticar el comportamiento de mercados. Los dos paquetes tienen sus bases de elatos que pueden ser útiles para mantener y archivar tos datos sobre ventas. precios . etc. Los dos paquetes también tienen valores didácticos y pueden utilizarse para entrenar gerentes de ventas o analistas de mercado.
CAPÍTULO 8 El uso de simulación en algoritmos iterativos; ·control óptimo de vuelo
8.1
Introducción El uso típico de simulación consiste en simular un fenómeno durante un periodo de modelo para observar su comportamiento dinámico. Si el modelo del !enómeno contiene procesos estocásticos, podemos repetir la simulación algunas veces y calcular las estadísticas que nos interesan. Además, se pueden investigar algunas versiones del modelo y la influencia de las variables de entrada. Éstas, sin embargo, no son todas las aplicaciones de simulación. Hay que notar que los modelos de simulación pueden usarse como partes de los programas que realizan algoritmos más complicados (de más alto nivel algorítmico). Uno de los ejemplos de esta clase de aplicaciones es el control óptimo, donde todo el procedimiento de simulación de un proceso es sólo una parte del algoritmo. Algoritmos de este tipo ya fueron mencionados en el capítulo 7, como uno de los métodos de optimización en mercadotecnia. Trataremos de describir un ejemplo más sin entrar demasiado en la teoría de control óptimo.
8.2
Planteamiento del problema Consideremos un proceso dinámico, cuyo modelo simplificado tiene un vector de entrada u= (u 1, .... u,) llamado "control" , y un vector de estado
Control úptimo y simulaciim i 74
l 7S
El uso de simulacii>n en ¡¡lgoritn10s
si encontramos la so lución. el problema de control óptimo es mucho más difícil que el de resolver las ecuaciones de movimiento. El caso del problema sin restricciones para control se puede reducir, con algunas suposiciones de regularidad. al caso de un problema var iacional. En este caso podemos aplicar el cálculo variacional. Los métodos para el caso de control óptimo con restricciones fueron desarrollados por Pontriagint""l (el Principio de Máximum) y Bellman (la Programación Dinámica). Vamos a describir de una manera informal el Principio de Máximum de Pontriagin. que parece ser el método más aplicado. Primero tenemos que establecer !as ecuaciones de movimiento para el vector de estado del sistema. esto es . encontrar un modelo de la dinámica del sistema. También hay que establece r el criterio de cont rol óptimo . Basf1ndose en este modelo se co nstruye un "modelo conjugado" cuyas ecuacio:;,:s se derivan de l:is ecuacio nes del modelo. El modelo con j ugado tiene un vector de es tad o p = 1p ..... p ,! rle !a misma ci in1ensión que el de modelo originz:I. Ahora podemos defin ir . para G lda rnomento de tiempo del modeio. una función H que depe nde de las variab les ele est;ido del modelo or igi nal. de! m o delo conj ugado y de !a funció n f del criterio de optimización. Esta función se llama Hamiltoniano o la función de Hamilton. El Principio de \<1áximum dice que el contro l óptimo u que minimiza el criteriox,. es aquel que maximiza el Hamiltoniano para todo el t iempo en el int ervalo [O . 71. Así, el problema origina l de cont rol ópti mo se reduce al problema de maximizar una funció n multivariable. más fácil de r esolver. Del Pr i ncip io de \láximurn surgen diversos algoritmos de control óptimo . ia mayor ía de ellos i terativos. a veces bastante sofisticados.
x = (x 1..... x,,). Supongamos que existe un criterio del comportamiento óptimo para el proceso. Si el proceso es, por ejemplo, el proceso de arranque de un motor asíncrono , el criterio puede ser "alcanzar la velocidad deseada con la mayor rapidez posible, sin sobrecar gar la red de alimentación". En el caso de un avión experimental se puede buscar la solución con el criterio "diseiiar la trayectoria de vuelo alrededor del mundo con el gasto mínimo de combustible sin aterrizar y sin volar sobre algunos países". En la industria casi cada proceso tiene uno o más criterios de comportamiento óptimo. Si el control que aplicamos al proceso realiza el criterio. llamaremos a éste "control óptimo" . Matemáticamente. la forma más típica para exp resar el criterio de optimidad es
una integral T X,.=
J IJxU). u(!) . t] dt 11
donde x" es el valor del criterio. T es el tiempo final del proceso, tes el tiempo de modelo. u es el control. x es el vector de estado y f es una función integrable. Se trata de encontrar tal control u(t) par~ que el valor correspondiente de x,, sea mínimo (o máximo). Por ejemplo. si tratamos de minimizar la energía total consumida por el proceso. la función debe representar la potencia instantánea. Si el problema es seguir una trayectoria d eseada x ,, . hay que evaluar el erro r x"(t) - x (t) el onde X\I) es el valor act ual ele estado. En este caso uno de los criterios
t:.
posibles es
8.4
T
minimizar x , =
J [x (t) -x(t)]' dt 1
{I
que minimiza el error cuadrático. Hay que observar que los problemas de control óptimo de procesos industriales casi siempre involucran unas restricciones adicionales para íos componentes del vector de control y a veces también para el de estado.
S.:3
Control óptimo y simulación
Algoritmos de control óptimo Rara vez podt>rnos calcular el control óptimo u(t) analíticamente. En la práctica las ecuaciones de movimiento son de un orden demasiado elevado para obtent>r soluciones en la forma de fórmul as mat emáticas. Aun
Para resol,:er el problema planteado en es te ca pítulo aplicando e! Principio de \1 áximum hay que resolver primero dos problemas de modelación y sim ulación: !a simulación del sistema originai y el problema similar pa ra el sistema conjugad o. La situación más común es cuando el probl ema de contro l ópti mo es de '"ti empo lijo .. de contro l. con el estarlo final "lib r e". por ejemplo: "controlar un p roc eso tecnológi co durante una hora con el gasto mínimo de energí a sin salir de un régimen de oper ació n dado ·. En este caso pod emos encontrar la trayectoria x(t) p.1ra un control dado u(r' . ya que normalmente se conocen las con
1711
El uso de simulaciún en algoritmos
Un ejemplo; control óptimo de vuelo
Hay que simular primero el sistema original con cuaiquier control u(t) que cumple las restricciones. no necesariamente el óptimo. Después de correr una simulación con este control guardando los x(t), podemos correr el otro modelo, empezando con el estado final de p(T) y yendo atrás en el tiempo del modelo. Si ya tenemos los valores de x y p calculados para cada t, podemos ver cómo cambiar ei control con el fin de maximizar el Hamiltoniano. Esta "dirección de búsqueda" en el espacio de controles está relacionada al "gradiente de Hamiltoniano". Ahora corregimos el control según la dirección de la búsqueda y repetimos todo el procedimiento, calculando de nuevo x(t) y p(t). Todo este ciclo se repite muchas veces hasta encontrar un control bastante cercano a la solución deseada. Hace notar que este algoritmo contiene entre sus operaciones corridas múltiples de dos modelos. de simulación. El modelo original con el estado x(t) y el conjugado con el estado p(t). El modelo conjugado es ele la misma dimensionalidad que el original y sus ecuaciones son por lo menos de la misma complejidad que la de las originales. Así. podemos d ecir que el algoritmo de control óptimo descrito antes es uno de nivel más alto que el de la simulación. La simulación de los modelos involucrados se ejecuta muchas veces y está controlada por el algoritmo del nivel más alto.
mico tiene el estado x = ('(.a, e. h). la variable de entrada es u y el modelo matemático incluye las ecuaciones (1) y (2). El procedimiento de integración de las ecuaciones es el de Runge-Kutta de cuarto orden , y el programa correspondiente se muestra en el listado 13. La estructura de este programa es similar a la del programa MECAN descrito en el capítulo 5. El procedimiento TRAZA! no se muestra en el listado y sirve sólo para graficar los resultados, esto es, la altura X[ 4] y el control U. Esto es sólo el programa de simulación, en donde la dinámica del sistema se encuentra en el procedimiento RHS. Este procedimiento, junto con el de Runge-Kutta RK4 pueden usarse en el programa de control óptimo. El criterio de control óptimo es la integral del error cuadrático, como sigue
T Xo =
da./dt
=
d8/dt
=y
a., 1y
+
a.2 a+ b,u
en donde 8 es el ángulo de ataque (ver página siguiente figura 8.1), a es el ángulo de lanzamiento. r = d8/dty u es el control (la posición angular de las aletas). Simplificamos el modelo suponiendo que la velocidad V del avión es constante. El control u está limitado con la condición ut: [u'""" u..,,,,] . La suposición V= const implica que la altura obedece la ecuación
dh/dt
=
(2)
V sen(8 - a.)
La figura 8.2 (ver página 179) muestra cómo reacciona el avión a un cambio en control que es. en este caso. un impulso "rectangular". Éste es e! resultado de una corrida de simulación. en donde e! modelo diná-
'"""''
(3)
en donde h(t) es la altura actual y g(t) es la altura deseada. El problema de control óptimo es hallar tal control u(t) que h(t) correspondiente sea igual a g(t), donde g(t) es una función dada. por ejemplo la trayectoria deseada de ascenso. En otras palabras, el control óptimo tiene que minimizar el criterio x0 dado por la fórmula (3).
Consideremos el modelo de la dinámica de vuelo de un avión limitándose al plano vertical , esto es, considerando solamente los cambios de la altura. Vamos a usar el siguiente modelo dinámico1 100 1.
=u 11 y+a 1,a.+b 1u
f [h(t) - g(t)]2 dt o
8.5 Un ejemplo; control óptimo de vuelo
dy/dt
177
Figura 8.1.
Un ejemplo: control éiptimo de vuelo
l ~')
Denotemos
Listado 13 x 1= y, x.,= a, x,= 8. x 1 = h
PROGRAM AVION; TYPE VECTOR=ARRAY[l .. 4] OF REAL; TABLA=ARRAY[l .. 500] OF REAL; VAR All,Al2,A21,A22,Bl,B2,T,H,V:REAL; K:INTEGSR; X:VECTOR; Z,Y:TABL~;
{0=
i $I TRR.Q?\S)
?CN CTION U(T:REAL) :REAL;
[x,(t) - g(t) ].,
f 1= u 11 x/t) +u ,., x/t)
+
b 1 u(t)
f.,= u, 1 x 1(t)
T
be u(t)
+
a'C,! x.,(t)
(El control} f ,=X 1(t)
BE GI~
I F ( T>0.99) AND (T
f,= V sen [x,(t) - x,(!)]
2ROCEDURE RHS(N:INTEGER; VAR X,D:VECTOR; T:REAL); 3
N
D D
:=A2l*X[l ] TA22*X [ 2J+B2*U (T ) ;
Con esta notación todo el modelo matem<ítico de la dinámic;:i cte! sistema puede ser escrito como sigue
:=All*X [ l J +Al2*X~2J+Bl*U ( T ) ;
D
:=X [ l];
C
:=V*SIN(X[3]-X[2]) END;
dx(t) / dt
en donde x es el vector x
?ROCEDURE RK4 (N:INTEGER; VAR X:VECTOR; VAR T:REAL; H:REAL); VAR L:INTEGER; XA,Kl,K2,K3,K4:VECTOR; H2:REAL; BE GIN H2:=H*0.5; RHS(N,X,Kl,T); FOR L:=l TO N DO XA [ L]:=X[L]+Kl[LJ*H2; RHS(N,XA,K2,TTH2); FOR L:=l TO N DO XA[L]:=X[L]+K2[L]*H2; RHS(N,XA,KJ,T+H2); ? OR L:=l TO N DO XA [ L]:=X[L]+KJ[L)*H; RHS(N,XA,K4,T+H); FOR L:=l TO N DO X[L]:=X(L]+ (Kl[L]+2.0*(K2[L]+K3[L])+K4 [ L ] )*H/6.0; T:='I'+H END; BEGIN H:=0.05; X[l]:=O.O; X[2):=0.0; X[ J J :=O.O; X[4]:=1000.0; All:=-0.444; Al2:=-l.803; A21:=0.99; A22:=-0.298; 31 :=-4.99; 82:=- 0 .0411; V:=5 0 0.0;T:=O.O; f C'R K:=l TO l50 DO 5EGIN { l} RK4(4,X,T,H); Z[K):=X[4]; [ K}:=U(T) END{l } ; GRAPHMODE; HIRES; HIRESCOLOR :5); "I'RAZAl(l,l,640,200,150,20,Z, 500.0,500.0,FALSE,FALSE,' TP~\2~.l ( l,l,640,200,150,20,'l, .0,-2.0,F.:O.LSE,FALSE,' ') ::!I D.
= ![x(t). =
(·!l
u ( f) l
(x'J ...... .x). y fes la función vector ial
r= u;,. ..... t). Para aplicar el Principio de :V1áximum a este modelo. hay que definir el modelo conjugado. cuyo estado es p = (p 1...... p .) . y cuyas ecuaciones se derivan de la ecuación del modelo original ( 4) como sigue:
h u
El control u
tiempo
'); Figura 8.2.
178 nrvn;;;: ;t~§'""ih' M~iQ:fi~~~:I&ll
80
Conclusiones
El uso de simulación en algoritmos n
dp,/dt
= -
I
a1;
aF0
ox,
ax,
--pi+--
j =1
determinada. se necesitan también algunas corridas de la simulación del sistema original, ya que para calcular el valor del criterio, necesitamos calcular toda una trayectoria de movimiento. La figura 8.3 muestra las gráficas de las trayectorias calculadas en unos primeros pasos del algoritmo. Se puede observar cómo el algoritmo busca la solución óptima, acercándose a la trayectoria deseada. En la figura 8.4 (ver página siguiente) se muestran algunos pasos posteriores. cuando el algoritmo corrige la trayectoria que ya sigue más bien a la deseada.
(5)
La función de Hamilton para este problema es n
H = - [x,(t)-g(t)]2+
¿
P, f,
181
(6)
j : l
4
Según el Principio de Máximun:i. el control óptimo tiene que maximizar el hamiltoniano (6) para casi todo t E [O, En consecuencia, el problema onginal se reemplaza con el problema de búsqueda de máximum de H con respecto a u, con la restricción um•n < u < umu· El gradiente del Hamiltoniano está dado por
5
_::-
n.
3
1
¡;¡
~='' "" ~ l
.::
-
2
n
grad H = oH/dU
=
I
P, ar,;au
=
(7)
P1 bl +Pi b,
j= 1
Según este gradiente de H se puede cambiar u en cada iteración del algoritmo. La forma general del algoritmo es como sigue:
Paso l. Paso 2. Paso 3. Paso 4. Paso 5. Paso 6.
Escoger un control inicial permisible. Calcular y guardar en la memoria la trayectoria x(t) con el control actual, según ecuación (4). Calcular la trayectoria p(t) según la ecuación (5) yendo atrás en el tiempo del modelo. Calcular el Hamiltoniano H y el gr ad H para todo t [O. 71. según (6) y (7). Corregir el control, sustituyendo u =u (anterior) - e grad H para todo t E(Ü, 71 , en donde e tiene un valor positivo. Calcular el valor del criterio x 0 • Ir al paso 2.
Ésta es una versión simplificada que usa el método de gradientes para maximizar el Hamiltoniano. El proceso iterativo se puede parar según un criterio de paro. por ejemplo cuando ya no se observa ningún mejoramiento del criterio de controlx0 • Observemos que cada uno de los pasos 2 y 3 contiene una corrida de un modelo de simulación. y todo el algoritmo requiere muchas corridas de los dos modelos dinámicos. Además. el paso 5 del algoritmo usa un valor e que tiene que ser calculado de tal manera que minimice al criterio de control en la dirección actual de búsqueda. Pero para minimizar el criterio yendo en la dirección
. ---·"
Tiempo
Figura 8.3.
8.6
Conclusiones El algoritmo de control óptimo descrito anteriormente es un ejemplo más de las aplicaciones de simulación de sistemas dinámicos. Se puede observar que un buen modelo de simulación para el sistema que intentamos controlar de una manera óptima es indispensable y tiene que ser bien preparado. junto con un modelo similar para e! sistema conjugado. Los modelos corren bajo el control del programa de optimización y no bajo e! control del usuario. como ocurre en las aplicaciones más comunes de simulación. Por eso. el modelo tiene que ser preparado como un procedimiento que no tiene ninguna operación de entrada-salida y su código tiene que ser optimizado con respecto al tiempo de ejecución. Aplicaciones de simulación como ésta fueron .
'2
El us o de simulación en aigoritmos
CAPÍ,.fULO 9 --
Simulación de SIDA
----
y del sistema inn1unológico hu111ano
Control
del gra<:!e_n~e - - - - - - - -~ · - - ~~V~ 1- cero - - - - - - ___-;~ ¡p.
N. ,
--------~------
-i1
E! gradiente
Ti empo
1
L~~~~~~~~~~~~~Figura 8.4.
hace pocos años . demasiado lentas para ser usadas en el control de procesos en tiempo real. Recientemente, esta restricción es cada vez menos significativa. por los avances de la tecnología de computación . La aplicación de microprocesador es muy rápidos y sistemas paralelos de cómputo hace posible las aplicaciones de este tipo aun para los procesos que por su naturaleza son muy rápidos '"' 1•
9.1
Simulación de la pI'opagadón del SIDA La simul ació n por computadora siempre ha sido una herram ienta importante en muchas áreas que sirven direc tamente a la so cied ad . Las aplicaciones en el campo de la medicina y en todo el sector de la salud son numerosas . La propagación y los m ecanism o s del SIDA l Sínd rome de Inmunodeficiencia Adquirida) es actualmente uno de los prob lemas más importantes . La simulación se aplicó en muchas ocas iones en la investigación relacionada con el SIDA. Vamos a com entar algunos ejemplos de los trabajos publicados recientemente. Ron Coiorth (Department of Computer Science Engineer i ng, Liniversity of Arkansas) y sus colegas desarrollaron un paquete de simul ación, para pronosticar el desarrollo de la eníermedad . El m étodo toma en cuenta el hecho de que la población en la cual se desarrolla la epidemia está limitada. Esto significa que e! crecimiento exponencial de l número de casos puede ocurrir solamente en la fase inicial de la epidemia. Posteriormente. la curva de crecimi ento tiene que entrar en la fase de saturación . siendo una curva de tipo " sigmoidai~. Es t as curva s p ue den ser calc ul adas basándose en los d atos d e la fase in ici al de! proceso que se modela. En modelos de este tipo los más im portantes son los datos disponibles y las posibles fl uc tuacio nes al eator i as de los parámetros del modelo. Desgraciadam ente. exi ste una gran incertidumbre sobre los modelos d el SIDA. que se ha mo strado en el reporte ·'Bristol-\faye rs~ (vea !as r eferenc i as) . Analizando los pronó st ico s para el afio 2000 en !os Est ados Unidos. podemos v er que ':'!l -pronóst:co
.~_.j.;..f11.:;- ~{.:,¡i_
[1'4
Simulación de SIDA
promedio" habla sobre 1.000,000 de casos, pero este número oscila entre 100,000 y 10,000,000 de un pronóstico a otro. Los datos que usó el grupo de Goforth vienen del Centro de Control de las Enfermedades (Center for Desease Control, CDC). en Atlanta, Georgia. El CDC publica el Reporte Semanal que contiene datos más recientes y los más confiables que se pueden conseguir sobre la enfermedad. Los datos del Reporte vienen en la forma desglosada entre 12 categorías o "clases del comportamiento sexual" que incluyen 7 diferentes categorías de homosexuales, 5 categorías de bisexuales (hombres y mujeres) y 11 categorías sobre !a manera de transmisión (homosexuales. drogadictos y otros, hombres, mujeres y niños). Según Goforth. el modelo para la propagación del SIDA, así como de todas las demás enfermedades venéreas ("sexuallytransmitted disease", STD) depende de los siguientes parámetros: l.
2. 3.
r-!:l!'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......;¡,._;d
M
o
"'
"' ..o
"'o
UJ
t-
()
;=
UJ
u.
~
!i
La tasa de disminución del número de afectados. Ésta es la tasa de mortalidad, ya que hasta el momento no se encontró ningún remedio para la enfermedad. La tasa de cambios de la pareja. Éste es el número de nuevos contactos por persona y por año. El riesgo (probabilidad) de la transmisión de la enfermedad a una nueva pareja.
Además de estos factores. en el caso del SIDA hay que tomar en cuenta una posible transmisión entre los drogadictos. El modelo de Goforth simula la trayectoria del crecimiento de la epidemia en el espacio de dimensión 12, según las 12 categorías de personas susceptibles, sobre las cuales existen datos en los reportes del CDC. Así, por ejemplo, la tasa de cambio de la pareja y las probabilidades de contagio son matrices de la dimensión 12 por 12. La simulación se lleva a cabo con la suposición del carácter "sigmoidal" de las trayectorias. Esto significa que el modelo no es estrictamente "simulacional" en el sentido de que la transferencia de estados no está descrita por ecuaciones diferenciales o por una sucesión de eventos, como se consideraba en los capítulos anteriores. Sin embargo, el programa que se desarrolla basándose en las curvas sigmoidales parece reflejar bien la realidad . Los resultados son bastante alarmantes. Como muestra la figura 9.1. se espera en la década de los noventa, alrededor de l4 millones de casos (en los EE.UU.), y, para el año 2000, el número total de muertes va a ascender a 25,000,000. La Sociedad de Simulación por Computadora dedicó todo un número de su boletín "Simulation" a la simulación de la propagación del SIDA (Simulation. Vol.54. núm. 1, Enero 1990). D.J. Ahlgren y AC. Stein publican (en el mismo número de Simulation) un artículo sobre la dinámica de la enfermedad. En el método que se presenta se pone más atención en los siguientes problemas:
o
"'
>_J $:
UJ
;z
... o (.)
o
Q
o e:: •:::l
"'..o 8 "'
en
V
"' <{
a o
UJ
t-
oUJ
u.
~
+
Vi
v -o ~ ~
-o
a. V
~ V
-o
o
~
;
"'
:¡
-o
en
:::e:
"' ~ i-=.,.
<(
UJ
e
o
~
o
"'
t-
"'
¡;;¡
o
"'
-"' - -.,. -"'
o
"'
.,.
"'
o
v "'
1 o '-'
·;:"'
o
a:.....;
e;
e
~ ¡:;::
Simulación de la propagación del SIDA ll:Si1
187
Simulación de SIDA
l.
El desarrollo de la descripción determinística o estocástica de la
2.
selección de la pareja. Característica de los cambios en el comportamiento de las perso-
3.
nas susceptibles. Variaciones en la probabilidad de la transmisión del virus en distintas etapas de la infección.
Ahlgren y Stein buscan la descripción de la dinámica de Ja epidemia en la forma de un sistema de ecuaciones diferenciales. Se definen 26 variables de estado del modelo de la transmisión de la enfermedad y más de 50 variables y parámetros para el modelo del grupo de drogadictos. Se consideran por separado algunos sectores de la sociedad, como, por ejemplo, el sector de reclusorios~ jail sector) dor.de la enfermedad se propaga de manera distinta_ La dinámica del modelo se describe con un número de ecuaciones diferenciales, las cuales se introducen en el paquete de simulación STELLA, mencionado en el capitulo 7. STELLA permite editar la estructura del modelo en la forma gráfica (una red de "fl ujos" y uaimacenes") y resuelve las ecuaciones del modelo. Los experimentos que se llevaron a cabo con este modelo se enfocaron más en la determinación de la influencia de unas medidas y cambios en el comportamiento de la sociedad que en el número de nuevos casos. Así, por ejemplo. se ha mostrado que la estrategia ilamada SL++ que consiste en incremento en el número de lugares en los centros de tratamiento a corto y largo plazo reduce considerablemente el número de casos (la duplicación de estos lugares puede reducir por 10% el número acumulativo de nuevos casos hasta el año 2004). La política TP++ ( testing/ protection increased) que consiste en 100% de personas sometidas a la prueba del SIDA y 100% de agujas limpias entre los drogadictos, puede reducir hasta 27% el mismo número. Los experimentos de Ahlgren y Stein consisten en averiguar la influencia de muchas estrategias distintas y representan una fuente de información valiosa para las autoridades correspondientes en su lucha con la epidemia. Virkkunen y Hamalainen (Helsinki University oi Technology, Finlandia), publican en el mismo número deSimulation (Vol.5, núm.l, 1990] otro método de simulación del SIDA. El objetivo principal de su trabajo es averiguar el efecto de saturación en la curva de crecimiento de nuevos casos en una población finita. Hasta el momento los datos alcanzables muestran que esta curva sigue siendo exponencial duplicando el número de casos (acumulativo) cada año_ En el modelo de Virkkunen y Hamalfünen la parte inicial de esta curva es también exponencial, con periodo de duplicación (casos nuevos) de 1.5 años. Ya que los datos reales no muestran nin~JUna saturación. la simulación puede proporcionar una información importante sobre los pronósticos a largo plazo. El parámetro más importante del modelo de Virkkunen y Hámalainen es la probabilidad de la transmisión de la enfermedad. Se investiga cómo esta probabilidad depende de! número de cambios de pareja du-
rante un año. Otro parámetro importante es el periodo de incubación del v:rus, que también es una variable aleatoria. Se adaptó para esta variable la distribución de tipo Gamma con promedio de 5.6 años y desviación estándar de 2. 71 años, aunque los autores admiten que la distribución es incierta y depende de la persona infectada y de muchos más factores. Basándose en é~tas y otras suposiciones , Virkkunen y Hamalainen simulan el desarroilo de la epidemia dentro de una población limitada. El objetivo de estos experimentos es investigar el fenómeno de saturación, esto es, averiguar hasta qué momento la curva de crecimiento para el número de casos tiene carácter exponencial. Se investigó la epidemia sobre el intervalo de 25 años con la condición inicial·! (un enfermo). El experimento con la población de 2 millones de personas mostró que la saturación no se alcanzó en este periodo. Dentro de una población reducida a 200,000 personas la curva de crecimiento deja de ser exponencial después de 15 años. y para la población de 2000 personas dentro de 9 años. Así, los resultados no son muy optimistas y muestran que en el futuro próximo no podemos esperar ninguna baja significativa en la tasa de crecimiento de la enfermedad. Milan Kotva y B. Zdenkova presentan. en e! mismo número de Simulatíon, otro modelo del desarrollo del SIDA, suponiendo que el periodo entre el momento de contagio y la primera manifestación de la enfermedad tiene la distribución de Weibull. El objetivo de este trabajo es calcular el número posible de personas contagiadas con el virus del SIDA (HIV) que no muestran ningunos síntomas. Esta iníormación es importante en la planificación de las estrategias preventivas. Los modelos mencionados aquí representan sólo unos ejemplos de la inmensa investigación que se lleva a cabo en el campo de la simulación del SIDA. Hasta el momento la investigación está todavía en su etapa inicial y sus resultados se verificarán en un periodo de 10 a 15 años. Viendo el enfoque de los métodos de modelación hay que observar que casi todos los autores buscan una descripción matemática de la epidemia, casi siempre en la forma de ecuaciones diferenciales o en diferencias. Esto parece ser la mayor debilidad de los modelos desarrollados. Las siguientes dos observaciones se reiieren no sólo a la simula~ ción de la epidemia del SIDA y del sistema inmunológico, sino también a la simulación de cualquier sistema complejo. Primero, para describir un fenómeno tan complicado como es el desarrollo de una enfermedad es poco probable que un modelo tan primitivo como son las ecuaciones diferenciales pueda dar buenos resultados . Segundo, la mayoría de los autores olvidó el hecho que antes de buscar una ecuación que describa un fenómeno real, hay que mostrar que la ecuación existe. La suposición de que la trayectoria del sistema está descrita por una ecuación diferencial ordinaria implica que el sistema no tiene ninguna otra memoria que la que resulta del modelo matemático. Si el modelo incluye. por ejemplo. 50 ecuaciones diferen-
Modelos y simulación del sistema inmunológico 188
189
Simulación de SIDA
ciales ordinarias de orden uno, el vector de estado tiene dimensión 50 y representa toda la "memoria" del sistema. En el caso de la propagación de una enfermedad tan compleja como el SIDA una simplificación de este tipo es imposible. Por otro lado, la simulación, hasta el momento, es la única información alcanzable sobre la posible dinámica de la enfermedad y no podemos darnos el lujo de rechazarla. Otra posibilidad de simular fenómenos complejos es usar modelos de tipo "comportamental" (behavioral). que significa aplicación de métodos de simulación y lenguajes orientados a objetos (Simula, Pasión , Smalltalk, vea capítulo 5) . Modelos de este tipo simulan el comportamiento de los componentes del modelo sin usar modelos matemáticos. En la siguiente sección se descr ibe un ejemplo d e la simulación orientada a objetos , aplicad
9.2 9.2.1.
Modelos y simulación del sistema inmunológico Introducción La intensa investigación que se lleva a cabo recientemente permite entender cada vez más, los principales mecanismos del sistema inmunológico humano (SIH). El problema de modelación y simulación del SIH resulta ser mucho más difícil de lo que se pensaba hace unos años. En la opinión de muchos especialistas , SIH es uno de los más complejos y sofisticados sistemas del cuerpo humano, quizás el segundo en complejidad después del sistema nervioso central. El conocimiento de los mecanismos básicos del sistema nos permite construir los primeros modelos todavía muy simplificados y llevar a cabo interesantes experimentos simulacionales. La simulación del S!H puede ser útil para explorar sus propiedades dinámicas. El aspecto didáctico también es importante. Modelos simulacionales pueden usarse en la enseñanza de la inmunología y en la divulgación de los conocimientos básicos en este campo. Existe una inmensa literatura sobre la modelación matemática del SIH. Unos modelos sencillos como. por ejemplo, el modelo de la tolerancia inmunológica en los pollos (Hrabal 5º1), describen algunas respuestas del sistema. Bel\l51propone un modelo basándose en las llamadas ecuaciones "cazadorpresa". Muchos autores siguen los conceptos de Jernel 5 ll y Richterl9 11 los cuales desarrollaron la "teoría de redes" en la inmunología. Vamos a comentar los conceptos básicos de esta teoría más adelante. Hoffman y coautores!"l analizan la estabilidad de los modelos de tipo "red". Unas aproximaciones lineales del modelo del SIH propone Moh lerí" I. Bocharovl"I proporciona un modelo no lineal
·~'ll
para la respuesta antiviral del S!H. Belykh,17 1 usa un sistema de ecuaciones diferenciales con retraso. Otro tipo de ecuaciones resulta cuando se usa el concepto de Von ForsterPº"I, quien describe el crecimiento de poblaciones de células usando ecuaciones diferenciales parciales. Perelson1~ 0 1 sugiere que el lenguaje de la teoría de gráficas puede ser útil cuando se analizan modelos de tipo "red" y proporciona como ejemplo un sistema de ecuaciones que describen el comportamiento de anticuerpos, células "B" y antígenos . Una sugestión interesante de Perelson es que, bajo algunas condiciones , el SIH no puede actuar en un estado estable, siendo un sistema inestable que cambia su estado constantemente. En el artículo de Farmer, Packard y Perelsont 31 1 podemos encontrar lo relacionado con las habilidades de "aprendizaje" del SlH y el modelo simulacional correspondiente. Es imposible mencionar aquí todas las contribuciones significativ as. Mohler y coautoreslb•I, por ejemplo, proporcionan 187 referencias en su artículo. La lista de referencias del artículo de Boy er y coautoresl•71 comprende 458 (cuatrocientas cincuenta y ocho) posicio nes. Hoffman y coautoresl•71 calculan que actuaimente se conocen más que 1,000,000 de hechos (fenómenos , propiedades) en la ciencia de la inmunología. Este número es el resultado de la multipiicación del número de trabajos publicados cada año (son alrededor de 8.000) por el número de hechos que se describen en cada artículo, y por el periodo de 25 años del desarrollo de la inmunología. La mayoría de los modelos publicados del SIH se desarrolla en la forma de un sistema de ecuaciones diferenciales, que se derivan de los balances para las cantidades de macrófagos, células "T" , "B". anticuerpos, etc. Por ejemplo, el modelo de Marchuk, Petrov y Druzchenko166 1 consiste en 7 ecuaciones que describen las velocidades de crecimiento de poblaciones de células involucradas en el SIH, para los modelos en cancerología. Las ecuaciones tienen tres diferentes componentes de retraso. Ecuaciones de este tipo pueden resolverse fácilmente. Sin embargo, utilizando modelos tan sencillos no hay que olvidar que las ecuaciones diferenciales de tipo "muertes y nacimientos " que se usan, son válidas solamente cuando se cumplen unas suposiciones muy estrictas sobre el sistema real. No todas las poblaciones que crecen cumplen con estas suposiciones, que refieren a la estacionalidad de los procesos estocásticos involucrados. Una suposición fundamental de la ecuación de muertes y nacimientos es que el proceso no tiene "memoria". Para el modelo de Marchuk. Petrov y Druzchenko esto significa que las siete variables de estado más las tres variables de retraso y las variables de entrada determinan completamente el estado del sistema en el momento. que parece ser una suposición poco realista para el SIH. Esta observación hace todos los modelos del SIH basados en las ecuaciones diferenciales poco confiables . Mi opinión personal es que es poco probable que el SIH obedezca a cualquier ecuación diferencial. en general.
Modelos y simulaci ón del sistema inmunológico
191
190 · Simulación de SIDA
9.2.2
9.2;3 Un modelo discreto del sistema inmunológico y del SIDA
Teoría de redes en la simulación del sistema inmunológico
Este enfoque en la inmunología fue desarrollado por Jerne y Richter151. 91 1 y modificado posteriormente por muchos investigadores. Consiste en la observación de que los anticuerpos que combaten directamente a virus y bacterias tienen dos regiones en su superficie, llamadas "paratope" y "epitope". El paratope funciona como una llave que puede "abrir" el epitope correspondiente de una célula y desactivarla. El epitope es lo que caracteriza el tipo de célula y permite al anticuerpo distinguir entre las propias células del organismo y las células o virus invasores. El sistema inmunológico produce constante· mente los anticuerpos con trillones de paratopes distintos, que están listos para combatir cualquier infección. Uno de los conceptos básicos de la teoría de redes es que los mismos anticuerpos también tienen sus epitopes y pueden atacarse entre sí. formando una red de interacciones. De esta manera, el SlH está en permanente movimiento, cambiando su estado actual y modificando constantemente el número de anticuerpos con distintos paratopes. respondiendo así a los estímulos e infecciones exteriores. Los anticuerpos son producidos por células de tipo "B" del SIH. Estas células, a su vez, se activan a través de un sistema sofisticado de mensajes que llevan sustancias llamadas linfoquines. Todo el mecanismo está controlado por las células auxiliares de tipo "H". El virus del SIDA (el HIV) ataca exactamente a las células "H", rompiendo efectivamente toda la cadena de actividades del SIH. La muerte no la provoca el SIDA. sino cualquier otra enfermedad que ataque el organismo infectado con el HIY. El modelo básico en la teoría de redes consiste en el siguiente sistema de ecuaciones:
N
L
dx/dt=S-x, j
=1
K,f1 (1)
en donde x, es el número de anticuerpos con i-ésímo para tope, el vector Ses el flujo de nuevos anticuerpos producidos por el SIH, y K es una matriz de coeficientes. K, 1 es la probabilidad de que el paratope ~¡" reconozca al idiotope K, 1 = 1 significa que el paratope "i" reconoce plenamente al idiotope "}",y K,1 =O significa falta de reconocimiento. La ecuación (1) tiene muchas versiones. En algunos modelos la dimensión del sistema es también variable. Ya que la dimensión N es muy grande y el sistema tiene muchas interacciones internas. es poco probable que la solución de (1) sea estable. Por eso se supone que en la realidad el SIH nunca ha tenido un estado estable y está en cambio
En el modelo descrito aquí se usa el método de simulación de eventos en lugar de la simulación continua. La idea es simular los eventos más importantes que ocurren en la vida de cada célula del SIH. Desde el punto de vista de la práctica, esto parece ser imposible, tomando en cuenta el número de objetos (células) involucradas en el funcionamiento del sistema real. Sin embargo, tenemos que tomar en cuenta los siguientes hechos. Primero, las computadoras que se usan actualmente permiten llevar a cabo simulaciones con miles de objetos activos. En un futuro próximo simulaciones similares se real izarán fácilmente con millones de objetos. Segundo, para averiguar el comportamiento de poblaciones grandes. no es necesario generar conjuntos de objetos del mismo tamaño que tiene el sistema real. Además, simulando un objeto con eventos discretos, no tenemos ningunas restricciones con respecto a su comportamiento estocástico. Por ejemplo. la duració n de la vida de una bacteria o anticuerpo puede ser descrita por una v ariable aleatoria con cualquier d istri bución, que permite simular poblaciones que no cumplen con las condiciones de la ecuación de muertes y nacimientos . Por eso la simulación discreta y orientada a objetos puede ser más flexible que la simulación continua que usa ecuaciones diferenciales. Otro aspecto que dis.tingue la simulación orientada a objetos de la simulación continua es que en los modelos continuos se evalúan trayectorias promedio para el número de células o virus. Ninguno de los modelos desarrollados hasta el momento proporciona datos sobre la varianza u otros momentos de las distribuciones correspondientes. En cambio. la simulación orientada a objetos da como resultado una o más posibles trayectorias del sistema y permite sacar cualquier tipo de estadísticas. El costo de la simulación orientada a objetos es , desde luego, más alto que el costo de la simulación continua. El modelo descrito aquí no pretende ser un modelo completo de S!H. Ésta es una de las versiones que pueden realizarse en una PC y más parece un "j uego inmunológico". Para realizar un modelo más real de este tipo, hay que usar sistemas computacionales paralelos con una gran capacidad. El modelo incluye los siguientes componentes:
•
·r.
permanente.
L":.:~~, -:."';..-",:f.w·
•
1Wacrófagos. Estas células del SIH son los primeros defensores. Con-
sumen todo lo que reconocen como una materia extraña al organismo. También pueden activar otros mecanismos defensivos, activando las células auxiliares de tipo "r. Células auxiliares "T'". Estas células. c uando se activan, empiezan a reproducirse más rápido. Cuando un macrófago entra en contacto con una célula "T" y la activa. se producen el "!nterleukin l y 2" (IL1, IL-2), "gamma interferon" (IF) y l a sustancia llamada BCGF que activan otras célu las del SIH.
;.i;;·!-;-,.;:~;;;.i·1:::-">;~,.-..;;-~'(>~.-6':... -:.\"'.' ;_'~~: •·~ ' ·
,·...~( - '
;>/t.~ ·:-
":-Z;;·;...~~~- :· ·
i·.--~•·
/._'<:
ó;1~0e:':<-~
·
)2
Simulación de SIDA
Modelos y simuiación del sistema inmunológico 193
•
•
• •
• •
•
Células cazadoras de tipo "T" (Killer "T" Cells). Pueden reconocer y matar a las células del propio organismo infectadas por virus, rompiendo así el ciclo de reproducción del virus. Células"B". Estas células producen anticuerpos. La superficie de cada célula B está cubierta por millones de anticuerpos, que pueden ser liberados cuando la célula se activa recibiendo al BCGF. El BCGF estimula también la más rápida reproducción de las células "B". Anticuerpos. Son moléculas producidas por las células "B", capaces de reconocer y desactivar diversos tipos de virus. Células supresoras "T". Estas células desactivan o disminuyen la rapidez de los mecanismos defensivos del SIH, cuando la infección ha sido combatida. El timo. Es el órgano que produce las nuevas células "T" y las libera al sistema de circulación sanguínea. El virus. Es uno de los invasores que entran en la sangre. Para multiplicarse, tiene que entrar a una célula del organismo, donde se multiplica rápidamente. las reglas de interacción: Al entrar en la sangre el virus busca a una célula del organismo para infectarla y reproducirse dentro de ella. Algunos virus son devorados por macrófagos, pero una gran parte logra entrar a las células del organismo y reproducirse. Las células infectadas mueren soltando miles de nuevos virus listos para infectar a otras células. Los macrófagos que devoraron al virus muestran su "antigen" (una identificación de la materia extraña) en su superficie. Cuando el macrófago entra en contacto con una célula "T~, ésta puede reconocer al antigen y activarse. Empiezan a producirse sustancias IL-1, IL-2. gamma interferon (lF) y BCGF que activan a las células "B". Las células "B" producen anticuerpos, que desactivan al virus.
Éste es un modelo muy simplificado , donde no se modela todo el mecanismo descrito por la teoría de redes mencionada anteriormente. El modelo para la infección por el virus del SIDA es similar. La única diferencia consiste en el hecho de que el virus HIV entra a estas células "T" para multiplicarse. La disminución en el número de estas células desactiva el SlH, que ya no es capaz de combatir otras infecciones. Este modelo puede codificarse en uno de los lenguajes orientados a objetos, como una cadena de eventos aleatorios. En los experimentos que se llevaron a cabo en el Centro de Cómputo de la Universidad Panamericana en México, se aplicó el lenguaje PASlON. _El listado 14 muestra la forma general (un bosquejo) del programa. Sólo se muestran los nombres de los procesos y eventos. El proceso lNGEN genera conjuntos ini¡;:iales de las células . Elevento GENER tiene algunos ciclos que generan un número de células T. B, macrófagos. etc.. así como un número de "células de cuerpoft generalizadas (body cells). El proceso VRGE controla la generación del virus
que infecta al organismo. Los objetos BOD son las células del cuerpo. El evento MULTIP describe la multiplicación de las células del cuerpo, y el evento DIE.Ses la muerte de la célula. Evento REL representa la muerte de una célula infectada, donde aparecen nuevos virus. Proceso HTC representa células auxiliares "T". Eventos RELIL2 y RELBCGF describen la producción de los linfoquines IL-1, IL-2 y BCGF. El proceso KTC describe las células cazadoras ''T". El proceso lLTEM es un proceso continuo que controla los cambios en la temperatura del cuerpo y la descomposición de los linfoquínes. El proceso MACROF describe las actividades de un macrófago. El evento EATS ocurre cuando el macrófago encuentra a un virus y lo come. Después, el macrófago busca y entra en contacto con una célula "T" (evento UNION). De esta manera se activan las células "T". que empiezan a producir los linfoquines para activar las células "B". Las células "B" sueltan anticuerpos (evento PROD) descritos por el proceso ANTIB. El evento FND del proceso ANTIB consiste en encontrar a un virus y desactivarlo. El proceso SUPRT describe las células supresoras T. THYMUS es un generador de nuevas células de tipo "T". El programa completo del modelo es bastante largo y no semostrará aquí. El programa necesita alrededor de 50 parámetros, tales como la duración promedio de la vida (natural) para las células. probabilidades del contacto entre las células y el virus, etc. Algunos de los parámetros se pueden encontrar en la iiteratura, y algunos son bastante difíciles para definir. La identificación de los parámetros para modelos de este tipo es un problema difícil y muchos investigadores trabajan intensamente para resolverlo (Belll"' . Brunif 13 1, Covan y Cupin•27 l, Jilek y Ursinovar5z: entre otros).
9.2.4
Algunos resultados Como se ha dicho antes, éste es un modelo incompleto del SIH. El objetivo de la simulación fue mostrar que es posible simular algunos de los mecanismos del SIH como cadenas de eventos discretos. Desarrollando posteriormente modelos de este tipo podemos llegar a modelos más reales que permitirán ver el comportamiento del SIH en distintas situaciones y entenderlo mejor. La PC no es la computador a definitiva para este tipo de simulaciones. Los experimentos que se llevaron a cabo en la PC pueden correr con 200-500 células de cada tipo. no más de 2000 en total. No se efectuárcn ningunas comparaciones cuantitativas con el sistema real. Las comparaciones cualitativas de respuesta simulada a la infección muestran que el comport amiento del modelo es parecido al comportamiento del sistema real. La figura 9.2 muestra una de las pantallas de los resultad os. Las barras móviles ind ican el estado actual del modelo, y la ventana co n
!'.'4
LISTADO 14
PROGRAJ.\1 IMMUN: PROCESS INGEN. l: EVENT GENER:
PROCESS ANTIB.1000: EVENTFND: EVENTDIES:
PROCESS VRGE. 1: EVENT ONE:
PROCESS SUPITT.1000: EVENT MULTIP: EVENTSP: EVENTDIES:
? ROCESS BOD,1000; EVENT MULTIP: E\'ENT DIES: E VENT REL:
PROCESS THYMUS, l; EVENT RELHT: EVENT RELKT; EVENT RELST;
r~ROC ESS
VIRUS.1000: !::X ENT MULTIP:
EVE:'.'IT
E~iTEPS:
C:VENT D!ES: PROCESS HTC.1000: EVENT MULTIP: EVENT REL: EVE:'.'JT RELBCGF: EVENT RELBCDF: EVENT RELIL2: EVENT DIES:
1 ~5
Modelos y simul<.1d éin del sistema inmunoléi gic o
Sirnu l<.1 c iíH1 de SIDA
texto contiene algunos resultados numéricos. La figura 9.3 (v er página siguiente) muestra la respuesta a una infección viral. Las trazas son t rayectorias promedio calculadas con 30 corridas de l a sim ulación, trazadas contra el tiempo. En la figura 9.4 (ver página 197) podemos ver un ejemplo del conjunto alcanzable (los valores máximos y mínimos alcanzables) para el número de células auxiliares T y la trayectoria promedio. La figura 9.5 muestra la trayectoria promedio y l os inte rvalos de confianza (con probabilidad de 90%) para el n úmero de células auxiliares "T". El número de células del cuerpo (órgano at acado. se muestra en las figuras 9.3, 9.4 y 9.5. Ésta es una salida es t ándar del sistema PASION. El programa produce más de 40 trazas diferentes. Además de esta salida, el programa puede correr en el modo d e "disp lay de eventos", donde cada evento al ocurrir manda un m ensaje a la pantalla. En este modelo el mecan ismo de reconocimien t o d el an tigen por los macrófagos y por los anticuerpos se modeló a través d e comp aración de cortos "claves" que guarda ca da objeto en fo rma d e cade nas de caracteres. El reconocimiento ocurre cuando la clave d el ~rn ticuer p o coincide con la clave del antigen del virus. El desarrollo fut uro de este modelo va a realizarse agrega ndo n uevos eventos y nuevos procesos. El m ecanismo de herenc i a ele p ropiedades de PASION permite aumentar el tamaño y l a c omplejidad el e
START {programa principal} $
?ROCESS KTC.1000; EVENT MULTIP: EVENT FND: EVEI\TT DIES; PROCESS ILTEM.1: E\ -ENT IL; EVENTTEM: PROCESS ~CROF.1000: EVENT MULTIP: EVENT EATS; EVENT UNION; E V E NT DIES:
1
TIME = BO Vir
PROCESS BCC. 1000: EVENT MULTIP: EVENT PROD: E\"'ENT DIES:
HT
MA
VI
88
IH
ID
24
Body c. =
50
H-T=
10
B- cells =
17
ant =
lnf. b =
5
lnf.H =
o
SUPRS=
0 .000
Temp. =
36.60
IL1 =
!L2=
0.018
=
Figura 9.2.
.,
KT
0.015
KTC=
EA
0 .0 25
ST
12
BCGF=
0.001
EAKT=
o
o
BCDF =
0 .001
EANT=
o
mem =
227 36
• -1 Body cal
.----1¡+-----lf----JJ------lrf-----IJ...---_jµ.:=IJ~-~ Helper T X -1Killer T t.-1 Virus L -1 Infectad
ANTIBODY
:;~F=====~-......=~~::::::::::8:~==~~~1-1-Antibody -1
BODY CELLS
VIRUS
Max
=
1. 678057301BE + 02
time -1
O. OOOOOOOOOOE + 00
Min =
figura 9.3.
r - - -- - -- - - - - -- - - - · - - -·
Average
100 time ·sleps. Marl
-
/
i
.,"
....¡
H,
~~
H
)
IJ h
'
,...
IJ
v
/
11' /
)
~
h
\
V )
'-
V
'
\ \
l/
' v
/
\
\
V
\
I
\
\
1
Maxirnum =
Figura 9.4.
1
5.0689
1
Minirnum =
1
1
0 . 0000
1
1
1
1
time -1
v
Modelos y simulaciíin del sis tema inmuno lógico
19'!
modelos de este tipo usando declaraciones preparadas ameriorrnente. Además . el programa fuente en PASION es "portable" en el sentido de que produce el código correspondiente en Pascal, que puede ser compilado con un compilador de Pascal en cualquier máquina.
1' Q)
.§
o o o
L~
>-
O; "-
~
2 "' <':i
-
>
-~
"~>
ss
ss \
Q)
u
e
L_
·e:""'º ou -e e
"'
t.n a;:¡
-
2:'0
-
::i
u
Q)
Ol
'°a;
>
<{
ff/ff
"'>
"' "' Cl :¡;
>
<
~~
-
· e~ u ill c
e
u
:g"' c o u
'
r1 ::;:
..
~
::; .s
""
::1
1
00
G:
Referencias
l Aaltonen M., Tanttu J.T., Pohjolainen S.A.,"A distributed pararneter systern simulator", SIMULATION 47(6), October 1986. pp.145-151 2 Aaltonen M., Tanttu J.T., Pohjolainen S.A., "TDP - a distributed parameter sistem simulator", Third IFAC! IFIP lnternational Symposium on Computer AidedDesign in Control and Engineering Systems, The Technical University of Denmark, 1985, Lyngby, Copenhagen, Denmark 1985 3 Arce Medin E., "SSDC2: Un simulador de sistemas dinámicos", Revista de computación 010, 7(4), Septiembre 1984 Fundación Arturo Rosenblueth, México. 4 Bailes P.A. "A low-cost lmplementation of coroutlnes in C", Software Practice and Experience, 15(4), 1985. 5 Bell G.I., 1973a. "Predator-prey ec¡uations simulating an imrnune response ", Math. Biosci., Vol.16, pp. 291-314. 6 Bell G.l., 1973b. "Theoretical models for cell-cell interactions in immune responses", in: Physical chemical aspects of cell surface events in cellular regulation, DeLisi and Blumenthal (Eds.). Elsevier/North Holland, New York. 7 Belykh L.N., 1983. "On the computational methods in disease models", in: Jfathematical Modeling in fmmunology and Medicine, Eds. Marchuk and Belykh, North-Holland Publishing Company. 8 Bent M.E., "Pilot GSP IV Manual", Management Services, British Steel, Sheffield, England 1976.
202
Referencias
Referencias 9 Black .J.R., Even J.C. Jr.,"Computer solution of queuing models'', SIMULATION, October 1973. pp. 113-116.
203
25 Conway R., Maxwell W.L., Worona S.L., 1986, User 's guide to XCELL factory modeling system, The Scientific Press, Palo Alto, California.
10 Brown D.. Hutsinger R.C., '.'A partía! simulation of an X.25 network leve! protocol in Simula with Demos", in Simulation in Ada, Proceedings of the Eastern Simulation Conference on Simulation in Ada, SCS, Norfolk, VA. 1985.
26 Coss Bu R.. Simulación. Un enfoque práctico, L!MUSA, 1986. 27 Cowan R, Cu pin D., 1981. •A meth od for the measurement of variability in cell lifetimes", Math. Biosci., 54, pp.249-263.
11 Bocharov L.N., 1983. "Mathematical model of the antiviral immune response of a cellular type". in: Mathematical Modeling in lmmunology and Medicine, Eds. Marchuk and Belykh, North-Holland Pub!ishing Company.
28 Dahl O., Nygaard, 1986, "Simula - An Algol-based Simulation Language", Communications o{ the ACM no.9, pp.671-678. 29 Druzchenko V.E .. 1983. "Mathematical model of the immune response of humoral type", in: Mathematical 1Hodeling in lmmunology and Medic ine , Eds. Marchuk and Belykh. North-Holland Publishing Company.
12 Boyer C.:\11., 1988. "Antigenic celi surface rnarkers in human solid tumo rs", Antihody, lmmunoconjugares and Radiopharmaceuticals, Vol l. no.::!, Mary Ann Libert. lnc.
30 El '.\1araghy. H.A..1982, "Simulation and graphical a nima tion of advanced manufacturing systems", J. o f .Hanufactunng Systems. 1:53-58.
J:l Bruni C. Gerrnani A., Koch G., 1978. "Optima! derivation of antibody dis-
tribution in the immune response fro m noisy data". in: Proceedíngs o f the >ith IFIP Conference un Optimi;:;utiun Techniques, Springer-Verlag.
31 Farmer .l.D.. Packard N.H., Perelson A.S.. 1986. "The immune system, adaptatlon and machine learning", Physica 220. :'lort h-Holland , .AJ'llsterda m, pp. 187-204.
14 Bui Tien D.. "Solving Stiff Differential Equatio ns" in: "The Simulation of Physical Systemas··. SlMULl.TION37(2), pp.37-46, August 198 1.
32 Feller W., An lntroduction to Prohahility Th eory and its Applications, John Wiley & Sons, 1957.
15 Buxton J.:-.1 .. Laski J.G., "Control and Simulation Language", Computer Journal, 5. 19fi2. pp. 194-199.
33 Fishman G.S .. Concepts and 1\!feth ods in Discrete Event Digital Simulation, John Wiley & So ns, New York. 1973.
16 Canales Ruiz R.. Barrera Rivera R.."Análisis de sistemas dinámicos y control uutomútico", L!MUSA.
34 Fan 1.5., Sackett P .J., 1988, "A PROLOG sim ulator for interactive flexible manufacturing systems control", S/i\,/ULATION 50(6). pp. 239-247.
17 Carson .J.S.,"Convincing Users of :Vlodel's Validity Is Challenging Aspect of Modeller's Jo b ",lndustnUI Engineering, June 1986, pp.74-85.
35 Ford D.R., Schroer B.J., "An exper t manufacturing simulation s ystem", S/.\1ULATION 48(5). 1987, pp.193-200.
18 Castlevitz D.M., Chisansky L.J., Kronberg P., Chukman L.D., VISICALC: Home and Office Companion, Osbornei McGraw-Hill. New York. 1982.
36 Forrester J. W. In dustrial Dynamics , 1961. 19 TI1e Charles Stark Draper Lab. lnc., 1984, "Flexible \1anufacturing Systems Handbook". No yes Publications.
37 Gordon G., System Simulation, Prentice-Hall. Englewood Cliffs, New Jersey, 1969.
20 Ce!lier F.. Blitz A.E., "GA5P V: A Universal Simulatíon Package".Proceedings of IFAC Conference, 19i6.
38 Gordon G., The Application ofGPSS ro Discrete _\ystem Simulation, PrenticeHall, Englewood Cliffs , New Jersey, 1975.
21 Ching-Fang Lin. Khai-Li Hsu. ''Digital sirnulation of guidance and control system uf an advanced supersonic lighter", SIMULATION, 42( 1), 1984.
39 Gottwald Bjorn A. Manner Gerhard . "Comparison of numerical methods for Stiff Difíerential Equatio ns in Biology and Chemistry", SJMULAT!ON '.l8(2), Fe bruary 1982, pp.61-66.
2:Z Clementson A.T.," ECSL. Proceedings of the 1918 UKSC Conference on Com{Jllter S imulation, IPC Business Press. Guildford, England. 1978, pp.174-191.
40 Gray P. Borovits l. "The cont rasting roles of Mo nte Cario simu lation and gaming in decision support systems", SIMULATION. Vol ·H. no. 6. December 1986.
23 Collins W.R., Feyock S.. King LA., \1o rell L.J., " Moving target. distributed, real-time simulation using Ada", in "Simulation in Ada", Proceedings ofthe Eastern Simulution Conference on Sirr.ulation in Ada, SCS, Norfolk, VA, 1985.
41 Hay J.L.. Crosbie R.E., "ISIM -A Simulation language fo r microprocesso rs", Sf.\fúIA.TlON .t3(3), September 1984. pp.133-136.
24 Conte S.D .. de Boor C.. Análisis Numérico Elemental, McGraw-Hill.
•~.;'¡'SilL-
'-9f:-:"i•·~-~f~
'0J;:;~
-~'l'f·;,;_;.·":,
:;. >> ::>~/· . ~;;( ·..:;_;,;:':.":- ..-.'.;·::>,
..~. 'i~
11 -. .
, . .., .
~04
Referencias
Referencias
205
42 Hibbard P., Hisgen A., Rosenberg J., Shaw M., Sherman M., Studies in Ada Style. Springer-Verlag, 1985.
57 Koehler T., Patterson D., A Taste of Smalltalk, W.W.Norton & Co .. New York 1986.
43 Hills P.R., "SIMON - a Computer Simulation Language In Algol 60", Digital Simu/ation in Operational Research, Hollingdale, ed., English University Press, London, England, 1965.
58 Kotler P., Marketing Decis;on Making: A Model Building Apptoach, Holt-Rinehart-Wilson, 1971.
44 Hooper J.W .. "Strategy-related characteristics of discrete-event languages and models", SIMULA TION 46(4), 1986, pp.153-159. 45 Hoffmann G.W., 1978. "lncorporation of a non-speclfic T cell dependent helper factor lnto a network theory of the regulation of the lmmune response", in: Bel!, Perelson and Pimbley (Eds.), "Theoretical lmmunology", Marce! Dekker, New York. 46 Hoffmann G.W., 1982. "The appllcatlon of stability criteria in evaluating network regulation models", in: De Lisi and Hiernaux (Eds.). "Regulation of lmmune Response Dynamics", Vol!, chapter 2 . CRC Press . Boca Raton. 47 Hotfmann G.W., Kion T.A.. Forsyth R.B., Soga K.G .. Cooper-Willis A.. 1988, "The N-
59 Kritz J., Sandmayr, "Extenslon of Pascal by coroutines and lts application to quasi-parallel programming and simulation", Software - Practice and Experience 1O, 1980. 60 Kuhlman F., Buzo A., Raczynski S., "Simulación digital de sistemas: una introducción", Revista de computacion OIO. 7(4), Septiembre 1984, Fundación Arturo Rosenblueth, México. 61 Lambert J.D., Computational Methods in Ordinary Differential Equations . .lohn Wiley & Sons. 1973. fi2 Ledgard H.. .4.da. An introduction, Springer-Verlag, 1983. 63 Lee E.B .. Markus L., Foundation of Optima! Control Theory, John Wiley & Sons, 1967.
48 Holthe H.F., Marketing. McGraw-Hill. 1981.
64 Lenz J.E., Talavage J.J., 1977, "General Computerized Manufacturing Systems Simulator (CCMS)" , Report no.7. Purdue University, School of Industrial Engineering,West Lafayette. lnd.
49 Hooper J. W., "Activity scanning and the three-phase approach ",SIMULA TJON 47(5), November 1986, pp.210-211.
65 Mamalis A.G., Bilalis N.G., Konstantinidis M.J.,1987, "On simulation modeling FMS", SIMULATJON 48(1), pp.19-23.
50 Hraba T., Klein P., Dolezal J., 1983. "A simple mathematical model of immunological tolerance in chickens", in: Mathematical Modeling in Immunology and Medicine , Eds. Marchuk and Belykh, North-Holland Publishing Company.
66 Marchuk G.l., Petrov R.V. , 1983. "The mathematical model of the antivira.l immune response", in: Jfathematical Jfodelling in lmmunology and Medicine, Eds. Marchuk and Belykh, North-Holland Publishing Company.
51 Jeme N.K., 1974. "Towards a network theory of the immune system", Ann. lmmunol., 125C. 52 Jilek M.. Ursinova Z., 1970. "The probability of contact between the immunocomponent cell and antigen", Folia J1icrobiol., Vol.15, pp.294-301. 53 Jilek M., 1973. "lmmune response and its stochastic theory", in: Proceedings of the 3rd IFAC Symp. on ldentification and Parameter Estimation, Hague, Netherlands, pp.209-212. 54 Kiviat P.J., Villanueva R.. Markowitz H., The Simscript ll Programming Language. Prentice-Hall, 1969.
67 Mellichamp J.M., Wahab A.F.A., 1987, "An expert system for FMS design", SIMULA TION 48(5), pp.201-208. 68 Mohler R.R.. 1983 "On mathematics and statistics in immunology" . in: Mathematical .\1odelling in lmmunology and !11fedicine, Eds. Marchuk and Belykh, North-Holland Publishing Company. 69 Mohler R.R., Barton C.F. and Hsu C.S., 1978. "T and B cells in the immune system", in: Bell, Perelson and Pimbley (Eds.), "Theoretical lmmunology". Marce) Dekker. New York. 70 Mohler R.R., Bruni C.. Gondolfi A., 1980. "A system approach to immunology". Proc. IEEE, Vol. 68. pp. 964-990 .
55 Kleijnen J.P.C.. Statistical Techniques in Simulation: Part l. ~1arcel Dekker, !ne., New York 1974.
71 Murray-Lasso M.A., "Anatomía de un compilador para simulación dinámica", Revista de Computación 010, 7(-t). Septiembre 1984. Fundación Arturo Rosenblueth. :\léxico.
56 Koehler T .. Patterson D., ·A Small Tas te of Smalltalk", BYTE 11(8), August 1986. pp.145-159.
72 Naylor T.H .. Balintfy J.L., Burdlck D.S .. Hong Chu. Técnicas de Simulación en Computadoras. LIML'SA. 1982.
2!Hi
Referencias
Referencias
207
73 Naylor T.H., "The impact of Simulation on Soviet Economic Reforms" SIMULA TION 51 (2). Agosto 1988.
90 Raczynski S., 1988, "Process hierarchy and inheritance in PASION", SIMULA TION 50(6).
74 Nerlove M, Arrow K.J., "Optima! Advertising Policy Under Dynamic Conditions", Economics, May 1962.
91 Richter, P.H. Jr., 1974. "Periodic solutions of predator-prey equations simulating an immune response", Math. Biosci., Vol.20, pp. 27-SL
75 O'Keefe R.M., "The three-phase approach: A comment on 'strategy-related characteristics of discrete-event languages and models'", SIMULATION 47(5), November 1986, pp.208-210.
92 Robinson S.B., 1986, "Stella", BYTE 11(13).
76 O'Keefe R.M .. Davies R.M. "A microcomputer System for Simulation modelling", European Journal ofOperational Research 24(1), 1986.
93 Rosenblueth A., Wiener N.. " The Role of Models in Science, Philosophy of Science", XII, No.4, October 1945, pp.316-321. 94 Said Ashour, Jha R.O., "Numerical transient-state solutions of queulng systems", SIMULA TION, October 1973, pp.117-122.
77 Ogata K.. Ingeniería de Control Moderna. Prentice Hall. 1980. 78 Pascoe G.A .. "Elements of Object-oriented Programming", 8 YTE 11 (8), August 1986, pp.139-144. 79 Pegden C.D .. "lntroduction to SIMAN". Systems Modeling Corporation. State College, Pensylvania, 1985 80 Perelson A.S., 1981';. "Toward a realistic model of the immune system", in: Perelson (Ed.) "Theoretical lmmunology". Part 11. Addison-Wesley Publishing Company, pp. 377-401. 81 Polak E., "Computational methods in optimization ", Academic Press, 1971. 82 Pountain D.. "Object-oriented FORTH". 8 YTE 11 (8), August 1986, pp. 227-233.
95 Shmucker K.J .. "Objec t-0riented Languages for the Macintosh", BYTE 11 (8), August l98fi, pp.177-185. 9fi Seila A.F., 1988, "SIMTOOLS: A software tool kit for discrete event simulation in Pascal". SIMULAT!ON 50(3), pp.9:!.-100. 97 Shruben L.W .. Margolin 8.M .. "Random Number Assignment in Statistically Desígned Simulation and Dístribution Sampling Experiments", Journal of rhe American Stalistical Association, 73(363), September 1978. 98 Shtern V., "Testing ol software for discrete simulation models in Ada", in "Simulation in Ada '', Proceedings of the Eastern Simulation Conlerence on Simulation in Ada. SCS. Norfolk. VA, 1985. 99 Siebert J.P .. Winning D.J., "The Control Oriented Language", SIMULAT!ON 48(1). 1987.
83 Powers S.W .. Nute ., "lmplementing a simulator as a set of Ada tasks", in "Simulation in Ada", Proceedings of the Eastern Simulation Conference on Simulation in Ada. SCS. Norfolk. VA 1985.
100 Stirling R., "Simulation of a digital aircralt flight control system", SIMULATION 40(5), 1983.
84 Pritsker A.A.8 .. "Compilation of definitions of simulation", SIMULA TION, August 1979. pp.61-fi3.
101 Stute G, Storr A., Chmielnicki S .. 1982. "Planning of Flexible Systems. Simulation and Motion Display on a Graphic CRT', CIRP Seminar on 1\fanufa<.:turing Systems , Torndheim, Norway.
85 Pritsker A.A.8 .. "The GASP IV Simulation Language", John Wiley & Sons, 1974. 86 Pritsker A.A.8.. 1984, "lntroduction to Simulation and SLAMlr, John Wiley &Sons. 87 Raczynski S.. ?ASlON - Pascal-related simulation language for small systems", SIMULATION 46(6) . June 1986. pp.239-242. 88 Raczynski S., "PA.SION. Lenguaje para Simulaclon: una Introducción", ComputerWorlcl/ México. no.178 .179, 180, April-May 1987. 89 Raczynski S., "On a simulation experiment with a par ali el algorithm for optima! control", Transaction of the Society for Computer Simulation, Vol.5, no.1. pp.87-97.
102 Thoma J.U., "Block Bond Graphs for Simulation oí Nonlinear Systems: A Technical note", Transactions of the Society for Computer Simulation 2(3), September 1985, pp.249-255. 103 Tocher K.D .. "The Art of Simulation", D. Van Nostrand Co .. Princeton, New Jersey 1Yfi3. 104 Uyeno D.H .. Vaessen W., "PASSIM: a discrete-event simulation package for Pascal". SIMULA TION 3S(fi), December 1980. pp. 183-190. 105 Van den Bout. O.E .. "AXE: A language for the simulation oí digital hardware". SIMULATION 48(2), pp.Sfi-61 , 1987. 106 Velayas J.:vl .. Levary R.R. "Validation oí simuiation models using decision theory". SIMULAT!ON 48(3). 1987.
' W8
Reierencias 107 Vidale rv{L, Wolfe H.C., "An Operations-Research Study of Sales Response
to Advertising", Operations Research, June 1957. ·~
~ ~
~
109 Wirth N.. Programming in Modula-2. Springer-Verlag, 1985.
OTRAS OBRAS DE MEGABYTE
1 lú Zeigler B.P .. Theory of Modelling and Simulation, John Wiley & Sons, New
York 1976.
*Cómo usar Microsoft Works Bridges
-oOo-
1
J-
i,
* Introducción a la Programación de Visual Basic Brown 1
)
* Introducción a la Informática Fournier
,1
•'
1
* DÓS para inexpertos
I~
ESTA OBRA SE TERMINO DE IMPP.IMIR EL DIA 27 DE AGOSTO DE 1993 EN LOS TALLERES DE PROGRAMAS EDUCATIVOS. S. A. DE C. V. CHABACANO 65. LOCAL -A· MEXICO 8, D. F. LA EDICIÓN CONSTA DE 3,000 EJEMPLARES Y SOBRANTES PARA REPOSICIÓN
528
! r·,f· .
\
\.,.. ~~'- )
108 Von Foerster, H., 1959. "Sorne remarks on changing populatlons", In: Stahlman F, Jr. (Ed.), "The Kinetics of Cellular Prolileration", Grune & Stratton, pp. 382-409.
'
Gookin
~ ~
1
* Secretos de Windows 3J Livingston
* Cómo usar Fox Pro 2 Siegel
* Cómo usar Excel 4 para Windows Townsend
r:1