Sunteți pe pagina 1din 106

,pu i\C ION

"!i8-:8-,633-B

"j!T"ll 1111 !: !I
1

MORIEGA

@;
MEGABYTE

GR:;JF ~:)

~~

. ~ \ ::I:'.... '"''lES

1
~

Acerca del autor:

Simulacin
por colllputadora

Nacido en Cracovia, Polonia, Stanislaw


Raczynski realiz estudios profesionales en
la Academia de Minera y Metalurgia en su
pas natal, recibiendo adems, el grado de
maestro-ingeniero electricista en 1964.
En 1969 obtuvo el grado de doctor en
Ciencias tcnicas y, en 1977, el de doctor
habilitado en el rea de control automtico
en la Academia de Minera y Metalurgia,
institucin en la que adems 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.;comojefedelreadeAnlisis
de Sistemas, en la Academia de Minera y
Metalurgia, en Cracovia; y como colaborador en el European Workshop on Industrial
Computer Systems en Pars, Francia.
Cuenta con amplia experiencia en el rea
docente, ya que ha impartido las ctedras de
Control automtico, Teora de Control y
Simulacin por computadora en la Universidad Nacional Autnoma de Mxico y en la
Universidad Panamericana de Mxico.
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.

'

--'----- -~

Sirllulacin

por computadora
Stanislaw Raczynski
Profesor de la
Escuela de Ingeniera de la
Universidad de Panamericana, Mxico

"""

MEGABYTE
----"-----

GRU~,,~:,:'.:~:m ::TORES

............................................................................................................."""

--~""''"""'"""""""""'"""'"""""

Contenido

VIEGABYTE es una marca registrada por Editorial Limusa. S.A. de C.V.

Introduccin

\!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 trminos descriptivos usados en ella. Como es la costumbre. para hacerlo recurri al uso
Je letras mayuscuias. MEGABYTE no est afiliada a ningn fabricante.

CAPTULO 1.

Se ha hecho todo lo posible por proporcionar informacin 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.

CAPTULO 2.
l..n presentacin .v disposicin en conjunto de
SI~1ULAClN POR COMPUTADORA

,-un propiedad del editor. Ninguna parre de e>ca obra puede ser reproducida
o rransmirida, mediante ningn sistema o mtodo, electrnico o mecnico
!INCLUYENDO EL FOTOCOPIADO, la grabacin o cualquier sis1ema
dt! recuperacin y ulmacenamiento de informacin), sin consentimienco
por escrito de! editor.
De re ~hos

15

Variables aleatorias - distribucin bsica y


generadores

21

La funcin acumulativa y densidad de ia probabilidad


Generacin de los nmeros aleatorios con distribucin
uniforme
2.3 La distribucin exponencial
2.4 La distribucin de Poisson
2.5 La distribucin de Erlang
2.6 La distribucin normal
2.7 La distribucin Gamma
2.8 La distribucin emprica
2.9 Un ejemplo de aplicacin 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, Mxico, D.F.
Tel fo no: 521-21 -05
Fax 512-29-03

Sistemas causales y clasificacin de los sistemas


dinmicos

2.1
2.2

~ !EGABYTE

. . ...... ............. ...

21
23

25
26
28
29

30
30

32
33

Miembro de la Cmara Nacional de la Industria


Editorial Y!exicana. Registro nmero 121

CAPTULO 3.

Primera edicin: 1993

Impreso en Mxico

3.1
3.2
3.3

,39 ~2)

lSSN-96 8 -18-4633-8

--------

Especificaciones del modelo

Descripcin informal del modelo


Descripcin formal del modelo
\.lilr cos experimentales y modelos simplificados

37
37
40
42

Contenido
6

Contenido

3.4
3.5

Verificacin y validacin del modelo


Problemas

CAPTULO 4.

4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10

CAPTULO 5.

5.1
5.2

5.3

55
56
58
60
62
64
66
69
70
72

Ejemplos de programacin usando lenguajes


algortmicos (Basic, Fortran, Pascal) en simulacin
de sistemas dinmicos continuos ............................... 75

Esquema general del programa de simulacin,


estructuracin del programa
Aplicaciones

75
77

5.2.1
5.2.2
5.2.3
5.2.4

77
80
80
83

Simulacin en PASCAL ..................................................


Simulacin en FORTRAN ...............................................
Simulacin en BASIC ......................................................
Ejemplo con retraso-realizacin en PASCAL .............

Problemas

CAPTULO 6.
6.1
6.2
6.3
6.4
6.5

Modelos matemticos de los sistemas dinmicos y


algunos algunos algoritmos numricos...................... 55

Introduccin
El mtodo de Euler
Los algoritmos de Runge-Kutta
Los mtodos lineales de maltipaso
Estabilidad de los mtodos numricos
La ecuacin de muertes y nacimientos ................................
Sistem.a s con retraso ................................................... ............
Sistemas rgidos .......................................................................
Sistemas distribuidos-dificultades computacionales .........
Problemas ..................................................................................

Lenguajes de simulacin

6.5.4 PAT 1: El translador de PASION a PASCAL ................ 116


6.5.5 El generador de los modelos con lneas de espera
y el ambiente de PASlON .............................................. 1l!i
6.5.6 El editor de diagramas
............................... 121

48
54

87

91

Introduccin ............................................................................. 91
Las estrategias de simulacin de eventos y procesos ....... 92
El lenguaje CSL .......................................................................... 94
El lenguaje SIMULA .................................................................. 99
El lenguaje PASJON ................................................................... 106
6.5.1 Introduccin ................................................................... 106
6.5.2 Procesos y eventos ........................................................ 107
6.5.3 Jerarqua de procesos y herencia de propiedades .. 112

6.6
6. 7
6.8
6.9

El paquete GPSS
El lenguaje Dynamo y el mtodo de Forrester
Hoja extendida
Otros lenguajes y paquetes de simulacin

129
135
138
141

6.9.1 Lenguajes para simulacin continua .......................... 141


6.9.2 Lenguajes para simulacin discreta y discretocontinua ................................................................ .......... 143
6.9.3 Lenguajes orientados a ob jetos ................................... 148
6.9.4 LOO y simulacin
........................ 151

CAPTULO 7.
7.1
7.2
7.3
7.4

Int roduccin ................................... .......................................... 153


El modelo de demanda y ventas ............................................ 154
Los paquetes PAOM y PSOM .................................. ................ 156
Introduccin a la simulacin de la dinmica de mercado. 158
7.4.1
7.4.2
7.4.3
7.4.4
7.4.5

CAPTULO 8.

8.1
8.2
8.3
8.4
8.5
8.6

Planteamiento del problema ........................ ................ 162


Identificacin de los parmetros ................................. 164
Simulacin ....................................................................... 166
Optimizacin .................................................................. 166
171
Conclusiones

El uso de la simulacin en algoritmos iterativos;


control ptimo de vuelo

Introduccin
Planteamiento del problema
Algoritmos de control ptimo
Control ptimo y simulacin
Un ejemplo; control ptimo de vuelo
Conclusiones

CAPTULO 9.

9.1
9.2

Aplicaciones de la simulacin en mercadotecnia ..... 153

Simulacin de SIDA y del sistema inmunolgico


humano

Simulacin de la propagacin del SIDA


Modelos y simulacin del sistema inmunolgico

173
173
173
174
175
176
181

183
183
188

Contenido

9.2.1 Introduccin
9.2.2 Teora de redes en la simulacin del sistema
inmunolgico
9.2.3 Un modelo'discreto del sistema inmunolgico
del SIDA
9.2.4 Algunos resultados
Referencias

188
190

191
195

Introduccin

201

Frecuentemente es necesario simular , es decir, r eproducir artificialm ente un fenmeno o las relaciones en trada-salida de un sistema. Esto ocurre siempre cuando la operacin de un sistema o la experi mentacin en
l son imposibles, costosas, peligrosas o poco prcticas , como en el entrenamiento de personal de op eracin , pilotos de aviones , etc. Si esta
reproduccin est basada en la ejecucin de un programa en una
computadora digital, entonces la simulacin se llama digital y usualmente se conoce como simulacin por computadora, aunque hay que
recordar que este trmino tambin incluye la simulacin en las computadoras analgicas.
En este libro hablaremos solamente sobre la simulacin digital. La
simulacin por computadora est relacionada directamente con los simuladores. Por simulador entendemos no slo un programa de simulacin y la computadora que lo realiza, sino tambin un aparato que
muestra visualmente y a menudo fsicamente las entradas y salidas
(resultados) de la simulacin, como es el caso de los simuladores profesionales de vuelo. Sin embargo, antes de seguir con las dems caractersticas de la simulacin, se mencionar lo que no est incluido
en el presente libro, es decir, no vamos a hablar sobre simuladores ni
sobre la simulacin analgica.
La simulacin llamada "Monte-Cario", que consiste en la investigacin del comportamiento estadstico de ciertos modelos probabilsticos, 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 simulacin
de los sistemas continuos, simulacin discreta (secuencias de eventos), mtodos de modelado y simulacin, lenguajes para simulacin ,
9

10

Introduccin

Introduccin

modelado y simulacin de sistemas con procesos paralelos, las tendencias en el "software" de simulacin contemporneo, entre otros
temas.
L.a necesidad de los mtodos para modelacin de sistemas complejos fue reconocida hace tiempo, aun antes de la era de las computadoras. Rosenblueth y Wienerl 93 1 sealaron en 1945 que los modelos
constituyen una necesidad central del procedimiento cientfico. La
aparicin de las computadoras analgicas y digitales abri nuevas posibilidades para el anlisis de modelos que podan ser procesados con
ms rapidez y exactitud. As surgi el trmino simulacin por computadora y toda la rama de "Computer Science" dedicada a este tema.
Existen muchas definiciones de la simulacin por computadora,
algunas muy distintas (vase Pritsker' 84 f). Zeiglerll 101 en su libro dedicado a los aspectos tericos de la simulacin, dice: "La frase 'modelado
y simulacin' designa el complejo de actividades relacionadas con la
construccin de modelos de los sistemas del mundo real y su simulacin en computadora. En particular, modelado trata, en principio, sobre
las relaciones entre sistemas reales y modelos; simulacin se refiere
principalmente a las relaciones entre las computadoras y los modelos."
Esta definicin refleja lo que comnmente se entiende sobre modelado y simulacin, aunque en la primera sentencia la palabra "simulacin"
se usa para definirse a s misma. No obstante, Zeigler no dice nada sobre
cul es la naturaleza de los sistemas y modelos involucrados. Vamos a
restringir un poco la clase de modelos, relacionando la simulacin con
el tiempo y propiedades dinmicas de los sistemas. As lo hacen algunos
autores, por ejemplo, Gordonl 37 1 dice que "podemos entonces definir la
simulacin de sistemas como una tcnica de solucin de problemas a
travs de la observacin del comportamiento de un modelo dinmico
del sistema en el tiempo". De manera similar definen la simulacin
Shruben y Margolinl 97 1, Naylor y coautoresl7 21, y Pritskeri86 1. Este ltimo involucra el concepto de "estado" del sistema y trata su dinmica
como "el movimiento de un estado a otro segn las reglas de operacin
bien definidas". Algunos autores limitan la simulacin a la simulacin
de tipo Monte-Cario (Kleijnenl 55 l, Tocheri 103 f) .
Simulacin por computadora es una herramienta interdisciplinaria y tiene aplicaciones en muchos campos de la ciencia y la tecnologa,
como ciencias tcnicas, biologa, medicina, sociologa, mercadotecnia, desarrollo urbano e incluso la economa poltica y mundial. Los
resultados de los experimentos obtenidos a travs de la simulacin
influyen cada vez ms en las decisiones tomadas no slo en la industria.
Por ejemplo, Thomas H. Naylor1 731 describe en uno de sus artculos el
impacto de la simulacin por computadora sobre las reformas econmicas en la Unin Sovitica. Las simulaciones de la economa de la URSS se
usaban hace muchos aos para analizar la dinmica de este sistema.
De acuerdo con Naylor, las investigaciones que conduca el Instituto
Central de la Economa Matemtica de la Academia de Ciencias de la

11

URSS y la Agencia Estatal de Planeacin (GOSPLAN) eran muy avanzadas en los aos setenta. Puedo confirmar esta opinin completndola
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, matemticos y expertos
en simulacin intentaban simular la economa del pas. Segn Naylor,
los pronsticos para el desarrollo de la economa eran poco favorables
y mostraban creciente escsez de bienes de consumo, insuficiente desarrollo del sistema energtico y creciente falta de materia prima. En la
dcada 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 slo de reformas econmicas, sino tambin polticas. De esta manera, se puede observar que la simulacin por computadora tuvo un papel importante en los cambios econmicos y polticos
en la URSS y en la Europa del Este, Jos cuales van a influir en la economa
mundial.
La simulacin por computadora a veces puede provocar confusin
cuando es mal interpretada. Un buen ejemplo se observ en la cada de
la bolsa de Nueva York, en octubre de 1988. Los expertos opinan que
una de las causas de este fenmeno fue el uso de los progr amas de
simulacin por los corredores de bolsa, quienes tuvieron acceso a
pronsticos inmediatos y tomaron decisiones rpidas de venta de
acciones. Esto probablemente desestabiliz el sistema financiero.
La simuiacin sirve a la sociedad en muchos campos, incluso en la
medicina. Uno de los problemas de salud ms importantes es el desarrollo del SIDA y el entendimiento de los mecanismos del sistema
inmunolgico humano. La revista Simulation (enero, 1990) dedica uno
de sus recientes nmeros a la simulacin de la propagacin de esta enfermedad. El captulo 9 de este libro describe este importante problema con ms detalles.
Una parte del presente libro est dedicada a los mtodos de simulacin, 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 simulacin . El rpido desarrollo de las computadoras paralelas en los ltimos aos hace que el
desarrollo del "software" para simulacin (y el "software" en general)
est atrasado algunos aos con respecto al "hardware". En realidad
slo se utiliza una pequea parte de las posibilidades de las computadoras contemporneas. El paralelismo es, sin duda, uno de los aspectos
ms importantes y poco aprovechados de los nuevos mtodos de
simulacin.
Las computadoras de la primera y segunda generacin que se usaban para ejecutar simulaciones no tenan procesadores mltiples. Por
eso, los lenguajes y paquetes para simulacin desarrollados en la

r
12

Introduccin

dcada 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 ejecucin 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 simulacin. 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 slo una parte declarativa, una definicin 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 ejecucin, ya que el primero est controlado por el mecanismo de tiempo. CSLygran parte de los lenguajes de simulacin de eventos
contienen algunos mecanismos de lgebra de conjuntos y de generacin
de nmeros aleatorios.
En los aos sesenta aparecieron nuevos conceptos provocados por
el rpido incremento de la capacidad de los sistemas de cmputo. La
idea ms importante ha sido formulada en el lenguaje Simula 671 28 1. Esta
versin del Simula (desarrollada en el Centro No-ruego de Cmputo en
Oslo, en 1967) es en realidad un lenguaje algortmico de alto nivel,
basado en Algol 60.
La idea fund amental del Simula 67 consiste en la creacin de objetos
en la memoria operativa; cada objeto contiene sus datos (atributos,
parmetros formales, constantes y variables locales) y su lista de instrucciones, adems puede funcionar en forma independiente, ejecutando sus instrucciones. El usuario tiene control sobre la creacin, activacin y desactivacin de objetos. Consideremos, por ejemplo, un modelo
de la dinmica de un avin: los datos de tal objeto contienen sus detalles
tcnicos (como tamao, parmetros de los motores, nmero de pasajeros, carga, etc.), y su lista de instrucciones es el cdigo computacional
que simula su dinmica; el objeto aparece en la memoria operativa si
el avin correspondiente (del sistema real que se modela) aparece en
la pantalla del radar de la torre de control y desaparece, y si el avin
aterriz, sali del rea de control o se estrell. La simulacin del trfico
areo consiste en la creacin, activacin y desactivacin de los objetos.
En el programa fuente de esta simulacin existe, sin embargo. slo una
declaracin (un modelo) del avin, que sirve como patrn 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 mtodos contemporneos y por su influencia en
el desarrollo de los nuevos lenguajes de simulacin y programacin en
general. El Simula y algunos de los lenguajes ms importantes se comentarn en los siguientes captulos.
La simulacin por computadora no es un cam po C":~-il~o .. h-iy
que interpretarla como una h ern.mi enta int':rdisr'a
'~ :'''

Introduccin

13

para aprovechar este libro, as como cualquier otro texto sobre esta
materia, el lector debe tener ciertos antecedentes en el anlisis de los
sistemas dinmicos, ecuaciones diferenciales, diferencias, procesos estocsticos, mtodos numricos y, desde luego, computacin. El conocimiento bsico de estas materias permite comprender el contenido de
los captulos l a 6. El captulo 7 est dedicado a unas aplicaciones de la
simulacin 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 captulo 8 describe
una aplicacin en control y puede omitirse si el lector no est enterado de los mtodos de simulacin de vueio y los elementos de control
ptimo que pertenecen a la parte un poco ms avanzada de la teora de
control. Por otra parte, esta aplicacin muestra el uso de los modelos
no slo para correr unas simulaciones, sino para llevar a cabo un proceso computacional ms complejo. Aplicaciones como sta son cada
vez ms visibles y tiles, gracias al tremendo crecimiento de la capacidad de las computadoras contemporneas, sin duda ms rpido que el
desarrollo de algoritmos y sistemas de "software". Los mtodos avanzados de la simulacin por computadora pueden, quizs en el futuro,
aprovechar adecuadamente la enorme capacidad de las supercomputadoras y, adems, ofrecer herramientas tiles para los usuarios de las
computadoras personales.

1
CAPTULO 1
Sistemas causales y
clasificacin de los
sistemas dinmicos

Existen varios mtodos para representar grficamente los sistemas


dinmicos. Los esquemas de bloques y los reogramas pertenecen a los
ms usados. Los esquemas de bloques estn compuestos por un nmero de bloques, casi siempre rectngulos, conectados con flechas: los
bloques representan los subsistemas caracterizados por sus ganancias. funciones de transferencia u operadores ms abstractos; las flechas son las seales de entrada y salida. En los reogramas ("grficas de
flujo") las seales 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 retroalimentacin.
Los esquemas de bloques y los reogramas se caracterizan porque
sus representaciones grficas determinan las seales de entrada y de
salida para todo el sistema y para cada uno de sus subsistemas. Un
error grave es confundir estas seales o cambiar las direcciones de las
flechas. Para cada subsistema y para todo el sistema en consideracin,
hay que definir bien cules 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 pgina 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 slo 5i

s,

13

16

Sistemas causales y dinmicos

Siste mas caus a le s y dinmicos

17

Y(t) =

U(t+KH)

K= 1

donde Hes una constante real y N un nmero entero positivo, es


causal si y slo si Hno es positivo. Es fcil verificar que para cualquier
valor positivo de H no.se cumple nuestra definicin de causalidad,
porque en este caso Y(t) depende de los valores futuros de la
entrada.
3. Un sistema que obedece a la ecuacin
t

Y (t )

p (t + s) U (s) ds

o
en donde p(t) es una funcin dada, es un sistema causal. Si cambiamos los lmites de integracin como sigue
Figura l. l. Un esquema de bloques y el reograma correspondiente.

Y (t)

p (t - s) U (s) ds

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" tambin son iguales en el momento t 1
Ejemplos
l.

2.

Un sistema descrito con la ecuacin 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.cin

tiempo

Figura 1.3. Dos seales de entrada U' (t) y U" (t) .

18

Sistemas causales y dinmicos

Sistemas causales y dinmicos

el sistema descrito con esta ecuacin ya no es causal.

3. El nmero de /(Is clases de equivalencia es infinito, pero numerable.

Denotemos con U{a, b) la seal U sobre todo el intervalo [a, b], con
a 5 t $; b, y con e+) la siguiente operacin

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 autmatas infinitos. Por ejemplo, un sistema de servicio con una fila no limitada y un puesto de servicio es un
autmata infinito.
El nmero de clases de equivalencia es infinito no numerable, pero
existe una correspondencia biunvoca entre los nmeros reales y las
clases de equivalencia. stos son los sistemas con parmetros concentrados. Cualquier sistema descrito con un sistema finito de ecuaciones
diferenciales ordinarias pertenece a esta clase.
Hay ms clases de equivalencia que los nmeros reales. I;:n este caso
sedicequeelsistemaesdeparmetros distribuidos. A esta clase pertenecen todos los sistemas descritos con ecuaciones diferenciales
parciales. Ejemplos:
l. El proceso de propagacin de temperatura en un pedazo de metal,
donde la temperatura depende de la posicin (dentro de la pieza) y
del tiempo.
2. El proceso de difusin de un componente qumico dentro de un
tanque con una solucin, sin mezclar el contenido del tanque.

Ms intuitivamente, esta clasificacin se puede relacionar con el nmero


de los estados posibles de un sistema dinmico en el momento. Recordemos que un vector (o un punto de un espacio ms abstracto)Xrepresen-

Ejemplo
Consideremos un sistema de control digital de temperatura, cuyo instrumento de medicin 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 medicin todas
las entradas (temperaturas) iguales en los momentos de comparacin 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 relacin de
equivalencia. El concepto de la clase de equivalencia nos permite clasificar los sistemas dinmicos de la siguiente manera [refirindose siempre
al intervalo [tJ ]:

l. Hay slo una clase de equivalencia. En este caso el sistema se llama


algebraico. Por ejemplo, un sistema descrito con la ecuacin 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 nmero de clases de equivalencia es finito. Estos sistemas llevan
el nombre de los autmatas finitos. Esta situacin ocurre, si un sistema puede encontrarse solamente en unos estados fijos, cuyo
nmero es finito. Por ejemplo un sistema digital compuesto de un
nmero finito de compuertas NANO, NOR y flip-flops es un autmata
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 dinmicos

ta el estado de un sistema dinmico, si y solamente si existe una funcin


Ftal que para todo t ~ t 1
X (t)

CAPTULO 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 nmero de las clases de equivalencia
es igual al nmero de los estados posibles en el momento, desde luego,
para los sistemas cuyo estado est bien definido.
Esta clasificacin de los sistemas dinmicos es muy til en la etapa
de la definicin del modelo que se va a usar en la simulacin. Si, por
ejemplo, sabemos que nuestro sistema es un autmata finito, podemos
suponer que la simulacin podr realizarse utilizando un lenguaje o
paquete de simulacin que describe eventos, los cuales cambian el
estado del sistema dentro de un nmero 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 simulacin entre los mtodos que involucran las
ecuaciones diferenciales ordinarias. En los siguientes captulos vamos a
referir frecuentemente a lo descrito aqu.

Variables aleatorias
distribucin bsica y
generadores

2.1

La funcin acumulativa y densidad de la probabilidad


Una gran parte de los sistemas a simular contienen elementos que
generan seales indeterminadas, caracterizadas por sus propiedades
probabilsticas. Usualmente los sistemas de este tipo se llaman sistemas estocsticos. Desde luego, los resultados de simulacin de estos
sistemas son variables aleatorias, con cierta distribucin de probabilidad, en ocasiones difciles de analizar tericamente. Observemos que,
en estos casos, una corrida del programa de simulacin proporciona
solamente una de las posibles trayectorias del modelo y, para llevar a
cabo los experimentos de simulacin, hay que estimar los valores
esperados, varianzas, etc., para las variables de salida, corriendo el mismo programa muchas veces. Si el objetivo de simulacin y el modelo
simplificado estn orientados slo o casi slo a los aspectos probabilsticos del problema, decimos que sta es la simulacin Monte-Car/o.
Como se ha dicho en la introduccin, la simulacin Monte-Cario no est
incluida en el temario de este libro y, por eso, no discutiremos aqu
problemas tales como los mtodos de reduccin de la varianza y la verificacin de las hiptesis estocsticas. Sin embargo, vamos a repasar
un poco los mtodos de generacin de los nmeros aleatorios y algunas distribuciones de probabilidad, ya que estos conceptos se usan
frecuentemente en la simulacin 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

Generacin de los nmeros aleatorios

Variables aleatorias

Hay que observar que, en este caso, la densidad f(x) no es exactamente una funcin, sino una distribucin o funcin genera liz ada, porque para expresarla hay que usar impulsos de Dirac en los puntos 1,
2, 3, 4, 5 y 6. La funcin de distribucin acumulativa es, p ues, una
funcin con discontinuidades.
2. Escogemos al azar un valor real dentro del intervalo [0, 1] de ta!
manera que cada nmero tenga la misma probabilidad de ser escogido. El resultado es un nmero aleatorio con la distribucin uniforme
en [O, l ]. Su funcin ac.umulativa y la densidad de probabilidad se
muestran en la figura 2.2.

1
i

23

De las propiedades de la funcin 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

I IIIII:

P=

f (x ) dx

Figura 2.1. Funcin de distribucin acumulativa F y la densidad de probabilidad (ejemplo 1).

2.2
do X sea menor o igual a un valor dado Y La funcin F ( Y ) = P (X:::; Y)
(que depende slo de Y) se llama la funcin de distribucin 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
funcin f (x ), tal que

Generacin de los nmeros aleatorios con


distribucin uniforme
Para realizar una simulacin que necesita el uso de unas variables
aleatorias hay que disponer de las secuencias de nmeros aleatorios con
cierta distribucin de probabilidad. Uno de los mtodos antiguos que se
usaban hace, tiempo fue sacar los nmeros aleatorios de una tabla
preparada y grabada de antemano. Ahora, casi siempre, e stos nmeros

F (Y) =

f (x) dx

t
1.0

1----------,

1.0 1

FI

entonces f (x) se llama la funcin 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 nmero de puntitos en el lado superior al pararse el cubo,
entonces, suponiendo que el cubo es simtrico, 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.

Figura 2.2. La densidad de probabilidad y funcin acumulativa para la distribucin u nifo rm e.

_.,,__,

24

Variables aleatorias

La distribucin exponencial 25

Los generadores con distribucin uniforme permiten obtener series de nmeros con otras funciones de distribucin de probabilidad.
Uno de los ms sencillos es el mtodo de la transformacin inversa. Si la
funcin acum4lativa de distribucin deseada es F(x), entonces los nmeros definidos con la frmula

se generan dentro de la computadora. Se usan dos mtodos: generacin


por medio de procesos fsicos aleatorios y generacin por medio de
una relacin de recurrencia. Como un proceso fsico aleatorio podemos
usar, por ejemplo, el ruidot@rmico en un circuito con semiconductores,
que, convertido en un nmero binario, representa un valor numrico
aleatorio. Esta realizacin, sin embargo, necesita un elemento especial
de "hardware". La generacin por medio de una relacin de recurrencia
es una realizacin por "software" y por esto se aplica ms frecuentemente.
Un buen generador de los nmeros aleatorios con distribucin 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 nmeros con distribucin
uniforme en [O, 1] y F 1 significa la funcin inversa con respecto a F (x ).
Este mtodo a veces es un poco incmodo, porque se necesita un
procedimiento para la evaluacin de la funcin inversa. Por eso, siempre hay que buscar algoritmos ms sencillos y rpidos. Si queremos,
por ejemplo, generar nmeros con distribucin uniforme en un intervalo [a,b], simplemente hay que multiplicar un nmero aleatorio R
(uniforme en [O, 1]) por (b-a) y sumar el valor de a. La siguiente funcin
en PASCAL realiza esta operacin

La distribucin de los nmeros debe ser uniforme en el intervalo


[O, l ].

2. Los nmeros deben ser independientes dentro de toda la serie


generada.
3. El ciclo del generador debe ser bastante grande, esto es, si ocurre la
repeticin de los nmeros, entonces debe ocurrir despus de generar muchos nmeros 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 rpido 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 funcin (sin parmetros), cuyo valor es un nmero aleatorio en [0.1]
(en Turbo-Pascal, por ejemplo, esta funcin se llama RANDOM). Vamos
a caracterizar brevemente otras de las ms importantes distribuciones
de probabilidad y algunos de los generadores de las variables correspondientes.

Los generadores ms usados que satisfacen estos requisitos pertenecen a la clase de los llamados mtodos de congruencias. Si rl'r2,r3, son
los nmeros de la serie deseada, entonces la frmula (aditiva) de congruencias correspondiente es como sigue

2.3

z,. 1 = (Az; + B) (mod C)

r,.
i

La distribucin 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 nmeros aleatorios. Sin
embargo, los nmeros 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
tericamente, pero stos dependen de las propiedades de la
computadora. Siempre el mejor generador es el que fue diseado 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 ms informacin sobre stos y otros
generadores de los nmeros aleatorios con la distribucin uniforme el
lector se puede referir a Naylorf 721 y Shrubenf 97 1.

La funcin de densidad para variables con esta distribucin se puede


expresar como

0 ,

f (x)

A EXP (-Ax )

y la funcin de distribucin acumulativa es

F (x) = 1 - EXP (-Ax)

Aqu A es una constante, denotada tambin 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 funcin de densidad f (x ).
Esta distribucin tiene muchas aplicaciones en la simulacin de
eventos aleatorios, ya que usualmente los flujos de entrada y tiempos

La distribucin 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 distribucin 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 funcin de densidad para el nmero de ocurrencias dentro
del intervalo T = 1.

f (x) = EXP(-1/A) (1/A

Figura 2.3. La funcin de densidad para la distribucin exponencial.

de servicio en los modelos de Jos sistemas de servicio masivo estn


relacionados a la distribucin 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 distribucin 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 observacin, el tiempo que queda
hasta la prxima llegada tiene la misma distribucin exponencial, independientemente del momento de la llegada anterior y de toda la historia
de las llegadas.
Usando un generador de los nmeros aleatorios con distribucin
uniforme en [O. l] es muy fcil generar nmeros con la distribucin exponencial, usando el mtodo de transformacin 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 nmero con distribucin uniforme en [O, l ].

2.4

La distribucin 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 distribucin de Poisson. Hay que recordar que en esta interpretacin x es una variable entera.
El valor de una variable aleatoria con distribucin de Poisson es, por
la definicin, el nmero de ocurrencias de un evento descrito con el flujo
de Poisson, dentro de un intervalo de tiempo T. En consecuencia, para
generar estos nmeros, podemos simular dicho proceso de ocurrencias o llegadas. As, hallamos que el nmero deseado N tiene que
cumplir con la siguiente desigualdad
N

u,~ T~

u,

i= 1

i= 1

donde u, tiene la distribucin exponencial. Para generar v, podemos


usar un generador de las variables r, con distribucin 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

1t

r,

~ EXP(-T/A) ~

i =l

7t

r,

i =l

La siguiente funcin en PASCAL genera los valores de N (denotados como el valor de la funcin 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 distribucin 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

Figura 2.4. Un ejemplo de la distribucin de Erlang.

WHILE Y>=V DO BEGIN


Y:=Y*RND; N:=N+l END;
POISSON:=N END;

La distribucin normal
sta es una de las ms importantes distribuciones de probabilidad. El
conocido Teorema Lmite en la teora de probabilidad dice, que la
distribucin de la suma de unas variables aleatorias independientes
tiende a la distribucin normal si el nmero de las variables tiende a
infinito. aun cualquiera que sea la distribucin de cada una de dichas
variables. La funcin de densidad para esta distribucin es

1 [-1 (X- V)~]

f (x) =-exp S../21t


2

--

en donde Ses el valor esperado y V1 es la variancia.

f(x)

2.5

La distribucin de Erlang
\
Esta distribucin es la de la suma de un nmero de variables aleatorias independientes que tienen la misma distribucin exponencial. La
distribucin 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 distribucin
Erlang. (Ver figura 2.4.)

La siguiente funcin en PASCAL puede servir como un generador


de los valores aleatorios con distribucin de Erlang, para el caso de la
suma de N variables con distribucin exponencial, cada una con el
parmetro A (valor esperado l/A). En esta funcin se usa la funcin
EX descrita anteriormente, para generar valores con la distribucin
exponencial.

Flgura 2.5. La funcin de densidad para la distribucin normal.

30

Variables aleatorias

La distribucin emprica

pongamos, por ejemplo, que para un puesto de servicio se registraron


los tiempos de servicio durante un intervalo de tiempo bastante largo.
Segn 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 nmero de .Jos intervalos posibles de tiempo de servicio. Para hallar la funcin 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 nmero total de las
observaciones). La serie normalizada X, tratada como la funcin de
tiempo de servicio como muestra la figura 2.6, es una aproximacin
de la funcin de densidad para el tiempo de servicio, moderado con el
incremento 5 min. Luego se determina la funcin acumulativa F (7),
sumando (integrando) los valores de f (7).
Para generar los valores de tiempo de servicio T podemos aplicar
el mtodo de transformacin inversa. La siguiente funcin en Pascal
proporciona las realizaciones de la variable aleatoria T con la funcin
acumulativa F, dada por el arreglo H

Una de las consecuencias del Teorema Lmite es que muchos de los


fenmenos fsicos cuyos resultados dependen de muchas variables independientes, generan valores con la distribucin normal. Hay algunos algoritmos para generar variables con esta distribucin. Uno de los
ms sencillos consiste en sumar algunas variables independientes con
distribucin 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 distribucin normal con parmetros S y V
(valor esperado y desviacin estndar respectivamente), como valores de la siguiente funcin (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 funcin no es la ms exacta, porque los valores que proporciona
son truncados y nunca pueden aparecer nmeros mayores o menores
que el valor esperado ms o menos seis veces la desviacin estndar.
Para lograr ms congruencia con la distribucin normal terica, hay que
sumar ms nmeros o usar algoritmos ms sofisticados.

2. 7

FUNCTION SAi'V1PLE(N:INTEGER; H,Y:TABLA):REAL:


VAR K:INTEGER; S,S l:REAL; B:800LEAN;

La distribucin Gamma
sta es una generalizacin de la distribucin de Eriang, en donde el nmero de las variables a sumar (con la distribucin exponencial) ya no es
un entero. La distribucin Gamma puede relacionarse con la distribucin normal como la distribucin de la suma de los cuadrados de unas
variables con la distribucin normal. La funcin de densidad para la
distribucin Gamma puede tener una variedad de formas segn sus parmetros y puede describir diversos procesos fsicos.

2.8

La distribucin emprica
A menudo la distribucin de una variable del modelo no se puede calificar como ninguna de las distribuciones conocidas y no se puede
expresar con ninguna expresin determinada. La nica informacin
sobre la variable son los valores de un nmero de sus realizaciones. Su-

31

1.0

T I T ll TITllT

r'

1
F1~ura

2.6. La funcin de densidad y la funcin acumulativa para una distribucin emprica.

Problemas
32

Variables aleatorias

El problema es ~imular un nmero de das de funcionamiento del


almacn para averiguar cmo cambia el nmero total de piezas almace-

BEGIN B:=TRUE;
S:=RND; Sl:=Y[N]; K:=l;
WHILE B ANO (lM) 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
descripcin del generador de la variable con distribucin emprica). 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 nmero de
piezas vendidas.
La simulacin de un da de trabajo consiste en sumar al estado
actual AL del almacn el nmero de piezas que llegaron, generar el nmero de compradores C que vinieron durante el da y restar C veces del
estado AL el nmero de piezas vendidas que proporciona el generador
con distribuci n emprica. El siguiente diagrama de flujo (figura 2.7)
muestra el algoritmo de simulacin correspondiente.
ste es uno de los ejemplos ms sencillos de la simulacin MonteCarlo, donde se usan algunos de los generadores descritos antes. Este
problema es difcil de resolver analticamente, ya que el nmero de piezas que compra un mayorista tiene distribucin emprica.
La simulacin Monte-Carla no es el tema principal de este libro y
no vamos a discutirlo ms (vea -las referencias [26], [74]). Hay que
observar que Jos generadores de las variables aleatorias se usan no slo
en los problemas de este tipo . Cada sistema o lenguaje para simulacin
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 aplicacin de los generadores


de variables aleatorias
Una fbrica produce calentadores para agua de uso domstico. Los
calentadores llegan al almacn en unos momentos aleatorios durante
todo el da. Las ventas (salidas) se efectan tambin en unos momentos
indeterminados, cuando llegan los compradores (mayoristas). Segn
las observaciones las llegadas de los calentadores forman un flujo de
Poisson, que significa que el nmero de piezas recibidas durante el da
tiene Ja distribucin Poisson. Los compradores tambin llegan en los
momentos que tambin forman un flujo de Poisson, pero el nmero de
los calentadores que compra un comprador tiene una distribucin emprica, segn la siguiente tabla.

determinsticas.

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 funcin de densidad de distribucin y
la funcin acumulativa para el resultado. Construya un procedimiento para generar los valo res aleatorios segn la distribucin
obtenida.
2. Suponga que el resultado de los tiros en el problema 1 es el
promedio de los resultados de cada tiro. Cul de Jos generadores
descritos en este captulo puede usarse para generar Jos valores
aleatorios con la distribucin que aproxima la distribucin del
resultado. suponiendo que el nmero de tiros es grande (tiende a
infinito) ?

l.

Nmero de piezas
vendidas

Nmero 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 nmeros con la distribucin que
aproxima la de la variable observada.
4. Escriba un programa para la computadora para simular el problema de almacn segn 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 almacn caben
C calentadores y el costo de mantenimiento es $1 OO*C por da. Si el
nmero de piezas por lmacenar es mayor de C, hay que rentar un
espacio adicional, que cuesta $1000 por pieza por da. Cul es el
tamao ptimo del almacn, que minimice el costo total? Adems,
instale en el programa un mecanismo que impida que el nmero de
piezas en el almacn pueda ser negativo .

Entrada de datos:
O - El nmero de das a simular
A 1 - el parmetro de la distribucin
de Poisson de las piezas producidas
durante un da
A 1 - el parmetro de la distribucin
de Poisson de las llegadas de los
compradores
AL - estado inicial del almacn
X, Y - los arreglos con
las observaciones sobre las ventas

<

I
K=1 to O

AL = AL + Poisson (A 1)

H = Poisson (A2)

~{

r~

l
l

l,.

L= 1 toH

AL= AL - Sample (N, X, Y)

l
~

Imprimir;
K =el nmero del da
al= EL ESTADO DEL ALMACN

~
Figura 2.7.

35

t
1

1
1
1

CAPTULO 3
Especificaciones
del modelo

3.1

Descripcin informal del modelo


Antes de construir un modelo matemtico y un programa de simulacin
de un sistema real hay que preparar una descripcin suficientemente
completa para evitar posibles errores o deficiencias en la modelacin.
Primero hay que darse cuenta del objetivo de todo el proceso de modelacin y simulacin que queremos realizar. Este objetivo influir en
toda la especificacin del modelo y en la construccin del programa de
simulacin correspondiente. Como veremos en las siguientes secciones, el objetivo de simulacin, junto con otros aspectos de la misma, nos
permitir escoger una simplificacin adecuada del modelo.
La descripcin informal del modelo incluye las siguientes tres
partes:
l.

2.

3.

Los componentes del modelo. stos pueden ser partes fsicas de un


sistema real, partes imaginarias de un sistema en diseo o partes de
un modelo abstracto que an no existe fsicamente.
Las variables descriptivas. stas sirven para describir las condiciones
en las cuales se encuentran los componentes del modelo. La mayora
de las variables descriptivas son funciones de tiempo.
Las reglas de interaccin entre los componentes. Segn estas reglas
los componentes influyen recprocamente y cambian los valores de
sus variables descriptivas.

La descripcin informal del modelo no tiene que incluir ninguna descripcin matemtica y slo 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''"'~~

Descripcin informal del modelo


38

39

Especificaciones del modelo

~F1

estado del modelo puede expresarse a travs de slo dos variables, por
ejemplo hAy ha. Las dems 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 travs del nivel hA.
Esta descripcin no es nica. Por ejemplo, otra versin de la descripcin informal puede interpretar aF2 como una de las variables de salida,
segn el objetivo de simulacin (los objetivos pueden ser "evaluar F3
sobre un intervalo de tiempo dado" o "evaluar F2 y F3 sobre el mismo
intervalo"). Este ejemplo muestra cmo el objetivo de simulacin influye en la descripcin del modelo.
Las ecuaciones de estado para este modelo se mostrarn en la
siguiente seccin.

hA

~3

Ejemplo 2

Se considera un tanque con un mezclador con dos flujos: F1 y F2 (figura


3.2). La descripcin 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 tambin V y T.
3. Las reglas de interaccin: 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 travs 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 fsicas y describir el funcionamiento del sistema. La descripcin 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
descripcin 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 interaccin: El agua entra al sistema segn 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
funcin 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 slo stas. !::n este ejemplo el

Figura 3.2. Un tanque con mezclador.

>---

--"'

40

Descripcin 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..

.....
_ Descripcin formal del modelo
~?
Para pasar de una descripcin informal a la descripcin formal correspon di ente hay que especificar los espacios a los cuales pertenecen todas las vari ables descriptivas y dar una descripcin exacta de la funcin
de transici< )n de estados, que dice cmo cambia el estado del sistema
con el tiempo, y la funcin de salida, la cual muestra cmo 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,
tambin tene mos que describir exactamente cules 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 funcin de transicin de estados
calcula el nuevo estado basndose en las variables de entrada y de
estado actual. Podemos decir que esta funcin, llamada 8 acta desde
el prod ucto de los espacios Uy Q hasta el espacio Q, en otras palabras
8: U~ Q. La funcin de salida es A.: Q ~ Y.
La descripcin formal del modelo es el conjunto <U,Q,Y, 8, h. La
figura 3.3 muestra esquemticamente las funciones 8, A. y los espacios
de las variables descriptivas.
La descripcin formal para el ejemplo anterior (el sistema de presas) t iene q ue incluir las siguientes especificaciones:
E:! es pacio de entrada: U=R+ (el espacio de reales no negativos) .
. . . Pr.

~ !~iiS

:a:, rcnce s F

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 interaccin en la descripcin formal del modelo tienen
que definir el funcionamiento del modelo de manera nica y exacta. Casi
siempre esta parte de la descripcin formal consiste en un sistema de
ecuaciones. Si el sistema tiene el estado discreto y se modela a travs
de secuencias de eventos. la descripcin formal de las reglas de interaccin puede expresarse en la forma de esquemas de bloques (como en el
paquete de simulacin 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 seccin anterior. Las ecuaciones de estado para el
modelo del ejemplo 1 resultan del balance de volumen. Considerando un
pequeo intervalo de tiempo dt tenernos
dV 1 = dt(F1 -F)

dV,

dtCFt F)

donde dV 1 y dV, son los cam bios en los volmenes 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 pequeo
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
funcin 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 funcin de entrada y por eso slo


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 ractersticas de
las vlvulas a travs de las cuales salen los dos flujos. Las superficies
S y 5 8 tambin depend en de los niveles segn los perfiles de los fondos
de las presas. Integrando ias dos ecuaciones del bal ance de volumen
obtenemos otro modelo matemtico eq uival ent e. donde las alturas se
expresan a travs 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 energa calorfica. El balance para el volumen dentro de un
intervalo de tiempo pequeo 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)]

donde c es el calor propio del agua.


Una simple reordenacin 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-

<JJ
Q)

W-0

-F2 (t)T(t)]/V(t)

1
1

La manera de derivar las ecuaciones para los dos ejemplos es comn


para muchos sistemas fsicos. Para hallar una descripcin matemtica
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 mecnicos, o los balances de masa y de energa en los sistemas
con flujos de masa y energa.

3.3

:~

n 1

1
1

jl

~ ~ ~
Q)

. -8
\ o~

-o

11
1

.gro

,g

Qi

-o

//

~
ro

E
Q)

a.

Q)

a.

Q)

ro

ro

-~

(J)

l.

~~

~~

a.

'

Q)

J
'

'

Segn las consideraciones anteriores podemos observar que ni la descripcin informal ni tampoco la descripcin formal del modelo son
nicas. Para escoger la descripcin adecuada, que implicar cierta simplificacin del modelo, hay que considerar los siguientes seis aspectos
de simulacin:

...........

(i 1

~~ i

- -- -

:-=

1it1

Marcos experimentales y modelos simplificados

El objetivo de simulacin. Es la tarea que intentamos resolver a travs de la simulacin.


2. El sistema real. ste es el objeto, cuyo comportamiento intentamos
modelar y simular.
3. El modelo bsico. Este modelo refleja todas las propiedades del sistema real. Podemos decir que, excluyendo algunos casos triviales, el
modelo bsico nunca se puede construir.

/ j

L__jro\.
1

o"'

-o

;;;;

o"'

-o

..,;
M

"'...
Se

G:

~~~~~&;:;.;-;.

t - :!ttf*WS#A,i#Bk irii'iiNMWAA*JA&H ES

iM&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 simulacin. Se define como un conjunto de variables descriptivas. Para el mismo sistema real podemos definir
urio o ms marcos expe~imentales.
.Vfodelo simplificado. La simplificacin 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 simulacin. La computado:
ra impone ciertas limitaciones tcnicas al marco experimental y al
modelo simplificado. Slo los modelos que cumplen con estas limitaciones pueden ser realizados prcticamente.(Figura 3.4 ver
pgina anterior.)

A cada CLIENTE N (cliente nmero N) lo describen las siguientes


variables: el momento TL de su llegada a la puerta de la peluquera, y un
conjunto de variabl es lgicas Dln, D2n, ... , DMn que definen sus deseos
(cortar el pelo, afeitar, etc.).
Las variables para la FILA son: L - la longitud actual (el nmero de
clientes en la fila) y LMAX - 1? longitud mxima.
Para el PELUQUERO las variables descriptivas son las siguientes:

VI, V2, ... ,VM ,donde Vi es el tiempo promedio de servcio 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 pequea peluquera. 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.

Simplificacin 1

Lus reglus de interaccin entre los componentes.

Los clientes llegan a !a puerta de la peluquera en momentos aleatorios. segn 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 peluquera). 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 distribucin negativa exponencial,
y el tiempo promedio de servicio depende de los deseos Dn 1, ... , DnM del
clie!lte actualmente atendido. Despus de ser atendido, el cliente sale

La figura 3.5 muestra un modelo de una peluquera con un peluquero y


una fila. La descripcin informal de este modelo puede expresarse
como sigue:
Los componentes:

CLIENTE 1. CLIENTE 2..... CLIEi\ITE N, donde N es el nmero de clientes


que pueden solici tar un servicio en la peluquera.
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 simplificacin del modelo.
Vamos a ver que sta no es la nica simplificacin posible.

Simplificacin 2

--

Los clientes

La cola

11

El peluquero

;~_J'"'".'

En esta simplificacin rechazamos a los clientes como componentes del


modelo. La descripcin informal es como sigue:

Los componentes.

Peluquero
Fila

Figura 3.5. Una peluquera.

~~~~~~~~~~~~~~~~~~~~~~~--~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
simplificacin nmero 1, menos el conjunto de variables Vl ,... , VM del
peluquero.
Las reglas de interaccin:
Son similares a las reglas de la simplificacin l. La diferencia es que la
llegada de un cliente ahora significa slo un cambio en la longitud de
la fila, y no una accin de un CLIENTE, ya que los CLIENTES, en esta
simplificacin, no son componentes del modelo. El tiempo promedio de
servicio se calcu l a como una variable aleatoria y no como una funcin
de los deseos de los clientes. La distribucin para esta variable se deriva de las observaciones estadsticas sobre el comportamiento del sistema real en el pasado.
Hay que observar que la simplificacin 2 implica un modelo ms
sencillo. que necesita mucho menos de la memoria operativa de la computadora y corre ms rpido que el modelo que corresponde a la
simpli ficacin 1. Los marcos experimentales de estos modelos son distintos . La simplificacin 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 simulacin es nada ms observar la longitud de la fila. el nmero de
clientes atendidos y la ocupaci n promedio del peluquero, la simplificacin 2 es suficiente.
Es comn que ios marcos experimentales ms .. grandes incluyan
los ms simplificados. Sin embargo , no siempre es as. Vamos a construir un marco experimental y el modelo simplificado correspondiente
para la misma peluquera, 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 cmo
cambia. por ejemplo. P (n. l ) dentro de un intervalo de tiempo Dt, suponie:-ido Dt suficientemente pequeo para que no ocurran dos eventos
dentro Dt. y que el tiem po de atencin de cada cliente tiene la distribucin 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 cmo 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 ningn


cliente y el peluquero no termin la atencin 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 atencin actual. La probabilidad de esta
opcin es A.Dt(l- Dt)P{ (n-1), l) (t).
El sistema estuvo en el estado "(n+l),l", el peluquero termin la
atencin actual y no lleg ningn 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 trminos


que contienen el factor Dt al cuadrado (por ser muy pequeo) 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

) P {n, l} (t)

1, 1} ]DT

Si divi dimos es ta ecuacin 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)

donde n >l. n < LA1AX


Lo que obtuvimos es una ec_acin 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 artculos ! 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 ecuacin 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 definicin de
estado. En consecuencia. podemos definir un marco experimental para

J,-..P-

,.~~~:~"'~7:7,~:

48

Verificacin y va lidacin 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 interseccin de este marco con los anteriores est vaca. Claro que usando esta simplificacin simulamos :as propiedades probabilsticas del sistema y no su comportamiento real. De todas
maneras. el marco experimental tiene que ser congruente con el objetivo
de la simulacin.

tema real y construir un modelo adecuado para generar los valores


aleatorios con una distribucin emprica.
La verificacin del modelo de simul acin es la responsabilidad del
autor del modelo. Sus conocimientos tienen que permitirle comple tar
la descripcin 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 ms fcil si se toman en cuenta los
siguientes consejos:

l.

3.4

Verificacin y validacin del modelo


Cada modelo matemtico o orograma de simulacin de un sistema real
tiene que ser aceptado por ei usuario con respecto a su exactitud. Para
aclarar los trminos 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 aplicarn 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 setjn sus objetivos?,
es el cuigo computacional coi recto y correspondiente al diagrama de
iillJO!
Vamos a decir que un modelo es confiable si es aceptado por el
usuario como vlido emplendolo para tomar decisiones que afectarn
al sistema real.
Desde luego. los datos tienen que ser conf iables y antes de usarlos
hay que revisar de dnde ;ienen y qu realmente representan. Si la
bricc1 proporciona. por ejemplo, los datos sobre intervalos de tiempo
cuando una mquina esperaba sin carga . hay que verilicar si stos fueron los tiempos de repar;:icin. !os tiempos de espera a la reparacin,
espera por falta de material, por falta del oper ado r o un cambio en el
perfil de produccin. Si estos datos se usan para evaluar, por ejemplo,
qu tan eficaz es el operador de la mquina, los resultados pueden ser
confusos.
L'na situacin tpica ocurre tambin, cuando el autor del modelo
necesita datos sobre la distribucin de una varia ble aleatoria, pero la
nica informacin alcanzable es el valor promedio sobre un periodo en
ei pasado. Lo que se hace J menudo. es suponer una de las funciones de
distribucin tpicas para !os modelos semejantes y ajustar sus parmetros 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 distribucin negativa exponenc!al o la de Erlang. Otra posibilidad (pero ms
difcil) es hacer un esturL.J .;;..:s profundo del funclonamiento del sis-

49

2.

3.
4.

5.

Usar los lenguajes de 'simulacin, o de uso general, bien estructurados, como Pascal, C, Simula, Modula 2. etc., o paquetes adecuados
para simulacin 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 parmetros del modelo.
Captar y procesar un gran nmero de estadsticas 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 animacin y todas las gricas
posibles que puede producir la computadora. para facilitar ei proceso de verificacin.
Aplicar todas las dems tcnicas ne venficacin, ("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). Tericamente, se considera un modelo simplificado como
vlido, 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 operacin de simplificacin del
modelo, x (t) y y (t) es el estado y la saida del modelo simplificado
respectivamente. La hes un incremento de tiempo y 8 representa ia funcin de transicin 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
vlido si la transformacin x (t) __, y U ~ h) proporciona el mismo
resultado, independientemente del camrno que utilizamos y del intervalo h. La teora de modelacin proporC1ona mtodos 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 prctica. sin embargo , se cons idera suficiente que el
error (la distancia) entre las salidas de! sistema real y el modelo es
bastante pequeo, como lo ilustra la figura 3.7. Esta condicin se :lama
validez "entrada-salida". Las dificultad es que pueden aparecer en este
enloq ue se deben a la falta de la definicin exacta de la distanc:a entre
las seales de entrada y salida o , a menudo, a la falta del objetivo de toda
la tarea de simulacin.
La validez depende no slo de la simplificacin del mod elo sino
tambin del marco experimental que usamos. Vamos a considerar un

:-iu

t.specllicaciones del modelo

Yerificacin y v;iJid<icin del modelo

Entrada

x(t)

9 r

SI

~el

v.

_I
s\

Is

IS
figura 3.8. Cn circuito RC con Ja tensil>n de excitacin.
X5(tTh)

X5 (t)

ejemplo que muestra cmo el mismo modelo simplificado puede ser vlido en un marco experimental y ser invlido en otro. (Ver figura 3.7)
La figura 3.8 muestra un circuito elctrico RC con una fuente ideal
de tensin de Vl volts conectada a travs de un interruptor (tambin
ideal. con tiempo de cambio de estado cero). Suponemos que R = O.O!
ohmos. e= 0.1 microfarads, y que el interruptor cambia su posicin
cada segundo. As. al circuito RC aplica una tensin "rectangular" con
fr ecuencia 0. 5 Hz. Se consideran dos modelos simplificados:

).
).

Y 5 (t-h)

Y5 (t)

Figura 3.6. El diagrama para validacin de modelos.

SIMPLIFICACIN A: se supone que la resistencia R y la capacitancia

e son elementos ideales.

SIMPLIFICACIN B: Rechazamos la resistencia. por ser muy pequeria. prcticamente cero. Las dems suposiciones son las de Ja simplificacin A.

Consideremos dos marcos experimentales.


entradas
El sistema real

iguales

salidas

'.\1ARCO EXPERIMENTAL 1: Observamos la tensin v de la capacitancia y la corriente i. La tensin y la corriente se mide con el error
posible de 0.1 %. para todo t (tiempo) sin medir la tensin en los
momentos cercanos a los momentos "ts" de cambio de la posicin del
interruptor. esto es, para ts - e< t < ts +e. donde e = l milisegundo. La
variable de entrada es la posicin del interruptor y la de la salida es la
tensin i:.
MARCO EXPERIMENTAL 2: Observamos la tensin y la corriente de
la capacitancia. como en el marco 1, y tambin el flujo de la energa que
sale de la fuente. Este flujo es el valor de la variable descriptiva E. igual
a la energa suministrada por la fuente. por el periodo T(dos segundos).
Las variables de salida son u y E.
Con la simplificacin A la capacitanc i a se carga y descarga a travs
de la resistencia R. La constante de tiempo de estos cambios de la
tensin es muy pequea (igual a 0.00000001 seg). as que la tensin de

bastante cercanas?

_J ~

~dolo

W--

Figura 3. i. Validacin .. 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:."

:-t:w u

t>_.la

:;:

')

Especificaciones del modelo

Ve 1ifk ;"

la capacitancia cambia muy rpidamente de O a VI y al revs. segn la


posicin del interruptor. Con la simplificacin Bel funcionamiento de nuestro modelo es muy simpie: la tensin del capacitor sigue a los cambios
de la tensin de la excitacin. esto es, v(t) =O o VI, segn la posicin del
interruptor. Podemos observar que los dos modelos simplificados son
vlidos con el marco experimental l. Para analizar la validez con el
marco 2. hay que calcular la energa suministrada por la fuente.
Con la simplificacin A tenemos:

(1)

V/Re

donde 1(!) es la corriente de la capacitancia. La potencia instantnea


suministrada por la fuente es u(t)i(t) . Para calcular la energa suministrada por la fuente dentro del periodo T hay que integrar la potencia
i nstantnea desde el momento en que el interruptor cambia a la posicin "" (el momento ta) hasta ta + T/2. El valor de esta integral es la
energa suministrada por la fuente dentro de un periodo. Tomando en
c uenta que la tensin r; ( t) es constante y vale V1 y sustituyendo la expresin ( !) para la corri ente , el resultado de integracin es

~
~~
'./i
u u\..)

1
1

.~., . .-,:.,~y.v~'rt ~+

fS'ti'titf'

./ ilif,;-g:..,.

- "-::i~'h;.;it'ikr!'eir.i!"Et hr&,;

M2

>'( t )

M1

F2

1
1

Fi

Figura 3.9. L: n sist e ma mec[;nico.

(3)

a-

- Sw-' 4-tifY~

f(tf'-

L~
~~

..

L___J

- i
1
1

11

11\
1 ;

M,

1
1

Figura 3.10. Suspen s i1'in d e un -iu t o m livil.

\~

,,-

:b//~/////~~~0'//%7//~//,/:;;,,-;/7

porque la energa del capacitor cargado con la tensin VI es VI cuadrada


multiplicado por Cy dividido entre dos.
En el sistema real la potencia suministrada es prcticamente igual a
la que resulta de la expresin (2), y no la de la (3). Esto significa que el
modelo simplificado segn la simplificacin B no es vlido con el marco
experimentul 2. Hay que responder a la pregunta: adnde se fue la mitad
de la energa 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 pequeo. Las
propiedades del modelo simplificado B que parecan obvias, resultaron falsas. En otras palabras. simplificando los modelos matemticos,
no es cierto que siempre podemos pasar a cero con parmetros que son
muy pequeos, como lo hicimos con R en la simplificacin B. Podemos
decir que. con el marco experimental 2. la simplificacin B no es el caso
lmite de la simplificacin A con R ~O.
Adems 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

Con la simplificacin B toda la energa suministrada por la fuente


tiene que ser almacenada en el capacitor, porque no hay prdidas de
energa en el circuito. As, obviamente

E= C(VIY/(27)

(2)

E= C( VI)' (! - e'1 r' 111 1)/ T = C(VI/ / T

53

dificultad es. si durant e el proceso de co ll struccin del modelo y su validacin el autor mantiene ei contacto con el usuario l cliente) y si ste
participa en el proceso de validacin. Por otra parte , podemos decir que
no existen modelos absolutamente confiables. y que la confiabilidad total del usuario puede conducirle a errores en la interpretacin de los
resultados y a tomar decisiones errneas 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 slo para programas
de simulacin.

- t/(RC)
i(t)

;,n y validacin del modelo

a.- ii-~--;;:_#;~ "'-t ... -

te +:

-~~......-.~,,.

. -;;f&'i-b --&~

mh~~~Q~~....--~

~-. -...-.r.P;---?!!'''""",................,'"" " ~~

....

La-~~::;.._.-

-~,.,,,i~-~

.._

t"". c

"''"

:j

54

3.5

Especificaciones del modelo

Problemas
l.

2.

3.

4.

5.
6.
7.

Dado un sistema mecnico que contiene dos masas lvf1, lvf2 (figura 3.9
ver pgina anterior) y dos resortes.
Las masas se mueven sobre la superficie S, sujetas a las fuerzas de
los resortes correspondientes, las fuerzas de friccin F1 y F2 y una
fuerza externa F(t), dada en funcin de tiempo. Establezca la descripcin informal de un modelo simplificado de este sistema, especifique el marco experimental, las variables de entrada, salida y
estado, suponiendo que el objetivo de simulacin es investigar el
movimiento de las masas.
Establezca la descripcin formal para el modelo del problema 1,
suponiendo que la fuerza de friccin es proporcional a la velocidad
de la masa correspondiente.
Cmo cambiar la descripcin informal para el modelo de la iigura
3.9. si el objetivo de la simulacin sera "averiguar la potencia disipada debida a la friccin entre !a masa y la superficie S"?
Encuentre dos (o ms) posibles marcos experimentales y modelos
simplificados con sus descripciones informales y formales correspondientes. para la suspensin de un automvil. Considere las simplificaciones que corresponden a una sola rueda ( figura 3.1O ver
pgina 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.
Cul es la diferencia entre la validacin y verificacin de los
programas y modelos de simulacin?
Puede un modelo vlido no ser confiable?
Cul de los modelos mencionados en este captulo es vlido pero
no puede ser programado y verificado?

CAPTULO 4

Modelos matemticos
de los sistemas
dinmicos y algunos
algoritmos numricos
4.1

Introduccin
En este captulo se d iscuten algunos modelos matemticos y mtodos
numricos que pueden utilizarse para si mular el comportamiento dinmico de sistemas con parmetros concentrados y se comentan algunos aspectos computacionales que surgen en la simulacion de sistemas
con parmetros distribuidos (vea la clasificacin de sistemas del captulo 1). Para mayor informacin sobre mtodos numricos se recomienda consultar, por ejemplo, los libros de Conte y Boor o Lambert (vea
referencias) .
Antes de hablar sobre los mtodos n umricos, hemos de suponer
que la mayora de los modelos que aparecen en este captulo pueden ser
descritos por sistemas de ecuaciones diferenciales ordinarias lineales o
no-lineales del primer orden. Al final del captulo se discuten problemas
computacionales que aparecen cuando el modelo matemtico es un sistema de ecuaciones diferenciales parciales. Hay que observar que la
mayora de los modelos dinmicos de los sistemas con parmetros
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 ecuacin del segundo orden

ux ~ bx ex ; f(t. x)

(1)

donde un punto encima de la variable significa la diferenciacin con


respecto al tiempo t. Esta ecuacin puede interpretarse como el modelo

S6

El rnd"<l '' d-' Euler

'vlodelos matemi1tic o s

donde y es la variable dependiente. tes la variable independiente (el


tiem po en nuestro caso) y fes una funcin continua. El problema es
resolver esta ecuacin 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
frmula:

matemtico de un sistema mecnico con un cuerpo. un resorte y un


amortiguador, sujeto a una fuerza f(r. x) que depende del tiempo y de la
posicin (de la manera lineal o no-lineal). Introducimos la siguiente
notacin:

x 1 = x, x,

.'i7

dx/dt

(2)

Y,, . 1 - Y,, = hf (t. y.) = h~,


Tenemos

ux,

donde y 0 es el valor en el punto t y ' Y,,. 1 es y(t + h). Desde luego Y,,. 1
calculada segn la frmul a (2), es una so lucin aproximada. normalmente distinta de l a solucin exacta y (t).
La f rmula (l) tiene tambin otra interpretacin: si el sistema es
.. de tiempo discreto. esto quiere decir. si su estado c ambia de t,. a tn. , y
este cambio depende slo del estado en t. la frmula ( 2) es la ecuacin
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 ecuacin o ri ginal
es ( 1) . la frmula ( 2) solamente proporciona una aproximacin a la
solucin 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 ecuacin de tipo
( 1) que describe un sistema dinmico estable I"' corres ponda una
ecuacin en diferencias (2), la solucin de la cual es estable. Tericamen te . si h _, O. entonces la sol ucin y ( aproximada) tiende a y V,)
( verdadera). En realidad esto no es cierto. Si resolvemos !a ecuacin
( 2) por computadora. no podemos dismin uir /J demasiado por dos razones: primero. si calculamos la solucin sobre un inter valo [t. t A].
entonces e! nmero de pasos (clculos) segn la frmula ( 2) es por lo
menos A /h . .Si h tiende a cero. el tiempo de cmputo tiende a infinito.
Segundo. si h es muy pequeo. aparecen los errores de compu tacin.
Si. por ejemplo. la computadora tiene la exactitud hasta 7 dgitos. 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 pequeo y la comput adoralo ignora sumndolo ay,,. La so luc in 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 frmulas que nos permiten estimar el error del mtodo de Euler.
Supongamos que y es la solucin aproximada. la solucin 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. despus de una simple reordenacin

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 ecuacin original ( 1). As
podemos reord enar el modelo siempre y cuando la ecuacin origi nal
pueda resolverse (algebraicamente) con respecto a la derivada de orden ms alto de la variable dependiente. Por eso la mayora de los mtodos numricos estn diseados 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
comn o bibliotecas de procedimientos matemticos que son disponibles en cada sistema de computacin.
La simulacin 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
consideracin y grabar o imprimir los resultados.
Vamos a discutir algunos de los algoritmos de clculo que pueden
utilizarse.

f (t, y)

4.2

<

L y '. y"(t)

<

El mtodo de Euler
don de L y Y son unas constantes positivas. Entonces. el error
e = y(t) - Y,, cumple con !a desigualdad
ste es quizs el ms simple de los mtodos para resolver ecuaciones
diferenciales del primer orden. Consideremo s !a ecuacin

y(t)

f [t. y (t) l

( 1)

"

hY
S:: - ( eAL - 1)

2L

~-

..

~-

....-

--~ .._~,._

-~

IA..,~

S8

Lo s .i lgor tnws de Runge-Kutta

Modelos matemticos

59

Si susiituirnos K calculado segn la frmua (5) a Ja frmula (3) y las


or de namos segn 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 terico y no incluye Jos
errores de cmputo. que dependen de la computadora. Hay que observar que el error mximo es proporcional al valor de h (el incremento de
tiempo). El mtodo de Euler tiene algunas versiones mejoradas, las
cuales no se discutirn en este texto. Para mayor informacin se puede
referir a los libros de Conte, Boor o Lambert.

a+ b

4.3

Los algoritmos de Runge-Kutta

1 /2(~

aK,

l =

b~

rr,.

~ =

1/ 2.

(3)

bK2

T enerno s dos ecuaciones con cuatro incgnitas. que signific1 que la


solucin no es nica. Podemos. por ejemplo. escoger

donde

K1
K2

= hf(t Y,,),

hf(tn + CI. h. Yn + ~ K 1 ).

y(f

1)

= y(f) +

hy(t.)

y(t,)

+ hf(t0 ,

h'((,

2ffty

h 2 y(f)/2!

Y.)

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 funcin que tiende a cero ms rpidamente que h 3
Desarrollando la expresin para K en la serie de Tay!or y tratndola
como una funcin 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

~2kf
+

'

f fY

o(h 3 )

(5)

[~~~. ~===:~,~~~:~=~;~~~~~:--~~;~:~ r.~'';~.:~"TC7.'.


.,

. ~,

~-..-

&c)

't:

.~

ui

. ,,

'J;

-~( .efc4i#i":f,.~~;;6 4lhj:L..,;,;-, 1' =:-" rj/~$\,:.' -.;.;{-::'.Jtfzl:.ot~"'& , w

X=~=l

K;

M(t,,. Y)

K,

M(t,,

K,

hf(t,, ... h2. Y,, - Kj 2)

K,

hf(t,, +h. Y,, - K)

Y,,

h/2. Y,, - K /2)

l / 6(K1 ... 2K,

2 K3

K,)

Hay que observar que para aplicar el mtodo de Runge-Kutta de


orden n. la funcin {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 tambin a los sistemas de
ecuaciones ordinarias del p rimer o r den.
El error mximo 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 ms
rpi 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 ms al to (n). que r es ultan de la suposic in 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 funcin fes diferenciable con respecto at y' y tantas


veces cuanto sea necesario en las siguientes frmulas. El problema es
calcular a. b. a y~ de tal manera. que la solucin Y,,. 1 de ( 3) aproxime, de
cierta manera ptima. la solucin exacta y(t ). Para hallar estas constantes. desarrollamos la funcin y(t) en la serie de Taylor con respecto al
tiempo en el punto t, ycalculamosy(t"_ 1) como la solucin exactay(t" ... h).
Tenemos

ff.) = b a~

Segn estos mtodos se busca una solucin aproximada a la ecuacin


(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<lelos matemticos

Existen muchas versiones y modificaciones de los algoritmos de


tipo Runge-Kutta. Una de las ms tiles en simulacin es el siguiente algoritmo llamado Runge-Kutta-Fehlberg (RKF).

I
j

a.i Yri .,

=h

={)

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.

C36so1s 13) K,

K.,

hf(y(1) - (8/ 27)K1

h)

y (t)

(6)

O'. = y
J

k
.

a1

)
,/-J

~I

2K,_ - (3544/ 2565)K,

- (1859/ 4104)K4 - (1 l 40)K5' t


y(t

J. ..;

=o

k
L..

h)

~)

donde a.1 y ~1 son unas constantes. k es el nmero de pasos del mtodo,


h es ei incremento de t iempo. Se supone q ue a,= l. Segn la frmula ( 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 mtodo de Runge-Kutta. El mtodo de
multipaso es explcito si~.= O e implcito si ~.-,O. El mtodo de Euler se
puede interpretar como un mtodo explci to de multipaso (con k = 1). El
mtodo de multipas o es consistente si

'<\"""'

- (845/4104)K4 , t

n1

o5h)

(25/ 2 ! 6)KI (1408/ 2565)K,


T

Se usan diversas f rmulas para los mtodos m ultipaso. Un ejem p lo


es el mtodo 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 funcin (y. t). El error est dado por la siguiente expresin:

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 automticamente segn 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 mtodos lineales de multipaso


El concepto principal de estos mtodos es la bsqueda de la solucin
"y" corno una forma lin eal de algunos valores anteriores de la misma
solucin. de algunos valores anteriores de la funcin !(del lado derecho
de la ecuacin) y de! valor actual de f. La forma general de la solucin es

Existen frmulas para estimar los errores de estos mtodos. que no


se discutirn aqu. Prcticamente la ut ilidad de los mtodos multipaso se debe a que en un clculo de la solucin y se necesita slo un clculo
d e la funcin ! (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
clculos de la funcin f. Por otro lado, para seguir con los clculos, los
mtodos multipaso necesitan unos pasos anteriores guardados en la memoria. Existen diversos procedimientos numricos que utilizan el mtodo de Runge-Kutta para empezar el proceso de clculo y , despus de
calcular la solucin para unos paso s iniciales. cambian a uno de los
mtodos multipaso. para avanzar ms rpidamente.
Si~.#- O, el mtodo se llama implcito. En este caso el lado derecho
de la frmula (6) depende no slo de los valores anteriores de y , sino
tambin del valor actual dey. Por eso, para calcular y, hay que resolver
una ecuacin algebraica (puede ser no-lineal) con respecto a y. Esto
podemos hacerlo aplicando, por ejemplo, el mtodo iterativo de Newton. Los mtodos imp lcitos son ms exactos, pero e! t iempo de cmputo crece considerablemente. Los procedimientos que usan los mtodos
impicitos son frecuentemente de ti po "predictor-corrector", donde el
valor aproximado de la variable "y" se calcula con un m todo explci to
( esto es, el "'predictor"') y despus se ca lcu la el valor ms exacto con un
mtodo implcito ( el "corrector") .

~~~"j,j;~--~-~.J

n2

Modelos matem:1ticos

Esta bilidad de los mtod os numr icos

don de U y V son funciones de tiempo t. Esta ecuacin es una ecuacin


diferencial ordinaria lineal de orden uno y tiene soluciones estables para las entradas U acotadas. Por ejemplo, suponiendo la condicin inicial V= O, l a respuesta de este modelo a un escaln (esto es, a la entrada
U = O para todo t negativo y U= A para t ~O, A constante) es

+
1

v__c

V= A [ 1 - EXP(-t/ RC) ]

Todas las frmulas anteriores se aplican tanto en el caso de una


sola ecuacin. como en el caso de un sistema de N ecuacio nes simultneas de orden uno. En este ltimo ca so la variable y as como la funcin f del lado derecho de la ecuaci n tienen valores vectoriales.

Estabilidad de los mtodos numricos


No vamos a comentar aqu los problemas de estabilidad de los sistemas dinmicos. La t eora de estabili dad de sistemas se discute en
muchos libros sobre sistemas en general, sistemas de control automtico llC!. 177 1 y en la teora de las ecuaciones diferenciales. Intuitivamente,
vamos a considerar a un sistema como estable, si su respuesta a una
seal de entrada acotada es tambin acotada (estabilidad de tipo B!BO
-bounded input, bounded output). pero hay que tomar en cuenta que
existen tambin otras deiiniciones de estabilidad. Por ejemplo. se dice
que un sistema lineal es estable si y slo si la respuesta del sistema a
una seal 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 funcin 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
mtodo numrico que aplicamos para llevar a cabo la simulacin. Desafortunadamente, la estabilidad del sistema real y la estabilidad de su
modelo matemtico no implican la estabilidad del algoritmo numrico.
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 tensin U. y la v ariable de salida
es la tensin V en el condensador. La ecuacin 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 condicin 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 . o)

(-2.51, o)

(-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 mtodos multipaso involucran la teora 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 mtodo de Euler con h = 3. Los siguientes pasos de clculo, segn la
frmula (2) proporcionan la secuencia de nmeros 3, -3, 9. -15. 33, -63 ,
129. -255 ...... que t iende a la infinidad y representa una solucin 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 solucin estable y que
nos aproxima a la so lucin exacta con un error que tiende a cero.
Las condiciones de estabilidad se pueden derivar tericamente en
la forma de la desigualdad A< /...h <B. donde h es el incremento de tiempo aplicado en los clculos. /...es una constante que depende del modelo. Si el modelo es lineal, tenemos A. = - 8f ,''&y, donde fes el lado derecho
de la ecuacin. Para el mtodo de Euler A= -2. B =O. As. por ejemplo. para
el caso del circuito RC, y= V.

Figura 4.1. Un circuito RC.

4.5

(7)

___....,..._.

-j~

'>t

..;. _ ;;_,,-;~,, --ys\i{ .lr" 'ii ' -~

1> c'r-?hcWm

~'-fuhEL -~w~,"''i

63

1+-l '&&t~ t#1~t'?afaf>:Fti"i@ti*-'f;;,h#iQ'i{~'.'"1\>ii-f.:~v:-.Fs~W.+ '.Y~;;, -~1tzrjp,;J4n- if~~

,.,,m".(@.-,1.;7:e&;.

:' J"-~),'" '"/,

s ;l

":"'"-:~- ~-~

~:f -A~w he.:

f.+-rn. ..

J,.

4, I~"

~~

.e .: -------~~:.....t.:.::_.__C\~~;~-~_~

fi4

Modelos m a tem:iticus

Ec u01 c i1n de muertes

difer encias, basndose en el lu ~ ar geomtrico de las races de la "ecuacin caracterstica" derivada d e la frmula del mtodo, en el plano complejo. Estas condiciones no se discutirn en este texto.

4.6

2.

3.

Consideremos una secuencia de eventos aleatorios Ek} = E11 E 1, E2 ,


por ejemplo, cambios en el nmero de miembros de una poblacin. Esta secuencia constituye una cadena de Markov de eventos. si y slo 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 nmero 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 estadsticas 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. Adems. 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.

Slo 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 funcin de h que tiende a cero con h ~ O, ms rpidamente
que h.

La interpretacin ms natural de esta secuencia de eventos es el


crecimiento de una poblacin, donde "el sistema est en el estado E,,"
significa que "existen n miembros en la poblacin" 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 slo si ocurre una de las siguientes opciones:

l.

fi.S

Adems suponemos que h es suficientemente pequeo para que no


ocurran dos eventos (dos muertes. dos nacimientos. etc.) en el intervalo [t, t + h].

Ecuacin 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 opcin 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 funcin que ti end e a cero con h - t O ms rpid am ent e


que h. Despus 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 matemtico (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 slo se pueden simular y observar
las propiedades estadsticas del modelo y no las trayectorias reales ( los
estados).
La ecuacin de muertes y nacimientos tiene varias aplicaciones . Por
ejemplo, para simular el crecimiento de una poblacin hay que observar
que P,, (!) significa la probabilidad de que existen n miembros de la
poblacin en el momer.to ry que tanto la intens idad de nacimientos comola de muertes es proporc ional al nmero de miembros de la poblacin. 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
condicin 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 ecuacin de muertes y nacimientos. Se trata de un sistema de comunicacin
telefnica a larga distancia, que tiene M lneas para llamadas simultneas. Se supone que el flujo de clientes que intentan efectuar sus
llamadas es de tipo Poisson con el parmetro A.constante y que el tiempo
de servicio de una llamada ya iniciada (el tiempo de hablar) tiene la
distribucin 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 Mlneas se
otorgan a los clientes hasta que n = 1"1, despus crece la lnea de espera.
Observamos que la intensidad de desocupacin de las lneas depende de
cuntas personas hablan en el momento. As, tenemos

n para n
,.

<

mulacin. hay que actualizar esta parte de memoria y sacar los valores
con el retraso deseado. Vamos a mostrar un ejemplo de la realizacin de
este mecanismo en los lenguajes FORTRAN y PASCAL. Suponemos que
nuestro modelo es de parmetros concentrados y contiene] componentes de puro retraso cuyo valor es R unidades de tiempo del modelo. Si el
paso de solucin de las ecuaciones del sistema es H, tenemos el retraso
de L pasos, igual (aproximadamente) a R/H. Para guardar la historia de
las seales 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 cclico, esto es, la posicin 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 ecuacin 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 ecuacin para P,,, n >O. depende de la probabilidad P,. 1 y de P,,. 1 Por eso. si limitamos el nmero
d e ecuaciones a. por ejemplo, L. la solucin para PL (t) ser seguramente falsa. Prcticamente. desde luego, tenemos que limitar el nmero de
ecuaciones. pero si queremos observar L probabilidades. el lmite 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 seales. Un ejemplo
tpico es un elemento de transportacin de masa o de energa. como una
banda transportadora o un tubo a travs del cual pasa un lquido. A este
tipo de retraso vamos a llamarlo .. puro retraso y modelarlo con la
ecuacin

x(t)

"
~

' ii

Mpasos

1s=T=r
1

1 11

NC

u(t - r)

dondex es la seal de salida. u es la se11al de entrada para el elemento de


retraso y r es el valor (intervalo de tiempo) de retraso. La simulacin
numrica 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<ltem[1ticos
Sistem<ls rigidos

Se supone que J:::; 10 y L:::; 100. U es el vector de seales que


deseamos guardar en el RET (!, NC), ... , RET (J, NC), donde NC es la
posicin en RET. que corresponde a tiempo actual. La variable (parmetro formal) T representa el tiempo, Hes el paso (incremento) de la
solucin. El valor /representa el nmero de paso actual, segn el cual se
evala NC de tal manera que no sea mayor que 100. La posicin 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 realizacin 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 versin 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 versin 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 captulo 5.

4.8

Sistemas rgidos

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 funcin iv10D.
Para sacar e! valor de U(N) con retraso M pasos, podemos usar la
siguiente funcin

Consideremos un sistema dinmico 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)

x, (t)

l 000x 1 (t) -2x, (t)

donde x 1 y x 1 son las variables de estado. Es fcil ver que la solucin de


este sistema es como sigue

Esta funcin usa los valores de NCy RET. Se calcula la posicin 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 funcin.
El usuario de estos procedimientos slo tiene que definir el valor inicial
para NC y RET. Despus ya no se preocupa por estos valores. que no
aparecen en forma directa en el modelo. El modelo slo 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 expresin, por
ejemplo. el valor UR(3, 17) que devuelve el valor deX(3) con retraso de
17 pasos. La funcin UR proporciona los valores con retraso de un nmero entero de pasos. Con una simple interpolacin podemos obtener
el valor interpolado para cualquier retraso real. La realizacin de esta
funcin 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 solucin contiene componentes que cambian
muy rpido y componentes muy lentos. Si queremos que el algoritmo
numrico que se aplica para resolver estas ecuaciones numricamente
sea estable, hay que usar el incremento de tiempo h muy pequeo. por
ejemplo, para el algoritmo de Runge-Kutta de segundo orden tiene que
ser h:::; 0.002. aunque algunas soluciones cambian lentamente (et componente "rpido" no se nota o desaparece rpidamente). Sistemas de
ecuaciones de este tipo se llaman rgidos (stiff equations) y provocan
dificultades computacionales111 . 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 fsica
de l sistema real. Por ejemplo, un sistema mecnico que est compues-

~-;

"'t""~'f"

.~"

,.__

-"""

...

.....,;,.~~.

-'

70

Sis temas distribui dos

Modelos matemticos

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 recproco de la
distancia entre los elementos D. a la d iferencia de temperaturas entre
los elementos y al recproco de un coeficiente R (la resistencia trm ica)
que solamente depende del material. Encont raremos el balance de en er ga para un elemento dentro de un intervalo pequeo de tiempo (t. t + h).
Este balance se expresa con la siguiente ecuacin:
(2)
CAD [ T (t + h) -T (t)]; h [(T,, 7) - (T- T)] /(D R)

to con un nmero de masas. resortes y amortiguadores. va a mostrar


rigidez, si algunos de los resortes son mucho ms rgidos que otros. En
algunos casos es posible descomponer el sistema en un nmero de
subsistemas y resolver las ecuaciones de los subsistemas con diversos
incrementos de tiempo. Esta descomposicin tiene que hacerse con
cuidado y basndose en la estructura fsica del sistema real. Si tratamos, por ejemplo, de modelar una planta termoelctrica con un solo
sistema de ecuaciones, incluyendo los procesos elctricos rpidos que
ocurren en los generadores y turbinas, y los procesos trmicos lentos
que pasan en los hornos, lo que resultar ser seguramente un sistema
rgido. 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 simplificacin del modelo bsico del
sistema real.
Los aspectos de cmputo son los ms importantes en la simulacin
de sistemas rgidos. Parece que el futuro pertenece a modelos numricos que usan lenguajes orientados a objetos (vea el captulo 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 erga c1lorfica q ue entr en el elemento b dentr o del intervalo de
tem oh . T es iguai a la tempera tura T,,. El lado izq uier do de esta ecu acin
es la energa almacenada en el elemento b. do nde Ces el calor propio de!
matelial. Despus de dividir ios dos lados de ( 2) po r 11 y po r Dy pasar con
h y con Da cero obtenemo s la ecuacin p arcial siguiente:

rlt

Sistemas distribuidos - dificultades computacionales

.....,.,..

.....

(4)

DC AR

dt

donde i es el nmero consecutivo de elem ento. esto es . T , ; Th. As. en

ib

a
T

----'

le

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 ecuacin numr icamente


es discretizar el sistema con respecto a a posici n x . Es to significa que
despus de dividir (2) entre hD pasamos a cero solamente con h y no con
D. La ecuacin que o btenemos es

Segn la clasificacin de los sistemas dinmicos introducida en el captulo 1. los sistemas distribuidos tienen el conjunto de clases de equivalencia de entradas ms grande que el conjunto de todos los nmeros
reales. Corrientemente estos sistemas son descritos por ecuaciones diferenciales parciales. El estado de un sistema distribuido no puede ser
representado por un nmero real ni tampoco con un vector de nmeros
reales. El estado de tal sistema pertenece a un espacio ms amplio, con
la dimensionalidad infinita. El caso ms tpico es el del estado dado como una funcin (toda la funcin y no su valor en el momento), por
ejemplo la distribucin de temperatura en una regin o la funcin que
describe la concentracin de un componente en todo el volumen de un
tanque donde avanza el proceso de difusin.
Los problemas computacionales provocados por la naturaleza de
los sistemas distribuidos son bien conocidos y descritos en la literatura
sobre mtodos numricosl6 ll. 11. Vamos a mostrar aqu un ejemplo que
muestra las dificultades en su simulacin y explicar de una manera
sencilla las causas de estas dificultades.
Consideremos el proceso de distribucin de temperatura en un pedazo de metal. suponiendo. para simplificar las ecuaciones. que el sistema es unidimensional (por ejemplo. una barra cilndrica delgada con
longitud L y dimetro constante D). Denotamos la posicin a lo largo de

~._......_..

a~ T (x . t) /( C AR)

(x. t)

(J T

4.9

71

~:~

__,.,t..,_,~....,:..... _~~

-~j

72

P ro blemas

Modelos matemticos

lugar de una ecuacin 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 mtodos
numricos 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 solucin aumentando el nmero
de elementos N, el parmetro 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 araT, sube con el cuadrado de D, y el paso de tiempo para la
solucin tiene que disminuir por lo menos de la misma manera, para
mantener el algoritmo numrico estable (vea Ja seccin 4.5). Adems, el
nmero de ecuaciones tambin aumenta. Esto significa, que el consumo
de tiempo de la computadora aumenta por lo menos con l /D cbica,
prcticamente an ms. Esta propiedad de las ecuaciones parciales de
tipo (3) tiene razones ms 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 tambin "malas"
propiedades desde el punto de vista de los mtodos numricos. Parece
que el futuro de la simulacin 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
artcu10111muestra un ejemplo de un paquete de este tipo.

4.10

6.
7.
8.

9.

73

Cul es el valor mximo del incr emento de tiempo "h" para que el
algoritmo de Runge-Kutta de ord en 4 aplicado a esta ecuacin sea
estable?
Qu hay que suponer sobre un proceso estocstico discreto para
hallar la ecuacin de muertes y nac imientos que lo describe?
Cul es la informacin que proporc iona y cul es la que no proporciona la ecuacin de muertes y n acimientos?
Encuentre unos ejemplos de sistemas mecnicos (masas. resortes
y amortiguamientos) cuya descripcin matemtica resulta en las
ecuaciones rgidas.
.
Cules son las principales causas de las dificultades computacionales en l a simulac in de !os sistem as d istribui dos.,

Problemas
l.

Un proceso est descrito con la siguiente ecuacin diferencial.


x(t)

2.
3.

4.

5.

[x (t) x(t) J ... X< (t)


+

u(t)

Reordene esta ecuacin en la forma de dos ecuaciones de primer


orden. suponiendo que siempre x(t) >O.
Por qu el incremento "h" de tiempo para el mtodo de Euler no
puede ser demasiado pequeo?
Cules son las condiciones necesarias para los lados derechos de
las ecuaciones de modelo para que el mtodo de Runge-Kutta de
orden 4 pueda usarse con el modelo?
Cules son las ventajas y desventajas de los mtodos de multipaso
en comparacin con los algoritmos de Runge-Kutta? (Compare el
algoritmo de Runge-Kutta de orden 4 con el mtodo de Adams-Bashforth, averige cuntos clculos de los lados derechos de las ecuaciones del modelo efectan estos algoritmos para avanzar un paso
"h" en el tiempo) .
Un sistema dinmico est descrito con la siguiente ecuacin.
dx(f) i dt

-5x (t)

sen (O.lt)

""-

. ...,.

..._

~.

CAPTULO 5
Ejemplos de programacin
usando lenguajes algortmicos
(Basic, For.tran, Pascal) en
simulacin de sistemas
dinmicos continuos
5.1

Esquema general del programa de simulacin,


estructuracin del programa
La simulacin de sistemas dinmicos continuos o. brevemente. la simulacin continua. puede llevarse a cabo usando unos paquetes elaborados
para este fin, o. lo que parece ms comn . se realiza con ayuda de los
programadores profesionales usando los lenguajes algortmicos. Este
ltimo modo de realizar simulaciones es quiz ms flexible y permite al
programador tener pleno control sobre todas las funciones del modelo. aunque comnmente necesita ms 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 programacin ms rpido que cuando se
hacen programas mal estructurados. Siguiendo los pasos de programacin y los ejemplos que se muestran en este captulo. la simulacin
se puede llevar a cabo tambin por las personas con poca experiencia en
programacin. suponiendo que stas poseen un conocimiento bsico
de los lenguajes correspondientes.
Vamos a simular. con un ejemplo, un sistema dinmico 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 slo 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"

f--~- -;- ,'&1

-"r. ...,

a~1 -~ ':...\r~ ..;~~~-"'"'"'......_.;;,xj,.--.'..,_

~"'}~'u,.__

... ~-~ . -:,;;"

ll.-.:..

il!<!:~..:.;;x._/ .~-~::::---: ......-.

7;

Aplicaciones

Ejemplos de programacin

nada en otros segmentos. cambiar la funci n de fue rza, o usar el mismo procedimiento Runge-Kutta en otros prob lemas de simulacin. El
esquema de flujo para el programa es como muestra la figura 5.2. (ver
pgina siguiente).

LJ
Figura 5.1. Un sistema mecnico

Fl balance de fuerzas para la masa nos proporciona la ecuacin


x (!)

Bx (t) Ax (t)

5.2

Aplicaciones

5.2.1

Simulacin en PASCAL

( 1)

U(t)

El listado 1 muestra el programa correspondiente en PASCAL.


En este programa podemos fcilmente localizar los segmentos mencionados antes e indicados en el diagrama de flujo. La func in FlJNCTlON
U evala la fuerza. Los parmetros for males pira esta func in son el est ado X y el t iempo T. que significa que la fuerza puede depender no slo de x 1 sino de todo el estado del sistema y tambin del tiempo T. El
modelo matemtico del sistema est descrito por el procedimiento
PROCEDURE RHS cuyos parmetros 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 dems
parmetros y variables, como las constantes A , By la fuerza U no pertenecen a los parmetros 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 descripcin matemtica
de un modelo particular no puede ser parmetro formal de RHS, para
que no aparezca en e! procedimiento Runge-Kutta el cual, por la suposicin. tiene que ser independiente del modelo. Los parmetros A y B
son visibles en RHS como variables globales, y la fuerza U como una
funcin global.
El procedimiento PROCEDURE RK4 contiene el algoritmo de RungeKutta de cuarto or den que evala el vector de estado X en el momento
T + H, basndose en el valor de X en el momento T. Los parmetros
fo rmales de RK4 son: la dimensionalidad N, el vector de estado X. el
tiempo actual Ty el incremento de tiempo H. Este procedimiento evala tambin 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 captulo 4), pero no son multiplicados por H como
lo requiere el algoritmo. La multiplicacin por H se hace despus 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 despus 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 suposicin.
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 ecuacin (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 simulacin 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 parmetros 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 evaluacin de los lados derechos de las ecuaciones (2).
3. El procedimiento que describe el modelo, esto es, que evala 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 informacin sobre el modelo mismo. E! modelo est descrito por otro
procedimiento, que, a su vez. utiliza una funcin que describe la fuerza. As, el programa est compuesto de un nmero de segmentos que
pueden ser cambiados sin intervenir en otros segmentos. Podemos, por
ejemplo. cambiar fcilmente las ecuaciones del modelo sin cambiar

-=--~~...._.,...,.~ "'
...._:....

~"'-..~~

P+

)'t" - _ _ _ . _

M+'

""1

.P

* ~'L,

.,____

-;.; ~:. . _,. ~~ '~

.~

"!"~".
t1 ~-~-

77

- J 2f&'1~;;..,_-

..,.-44

tL-#

s.+.,,_

#~!~

..,....;-..

.:.=.tT~H;ih-~f-':"~ -~-

1---46''

.._

....._.......

..;;...,. } ..._.~.:..,.-

~...._

___._ .. ...,""'
~

~.,..,;,E~ ..'Y.:....;...,_-

i _.....,,;;._.

....

=:~.d

7X

Ejemplos de programacin

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 parmetros

FUNCTION U ( X: VECTOR; T:REAL) :REAL;


BEGIN
IF T<0.99 THEN .U:=lO.O ELSE U:=O.O END;

~
.c..

i) (

i> j

M veces )
1

i
1

'V

Procedimiento Runge-Kutta

, <l __

~
1

,
1

1 - -:

1
.

Almacenamiento o
impres1on de los
resultados

:
j

'

"7

~
i
1
I

I mpres1on
.. d e /os
resultados almacenados

,- -------------

- - 1--;)j

1
1

,
j

~
Figura 5. 2. El diagrama de flujo del programa de s imulaci n.

Eva luacin de los


lados derechos de (2)

.,

i
1

E1aluacin de la
fuerza

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 programacin


Aplicaciones 81

continuidad dentro del intervalo de solucin (dentro de un paso de


solucin) , la solucin puede ser err nea. Otra observacin sobre este
programa es que la fuerza se evala slo cuando se evalan los lados
derechos de l as ecuaciones del modelo, y esto ocurre en los momentos
T = O, 0.1. 0.15. 0.20 .... etc. segn el algoritmo que usamos. En consecuencia, los resultados no cambiarn si cambiamos la condicin 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 comparacin puede
ser incierto. Tes el resultado de mltiples sumas y despus de 10 pasos
del algoritmo tiene el valor aproximadamente 1.0, y por eso el resultado de la comparacin T < 1.0 depende de la implementacin 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

Simulacin en FORTR.\.N
El listado 2 muestra una realizacin del mismo modelo en FORTRAN.
Este programa tiene la misma estructura de la realizacin en PASCAL descrita en la seccin anterior. La funcin U es la funcin 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 programacin: por ejemplo, los arreglos en FORTRAN que son parmetros formales de procedimientos y funciones pueden ser declarados dinmicamente y as se
hace en este programa. Los parmetros del modelo que no son parmetros formales del procedimiento RHS se mandan a las ecuaciones a
travs 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

Simulacin en BASIC
El mismo problema de simulacin puede tener tambin una realizacin
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 ms difcil realizarla. El
programa principal empieza con la lnea 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
lnea 1000 y termina en 1270. Los lados derechos de las ecuaciones del
modelo estn descritos en el procedimiento que empieza en la lnea
2000 y termina en 2040. Las lneas 3000 hasta 3020 describen la fuerza.
Los procedimientos de BASIC no tienen parmetros 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'-lcin

Aplicaciones

tiempo y estado respectivamente. que se usa en el procedimiento Runge-Kutta y no daar 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
dems 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
1

TB

11

p segundos

1
RG

Figura 5.3. Un sistema de c:ontrol con retraso.

....-'"'

-~ -~.

Ejemplo con retraso - realizacin en PASCAL


Se considera un sistema de control de temperatura con retraso, indicado esquemticamente 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 travs del ventilador (V) y la tubera ( TB) de tal manera que
despus 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 seal
proporcional al error de control U- Ta la vl vula ( v'.4) que controla el flujo de combustible para el quemador (Q). segn la seal del controlador.
La descripcin y el an lisis de este sistema se puede encontrar en
el libro de Oga ta 1''1. Con la simplificacin que se considera en 1'' ' se
supone que el objeto de control (el recipiente con aire) es un objeto

;-y- ~,

83

:,;,_.s.

e
1

X4

Ejemplos de programacin

u+ ,~

-----4

e 1
)--__..,

. ...

Aplicaciones

---1.--------!V1vul~~l

'

L _ _ ____ _ ____

~T=X

Regulador

_j

quemador

'u~~ u

t _ _ _ _ . __ _ _ _ __J

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

!
1

Gr(sl=

4 - - - - ------- - ---

__}--------

--- -c:i~~:t~

_J

Figura 5.4. Esquema de bloques del sistema de control de la figura 5.3. Se supone que la funcin de
transierencia de la vlvula. del quemador y del termmetro son iguales a uno.

FUNCTlON UR(N,M:l NTEGER) :REAL;


VAR l:lNTEGER;
BEGlN
l:= NC - M;
lF l<l THEN l:= 1 + 1 0 0;
UR:= RET [N ,l] END;

l:neal de orden uno con la constante de tiempo T ,. y que la tubera


introduce el "puro retraso" al sistema_ As. la funcin de transferencia
de la tubera es EXP(ps) donde pes el retraso y ses la variable compleja de la transformada de Laplace. La funcin 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 tubera 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}

(segn la funcin 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 simulacin es una realizacin 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 programacin

PAS . Novamos a comentar aqu cmo funciona TRAZA 1. Hace notar que
en lugar de TRAZA 1 podemos usar cualquier procedimiento de graficacin o. simplemente. imprimir los resultados. El listado 5 muestra el
procedimiento TRAZA 1 que se us en esta simulacin.
La figura 5.5 (ver pgina 89) muestra un ejemplo de la simulacin. 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 fcil ver cmo 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 slo una ecuacin del primer orden con retraso). El tipo T ..\BLA es un arreglo auxiliar que slo sirve para gua rdar e
imprimir o trazar resultados. Las variables declaradas en el programa

2.

tienen la siguiente interpretacin

RET. .'VC- pertenecen al "p aquete de retraso"


descrito en la seccin 5.4
n - constante de tiempo del tanque
KR - ganancia del regulador
TX: - el retraso p
TR - nmero de pasos del retraso
H - el paso (incremento de tiempo) de la solucin
T- el tiempo
TFIN - el tiempo final de la simulacin
X - el vector de estado

~~

t',,

.......

..,_..,,.., .. -..,.....

........ -fl'O-.,;"!'<;--~~':--:- ..- -

.,...,...._~--.---~r'"'"'... ?f,_,~----:-..,..~~;b~~-:,._ --:~!-~

;;,

:....Jtt

..... _,_-~--!;&~~-_a...__

Por qu en el esquema 5.2 el clculo 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 simuiacin
en BASIC de la seccin 5.2.3?
Por qu en los programas correspondientes en PASCAL y FORTRAN
no aparecen estas variables?

Listado 5

Las dems variables son auxiliares. FUNCT!ON U es la funcin 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 seccin 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 escaln unitario. esto es. a una seal 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 solucin y el tiempo inal. Se supone que el tiempo inicial es cero. El programa resuelve la ecuacin del modelo y guarda los resultados en el arreglo Y cada M pasos. Despus de calcular
toda la trayectoria , los resultados se muestran en la forma grfica. El
procedimiento TRAZA 1 hace la graficacin 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 puntomas 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 mnimo 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<.:im

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;

END END;

1
1

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;

J..-L~ -

=
o
.,
V

-o

.,

</)

'~

v
-o

.,
</)

!
i

o
::;

..::
=
.
"'

</)

"'

!I

-o

2
;;

"'

:::;:

"'o
1

,,

;'.

1
1

':2

..::i

.,,;

"'...
<'ll

;,,
e

8!-l

:;;..,..

~-,
L~-..,..,,J-.:

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]<XMI THEN XMI:=Z[K] END{2} END{l};
IF XMA=XMI THEN GOTO l; ZZ:=A4-ROUN D(- (XMI /(X~..A-XMI) ) *(A4-A2));
FOR K:=l TON DO Z[K]:=(Z[K]- XMI)/(XMA-XMI);
IF REG ANO ((ZZ<=A4) ANO (ZZ>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;

r"

,:!-~ ..............

YO

Ejemplos de programacin

3.

4.

Modifique el programa CONTROL (Seccin 5.2.4) suponiendo que el


termmetro tiene la funcin de transferencia GT(s) = 1/(1 + T,s).
Verifique todos Jos programas de este captulo corrindolos en la
IBM PC.

CAPITULO 6
Lenguajes de
simulacin

6.1

Introduccin
Hay dos reas principales donde se desarrollan los lenguajes de simu
[acin: el rea de sistemas continuos con parmetros concentrados o
distribuidos, y el rea de simulacin discreta (sim ulacin de eventos o
actividades). Recientemente se pone ms atencin a los lenguajes orientados a objetos. los cuales permiten crear programas ms flexibles,
donde los objetos continuos y discretos corren en la forma paralela o
semiparalela en el mismo mode!o. Hace notar que la simulacin de
sistemas co ntinuos es reJlmente continua slo al usar las computadoras analgicas. Hablando sobre aplicaciones de las computadoras digitales podemos observar que la simulacin continua se realiza siempre
con un incremento pequeo, 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 diseados para la simu lacin discreta en los problemas ele simulacin continua. aunque existen
lenguajes basarlos en la simulacin de eventos que s permiten simular
sistemas cu1 1 procesos continuos y discretos corriendo simultneamente. Empezamos nuestra discusin con la simulacin de eventos y
procesos discretos. ya que ste p;:irece ser el campo ms importante.
L11ego vn1os J mencionilr algunos lenguajes y mtodos para la simulacin continua. corno ACSL. DY:\A~lO y el mtoclo de Forrester.

,_..
,_
-~

.-...::: ....... -.,,

~--

--- .. ~,~ ... ~J.~-

-..-.~ ....

L.is estr;itegias de sim ulacin


<.:

6.2

Las estrategias de simulacin de eventos y procesos

fuse l.
fuse 2.
lse

Se han desarrollado tres estrategias principales de simulacin: Escrutamiento de uctividudes (EA) ("activity scanning"), programaci(;n de euenrris (PA) ("even t schecluling") e interucci<>n de procesos (IP) ("process
interaction") 1:n1.11.1 7'I. En lo que sigue trataremos" actividad" y "evento"
como sinnimos.
EA fue la primera estrategia de simulacin que apareci en los aos
cincuenta en Europa. Una de las primeras imp lementaciones ele EA fue
el lenguaje CSL - Control and Sim11lation Language 11"1 . Segn esta estra tegia . el tiempo de modelo avanza !lasta que puede llevarse a cabo
la prxima actividad. L11ego se ejec11tan todas las activid<icles que pueden ocurrir en el momento y vuelve a avanzar el tiempo. Este ciclo se
repite hast a el fin de la simulacin. esto es. cuando ya no hay ms actividades por ejecutar.
Cada actividad tiene su representacin como un segmento del
progr<ima. La primera parte de est e segmento descr ibe las condiciones y la ot ra d escribe las operaciones de la actividad. Las condiciones
pueden ser relacionadas al tiempo o al estado de modelo. La parte.operacional puede cam hi;ir el estado del mod elo e influi r a los momentos
cte ejec uci n de las actividades f11t uras. CSL es un lenguaje ant iguo como todos los lenguajes relacion ados a FORTR....\.N. Las ideas de CSL se
ckscrilwn con ms detalles en la siguiente seccin.
EA funciona bien con modelos peq L>eos. Si el n mero de ;ictividades crece. el tiemo erclido para el escrutamiento crece rpi damente
y el algoritmo EA resulta ser ineficiente.
La idea de programacin de eventos (PE) es muy simple: hay que
guardar en la memoria operativa no slo el momento de ocurr encia ele!
prximo evento. sino tambin la informacin scbre cul evento se ejecutar. Esto resulta en una lista de eventos segn la cual los eventos se
ejecutan sin revisar o buscar en todo el conjunto de ev entos. La lista es
dinmica. 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 ms tiempo es l a actualizacin 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 ms.
Alguno s lenguajes usan el algoritmo de "tres fases". que es un a
combinacin 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 in

...:. .

~_:

-=-~

: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. segn sus condicio nes.

Este algoritmo es ms ilexible y, a v eces. ms rpido 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 evisin ele eventos cond ic i on;iles sobre los cuales se sabe que no se p ueden ejecutar en el m omento. Este
111tuclo se i111ple111ent . por ejemplo. en los lenguajes A l ~S 1' " 1 y GSP ! 1.
La i11teraccin de p rocesos (IP) es una idea muy profunda de sim ut ~1 c in . En et sistema real se buscan procesos que corren (fs ic amente)
en paralelo y se est ablece et int ercambio de infor macin y las reglas d e
in ter;iccin 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 aos despus ele SIMULA como Obj ect-Oriented PASCAL i"'-1, MODULA-21;,. . SMALLT ALK... ;; y PASlONI"'"""'':'' IP aparece t ambin en
paq uetes de simulacin que no r efieren directamente a procesos, por
ejemplo la transaccin ("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 oerativa. Los objetos simulan el comportamien to de los
co111pw1enlt:!s del modelo . sta es una est ructura ms comp leja que un
conjunto ele eventos o actividades. Las declaraciones de procesos
son "genricas". esto q uiere decir. que cada objeto es una rea lizacin de
11n proceso. As. los objetos pueden mult ipl icarse en la mem o ria operativa. actua r y desaparecer. Ade ms, un proceso puede con tener un
nmero 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 dems procesos. realizando
modelos discr eto-cont inuos.
ltimamente se habla cada vez ms. 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 "rpidos"
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 simulacin distribuida se permi te que
los objetos A y B av;incen ms rpido. desocupando sus procesador es

94

El len!tuaje CSL

Lenguajes de si1111ilaci<'>n

tuvo una influencia considerable en el desarrollo ele los mtodos de


simulacin.

antes que el objeto C llegue al mismo momento del tiempo de modelo.


Esto significa que cudu unu de tus uetos tiene su propio "reloj" que
uuunzu independ1enternenre de lm re/ues de otros objetos. Esta idea
parece muy simple y correcta. pero en realidad no es as. El mecanismo
ele "relojes independientes" funcionara bien si no hubiera intercambio
de informacin entre los objetos. En un modelo complejo, los objetos
emiten mensajes para otros objetos. y actan segn 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 trayectoril 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 tambin '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<ie pro\>car tocl;i un:.i cadena de reeticion es y cambios. Este proceso puede ser bast;inte co stoso porque. adems de un aumento en el
nmero 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 simulacin 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 informacin \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
tericas para los algoritmos 'Time Warp". El enfoque conservador no
ermite !as repeticiones en la simulacin (consulte T .C. Hartum. O.A.
R.eecl. R..\1. Fujimoto y otros. en el mismo libro).
..\hora \'amos a describir con ms detalles algunos paquetes y
lengt1;1_ies de simulacin.

6.3

Hay clos conceptos que distinguen CSL ele FORTRAN: el mecanismo


ele escrutamiento de actividades (EA) y la declaracin de clase de
elementos (CLASS).
El mecanismo EA se realiza a travs 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 tambin 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 ms
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 slo 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. Despus se
repite el procedimiento de reloj. Este ciclo se repite hasta cuando ya no
hay ms variables cte tiempo con valores positivos o hasta que se interrumpe la t>jec11cin ele! programa. As. las variables ele tiempo y el reloj
definen el avance ele ti empo ele modelo. y las actividades pueden ejecutarse slo cuando una ele las variables ele tiempo se anula. Podemos
decir que las variables ele tiempo sirven corno "despertadores" para las
actividades. La manera ms sencilla de relacionar a una actividad con
el tiempo es . por ejemplo. usar la condicin 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 instruccin T.Z = 10
en su parte operacional, la actividad se va a repetir ca el a 1O unidades de
tiempo .
La declaracin ele clase (CLASS) introduce una clase ele elementos
("entities") que son los componentes clel modelo. Cada declaracin
CLASS contiene la siguiente informacin:

El lenguaje CSL
CSL (Control and Simulat ion Language)i '! fue desarrollado en la dcada ele los cincuenta en lng!aterr:i. basndose 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 simulacin que

:JI"

..

~~~=-___.- ..,...,.....~--~

~::;

..._

l.
2.
3.

El nombre de la clase.
El nmero mximo de los elementos ele la clase.
Dice s a cada elemento de la clase le corresponde una variable
ele tem 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 simulacin

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 descripcin formal (vea el Captulo 3).

La parte declarativa
declaraciones de clase

Ejemplo

CLASS TIME CLIENTE.100(3) SET FUERA, FILA.


VENTANILLA

Definiciones de las
condiciones iniciales

Esta declaracin 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 . Adems, 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 nmero 5" y "CLIENTE nmero 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 interaccin se definen en una serie de segmentos llamados actividades. La
figura 6.1 (ver pgina siguiente) muestra la estructura general del
programa.
Despus 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
segn 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. Despus, 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 simulacin. cuando ya no hay variables <le tiempo con valores positivos. Por supuesto, el orden en el cual
las actividades aparecen en el programa fuente no tiene nada que ver
con el orden de la ejecucin de las actividades, si no hay en el modelo actividades simultneas (no comentaremos aqu cmo se manejan
las actividades simultneas en CSL).

1'''

~... ~

:~
-..,,.,;._"..d; ~

.&,_L~l;.,_.,,..,_

~~....; . .:__

.:.-......;_e,.........:_

ACTIVIDAD 1

ACTIVIDAD2

~
1
1

'V

~.,,;:~

~.:...-~

i....-~.

.t..r.....~...:..i.. _- _ '"

ACTIVIDAD N

l
1

FIN

Figura 6. l. La estructura general del pro&'T ama en CSL.

.............

- --,.,.e--~~~-

&
di'.-'

"'
ACTIVIDADES

97

lJ8

Lenguajes de simulacin

El lenguaje SIMULA

El siguiente listado muestra un ejemplo de una actividad en CSL.

99

bir modelos ms complejos e impiden la evolucin y desarrollo de CSL.


Lo mismo podemos decir sobre todos los lenguajes de simulacin
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 algortmico de alto nivel. Aplicado a simulacin,
SIMULA permite implementar el algoritmo IP (interaccin de procesos) y PE (programacin de eventos). La versin ms 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 extensin de ALGOL 60. En los aos setenta
se usaba mucho en Europa y fue implementado en casi todas las computadoras de esa poca. En Amrica 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 simulacin durante los ltimos 20 a1ios. Segundo. SIMULA es una extensin de ALGOL que nunca fue popular en los EE.CU.
Cuando aparecieron las computadoras personales, ninguna tena un
compilador de ALGOL y tampoco de SIMULA. ltimamente aparecieron
implementaciones de SIMULA para la IBM PC (vea el catlogo de "Software" para Simulacin, la revista SIMULATION, publicado cada ao).
Aunque SIMULA tiene ms de 20 aos. podemos decir que el lenguaje es
plenamente contemporneo, por su perfecta estructura y diseo.
El concepto bsico de Simula es el objeto. Cada objeto tiene sus atributos e instrucciones, como muestra esquemticamente la figura 6.2.

CLIENTE K FROM FUERA


CLIENTE K T AlL FILA
Se supone que en el programa se declar la clase CLIENTE segn la
declaracin mencionada anteriormente. Esta actividad describe la llegada de un cliente a un sistema de servicio. Una de las condiciones de la
ejecucin de esta actividad es T.LLEGADA EQ O, donde T .LLEGADA es
una variable de tiempo independiente ( no relacionada con ningn
elemento del modelo). La siguiente instruccin redefine la variable
T.LLEGADA dndole un valor aleatorio que proporciona el generador
'.'JEGEXP. Suponiendo que NEGEXP tiene la distribucin 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 despus 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 distribucin negativa
exponencial. que es la propiedad del flujo de Poisson. La instruccin
FINO busca al primer cliente (su nmero K) que pertenece al conjunto
FUERA (est fuera del sistema). Si FUERA est vaco, no se ejecutar la
actividad. Por lo contrario. la variable K contendr el nmero del cliente deseado. Las dos ltimas instrucciones son las que constituyen la
parte operativa de la actividad. El CLIENTE nmero 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
dems actividades, como el inicio del servicio, terminacin de servicio
en la VENTANILLA.. etc.
CSL est fuertemente relacionado a FORTRAN. Se pueden usar procedimientos escritos en FORTRAN. toda la ortografa del programa es
igual a la de FORTRAN y las instrucciones de entrada/ salida son compl.etamente iguales. La compilacin de CSL se hace en dos etapas.
Primero se traduce el programa fuente a FORTRAN y luego acta un
compilador de FORTRAN para obtener el cdigo ejecutable. Esta relacin 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 tambin 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 vaca 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 nmero complejo
( 7. 0.5) o como un vector que incluye componentes 7 y 0.5.

'"':.:-t-

~~

--.'-

'-'-.,,,.:_,_.

ul u2 ........ un

~ ~~- -- ----<"

""

--

.1.

l 00

Lenguajes de simulacin

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". "Almacn" es una varia bl e global. El
Consumidor. al ser creado, suspende sus actividades con la instruccin
detach. El objeto llamado Productor define el valor de su at ributo xy lo
pone en el Almacn. Luego activa al Consumidor con la instruccin
"resume". El Productor suspende sus acciones y el Consumidor "consume" lo que se encuentra en el Almacn , con la instruccin y:= Almacn.
Despus de efectuar algunas operaciones sigue resume(Productor) que
suspende al Consumidor y reactiva al Productor, etc. Este modelo
Productor-Consumidor es slo un ejemplo de dos objetos que interactan
desactivando y reactivndose mutuamente sin ser todava un modelo de
simulacin, 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 bsico de cada progr ama en SIMULA es la decla racin
de clase de objetos. Esta declaracin tiene la siguiente fo rma gen era l.

o>

7 0.5
Figura 6.3. Un nmero 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 tambin es pasivo (la lista de instrucciones vaca). 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 vaca, el objeto al ser creado
empieza a ejecutar las instrucciones de la lista. Ejecutando la ltima
instruccin "end" de la lista, el objeto termina sus actividades. Cada
objeto puede ser suspendido en sus acciones con la instruccin "detach"
y reactivado con "resume". El siguiente ejemplo (figura 6.5) muestra un
bosquejo de dos objetos que tienen listas de instrucciones no vacas e
interactan mutuamente.

end A:
en donde PR es el prefijo de la clase (lo explicaremos despus) . A es el
nombre de la clase, PA son los parmetros 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 declaracin de una clase de o bjetos c uyo nombre es
Vector. La clase tiene un parmetro form al n de tipo entero. Desde luego,
a cada declaracin le corresponde uno o ms objeto s en la memoria
operativa. Los objetos ~e crean con la inst ruccin New. Por ejemplo New
Vector(k) crea a un objeto de tipo V ector con n = k (k es el parmetro
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 construccin 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 lnea begin integer i;. Un objeto de t ipo Vector al aparecer pide los datos con la instruccin A[i ] : = inreal. para todos los componentes de A . Despus 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
Nhle 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 simulacin

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;

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;

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 jerarqua de clases y la herencia de propiedades . Es comn que al desarrollar modelos se agreguen nuevas propiedades a los abjetos que ya tienen su descripcin en
el programa. En lenguajes como ALGOL o PASCAL cada cambio de la
estructura de los atributos o instrucciones es una intervencin en los
segmentos ya programados y necesita una reedicin del programa. La
jerarqua de clases en SIMULA facilita estas operaciones . Supongamos
que X (figura 6.5 ver pgina siguiente) representa grficamente el conjunto de propiedades de una clase llamada X. por ejemplo la clase de los
pacientes de una clnica.
Si ahora queremos describir una clase Y con ms 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 declaracin de la clase Y, esto es. X Class Y. Despus sigue la d ecla-

"cin de y que ,6\o contiene la> prnpiedade> nueva>. Lo' "ibuto' Y

...;_--.,,-~-::-- --

Vi
e:

<lJ

"'<lJ
"'
-2
u

><

<lJ

-::i

"'
-::i
"'
CJ

-::i

a.

1
;

<lJ

-::i

.::'!

~
......

.,;

!
j
1

""'""

>-

<.::>
~

:..

S'ti
;,;..

104

Lenguajes de simulacin
El lenguaje PASION

actividades de X se agregan automticamente a Y. As, por ejemplo, si Y


es "paciente-mujer", Z es "paciente-hombre" y N es "paciente-nio" (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 simulacin. 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 simulacin de sistemas dinmicos y realiza
los conceptos de !P (interaccin de procesos). Para usar esta c lase se
aplica el prefijo SIMULATION a todo el programa, haciendo visibles todos los atributos Qa mayora de ellos son procedimientos) de la clase.
Tambin son visibles en todo el programa las subclases predefinidas de
SIMULATlON. La ms 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 slo 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
declaracin de la clase correspondiente. Ahora, dentro de esta declaracin se pueden usar, entre otros, los siguientes procedimientos.

La id ea de lP tiene una imp lemen t ac in 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 fcil de aprender . SIMULA no es la
mejo r opcin. 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, despus 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
instruccin 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 Almacn y luego espera 3 uni d ad es de tiempo
y activa al prod uctor, desactivndose a s mismo con la instrucci n
passivate. Est os o bjetos actan como procesos de un modelo de simulacin, p orque sus actividades se ubican en el tiempo de modelo. Los
procedimien tos "hold", "p assivat e" y "actv 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

~~.--,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 ms ejemplos de programas en este lenguaje, porque esto necesitara mucho ms de las reglas de programacin, prcticamente todo
un manual de programacin. Los ejemplos de las aplicaciones de IP se
discutirn en la seccin que describe al lenguaje PASION que es ms
sencillo y fcil de aprender. Mayor informacin 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 Introduccin

PASION (el nombre es una abreviacin de PASCAL Sllv!IACIN), es una


extensin de PASCAL. Su relacin con PASCAL tiene ciertas razones.
Primero. PASCAL es casi perfecto para fines didcticos. Segundo, como las tareas por resolver a travs de la simulacin por computadora
son cada vez ms complicadas, nuevos lenguajes deben ser relacionados con lenguajes algortmicos de alto nivel. Leyendo los manuales de
los paquetes de simulacin existentes, uno podra llegar a la conclusin
que todo el "software" de simulacin de los sistemas discretos fue
desarrollado para simular funcionamiento de peluqueras, bancos y
elevadores. En realidad. los sistemas que hay que simular son mucho
ms 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 segn algoritmos ms complejos. La simulacin 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 estn bien descritas por Hibbard y coautorest121 (1985) y Ledgardl02 1 (1983). Otros problemas, ms generales de
simulacin, los podemos encontrar en los libros de Fishman!33 1(1973) y
Tocheri 13 ' (1963).
La idea de extender PASCAL para soportar la programacin de los
procesos semiparalelos no es nueva. La descripcin 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 ejecucin de un proceso puede
ser suspend ida, pero no la ejecucin de un evento. Los cdigos de eventos son secuencias de instrucciones descritas en PASCAL. Un PROCESO
es una declaracin que dice cules son los atributos (parmetros y variables) del proceso y cules son sus eventos. sta es una declarac in
que puede ser usada para generar objetos (u no o ms para cada proceso). Los objetos son los segmentos ejecutables del programa. Cada
objeto, segn la declaracin del proceso correspondiente, tiene sus
atributos y as existe en la memoria operativa. Los cdigos de los eventos se guardan en un solo lugar, no obstante el nmero de objetos del
mismo tipo que se generaron. PASION no es la nica extensin de
PASCAL destinada a la simulacin. Un paquete tambin ~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 caractersticas muy distintas y no funciona a t ravs de procedimientos. Algunos procedimientos auxiliares existen. desde luego. en el
"'ambiente'" del lenguaje (graficacin. 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 dinmicas (relacin al tiem po de mod elo)
y las interacciones entre los eventos. Un lenguaje orientado a procesos,
a lo ms. define una estructura en el conj unto de eventos. Para explicar
el concepto de proceso. consideremos. por ejemplo. una poblacin 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. reproduccin. alimentacin y
desaparicin. El modelo. desde luego, consiste en muchos objetos de
tipo "bacteria" que corren en paralelo. En el programa fuen te, sin embargo, hay slo una declaracin de proceso que sirve como patrn ,
segn 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 poblacin tiene un ambiente comn.
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 ejecucin 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 simulacin

El lengua je PA.S! ON

Listad o 9

cucin de los eventos (llamados tambin "variables de tiempo") sirven


para programar los momentos de ejecucin de los eventos. Esto se realiza a travs 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 prximo (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 dems objetos, y tambin programar o reprogramar a s mismo o a
otros eventos del modelo. El avance de TIME y la fila de eventos se manejan automticamente por el mecanismo "reloj".
El listado 9 (ver pgina siguiente) es una declaracin de proceso.
Para mayor claridad las palabras reservadas del lenguaje estn
subrayadas (esto no se .hace en el cdigo fuente). Con la palabra
PROCESS empieza la declaracin del proceso. El tipo de proceso es Py
el nmero mximo 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 ejecucin del evento. La palabra BEGIN marca el principio del texto
del evento, y la palabra ENDEV termina el cdigo del evento. Al ejecutar
el evento. los atributos A y B obtienen nuevos valores y el evento se reprograma con la instruccin NE..XT: =TIME+ 5.0. para volver a ejecutarse
dentro de 5 unidades de tiempo. Hay que observar que esta instruccin
no es la instruccin de substitucin como parece. porque NEXT no es una
variable "normal". Dicha instruccin es de programacin 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 ejecucin del evento no
se programa, sino que el evento ser ejecutado cada vez que est en
ejecucin 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 cul 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 ms 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 ecuacin diferencial
ordinaria sobre un intervalo del tiempo dado. Este evento debe reprogramarse de tal manera que sera ejecutado peridicamente con
incrementos pequeos 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 instruccin crea un n u e v o objeto l l amado A}
A.N:='Pedro';
NEWPR B;
{Esta instruccin 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 simulacin

El lenguaje PASION

Ejemplo de aplicacin

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 declaracin REF del lenguaje SIMULA. Cada objeto que existe en la
memoria operativa puede ser alcanzable a travs 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 tambin 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 declaracin de
proceso correspondiente.
Cada variable de tipo QUEUE es una lnea 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 nmero de procesos de tipo "tienda" y correrlos en paralelo,
cada uno con sus filas de clientes. compartiendo. sin embargo, un ambie1te comn.
Los atributos de los procesos son directamente visibles dentro de
los procesos correspondientes. El acceso desde afuera se realiza a travs de !a notacin "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 pgina anterior) muestra cmo los procesos
pueden actuar recprocamente.
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 declaracin 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 ejecucin,
los objetos A y B se activan recprocamente. 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 poblacin 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. Adems, 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
situacin actual en la forma grfica.
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 rectngulos en la pantalla. Los rectngulos pequeos 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.
Despus de las declaraciones globales siguen las declaraciones de
los procesos del modelo. La declaracin para las bacterias de tipo A
empieza con PROCESS BACTA.500; donde BACTA es el tipo de proceso
y 500 es el nmero mximo de los objetos correspon dientes. El proceso tiene tres atributos: X. Yy ID. Xy Y represen tan la posicin 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 instruccin FINO es la bsqueda 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 bsqueda es el valor de la vari able local K. que es el nmero (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 instruccin NEWPR. Se definen los valores de los atributos del nuevo proceso
y se reprograma el momento de ejecucin del mismo evento. El evento MOVES cambia las coordenadas X y Y del objeto. Los movimientos
son aleatorios. aunque las bacterias de tipo A , adems 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 instruccin
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 declaracin del proceso BACTB.

Pedro
Paco
Pedro
Paco
Pedro
Paco

........,.,,._.,...,._

~~~~

111

112

El lengua je PASlON

Lenguajes de simulacin

---

Listado 11

o o o QJ
o o ooo
oo o

o o

C3

'_J

B~ o~

o o
o o o o
o oo o
o

PROGRAM BACTER;

o~

li
o o@

Q []]
O(]

{Simulacin 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 situacin de una
de las bacterias de tipo A cuando sigue a un grupo de las de tipo B.
Despus de alcanzar al grupo perseguido, la bacteria A empieza a comer
y reproducirse (figura 6. 7). En la figura 6.8 se muestra la situacin
cuando ya no existen las bacterias de tipo By la poblacin de las de tipo Bes bastante numerosa. 0f er listado 11.)

6.5.3 Jerarqua de procesos y herencia de propiedades


Al construir modelos ms complejos es conveniente poder agregar nuevas propiedades a los procesos que ya existen. sin reeditar el programa.
En PASION esto es posible a travs 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 declaracin correspondiente, despus 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) <S) AND
(ABS(Y-BACTB[K].Y)<8); {se busca una bacteria de tipo B que
se encuentra bastante cerca para comerla }
IF K>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 simulacin

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 (XTDX<lO) THEN DX:=-DX;
IF (Y+DY>200) OR (Y+DY<lO) THEN DY:=-DY;
X:=X+DX; Y:=Y+DY; IF RYS THEN RYSB('A',X,Y,l);
ENDEV;
EVENT DIES, NXTD;
{La bacteria muere)
BEGIN
IF RYS THEN RYSB('A',X,Y,O) ELSE
WRITELN('TIME=',TIME,'
DIES BACTERIUM
KILL THIS ENDEV;

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+DX<lO) THEN DX:=-DX;
IF (Y+DY>200) OR (Y+DY<lO) THEN DY:=-DY;
X:=X+DX; Y:=Y+DY;
IF RYS THEN RYSB('B',X,Y,l} ELSE
WRITELN('TIME=',TIME,' MOVES BACTERIUM B ',ID);
NXTOVB:=TIME+2.0;
IF RYS THEN BEGIN
GOTOXY(60,l}; WRITE('TIME= ',TIME:l0:2) END ENDEV;
START
(Aqui empieza el program principal. Se crea una bacteria de
tipo A y una de tipo B. Se determinan los atributos de los
dos objetos, }
WRITE('REGIME? (G FOR GRAPHICS) '); READ(REG);
RYS:=REG='G'; IDA:=O; IDB:=O;
IF RYS THEN BEGIN
GRAPHMODE; HIRES; HIRESCOLOR(15) END ELSE TEXTMODE(BW80);
NEl'lPR BA;
(Aparece la primera bactera de tipo A.}
IDA:=IDA+l;(BA es el nombre del objeto correspondiente}
INSIDE BA DO BEGIN
X:=50;
ID:=IDA; Y:=50 END;
BA.NXTB:=200.0;BA.NEXTC:=l.O;
BA.NXTD:=l99.0;
NEWPR BB;
(Aparece la primera bacteria de tipo B.}
IDB:=IDB+l;BB.ID:=IDB;
BB.NXTB:=NEGEXP(0.2); BB.X:=200; BB.Y:=l50;
BB.NXTDB:=8.0; BB.NXTOVB:=2.0; WM:=35;
IF RYS THEN BEGIN
NEWPR PREPLOT; PREPLOT.Tl:=0.25 END;
RANDOMIZE

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 simulacin

El lengua je PASION

A la hora de translacin , todos los atributos del proceso PA se agregan


a los atributos del PB y tambin los eventos de PA entran a PB como sus
eventos. El usuario indica dnde buscar el proceso "pariente" PA en el
momento de translacin. La declaracin 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 ms 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
pgina siguiente) (es una abreviacin).
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 ms
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 translacin
PATI usa la biblioteca de procesos predefinidos PASLIB.PAS. Algunos
procedimientos adicionales, escritos en PASCAL se agregan al programa en la etapa de compilacin del cdigo correspondiente en PASCAL.
(Ver pgina 118 figura 118)

6.5.5 El generador de los modelos con lneas 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 simulacin interactiva. generar reportes. grficas de los resultados, las
estadsticas sobre los resultados . etc. El ambiente tambin incluye algunos mdulos auxiliares, como el Gener::idor de los Modelos con Lneas
de Espera descrito en lo que sigue. que facilita considerablemente la simulacin. Este mdulo puede ser usado aun sin ninguna programacin
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

_g

"'
Q)
~

<11

(/)

-~ <
~a..

::J

"'
::J

::J Q)
C1l "O

"'

(/)

<
a..

Q)

"O

"'o

Q)

o> -e
:.eo ..o
-~

.2:

<~

Q)

..c.
o

Q)

e:
Q)

::J

C1l

E
C1l

o,
~

a..

_J
_J

ca

<
e"""

~ 1-

-<
za..
o
<
<
a..

(/)

<
a..

<
a..

Q)

Ol

<

<

:o
o

(/)

Q)

"O

o
"O
~
a.

Q)

:o<ll
5
o

Q)

v
o
O>
'5
-o

()

lJ
r
'

"'
~

""'

::i
':io

::

~~.---"!':."0'-0''.""\~ .. _.,,...-

119

Modelos con filas es una de las aplicaciones ms populares de la


simulacin por computadora. Ningn banco , tienda , oficina postal o
sistema de manufactura puede analizarse sin tomar en cuenta lneas de
espera donde se forman clientes , trabajadores o piezas. Los mismos
mtodos 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 configuracin y
cada nuevo diseo tiene que ser verificado rpidamente. Recordemos
que un FMS es una configuracin de puestos de operacin y un sistema
de manejo de material, diseado para producir eficazmente ms de un
tipo de piezas en lotes pequeos o medianos. (fhe Charles Stark Draper
Lab ., 119 1 1984). Para lograr esto, el sistema tiene que funcionar bajo control de una o ms computadoras . Actualmente existen muchas herramientas para simular por computador a los FMS. Entre los ms usados
hay que mencionar SIKTAS (Stute et al. ,1 10 11 1982), GCMS (Lenz and
Talavage14 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 algortm icos de alto nivel como
Ada . Simula 67. o lenguajes orientados a objetos como SMALLTALK. Sin
embargo. la mayora de los paquetes diseados para la simulacin de los
FMS son sistemas de simulacin de eventos y tienen ciertas restricciones. Hay que observar que los FMS estn incluidos en un ambiente de
control bastante complejo donde el control se realiza a travs de un
sistema digital equ ipado con algoritmos de control muy sofisticados. En
consecuencia, cualquier paquete o lenguaje de simulacin para estos
sistemas no slo tiene que ser flexible , sino tamb in ser incluido en un
ambiente de programacin de alto nivel algortmico, preferentemente
orientado a objetos (Pascoe, 1986). Esto hace posible simular no slo los
puestos de operacin , sino tambin el nivel ms alto de control. Para
este fin los paquetes de simulacin de eventos, como GPSS o SLAMII no
son suficientes. El modelo descrito en este artculo pertenece al ambiente de un lenguaje algortmico y orientado a objetos.
Cada mtodo de simulacin por computadora es el resultado de un
compromiso. Los paquetes de simulacin son casi siempre enfocados a
cierto campo limitado de aplicaciones. Por otro lado. los lenguajes de
simulacin son ms flexibles, pero el usuario tiene que aprender el
lenguaje y esto puede ser difcil si l no es un programador. Una de las
posibles soluciones es usar un lenguaje de simulacin equipado con un
amplio ambiente programstico. Si el lenguaje es de " uso general", no se
pierde ninguna de sus ventajas. El ambiente facilita la creacin de
modelos y aun puede ser tan "transparente", que el lenguaje mismo deja
de ser visible para el usuario.
Muchos de los paquetes de simulacin (como SLAMI!. GPSS) estn
relacionados a la representacin grfica del sistema que se modela. As,

120

Lenguajes de simulacin

El lenguaje P ASION

la gran parte del trabajo conceptual consiste en componer un diagrama


de bloques o grfica correspondiente. Una vez c0ncluido este trabajo, la
programacin del modelo resulta muy fcil y rpida. Un enfoque similar
se implement en el presente mtodo.
Vamos a ver un mdulo del ambiente de un lenguaje de simulacin.
El mdulo se llama QMG (Queuing Model Generator) y es un generador
de programas para la simulacin de modelos con lneas 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 fbrica. o
autos en un taller de ser\iicio. Cada objeto puede tener un nmero de
atributos que caracterizan sus parmetros y su estado actual. Los atributos (sus tipos y valores) estn definidos por el usuario, que puede
utilizar todos los tipos que permite PASCAL. Los objetos pueden ge-

-- ~,...._._
!
1

nerarse con una cierta distribucin de intervalos de tiempo entre llegadas y pueden aparecer uno por uno o en lotes. Todos los dems
bloques describen a todos los posibles eventos en la "vida" del objeto en
el modelo. As, los bloques del esquema grfico 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 expresin o puede ser aleatorio con una distribucin predefinida o
definida por el usuario. SERVIDOR puede tener una o ms entradas,
donde el objeto a servir se puede escoger por prioridad. probabilidad o
a travs de cualquier otra regla definida por el usuario y descrita en
PASCAL. Un retardo adicional puede agregarse al salir del SERVIDOR.
En la OPERACIN DE ENSAlY1BLE dos o ms 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 OPERACIN DE ENSAlY1BLE. el GENERADOR y el bloque
TERMINAL pueden efectuar cualquier nmero 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 lnea 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 ningn orden de salida establecido.
El flujo de objetos puede dividirse al entrar a un bloque de DIVISIN.
Este bloque tiene una entrada y algunas salidas que se determinan por
probabilidad, por prioridad o a travs de cualquier otra regla definida
por el usuario y programada como una funcin 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 DIVISIN. En general, cada fila debe corresponder a uno o ms
servidores . Por ejemplo, la fila nmero 5 en la figura 6.11 contiene
objetos que esperan para entrar al bloque nmero 8.

-O'
4

'

121

6.5.6 El editor de diagramas


Figura 6.10. Los bloques que usa el QMG:
1 - Generador; 2 - punto terminal; 3 - servidor:
4 - divisin de flujos: 5 - operacin de ensamble:
6 - lnea de espera.

ste es un mdulo de QMG dirigido por monus, que permite definir la


estructura del modelo. El usuario puede mover el cursor en la pantalla

'~..,..
~

1.c..~

LengUilJes

El lenguaje PASION

a.e s1n1u1ac1on

2FIFO

-1

,---
. 3
l,___~o-<

5 FIFO

j-J

agregando, por ejemplo, ms procesos al modelo, relacionarlo con


bases de datos, etc. De esta manera QMG puede ser usado por tres categoras 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: Edicin grfica de modelos, salida estndar de QMG.

a~

2.

_J

Figura 6.11. Un fragmento de esquema QMG.


3.
usando las flechas u otras teclas tpicas 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 automticamente segn los movimientos del cursor. La opcin "zoom" permite ver
una parte mayor del modelo. El editor hace una verificacin preliminar
de la estructura y no permite crear modelos "obviamente" inconsistentes. Es imposible. por ejemplo, ubicar una fila directamente despus 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 lneas
(flechas) que los conectan . Si es difcil o imposible trazar una lnea de
conexin, se pueden usar etiquetas (parejas de nmeros enteros) para
conectar cualquier punto con cualquier otro punto del esquema. El
editor es fcil de usar y se maneja a travs de un sistema de mens. Con
cierta experiencia se pueden generar estructuras muy rpido, por
ejemplo un modelo con 10 bloques se puede definir en menos de 40
segundos. Despus de generar la estructura, QMG pide al usuario que
proporcione los parmetros necesarios (distribuciones de probabilidad, otros parmetros fijos). Si el usuario tiene estos datos preparados,
teclearlos no tarda ms que unos minutos para un modelo mediano. El
editor tambin 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
automticamente. Hace notar que QMG es un generador de programas y
no un programa de simulacin. El precio que pagamos por la facilidad con
que se define el modelo es el tiempo de preprocesamiento y compilacin. La presente versin de QMG pertenece al ambiente del lenguaje
PASlON (vea las referencias) y produce el cdigo fuente en PASION. Este
cdigo se traduce automticamente a PASCAL y puede ser compilado
con un compilador de PASCAL. Slo_el ltimo mdulo de QMG est
relacionado a PASION, as que el generador podra ser adaptado a cualquier otro lenguaje de simulacin. Esta relacin a PASION y PASCAL
tiene tambin un aspecto didctico. QMG puede ayudar al alumno a ver
un posible cdigo (en PASlON y P.A.SCAL) de su modelo. Despus de
generar los cdigos. el usuario puede trabajar con los programas,

~--~~

123

.........--..-~-~~---

Programacin en PASCAL Seleccin de entradas y salidas para


servidores y puntos de divisin de flujos a travs de algoritmos
definidos por el usuario, distribuciones no estndar de tiempos de
llegadas y servicios, operaciones adicionales sobre los atributos de
los objetos.
Programacin 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 aplicacin
Consideremos un sistema de produccin con tres puestos de operacin
conectados a travs de un transportador "en lnea" que consiste de un
carrito-robot que puede moverse solamente a lo largo de una trayectoria
recta ( ver figura 6.12) .
Los puestos de operacin tienen bufors en la entrada y salida. Las
piezas que entran al sistema esperan en tres lneas 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 pgina 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 operacin) . En la salida de este bloque
hay un bloque de divisin de flujos con 4 salidas Oas tres filas en las
entradas de los puestos de operacin 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 simulacin

A lenguaje PASlON

lenguaje algortmico y orientado a objetos. Si nuestro nico fin es simular un sistema de filas sencillo (esto no qui,ere decir pequeo) o el
nivel ms 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
ms alto para agregar ms 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 podran
ser ms adecuados.
El ambiente de PASION tiene ms mdulos que no se discutirn
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 simulacin en PASION o en
PASCAL sin programar. El CMG interpreta el reograma del modelo creado por el usuario en la pantalla, y genera automticamente las ecuaciones. el programa fuente en PASION y el programa correspondiente en
PASCAL. El programa en PASION es una descripcin 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 ms
objetos correspondientes.

84
W1

87
85
W2

88
1

L:J

l !

----

___J

Figura 6 . 12. L' n ejemplo de un sistema flexible de manufactura.

entrada y salida para el carrito. El programa de simulacin correspondiente que genera QMG proporciona hasta 56 diferentes grficas, tales
como las longitudes de todas las filas, longitudes promedio, conjuntos
alcanzables para estos valores, variancias, intervalos de confianza, etc.,
todo en funcin del tiempo. La figura 6.12 indica una pantalla tpica de
los resultados. Las barras mviles representan la longitud actual de las
filas correspondientes. El nmero 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 pgina 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 funcin del tiempo. En la figura 6.16 (ver pgina
128 podemos ver la imagen tridimensional de la distribucin de la probabilidad (funcin de densidad) para una de las filas en funcin 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 simulacin rpido y fcil de usar
tambin en el caso en que !a simulacin se lleva a cabo a travs 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

OUE6
OUE15
OUE17 Terminal points:
TER18
Servers:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SER7

BUSY

SER10 BUSY
SER12 BUSY

SEH16 FREE

Figura ti.14 . Salida grfica ge11ei;1da P"'

<rw;.

-.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 funcin de !lempo.

El paquete GPSS

6.6

.,1i

:::>

"O

E
'V
"O

o"'"'

<.)

(\J

:::>

"'
.2

:::>

"O

2.

e"'

"'

~O~~~~~~~~~~~~~~~~~~~~~~~~-,

:i

"'

.
:;
.a
;:

"O
"O

<i
ii

&
e
o

:i

.g

.2

.a

"'o.

ci:

El paquete GPSS

GPSS es un paquete para simulacin 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
nmero de procedimientos tpicos para simulacin de eventos. Lo que
hace el usuario es establecer la estructura del modelo en forma grfica
y escribir una secuencia de instrucciones que invocan a los procedimientos correspondientes segn la grfica.
El modelo se describe como un diagrama de bloques donde los
bloques representan a los eventos. Hay ms de 40 tipos de bloques. cada
uno identificado con su nombre y su smbolo grfico. Usando GPSS, la
tarea para el usuario es construir el esquema grfico y no programar. Pasar del esquema al programa correspondiente es un paso sencillo y casi
automtico.
La idea general de GPSS es descomponer el mod elo en un nmero
de componentes activos llamados transacciones (' transaction ") y establecer todos los eventos posibles en los cuales participan las transacciones. As, la "vida" de cada transaccin en el modelo est descrita por
una parte del esquema grfico. Esta parte, que constituye la descripcin
de todos los eventos posibles en los cuales participa la transaccin, empieza con el bloque Generate y termina con Terminate. Segn este segmento, se generan una o ms transacciones que corren en el programa
en forma semiparalela. Vamos a describir algunos de los bloques ms
tpicos de GPSS. Los smbolos de estos bloques se muestran en la figura 6.17 (ver pgina siguiente.)

(\J

w
:::>
w

129

"O

"'

"O

1i

"'
~

.Cl

!:

"'

"O
"O

"'

GENERATE. Las transacciones son generadas por uno o ms bloques


de este tipo. En el modelo pueden correr simultneamente muchas transacciones . Cada bloque tiene algunos parmetros que lo caracterizan.
Vamos a describir slo algunos de ellos . El parmetro ms importante
de GENERATE es el intervalo entre los momentos de creacin de las
transacciones. Si este parmetro es un nmero fijo, las transacciones
llegan en intervalos iguales. El parmetro de GENERATE puede ser una
referencia a una funcin , por ejemplo a un generador de nmeros
aleatorios . Si este generador proporciona los nmeros que tienen la
distribucin exponencial, las llegadas de las transacciones constituyen el flujo de Poisson.

"O

"__::"'
l)

-o

-;o
e

o
i
e

"'

E
;;
:.:i
e:

"""'

_"'

e
N

"'

TERMINATE. Este bloque termina las activid ades de una transaccin. Al entrar a este bloque la transaccin desaparece de la memori a.

...l

"'
"'...

"'

ADV ANCE. Representa un retraso en e! avance de la transaccin a


travs de su esquema de bloques. El primer parmetro es el valor prcr

::1

t>O

:
12!$

...;

""'-

l:lO

Lenguajes de simulacin

El paquete GPSS

-Cb

medio de retraso, el segundo es un modificador que multiplica al valor


promedio para determinar el retraso. Este modificador tambin puede
referirse a un generador de nmeros aleatorios.

---

generate, termnate

en ter

advance

lea ve

c=JA
seize

~
ralease

link

un link

gate

test

131

queue

Figura 6.17. Smbolos de GPSS.

a==r>
select

SEIZE. La transaccin que entra en este bloque ocupa una facilidad


(facility), por ejemplo un puesto de servicio o cualquier lugar en el cual
cabe slo una transaccin. La facilidad se identifica con el parmetro
de SEIZE (el nmero de Ja facilidad). Despus de entrar en SEIZE, la facilidad est ocupada. La transaccin puede entrar a SEIZE slo si la
facilidad no est ocupada en el momento. Si la facilidad est ocupada,
la transaccin espera.
RELEASE. Desocupa la facilidad en la cual se encuentra Ja transaccin . La transaccin sale de la facilidad .
ENTER. La transaccin entra a un "depsito de t ransacciones", que
hay que des ignar antes con !a declaracin STORAGE. Por ejemplo,
STORAGE SI ,5 significa que en el sistema existe un depsito ( almacn ,
sala de espera , etc.) con lugar para 5 transacciones. El parmetro de
ENTER especifica a cul de los depsitos entra la t ran saccin.
LEAVE. La transaccin sale de un depsito y desocupa un lugar.
LINK. La transaccin se forma en una lnea de espera. Los parmetros
son: el nmero de la lnea 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. Despus de entrar a LINK la transaccin suspende
sus actividades. La salida de la lnea de e~pera tiene que ser provocada
por las actividades de otras transacciones.
UNLINK. Sign ifica que una (o ms) transacciones salen de cierta
lnea de espera. Los parmetros especifican de cul lnea sale la transaccin, cul ser su siguiente evento y cuntas transacciones van a salir
si sale ms de una. Hay que observar que UNLINK no afecta a la
transaccin que lo ejecuta. Esta transaccin pasa a sus eventos (bloques) siguientes. La ejecucin del.JNLINK activa a una o ms de las otras
transacciones.
GATE. Este bloque es una "puert a" que est abierta si se cumple
cierta condicin. En el caso de cumplirse la condicin, la transaccin
pasa al siguiente bloque. En el caso contrario hay dos opciones: si no se
especifica ninguna otra salida. la transaccin espera. Si se define otra
salida para el caso de no cumplirse la condicin , la tran saccin pasa a
este bloque. La condicin casi siempre refiere a una facilidad o a un
depsito. ?or ej emplo, las letras '.'lU en el smbolo grfico significan
"facility not in use" - "facilidad desocupada", y SNF significa "storage not
full" - "depsito no est lleno".
TEST. Tiene dos salidas. La salida que se aplica a la transaccin
depende de una condicin que es !a comparacin de dos valores arit-

132

El paquete GPSS 133

Lenguajes de simulacin

mticos. Si la segunda salida no se especifica, la transaccin espera


hasta cuando se cumpla la condicin.
QUEUE. Anota que la transaccin entr en una lnea de espera. Este
bloque slo sirve para sacar estadsticas sobre filas y no pone a la
transaccin en ninguna fila. Para formarse en una fila, la transaccin
tiene que entrar en LINK.
DEPART. Sirve slo para anotar la transaccin que sali de una cola.
La salida se realiza a travs de UNLJNK.
SELECT. Busca una facilidad o un depsito que cumple con cierta
condicin. La condicin se indica con dos o tres letras en el smbolo
grfico. Por ejemplo NU significa "facilidad disponible", SNE significa
"depsito no lleno". Hay dos salidas de SELECT: La primera cuando se
encontr la facilidad o depsito y la segunda en el caso contrario.

14

stos son slo algunos de los bloques de GPSS y sus descripciones


son abreviadas. En el manual del paquete vienen ms de 40 bloques,
cada uno con la descripcin que ocupa hasta 4 pginas.
Consideremos un ejemplo de aplicacin. En una clnica pequea hay dos doctores que atienden a los pacientes. Los pacientes entran
a !a clnica segn el flujo de Poisson. Se supone que hay siete sillas en
la sala de espera y si todas las sillas estn ocupadas (la fila tiene longitud 7), los pacientes no entran a la clnica. Si hay menos de 7 pacientes
en la fila, el paciente que entr actualmente toma una silla formndose 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 atencin tiene la distribucin exponencial. En
el modelo los pacientes son representados por transacciones de GPSS.
El esquema grfico correspondiente se presenta en la figura 6.18.
El bloque GENERATE (GEN) engendra los pacientes segn el generador de nmeros aleatorios FNI que genera los intervalos entre las
llegadas de los pacientes. Se supone que FNI es un generador con distribucin exponencial. El siguiente bloque TEST sirve solamente para
cortar el flujo de pacientes (cerrar la puerta de la clnica) si el tiempo
de modelo Cl es ms 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 operacin SNF ('depsito no
lleno"). El "depsito" (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 todava 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 grfico de un modelo en GPSS.

....

lL

,_:.,_

ph1

fito

Ll4

Lenguajes de simulacin

El lenguaje Dynamo y el mtodn de Forrester

El siguiente bloque SELECT revisa si hay doctores disponibles. Si es


as. la variable PHI recibe el nmero de uno de ellos. En este caso el
paciente pasa al bloque SElZE. Si los dos doctores estn ocupados, el paciente pasa al bloque LINK con parmetros l y FIFO. ste es el momento
cuando se forma en la fila. La fila tiene nmero 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 limitacin para la
longitud de la fila no se necesitara ni STORAGE ni los bloques ENTER y
LEAVE.
Si SELECT encontr a un doctor desocupado, su nmero 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 nmero PHI (la facilidad cual nmero se encuentra
en PHI). El tiempo de at~ncin se modela con ADVAi"llCE que usa a un
generador de nmeros aleatorios llamado FN2 para determinar el retraso. Despus de permanecer un rato siendo atendido ("dentro" de
ADVAt'\ICE), el paciente desocupa al doctor nmero 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 operacin 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 grfico de una
transaccin 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 lgicos en la
modelacin.
Despus 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. Despus sigue la palabra SIMULATE
y la descripcin de la (nica en este caso) transaccin del modelo. Luego
sigue la instruccin START que inicia la simulacin. A cada bloque del
esqu_
ema le corresponde una lnea en el programa, as que todo el
programa para este modelo ocupa no ms de 20 lneas.
Los resultados de la simulacin se imprimen automticamente y
proporcionan todas las esta.dsticas necesarias para analizar el funcionamiento del modelo. Por ejemplo. para el modelo que describimos, se
imprimen tiempos de ocupacin, en las unidades de tiempo y en porcentaje, para los dos doctores y para la sala de espera. Si necesitamos
ms informacin sobre la fila. como su longitud promedio. etc., hay que
usar la operacin QUEUE antes de LINK y la operacin DEPART despus
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 grficos bastante claros. La intencin de los autores de
este paquete fue facilitar lo ms posible la simulacin y esto se logr en

--

-.~-~.--~-~--

ti.'
.y.~-

. ....

-"~~..;~~.w--;..,":-.-~ .........!...t:.- ~-~.

~-~~~~~.~----- -~--,---~-~w~-~~~-

135

un principio. Sin embargo, hay que observar que cada simplificacin


impone ciertas limitaciones, y para lograr una flexibilidad suficiente y
un amplio campo de aplicaciones hay que aumentar el nmero de operaciones (bloques) y los parmetros correspondientes. Por eso, lo qu~
result es un paquete cuyo manual contiene las descripciones de
alrededor de 43 bloques, cada uno con hasta 10 parmetros. En consecuencia, no es tan fcil entender y aprender GPSS sin cierta experiencia en simulacin y programacin.

6.7

El lenguaje Dynamo y el mtodo de Forrester


DYNA,'\110 es un lenguaje para simulacin 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 mtodo de simulacin de Forrester que contiene algunas
ideas valiosas de modelcin matemtica. El mtodo fue desarrollado y
publicado en 1961 por J.W. Forrester en su libro "Industrial Dynamics" psi.
La primera versin fue orientada a la simulacin de las organizaciones
industriales. Despus fue adoptado para modelos de desarrollo urbano
y sistemas econmicos.
Segn Forrester, para modelar un sistema industrial y simular por
computadora su comportamiento hay que seguir los siguientes pasos:

l.
2.
3.
4.
5.

Formulacin de la tarea econmica de produccin.


Formulacin (en palabras) de la estructura del sistema.
El esquema grfico del sistema.
El modelo matemtico (las ecuaciones que describen los bloques
del esquema grfico) y el programa en el lenguaje DYNAMO.
El anlisis de la dinmica 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 informacin

--------------------> 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 simulacin

FO

El lengu<Jje Dy11<J1110 y el ml><l <> 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 ecuacin que describe al bloque NI
de la figura 6.20 es

:::::::

NI .K = NI J

--- -<.- /

FA

t1'

'-...

- ----- --/

'/

/
__,.-

---

FG

....

N4

dNl j dt =FA - FB

\0 /

/
/

-/

La sintaxis de las ecuaciones del mtodo 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 pequeo o variable), y el usuario tiene posibilidad de escoger el mtodo de integracin que se aplicar. Podemos

F1

__,.-

Figura 6.19. Ejemplo de un esquema grfico de DYNAMO.

En el esquema grfico 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
fbrica. 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 informacin sobre los niveles N3 y N4. El flujo FB slo depende de
N2. El flujo FG depende de la informacin sobre N4 y N2 a travs de la
funcin Fl. As, el esquema grfico 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 pgina siguiente.) Un nivel X en el momento K se denota
comoX.Kylos flujos siempre se refieren a un intervaloynoaun momento
de tiempo. interpretndose como flujos promedios dentro del intervalo.

E:.

'

~-

X
1

X.K

X.L
X.J

tiempo

figura 6.20.

(D7) (FAJK - FBJK)

que es slo 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 ecuacin equivale a la siguiente ecuacin 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 fcilmente usando directamente
cualquier procedimiento para ecuaciones diferenciales o en diferencias.
DYNAMO es ms eficaz con modelos grandes, porque ordena las ecuaciones y analiza Ja estructura del modelo.
Las aplicaciones tpicas del mtodo de Forrester y DYNAMO es la
simulacin de los sistemas de produccin. El mtodo de Forrester deja
una buena y clara documentacin de la estructura del sistema (descripcin informal y formal del modelo), y el lenguaje DYNAMO facilita
la simulacin. Sin embargo, despus de ser aplicado a unos sistemas
grandes de produccin. el mtodo 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 automtico . esto es. describir las decisiones con ecuaciones
algebraicas y diferenciales. En realidad la toma ele decisiones se ejecuta
por hombres y no por autmatas y no puede describirse con ecuaciones. Si !o intentamos hacer. los resultados de s(mulacin 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 optimizacin dinmica. en otras palabras, un algoritmo de contrul <ptimo. El
algoritmo que resulta en este caso. ya no es un algoritmo ele simulacin,
aunque contiene la simulacin como una parte indispensable. La discusin de estos casos excede el temario de este libro, sin embargo,
algunos aspectos de este enfoque se presentarn en los captulos i y 8.

6.8

mento de la hoja. visto a tr3vs ele una "ventana" pequea. El usuario


puede mover la ventana sobre la hoja y tener acceso a las clulas que
desea (figura 6.21).
Cada clula puede contener un valor numrico, un texto o una
frmula. Si la clula contiene una frmula, lo que se ve en la pantalla es
el valor calculado segn la frmula. Las clulas pueden moverse o
copiarse ele un lugar a otro. Al copiar una clula que contiene una
frmula. el valor correspondiente se evala de inmediato en el lugar n u evo. As. copiando las frmulas podemos programar algoritmos iterativos,
en particular los algoritmos que resuelven ecuaciones diferenciales.
Vamos a ilustrar esta aplicacin usando como ejemplo el programa
LOTUS que es quizs una de las ms 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 clula que se encuentra en el rengln
nmero 3 y en la quinta columna es EJ. En las frmulas se pueden usar
las clulas corno se usan las variables en un lenguaje convencional de
programacin. Por ejemplo . si colocamos la frmula +81 -82+A3 en la
clula 84. el valor ele 84 se calcular como !a suma de los valores de Bl,
82 y A3 . suponiendo que estas clulas s tienen valores definidos. Lo
ms importante en la interpretaci n de l as frmulas es que las referencias a las clul::is \un rt:iut/uLJ\, de t::il man era que la referencia "BI" colocada en la clula 84 significa ex;ictamente "el valor de la clula de la
misma columna que se encuentra a tres renglones ms arriba de laclula actual". Ahora si, por ejemplo. copiamos a la frmula +81 +B2+A3 de
la clula B4a la clula. dig;imos. CS. la frmula se convierte en +C2+C3+B4.
La operacin de copiar frmulas (Copy) puede ejecutarse cclicamente para un gran nmero de clulas. 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 clculos aritmticos. operaciones sobre series de datos y
matrices. creacin de bases de datos. ordenamiento, manejo de archivos. graficacin. estadsticas, etc. Veremos que hoja extendida tambin tiene aplicacin para algunos problemas de simulacin.
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 clulas. 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 cluia se identifica a travs del nombre de la columna y el
nmero del rengln donde se encuentra. Las clulas pueden tener valores o ser indefinidas. Lo que se puede ver en la pantalla es un frag-

....-., ...

,....~_...,.,_--.-,......

~~.
. . , ~ . .
~--~--:....-._~..,__~

'

'

"

~~_:~;....~~~-~. ,.,-~}~~-t-~~~-~-~:,_,,;&;..._~ ,~~~-~.~-~~-- ~ ..:.....-:.~.-~

ABCDrGHI

: e
( 1
5

Ceiuia E4

Figura 6. 21. La hoja extendida. la p.intaila y la ciul;i E4.

~;-ll>"'.'j4WWWt.}_

----~~~~~""~~".'.'l'l"!""~

l:~~

P-~

140

Lengu;_ijes de s imul;_icin

Otros lenguajes y p;_iquetes d e s im ulacin

una parte de un rengln a las partes correspondientes de un gran nmero de renglones consecutivos. que, como veremos, puede realizar un
algoritmo para ecuaciones diferenciales.
Consideremos como ejemplo las ecuaciones de movimiento de un
sistema mecnico 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 tambin procedimientos de graficacin que


muestran inmediatamente la solucin en la forma grfica (x 1 y x 2 contra t). Hay que observar que no hay ningn problema con realizar otros
algoritmos de solucin, por ejemplo los de Runge-Kutta. Preparando y
guardando las hojas correspondientes para diversos algoritmos, para
ecuaciones diferenciales el usuario puede preparar herramientas para simulacin continua. Este mtodo es rpido y fcil para los usuarios
que conocen y usan programas de tipo hoja extendida. Para los que no
estn 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 tpico de lo s micros. Sin embargo, todo tiene su precio. El uso de
LOTUS es realmente fcil y rpido, pero !el manual del usuario tiene 360
pginas!

x,

dxj dt = f(t) - ax1 - bx,


donde x 1 es la posicin 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 mtodo de Euler. Primero h ay que colocar las
variables x 1 y x, en la hoja. Escogemos la siguiente colocacin: x (n)
-> An. x.,(n) - > En, f(n) - > Cn. donde n = t/h , h es el incremento del
mtodo 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 clula A2

+Bl-0.05*(CI-D.5*Al-0.5* El) en la clula 82

Si. por ejemplo, queremos simular la respuesta del sistema a la


fuerza constante igual a uno (un escaln) , ponemos el valor 1 en c ada
una de las clulas Cn. En el r engln nm.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 rengln 2 (su parteA2. C2) en
el lugar correspondiente de los renglones nm. 3 hasta 500. Ya que las
frmulas siempre usarn a los valores del rengln anterior con respecto al actual, el programa va a calcular toda la trayectoria deseada paso
por paso.
Una vez construida la hoja segn 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 recalculacin automtica de toda la hoja. De la misma manera podemos cambiar las
frmulas del modelo. que significa que la misma hoja puede usarse para
simular el comportamiento de diversos sistemas.

A:..-.n-- - --- "'-;.,_._. __ ~ ....

, ...

~ --:0-- -~-~:...

Lenguajes para simulacin continua


ACSL. "Advanced Continuous Simulation Language". Un lenguaje para simulacin de los sistemas descritos con ecuaciones diferenciales.
Sirve para sistem as pequeos y grandes. Alcanzable en muchas
computadoras.

el valor de la fuerza en el momento nht en la clula Cn.

__.... ..,.......

Otros lenguajes y paquetes de simulacin


Vamos a caracterizar brevemente algunos otros lenguajes de simulac i n, indicando sus posibilidades y aplicaciones.

segn el mtodo de Euler. Traducindolo en la notacin de LOTUS con


h = 0.05. a = 0.5. b = 0.5 tenemos que colocar a las siguientes frmulas.

141

CSMP. Un programa para simular sistemas continuos.Permite pasar


de un esquema analgico que se usa para simular sistemas dinmicos en
computad o ras analgicas. a un programa de simul acin en una
computadora digital. Se especifican los bloques tpicos 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 simulacin
de los sistemas d inmicos 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 tpicos, lineales o no lineales . as como definir
nuevos bloques a travs de las funciones de transfer encia. El sistema
corre en los terminales DEC. Apollo y SUN.

~-

142

Otros lenguajes y paquetes de simulacin

Leng11ajes de simulacin

SSDC2. Un programa para simulacin continua de los sistemas


dinmicos continuos. Relacionado a FORTRAN, aplica el mtodo de
Runge-Kutta de cuarto orden. Usa esquemas de bloques para representar la estructura del sistema. Desarrollado en el Instituto Politcnico
Nacional, Mxico l]J.

ISlM. Un lenguaje interactivo para simulacin continua. Alcanzable


para la IBM pc1 11.
CSSL IV. "Continuous System Simulation Language". Un lenguaje de
simulacin continua. Adems de resolver las ecuaciones del modelo,
ofrece procedimientos para el anlisis lineal, la transformada rpida de
Fourier, ecuaciones rgidas, el anlisis del estado estacionario, diagramas de Bode y Nyquist, lugar geomtrico de las races y graficacin.
Alcanzable en muchas computadoras.

COL. "Control Oriented Language" desarrollado por J.P. Siebert y


D.J. Winning 199 1_ Sirve para simulacin de sistemas de control automtico que contienen microprocesadores. El programa de simulacin
corre en tiempo real y consiste en un nmero de tareas "tasks", basadas
en CSSL.

SYSL/M. Para la simulacin continua de sistemas grandes. Adems


de evaluar las trayectorias del modelo ofrece mecanismos para el
anlisis de estados estacionarios. linealizacin de modelos y grficas.
Alcanzable para la V AX y la lBM PC, de E' Consulting, Poway, EE.UU.

TOP. Es un paquete para simulacin continua de los sistemas distribuidos descritos con ecuaciones diferenciales parciales 1z1 (vea la
seccin 4.9). La solucin 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 mtodo de
elementos linitos. TOP ofrece la posibilidad de simular sistemas distribuidos de control con retroalimentacin. Est implementado en la
computadora VAX 11 / 780.

ATOMCC. No es exactamente un lenguaje de simulacin 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
nmero de procedimientos sofisticados para resolver las ecuaciones,
basndose en series de Taylor. Se pueden manejar sistemas de ecuaciones en el plano complejo. Alcanzable para la IBM PC y computadoras
ms grandes.
STELLA. Es un lenguaje para simulacin 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 " depsitos"
(stocks), los flujos se usan de la misma manera como en DYNA"vtO. Los
"convertidores" y "enlaces de entrada" conectan los depsitos en el
esquema grfico determinando la estructura del modelo. Al definir
(grficamente) a la estructura del modelo y determinar a las condiciones iniciales, se calcula automticamente Ja trayectoria del modelo. El
lenguaje ofrece buenas facilidades para graficacin y animacin para
visualizar los resultados.
TUTSIM. Un lenguaje para simulacin continua en computadoras
pequeas t 1cr'1. Es til para sistemas con elementos no lineales. El modelo
se define en trminos de diagramas de bloques o grficas llamadas
"bondgraphs". Las grficas se traducen fcilmente en el programa
correspondiente en TUTSIM.
MICRO-CAP 11. Un programa para simulacin y diseo de los circuitos electrnicos. Permite simular, graficar y analizar circuitos con transistores. amplificadores operacionales y circuitos lgicos. Desa1 rollado
por "Spectrum", Sunnyvale, California, EE.UU.

'

... ~_,___,

143

SIMNON. Un lenguaje para simulacin 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 simulacin discreta y discreto-continua


PASSlM. Un paquete para simulacin de eventos y sistemas continuos1 101.
Ofrece un nmero de procedimientos escritos en PASCAL, a travs de
los cuales se lleva a cabo la simulacin. El programa se escribe en
PASCAL y consiste en una secuencia de llamadas a los procedimientos.
WlTNESS. Un sistema interactivo que facilita la simulacin desistemas de manufactura, ofrece modelos listos para simular algunos elementos tpicos como cintas transportadoras, puestos de produccin, etc.
Relacionado a FORTRAN.
SIMSCRIPT. Un sistema de simulacin orientado a eventos, desarrollado por Kiviat, Villanueva y :vtarkowitz 151. 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 simulacin como puestos de

144

Otros lenguajes y paquetes de simulacin

Lenguajes de simulacin

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 integracin (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. Fcil de
aprender para los usuarios de FORTRAN.
SIMON. Un lenguaje para simulacin de eventos. similar a CSL. Basado en ALGOL 60 143 1.

VERISIM. Un paquete para simulacin 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 basndose en la experiencia e intuicin del usuario. El paquete
evala las estadsticas 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 simulacin de eventos, filas, sistemas de


manufactura, desarrollado por C.D.Pegden !79 1.
GASP IV. Un lenguaje de simulacin basado en FORTRAN, orientado a eventos y modelos discret~ontinuosl 85 1. Ms parece un paquete
que lenguaje, debido a que la simulacin se realiza a travs de las llamadas a ms que 20 procedimientos que manejan los eventos. Las
versiones nuevas son GASPPL/! relacionado a PL/1, GASP/ E la versin
interactiva y GASP V que ofrece ms facilidades para los procesos
continuos 111.

PASION.
cin 5.5.

E~1SS. "Expert Manufacturing Simulation System" es un sistema


experto para simulacin 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 (Ingls). El sistema contiene los siguientes elementos: el interfase con el lenguaje natural, el generador del
cdigo de simulacin, el analizador de simulacin y el lenguaje de
simulacin SIMANl 7 ~1 . Despus de interpretar y aceptar las comandas
de entrada, el "generador" produce el cdigo correspondiente en SIMAN. Luego, el "analizador" procesa el cdigo. checando su eficiencia,
y hace cambios necesarios para mejorar el programa y agregar procedimientos que analicen los problemas "what if" ('qu pasara si ... ").
Corre en la V AX 785.

Un lenguaje de uso general en simulacin . Vea la Sec-

MODSIM 11. Un lenguaje de simulacin orientado a objetos. Es similar a SIMULA pero relacionado con el lenguaje de programacin C.
SlAM 11. Un lenguaje de simulacin 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 grfico. SLAM 11 usa esquemas que tienen la forma de redes. Los
nodos representan creacin de los objetos, terminacin de actividades,
lneas 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 matemtico lgicas de la ocurrencia de los eventos las programa el usuario, en FORTRAN. SLAM
proporciona un conjunto de procedimientos tpicos que facilitan la simulacin, incluso el "mecanismo de reloj" para controlar la ejecucin
de los eventos. La primera versin de SLAM fue desarrollada en 1979.
La nueva versin, 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 aplicacin
con ms detalles, ya que el lenguaje parece ser bastante completo Y
popular entre los simulacionistas.
La figura 6.22 (ver pgina siguiente) muestra el smbolo grfico del
nodo de creacin 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 nmero mximo de objetos que puede generar el nodo.
Cada objeto tiene un nmero de atributos que tienen el papel de las
variables descriptivas. El valor MA muestra el nmero del atributo,

SIMPA C. Un lenguaje de simulacin de lneas de espera yplaneacin,


desarrollado por M.R. Lackner y J. Kagdis, para la mquina IBM 7090.
GSP. Es un "programa general de simulacin" (General Simulation
Program), desarrollado por K.D.Tocher. Sirve para simular plantas de
manufactura. Se usaba en las mquinas Ferranti Pegasus y Elliot 503,
principalmente en el Reino Unidol"l.
SYSMOD. Un lenguaje de simulacin para modelos continuos y
discretos. Emplea la sintaxis similar a PASCAL y ADA. Ofrece gran nmero de mecanismos para simulacin, como procedimientos de integracin. ordenacin automtica de relaciones matemticas del modelo,
solucin de ecuaciones diferenciales y algebraicas, graficacin. Desarrollado por Systems Designers ple., Reino Unido. Corre en las
computadoras V AX e IBM.
A-XE. Un lenguaje para la simulacin de los sistemas digitales de
"hardware". La compilacin de AXE se lleva a cabo a travs del lengua-

:"~'

-'--".\, -'

~- - -

-- --- - ~-. ,__

----

14()

Lenguajes de simulacin

( Jtros lengua jes y paquetes de s imulacin

147

determina. significa que despus de entrar TC objetos en el nodo, la


simulacin termina.
La figura 6.25 muestra el nodo de asignacin. 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 nmero de las posibles salidas.

Figura 6.22. Nodo de creacin de objetos.

----"'-1.1
donde se puede guardar (si MA esto presente) el momento de creacin
del objeto. para anlisis posterior.Mes el nmero de salidas (posibles
ramas de la grofica). donde puede proceder el objeto.
La figura G.~3 muestra el smbolo del nodo de tipo lneu de esperu
(quew:). IQ es el nmero inicial de objetos en la lnea. QC es el nmero
mximo posible. IFL es el nmero de archivo donde se guarda la
informacin sobre los objetos que esperan en la lnea.

Nmero inicial

Capacidad
de la lnea

Nmero
del archivo

Este smbolo indica


que &I nodo es una
lnea de espera

Figura 6.23. Nodo lnea de e spera"

El smbolo pora el nodo terminal se muestra en la figura 6.24. Un


objeto al entrar a este nodo. desaparece. El nico parmetro TC. si se

~~~~~~~~~~~~~~~~~~~

VAR valor
VAR = valor

I '\

Figura 6 . 25. Nodo de asigna<: in

Cada nodo en SLAJ\tl 11 puede tener una etiqueta, cuyo valor se


muestra aba jo del smbolo. 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 smbolo para una actividad de servicio. N es el
nmero de los servidores que atienden a los objetos (funcionan en paralelo), y A es el nmero de la actividad. que la identifica en el programa.
DUR es el tiempo de servicio, PROB es la especificacin de la probabilidad para escoger l a actividad entre otras, cuando la rama es una de las
que salen de un nodo "lnea de espera". En lugar de PROB se puede
especificar una condicin (COND) para escoger la rama.

DUR, PROS o CONO

80
Figura 6 .26. Representacin de la actividad

en SLlM 11.

Figura 6.24. Nodo terminal

Consideremos. como un ejemplo. la situacin donde hay dos lujos


de entrada d e objetos (por ejemplo. "cliente hombre" y "cliente mujer")
los cuales. despus de esperar en una lnea de espera estn atendidos
por un solo servidor.

148

Lenguajes de simulacin

Otros lenguajes y paquetes de simulacin

en el espacio. Ahora, conecte los procedimientos con los datos que usan
y con los segmentos que desempean 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: proteccin (u
ocultamiento) de datos, tipos de datos abstractos, atadura dinmica 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 proteccin de datos hace el lenguaje ms confiable y elimina la
dependencia indeseable entre los mdulos 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 destruccin accidental. Hay que notar que
las declaraciones locales dentro de los procedimientos no proporcionan , en general, mecanismos suficientes para la proteccin de datos.
Por ejemplo, las variables locales en PASCAL no se pueden usar para
guardar al estado de ningn objeto, ya que se destruyen al salir del
procedimiento. En el lenguaje C, por ejemplo, y aun en FORTRAN sf
existe esta posibilidad (datos "estticos").
Tipos abstractos de datos es un mecanismo importante que hace el
programa ms flexible. En el cdigo fuente no se especifica ningn tipo particular (ya declarado), dejando la tarea de sustituir el tipo adecuado al compilador. Este mecanismo se ha usado en muchos lenguajes
pero slo para tipos y operaciones bsicas. Por ejemplo "+" y"-" en
FORTRAl'l sirven igualmente para datos de tipo REAL e INTEGER. La
generalizacin de este concepto es usar segmentos con propiedades
"genricas" donde no se especifican tipos. Los tipos actuales se definen
a la hora de compilacin y no de programacin, segn los tipos actuales
de los datos en el momento. Este concepto es relativamente nuevo y no
se usa en lenguajes ms viejos como SIMULA
Atadura dinmica de datos permite ejecutar las operaciones sobre
datos sin preocuparse por sus tipos y estructuracin. La operacin no
es una llamada a un procedimiento, pero consiste en mandar un mensaje
a un objeto. El objeto ejecuta la operacin sobre s mismo, usando sus
mtodos. Por ejemplo "Print" no es un procedimiento pero sf un mensaje que hay que mandar a un objeto (un nmero 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 (nm.l ARTIB(l)] un nmero aleatorio
con distribucin 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, nmero inicial de objetos cero y nmero del archivo l. La rama que sale de la FILA representa al servidor .
Hay un solo servidor (el nmero N ausente) que se identifica con
nmero l. El tiempo de atencin depende del valor del atributo nm .l
del objeto que se atiende. De esta manera, el tiempo de atencin va a ser
diferente para los hombres y para las mujeres. Despus de ser atendidos, los objetos desaparecen en el nodo terminal.
Para realizar la simulacin. hay que preparar, aparte del esquema
grfico, 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 lneas. 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 grficas creadas en la pantalla, sin necesidad de
programar la simulacin (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. Despus 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 Amrica. Despus de 1980, junto con el desarrollo rpido de las computadoras personales aparecieron muchos lenguajes de este tipo. Los LOO
pueden usarse tambin para problemas de simulacin. aunque son lenguajes de uso general.
Koehler y Patterson. los autores del lenguaje SMALL-TALKl56 1 157 1
dan una buena explicacin intuitiva de lo que es la idea de LOO. Segn ellos. imagnese que los datos y los segmentos de su programa giran

"-WL~.J

\F.i_. -"~,.-,..v:

iL;'>'

x:~~

-""t'' '>i;<i--+~

ar , ::.'

r,yr,.w.:-,;_ ,ft;t;sJC'.h'6:f$ &tkfit-itZrlif'.51lf@n,k'*-!::;tpt1i.\-.i~--<,.:1sfr'.i-}i'::~!!Lif$; "!.'.:h""';& .....1$4~

149

;.~;t ;A ,:14--:tA ~ - '.,_-,;.( l:~1:1f

~~--------- --:M=-! _,:

A--"'!!'r".....,,.,,~:~-''"""..._

""

dr% ,!:,.:\'.{v- -:.:.,,;'?~,.....,.~,:


1

rlfl

,,

;....."

.:.. ....

"S'~

...-....:.~,~;t.:~.:.<A- _,.

150

Lenguajes de simulacin

Otros lenguajes Y paquetes de simulacin

vas basndose en las clases que ya existen. Es un mecanismo que facili ta


la programacin y es muy til en el desarrollo de modelos grandes para
simulacin.
Como cualquier enfoque relativamente nuevo, el de LOO tiene sus
ventajas y desventajas. Las ventajas son, segn los autores de estos
lenguajes, la proteccin de datos y uso de datos abstractos, que puede
aumentar la confiabilidad y separar las especificaciones representacionales y la implementacin. La atadura dinmica aumenta la flexibilidad y permite agregar nuevas clases de objetos sin cambiar a los
programas que ya existen. La herencia permite mejorar la "factorizacin" del cdigo, porque el cdigo que corresponde a ciertas propiedades del modelo se encuentra en un solo lugar.
Las desventajas son relacionadas ms a las implementaciones que a
los lenguajes mismos. La mayor es, que casi todas las implementaciones son ms 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 funcin o procedimiento
en un lenguaje convencional, es casi dos veces ms lento que la llamada
a una funcin. El consumo de memoria es tambin ms grande para LOO.
Entre los lenguajes del grupo LOO hay que mencionar los siguientes:
SMALLTALK. Es una implementacin tpica y completa de LOO, con
fuerte separacin de objet os y proteccin de datos !>6 1. Facilita la
programacin a travs de modo interactivo con "ventanas" y mens. 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 extensin de PASCAL. La palabra OBJECT
permite declarar objetos como se declaran los records de PASCAL. El
objeto, adems de una estructura de datos, contiene mtodos que se
declaran como procedimientos dentro de la estructura del objeto.
NEON. Est relacionado a FORTH. Usa la sintaxis de FORTH, es
relativamente rpido, aunque no es una implementacin completa de
LOO.
ExperCommon L!SP. Relacionado al lenguaje de inteligencia arti ficial LISP, implementacin completa de LOO.
OBJECTIVE-C. Relacionado al lenguaje C. La extensin cons iste en
nuevo tipo de expresin que es el mensaje, y en las declaraciones de
clases.
OBJECT ASSEMBLER. Relacionado a ASSEMBLER, corre en el procesador de Motorola 68000. Es rpido, pero no cont iene todos los conceptos de LOO.
OBJECT LOGO. Relacionado al lenguaje LOGO y COMMON LISP.
Implementacin completa de LOO. Ms difcil para aprender que otros
lenguajes de la familia LOO.
OBJECT-ORIENTED FORTH. La versin LOO del lenguaje FORTH sz1.

151

Algunos lenguajes r ealizan parcialmente las ideas de LOO, como por


ejemplo PASlON (vea seccin 6.5). Otro ejemplo es MODULA 2 (una
extensin 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.ULJi21.1621 1s31. 19s1. El fin del proy ect o "ADA" fue
crear un lenguaj e nuevo que podra reemplazar a todos los lenguajes de
programacin, convirtindose en el nico lenguaje de uso general.
Ahora, despus de algunos aos de la definicin 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 ms importantes son unidades genricas y
traslape de operadores (operator overloading). Las unidades genric as
permiten sustituir tipos actuales en lugar de ti pos abstractos a la hora
de compilacin. El tras lape de operadores consis te en el uso de diversos operadores con el mismo nombre. El operador que acta en el momento se escoge segn el contexto del uso, esto es, segn tipos actuales
de los par metros con los cuales acta.
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 ms importantes son en fas computadoras paralelas con procesadores mltiples. Recientemente podemos obser var un d esarrollo
rpido de sistemas paralelos. El paralelismo, t anto en hardware como
en software, es lo que emp uj a las investigaciones en la inteligencia artiicial y en simulacin, aunque lo ltimo todav a no se puede decir con
r especto a software de simulacin 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 compaa Thinking
M achines de los EE.UU. produce un modelo de computadora que tiene
64000 (sesenta y cuatro mil) procesadores que actan 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 simulacin
No todos los aspect os de LOO son de igual importancia en l a simulacin.
Los ms 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 simulacin. Por otra part e. hay que o bservar que
hay una relacin clar a y dir ecta entre los conceptos de LOO y la descripcin 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 eraccin- la imp lementacin

152

Lenguajes de simulacin

(las operaciones, mtodos y procedimientos). Es difcil comparar la


utilidad de LOO y la de los paquetes y lenguaje:; de simulacin, como
GPSS o SlMSCRIPT. Es obviamente ms fcil usar a GPSS para simular
un sistema con filas, que programndolo, por ejemplo, en OBJECTIVE
PASCAL. Por otra parte, casi no hay lenguajes que existan solos en los
sistemas de cmputo. 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 quizs de igual importancia que el lenguaje mismo. Adems, basndose en
la experiencia en programacin, se producen paquetes de uso especial
y de simulacin para ADA. Sin duda los lenguajes de ms alto nivel
algortmico las ideas de LOO y el paralelismo de sistemas de cmputo
van a determinar las tendencias futuras en los mtodos de simulacin.

CAPTULo 7

Aplicaciones de la
simulacin en
mercadotecnia

7.1

1
!

Introduccin
Hay dos funciones bsicas que desemperian todos los negocios: crear
un producto o servicio y comercializarlo. Las computadoras pueden
ayudar no slo en el proceso de produccin sino tambin en las aplicaciones de los mtodos de mercadotecnia para establecer las estrategias ptimas de comercializacin. Los paquetes que vamos a describir
brevemente fuero n diseados para sistemas de cmpu t o pequeos y
empresas pequerias o med ianas.
Cada mercado es un sistema complejo y su comportamiento es difcil de predecir. Un analista o vendedor con cierta experiencia puede
prever la respuest a del mercado en un estmulo simple. pero difcilmente puede confiarse en su intuicin al determinar la estrategia ptima de
comercializacin en una situacin ms 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.

2.

Desar rollar mtodos de simulacin del mercado y optimizacin de


las estrategias de comercializaci n para los prod uc tos con la respuesta rpida y lenta del mercado.
Desarrollar los paquetes de programas correspondie ntes de talmanera que realicen los mtodos adecuados. para que sean bastante
amistosos" y fciles para los usuarios y corran en computadoras
personaes.
J5:l

154

7.2

Aplicaciones de la simulacin en mercadotecnia

El modelo de demanda y ventas


Los mtodos de simulacin y optimizacin para ambos tipos de productos (de respuesta rpida 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

)eA

A(t)
v(t)A(O)(l

Y(t)
(

g)'

Y(O)

)ey
(1)

en donde
- es el tiempo del modelo, O < t

<

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 rpida de


mercado (consulte 151). La ganancia se calcula tomando en cuenta el
costo de produccin o adquisicin, las ventas y los gastos de publicidad. esto es

G = (P - cp) Q - A
donde cp es el costo de produccin. La figura 7.1 muestra la gaiiancia
como la funcin de las dos variables P y A (precio y gastos de publicidad), donde las ventas Q se calculan segn el modelo (1). En la grfica
se muestran slo los valores positivos de la ganancia. Se puede ver que
s existe un punto ptimo que proporciona la ganancia mxima. El
modelo para los productos con respuesta lenta usa. en lugar de los
precios y los gastos de publicidad, ciertas variables que describen la
dinmica del mercado y se conocen como la "benevolencia" de mercado
(marketing goodwll). Estas variables dependen de la historia de pre-

CD

::::>

a..

<

z
z<
<
(!'

...:

i...:

~
,.,

!Sf-i

Aplicaciones de la simulacin en merc;.idotecnia

cios y de la publicidad y reflejan los retrasos de anotacin, retrasos entre la anotacin y la compra. entre el gasto promociona! y el estmulo
correspondiente, etc.(todos los llamados "carryover effects").

7.3 Los paquetes PAOM y PSOM


Se desarrollaron dos paquetes: Paquete para Anlisis y Optimizacin de
\lercado (P AOM) para los productos con respuesta rpida de mercado
y Paquete para Simulacin y Optimizacin de Mercado (PSOM) para
los productos con respuesta lenta.
PAOM es un simulador esttico, esto quiere decir que en esta simplificacin del modelo se rec;haza la dinmica del mercado. suponiendo
la respuesta r pida, prcticamente inmediata. Esta simplificacin no
cabe en las consideraciones sobre la simulacin de sistemas dinmicos
de las secciones anteriores. PAOM se menciona aqu porque contiene
unos procedimientos de identificacin del modelo que se utilizan tambin en la simulacin de la dinmica de mercado (paquete PSOM) y
porque el modelo que se utiliza. aunque esttico. 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 inflacin para los ltimos 12 meses. Se calculan las elasticidades er. eA y er del modelo. Luego. se produce un pronstico para
el ao siguiente basndose en el modelo de la demanda. Los dos paquetes no resuelven ningn problema de inventarios o almacenamiento. Se supone que las ventas siguen a la demanda. El pronstico se
muestra en forma numrica y grfica 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 rengln de la tabla
contiene datos de un mes del ao pasado . que son el precio. ventas.
gastos de publicidad. ndice de temporada e ingreso promedio del consumidor. Adems se muestra la tasa de crecimiento total (por ejemplo
territorial) del mercado. Ja tasa de crecimiento de ingreso del consumidor, el costo de produccin o adquisicin (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 slo para
analizar un mercado particular. sino tambin para archivar los datos y
usarlos en comparaciones de mercados y otros tipos de anlisis. Luego se calculan las elasticidades del modelo de demanda y se produce
un pronstico para el siguiente ao. 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 ao 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 produccin: 20 .0 0
Ganancia = 2,046. i 30

Tabla 7.2
El pronstico para el siguiente ao:
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 produccin: 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 simulacin en mercadotecnia

La tabla 7.2 muestra el pronstico en la forma numrica y la figura


7.2 (Ver pgina siguiente) indica la grfica correspondiente para los dos
aos (pasado y futuro). Ahora. el usuario puede cambiar cualquiera de
los datos y ver la influencia que tienen sobre el pronstico. Una de las
ventajas de los paquetes PAOM y PSOM en comparacin, por ejemplo
con Visicalc u otros paquetes de tipo "hoja extendida" es que PAOM y
PSOM contienen procedimientos de optimizacin. El pronstico que
generan. procesado por el procedimiento de optimizacin, se convierte
en un nuevo pronstico con precios y gastos de publicidad ptimos
(figura 7.3 ver pgina 160). El criterio de optimizacin es maximizar la
ganancia total para el ao del pronstico.
PAOM resuelve tambin el problema con mercados mltiples. Si
hay ms de un mercado para el mismo producto. se comparan los mercados y se resuelve el problema de ubicacin ptima de los gastos de
publicidad y precios, para maximizar la ganancia total. La figura 7.4 ( ver
pgina 161) muestra la comparacin de diversos mercados para un
producto en forma grfica.
El paquete PSOM simula la dinmica de mercado y se parece ms 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
estmulo simple, por ejemplo a una campaa publicitaria o una baja de
precios que dura una semana. Despus. el usuario determina su estrategia en precios y publicidad y otros parmetros de mercado. como la
tasa de crecimiento de costo de produccin. ingreso del consumidor.
etc .. para las futuras 52 semanas. Basndose 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 ms detalles.

oa:

:;)

1-

:l

u..

u:
ci

!:?
m
:E

=~~~~~~~=-~=-=-=-=~=
=
~=-

=
-====:E-UJ=
----o:_

oo

<(

7.4

Introduccin a la simulacin de la dinmica de mercado

-8
!:?
"'m

l.

en
<(

o..

E
~

Los modelos estticos de mercado son insuficientes para describir relaciones entre la demanda, ganancia, promocin, precios y otros parmetros. 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 combinacin de diversos procesos dinmicos tales como retraso de anotacin, retraso
entre la anotacin y compra. retraso entre el gasto promociona! y estmulo correspondiente. retraso de anotacin de ventas. etc.'"" " '""
Algunos autores suponen que la demanda actual es una !uncin de la
"benevolencia de mercado" l marketing goodwill) que a su vez depende

"'c.o
.a
2

. 1
1
1

~
j
en

o..

o..

,..
r-

...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

11IIJJJI JLOJ

A:

CHIAPAS 23.00 %

B:

TULA

22. 81%

C: MONTERREY 20.93 %
D:

D.F 16. 67 %

E: CIUDAD OBREGN 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 simulacin de la dinmica de mercado

163

q(t) - el gasto publicitario actual (por la unidad de tiempo),

rprecio 1

puthcidad

.1

~
1 Funcin de l
demanda
VJ~
2 1~---__

DE

- la demanda actual (por la unidad de tiempo),

s(t)

~-----,..-__

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),

FP!Ul:":l -

1
- j

; _

- 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 iJenev0enc1 ;: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 s1rniifiCKi<'>n que crniteng a un modelo no line;!I ele
Otn1; ~nd1. 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!t111s. se dese-a
t 1 ts ;1rn_.1 lf~1r un !l! tot !o cie sHnulacin y 0Dt!rnizltc1,) n de ias estrtneg1l1 S
lit' :11e1T;Hlu que se pue<b n impleme11t0r en una comoutadora personJi.

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

<

<

- la benevolencia del merc ado co n respecto a la publicidad.

En nues tro enfoque la benevolencia de mercado r efie re tamb in a los


precios y no slo a la publicidad. corno . por ejemplo. en [3]. Suponemos
que la demanda actua l se comporta segn el siguiente modelo.

s(f)

s0 }'(t) (1

gy

( g 1g(t)~e"(
}

\e(c(t))e,

g,(t)

(t) (1

g)

g)

(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 esttico. Las ventajas dependen
de la historia de los precios y los gastos promocionales segn los dos
bloques dinmicos lineales DP y DE. como se muestra en !a figura 7.7.
Suponemos que la respuesta de mercado a un estmulo 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 ecuacin.

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 uccin 1_pu r l a unidad del producto}.

d' g, T
d.,;

'

do
T ~ (T
' dt
1

T.' ".! ) - g

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 travs de las observaciones prcticas.

l 64

Aplkaciones de la simulacin en mercadotecnia

Introduccin a la simulacin de la dinmica de mercado

La funcin de ganancia es
r(t)

se propone utiliza, de la forma ms intensa posible, el conocimiento y


la intuicin del usuario. La identificacin empieza con la pregunta:
Cules son las constantes de tiempo T 11 y T 12 para la respuesta a un estmulo 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 estmulo 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 intuicin del usuario (figura 7.6). Las constantes de tiempo
para la respuesta a un estmulo en la publicidad se establecen de la
misma manera. Para determinar las elasticidades de la funcin 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 cul incremento de ventas
puede ocasionar una baja del l Q'.X, en precios. Responder a esta pregunta
es ms fcil. 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 acta en una forma interactiva y fcil de manejar,
parecida a los juegos electrnicos.

(p(t) - h(f)] s(t) - q(t)

donde s(t) se calcula segn (1).


Las ecuaciones (1) y (2) constituyen el modelo del sistema en consideracin. La ganancia total se calcula como la integral

P=

(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 parmetros 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 optimizacin: (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) simultneamente. El criterio de optimizacin es maximizar la ganancia total P en el
periodo [ O. 71.

Identificacin de los parmetros


El problema de determinacin de los valores para los parmetros del
modelo es difcil. El modelo es dinmico 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 basndonos en las observaciones de un mercado real hay que captar un gran
nmero de datos y aplicar mtodos bastante sofisticados de identificacin. 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 rpidos. El mtodo que

Demanda

r-\

1
5

Figura 7.6. Respuesta dinmica del merca<lo.

~:;>:<-

10

semanas

l t;1)

.\plic~n. :1011es

7.4.:3

de la sin1uL1ci1.ll\ en n1erc;1dotecnia

Simulacin
Las ecuaciones del modelo (1) y ('.2) se resuelven a travs del mtodo
de Runge-Kutta. No hay ningn problema con implementar el algoritmo correspondiente. El incremento de tiempo es una semana. aunque el
alsoritmo puede disminuir automticamente el paso segn los parmetros 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 ao. 52
pasos). tarda aproximadamente 1O segundos. incluyendo todas las
operaciones necesarias para graficar la trayectoria en la pantalla.
Despus ele correr una simulacin. el usuario puede cambiar alg1Jnos
parmetros del modelo y ver los cambios correspondientes en la trayectoria. Las grficas incluyen e1 precio. gastos prornocionaies. la demanda y la ganancia como funciones dei tiempo. Todas las variables
Jparecen. adems. en iorma grfic:1 en la impresora.
El simubdor result ser til tanto como un mtodo para evaluar
pronsticos de comport:imiento de mt'rcado. as como tambin una herramienta didctica para los analistas ele mercado. Algunas tr:iyectorias obtt'nidas de la simulacin se muestran en las figuras 7.7 y 7.8 (ver
p3ginas 167 y 168). como resultados del procedimiento de opt irnizacin.
La explicacin ele estas grficas est tbda en la siguie;ite seccin.

i..t...t

~~

',

//

..u

~(
Uj

__

_,

-,--

\
1

;::

I \
il .

f;1

Los t rc-s problemas de optimizacin ( 1-3 )(seccin 7.4.1) son problemas


tpicos de control ptimo. bien descritos en la literatura. :"<! En la notacin vt>ctorial el modelo del sistema en consideracin puede expresarse como la ecuacin vectorial

c..

....
=

dxU)

-.....
- !

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 funcin
vectorial que se puede obtent'r de las ecuaciones (2). Adems. x(O) = x
es una condicin 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 frmula
(..\ ) .Existen algunos algoritmos conocidos en la teora de control ptimo
para problemas ck este tipo. El algoritmo que se aplic es un algoritmo itrarivo !Jasado en el principio de :Vlximum de Pontriagin. H La idea
principal clet>ste mtodo 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)

Optimizacin

1
1

:-21
i::

"O

I; , (t) . ge (t) ]. u es el vector de con trol u(t) =

"~"'

U)
.!9

"O

~~~~
=:;o..>:::

- .. .

i...

1.

WJ <n -..1:>

'

'
tt-

::

::

lntr o duccim a la s imulacin de la dinmica ele men.:ado

sistema de ecuaciones que se puede derivar de la ecuacin (5). Tambin


se conoce la condicin final para las z. El principio de Mximum 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 funcin objetiva (con signo menos), esto es, segn la
frmula ( 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 optimizacin 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

a.
E

5.

"'o

"O

"5

~
-;

6.

:!)

Se escoge un control u permisible.


Se calcula la trayectoria segn las ecuaciones (5) con la condicin
inicial x y se almacena en la memoria.
Basndose 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. Segn este gradiente podemos cambiar el control para maximizar el hamiltoniano.
Se cambia el control actual u en la direccin del gradiente. de tal
manera que el criterio de optimizacin tenga el valor ms bajo
posible.
Vamos al paso 2.

La solucin de las ecuaciones conjugadas tarda aproximadamente lo


mismo que para las ecuaciones de la trayectoria. Adems. el paso 5
necesita que sean calculadas algunas trayectorias del modelo. Todo el
algoritmo tambin 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 simulacin.
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.

Algunos resultados
~

..

Ejemplo l

t-

:::

;:;;:
""'

..

La compaa 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<HH:~s

de la

si1nuldc!<'111en1 ner L1dltee11 1

sumidor. el costo de produccin y el ndice de t empor ada sun constantes y que la tasa de Gecimento del mercado es iguai a ceru. Los eectos
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 tambin que el precio ya fue programado para todo el ao 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 nm. 17 y queda constante para el resto del
ao. El pro blema de optimizacin 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 zacin 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
<k .. ,,uste". Los gastos in iciales d~ pub licid ad r esultaron ser demasiado
elev;dus y ei programa calcul el nivel ptimo co rr espundiente. Es intere::;;nte \er cmo cambia el nivel de estos gas.tos en ei intervai o que
t'111p iez:1 cerca de ia semana nin iO (intenalo !! ). El algoritmo "prev"
c'l Jiza ck los precius y aumenta !a publicid:.id para ebbora r b "ve n ta a"
del me r cado . En el perlado Ill los gastos de publicidad son tan eieva dos.
que lJ. ginanc!a resuita ser negativa . La compa a tiene que invertir ..:n
el me r cado. para ganar m[1s ckspus del incremento de! precio. Despus de inc r ement ar los prec ios. la v entaja y la inercia del mercado
hacen !as ventas bastante grand es para recoger el d!nero y ganar m:'ls.
El periodo IV es un estado estacionario con los gasws ptimos de p ubiic!dad. Es tambin inter esante ver qu pasa en el periodo V. Observe
que. por !a suposicin. las v en tas y toda la actividnd de i;> compaa
terminan en la sem:.ina 52. Es claro que en esta situacin no tiene caso
p romover al producto en las lti m as semanas y as dice t;i.mhin el
program;i. de optimizacin.

Ejemplo 2
Con siclc>re rnos dt nue\'O el mercido del ejemp lo 1. ,\hora suponemos
que cl indice de t' r11or<.1da es igual a 1 para todas las seman as exce pto
la serna n;i. nmero 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". Despus 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 tpicas para
:os prnductos que nt'cesi tan una u l>i icidad perma11c:me. Desde ha~go

liitrCJducci1.1n ;1

la

s i111uf.:ni,n1 el e la dinn1ic1 cie n1erc<.Hio

l ll

tanto las propiedades cualitativas cu1110 las cuantitativas dependen


fuertement e de las elasticidades y ele los dems parmetros de mercado y pueclen cambiar significativamente ele un caso a otro.

7.4.5

Conclusiones

Es posible implementar el mtodo descrito anteriormente en una


computadora personal. El simulador ele mercado es bastante rpido y
permite observar las trayectorias en la pantalla. El usuario puede cambiar !os parmetros del modelo y "j ugar con ei programa para comprender y meio rar las es tratc>gi:is de mercado. El mtodo de opt im iz acin .
q11e perterwce a la teo ra de control. pro porciona en est e caso buenos
resuitados. con tiempos cie cmp11to razonabl es. As. la computaclora
puede ayuda r al usuario a resolver alg:111os proble1nas de mercadotecnia. cuando ste sabe cmo responde el m ercado a los estmulos
simples. pt-ro no pueJe p rever qu pasar cuc.ndo ms var iables de
cont rol cam bien simultneamente.
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 tambin tienen valores didcticos y pueden utilizarse para entrenar gerentes de
ventas o analistas de mercado.

CAPTULO 8
El uso de simulacin
en algoritmos
iterativos; control
ptimo de vuelo

8.1

Introduccin
El uso tpico de simulacin consiste en simular un fenmeno durante un
periodo de modelo para observar su comportamiento dinmico. Si el
modelo del !enmeno contiene procesos estocsticos, podemos repetir la simulacin algunas veces y calcular las estadsticas que nos interesan. Adems, se pueden investigar algunas versiones del modelo y la
influencia de las variables de entrada. stas, sin embargo, no son todas las aplicaciones de simulacin. Hay que notar que los modelos de
simulacin pueden usarse como partes de los programas que realizan
algoritmos ms complicados (de ms alto nivel algortmico). Uno de los
ejemplos de esta clase de aplicaciones es el control ptimo, donde todo
el procedimiento de simulacin de un proceso es slo una parte del
algoritmo. Algoritmos de este tipo ya fueron mencionados en el captulo 7, como uno de los mtodos de optimizacin en mercadotecnia. Trataremos de describir un ejemplo ms sin entrar demasiado en la teora
de control ptimo.

8.2

Planteamiento del problema


Consideremos un proceso dinmico, 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 lucin. el problema de control ptimo es mucho


ms difcil 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 clculo variacional. Los mtodos para el
caso de control ptimo con restricciones fueron desarrollados por
Pontriagint""l (el Principio de Mximum) y Bellman (la Programacin
Dinmica). Vamos a describir de una manera informal el Principio de
Mximum de Pontriagin. que parece ser el mtodo ms aplicado. Primero tenemos que establecer !as ecuaciones de movimiento para el
vector de estado del sistema. esto es . encontrar un modelo de la dinmica del sistema. Tambin 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 in1ensin que el de modelo originz:I. Ahora podemos defin ir . para G lda rnomento de tiempo del modeio. una funcin 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 optimizacin. Esta funcin se llama Hamiltoniano o la funcin de Hamilton. El Principio de \<1ximum 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. ms fcil de r esolver.
Del Pr i ncip io de \lximurn 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 asncrono , el criterio puede ser "alcanzar la velocidad deseada con la mayor rapidez posible, sin sobrecar gar la red
de alimentacin". En el caso de un avin experimental se puede buscar
la solucin con el criterio "diseiiar la trayectoria de vuelo alrededor del
mundo con el gasto mnimo de combustible sin aterrizar y sin volar
sobre algunos pases". En la industria casi cada proceso tiene uno o ms
criterios de comportamiento ptimo. Si el control que aplicamos al proceso realiza el criterio. llamaremos a ste "control ptimo" . Matemticamente. la forma ms tpica 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
funcin integrable. Se trata de encontrar tal control u(t) par~ que el
valor correspondiente de x,, sea mnimo (o mximo). Por ejemplo. si
tratamos de minimizar la energa total consumida por el proceso. la
funcin
debe representar la potencia instantnea. 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

minimizar x , =

J [x (t) -x(t)]' dt
1

{I

que minimiza el error cuadrtico.


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 tambin para el de
estado.

S.:3

Control ptimo y simulacin

Algoritmos de control ptimo


Rara vez podt>rnos calcular el control ptimo u(t) analticamente. En la
prctica las ecuaciones de movimiento son de un orden demasiado elevado para obtent>r soluciones en la forma de frmul as mat emticas. Aun

Para resol,:er el problema planteado en es te ca ptulo aplicando e! Principio de \1 ximum hay que resolver primero dos problemas de modelacin y sim ulacin: !a simulacin del sistema originai y el problema
similar pa ra el sistema conjugad o. La situacin ms comn 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 tecnolgi co durante
una hora con el gasto mnimo de energ a sin salir de un rgimen 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<i icion es
iniciales. Para calcular y maximizar el Hami lt oniano necesitamos. sin
embargo . ca lcular ta:nb:n ia trayectoria p(tl del modelo conjugado.
...\hor a apa r ece una diflcu ltad: no conocernos las condiciones inicial es
para p (l) . Del Princ ipio de i\lximum slo resultan la s condiciones
finales para p ( llamadas condiciones de transversalidad). En consecuencia. no podemos corr'r los dos modelos (origi nal y conjugado)
paso po r paso en paralelo. maximi z:rncio el Hami!ton ian o en cada paso.

1711

El uso de simulacin 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. Despus de
correr una simulacin con este control guardando los x(t), podemos
correr el otro modelo, empezando con el estado final de p(T) y yendo
atrs en el tiempo del modelo. Si ya tenemos los valores de x y p
calculados para cada t, podemos ver cmo cambiar ei control con el fin
de maximizar el Hamiltoniano. Esta "direccin de bsqueda" en el espacio de controles est relacionada al "gradiente de Hamiltoniano".
Ahora corregimos el control segn la direccin de la bsqueda 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 solucin deseada.
Hace notar que este algoritmo contiene entre sus operaciones corridas mltiples de dos modelos. de simulacin. 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
ms alto que el de la simulacin. La simulacin de los modelos involucrados se ejecuta muchas veces y est controlada por el algoritmo del
nivel ms alto.

mico tiene el estado x = ('(.a, e. h). la variable de entrada es u y el modelo matemtico incluye las ecuaciones (1) y (2). El procedimiento de
integracin 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 captulo 5. El procedimiento TRAZA! no se muestra en el
listado y sirve slo para graficar los resultados, esto es, la altura X[ 4] y
el control U. Esto es slo el programa de simulacin, en donde la dinmica 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 cuadrtico, 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 pgina siguiente figura 8.1), a es


el ngulo de lanzamiento. r = d8/dty u es el control (la posicin angular
de las aletas). Simplificamos el modelo suponiendo que la velocidad V
del avin es constante. El control u est limitado con la condicin ut: [u'"""
u..,,,,] . La suposicin V= const implica que la altura obedece la ecuacin

dh/dt

(2)

V sen(8 - a.)

La figura 8.2 (ver pgina 179) muestra cmo reacciona el avin a un


cambio en control que es. en este caso. un impulso "rectangular". ste
es e! resultado de una corrida de simulacin. 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 funcin dada. por ejemplo la trayectoria deseada de ascenso. En otras palabras, el control ptimo tiene que
minimizar el criterio x0 dado por la frmula (3).

Consideremos el modelo de la dinmica de vuelo de un avin limitndose al plano vertical , esto es, considerando solamente los cambios de
la altura. Vamos a usar el siguiente modelo dinmico1 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)

be u(t)

a'C,! x.,(t)

(El control}
f ,=X 1(t)

BE GI~

I F ( T>0.99) AND (T<l.21) THEN


~:=-1.0 ELSE U:=O.O END;

f,= V sen [x,(t) - x,(!)]

2ROCEDURE RHS(N:INTEGER; VAR X,D:VECTOR;


T:REAL);
3

D
D

:=A2l*X[l ] TA22*X [ 2J+B2*U (T ) ;

Con esta notacin todo el modelo matem<tico de la dinmic;:i cte!


sistema puede ser escrito como sigue

:=All*X [ l J +Al2*X~2J+Bl*U ( T ) ;

:=X [ l];

:=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 funcin vector ial

r= u;,. ..... t).


Para aplicar el Principio de :V1ximum a este modelo. hay que definir el modelo conjugado. cuyo estado es p = (p 1...... p .) . y cuyas ecuaciones se derivan de la ecuacin 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 simulacin en algoritmos


n

dp,/dt

= -

a1;

aF0

ox,

ax,

--pi+--

j =1

determinada. se necesitan tambin algunas corridas de la simulacin


del sistema original, ya que para calcular el valor del criterio, necesitamos calcular toda una trayectoria de movimiento.
La figura 8.3 muestra las grficas de las trayectorias calculadas en
unos primeros pasos del algoritmo. Se puede observar cmo el algoritmo
busca la solucin ptima, acercndose a la trayectoria deseada. En la figura 8.4 (ver pgina siguiente) se muestran algunos pasos posteriores. cuando
el algoritmo corrige la trayectoria que ya sigue ms bien a la deseada.

(5)

La funcin de Hamilton para este problema es


n

H = - [x,(t)-g(t)]2+

P, f,

181

(6)

j : l

Segn el Principio de Mximun: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 bsqueda de
mximum de H con respecto a u, con la restriccin umn < u < umu El
gradiente del Hamiltoniano est dado por

_::-

n.

~=''
"" ~
l

.::

grad H = oH/dU

P, ar,;au

(7)

P1 bl +Pi b,

j= 1

Segn este gradiente de H se puede cambiar u en cada iteracin 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, segn ecuacin (4).
Calcular la trayectoria p(t) segn la ecuacin (5) yendo
atrs en el tiempo del modelo.
Calcular el Hamiltoniano H y el gr ad H para todo t [O. 71.
segn (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 versin simplificada que usa el mtodo de gradientes para


maximizar el Hamiltoniano. El proceso iterativo se puede parar segn un
criterio de paro. por ejemplo cuando ya no se observa ningn mejoramiento del criterio de controlx0 Observemos que cada uno de los pasos
2 y 3 contiene una corrida de un modelo de simulacin. y todo el algoritmo requiere muchas corridas de los dos modelos dinmicos. Adems. 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 direccin actual de bsqueda. Pero para minimizar el criterio yendo en la direccin

. ---"

Tiempo

Figura 8.3.

8.6

Conclusiones
El algoritmo de control ptimo descrito anteriormente es un ejemplo
ms de las aplicaciones de simulacin de sistemas dinmicos. Se puede observar que un buen modelo de simulacin 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 optimizacin y no bajo e! control del usuario. como ocurre en las aplicaciones ms comunes de simulacin. Por eso. el modelo tiene que ser
preparado como un procedimiento que no tiene ninguna operacin de
entrada-salida y su cdigo tiene que ser optimizado con respecto al
tiempo de ejecucin. Aplicaciones de simulacin como sta fueron .

'2

El us o de simulacin en aigoritmos

CAP,.fULO 9
--

Simulacin de SIDA

----

y del sistema
inn1unolgico
hu111ano

Control

del gra<:!e_n~e - - - - - - - -~ - - ~~V~ 1- cero


- - - - - - ___-;~ p.

N.
,

--------~------

-i1

E! gradiente

Ti empo

L~~~~~~~~~~~~~Figura 8.4.

hace pocos aos . demasiado lentas para ser usadas en el control de


procesos en tiempo real. Recientemente, esta restriccin es cada vez
menos significativa. por los avances de la tecnologa de computacin .
La aplicacin de microprocesador es muy rpidos y sistemas paralelos
de cmputo hace posible las aplicaciones de este tipo aun para los procesos que por su naturaleza son muy rpidos '"' 1

9.1

Simulacin de la pI'opagadn 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 propagacin y los m ecanism o s del SIDA l Snd rome
de Inmunodeficiencia Adquirida) es actualmente uno de los prob lemas
ms importantes . La simulacin se aplic en muchas ocas iones en la
investigacin 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 acin, para pronosticar el desarrollo de la enermedad . El m todo toma
en cuenta el hecho de que la poblacin en la cual se desarrolla la epidemia est limitada. Esto significa que e! crecimiento exponencial de l
nmero 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 saturacin . siendo una curva de tipo " sigmoidai~. Es t as curva s
p ue den ser calc ul adas basndose en los d atos d e la fase in ici al de!
proceso que se modela. En modelos de este tipo los ms im portantes
son los datos disponibles y las posibles fl uc tuacio nes al eator i as de los
parmetros 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 -pronst:co

.~_.j.;..f11.:;- ~{.:,i_

[1'4

Simulacin de SIDA

promedio" habla sobre 1.000,000 de casos, pero este nmero oscila entre
100,000 y 10,000,000 de un pronstico 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 ms recientes y los ms confiables que se
pueden conseguir sobre la enfermedad. Los datos del Reporte vienen en
la forma desglosada entre 12 categoras o "clases del comportamiento
sexual" que incluyen 7 diferentes categoras de homosexuales, 5 categoras de bisexuales (hombres y mujeres) y 11 categoras sobre !a
manera de transmisin (homosexuales. drogadictos y otros, hombres,
mujeres y nios).
Segn Goforth. el modelo para la propagacin del SIDA, as como de
todas las dems enfermedades venreas ("sexuallytransmitted disease",
STD) depende de los siguientes parmetros:
l.

2.
3.

r-!:l!'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.......;,._;d

"'

"'
..o

"'o

UJ

t-

()

;=

UJ

u.

!i

La tasa de disminucin del nmero de afectados. sta es la tasa de


mortalidad, ya que hasta el momento no se encontr ningn remedio para la enfermedad.
La tasa de cambios de la pareja. ste es el nmero de nuevos contactos por persona y por ao.
El riesgo (probabilidad) de la transmisin de la enfermedad a una
nueva pareja.

Adems de estos factores. en el caso del SIDA hay que tomar en cuenta
una posible transmisin entre los drogadictos.
El modelo de Goforth simula la trayectoria del crecimiento de la
epidemia en el espacio de dimensin 12, segn las 12 categoras 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 dimensin 12 por 12. La simulacin se lleva a cabo con la suposicin del carcter "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 sucesin de eventos, como se
consideraba en los captulos anteriores. Sin embargo, el programa
que se desarrolla basndose en las curvas sigmoidales parece reflejar
bien la realidad . Los resultados son bastante alarmantes. Como muestra la figura 9.1. se espera en la dcada de los noventa, alrededor de l4
millones de casos (en los EE.UU.), y, para el ao 2000, el nmero total de
muertes va a ascender a 25,000,000.
La Sociedad de Simulacin por Computadora dedic todo un nmero de su boletn "Simulation" a la simulacin de la propagacin del
SIDA (Simulation. Vol.54. nm. 1, Enero 1990). D.J. Ahlgren y AC. Stein
publican (en el mismo nmero de Simulation) un artculo sobre la dinmica de la enfermedad. En el mtodo que se presenta se pone ms
atencin en los siguientes problemas:

"'

>_J
$:

UJ

;z

...
o
(.)

o
e::
:::l

"'..o
8
"'

en

"'
<{

a
o

UJ

t-

oUJ

u.

Vi

v
-o
~
~

-o

a.
V

~
V

-o

"'

-o

en

:::e:

"'
~
i-=.,.

<(

UJ

<O

"'

t-

"'

;;

"'

-"' - -.,. -"' <O

"'

<O

.,.

"'

v
"'

1
o
'-'

;:"'

a:.....;

e;

~
:;::

Simulacin de la propagacin del SIDA


ll:Si1

187

Simulacin de SIDA

l.

El desarrollo de la descripcin determinstica o estocstica de la

2.

seleccin de la pareja.
Caracterstica de los cambios en el comportamiento de las perso-

3.

nas susceptibles.
Variaciones en la probabilidad de la transmisin del virus en distintas etapas de la infeccin.

Ahlgren y Stein buscan la descripcin de la dinmica de Ja epidemia en


la forma de un sistema de ecuaciones diferenciales. Se definen 26 variables de estado del modelo de la transmisin de la enfermedad y ms de
50 variables y parmetros 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 dinmica del modelo se describe con un
nmero de ecuaciones diferenciales, las cuales se introducen en el paquete de simulacin STELLA, mencionado en el capitulo 7. STELLA permite editar la estructura del modelo en la forma grfica (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 ms en
la determinacin de la influencia de unas medidas y cambios en el
comportamiento de la sociedad que en el nmero de nuevos casos. As,
por ejemplo. se ha mostrado que la estrategia ilamada SL++ que consiste en incremento en el nmero de lugares en los centros de tratamiento a corto y largo plazo reduce considerablemente el nmero de casos
(la duplicacin de estos lugares puede reducir por 10% el nmero acumulativo de nuevos casos hasta el ao 2004). La poltica 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 nmero. Los experimentos de Ahlgren y
Stein consisten en averiguar la influencia de muchas estrategias distintas y representan una fuente de informacin valiosa para las autoridades correspondientes en su lucha con la epidemia.
Virkkunen y Hamalainen (Helsinki University oi Technology, Finlandia), publican en el mismo nmero deSimulation (Vol.5, nm.l, 1990]
otro mtodo de simulacin del SIDA. El objetivo principal de su trabajo
es averiguar el efecto de saturacin en la curva de crecimiento de nuevos casos en una poblacin finita. Hasta el momento los datos alcanzables muestran que esta curva sigue siendo exponencial duplicando el
nmero de casos (acumulativo) cada ao_ En el modelo de Virkkunen y
Hamalfnen la parte inicial de esta curva es tambin exponencial, con
periodo de duplicacin (casos nuevos) de 1.5 aos. Ya que los datos reales no muestran nin~JUna saturacin. la simulacin puede proporcionar
una informacin importante sobre los pronsticos a largo plazo.
El parmetro ms importante del modelo de Virkkunen y Hmalainen es la probabilidad de la transmisin de la enfermedad. Se investiga
cmo esta probabilidad depende de! nmero de cambios de pareja du-

rante un ao. Otro parmetro importante es el periodo de incubacin


del v:rus, que tambin es una variable aleatoria. Se adapt para esta
variable la distribucin de tipo Gamma con promedio de 5.6 aos y
desviacin estndar de 2. 71 aos, aunque los autores admiten que la
distribucin es incierta y depende de la persona infectada y de muchos
ms factores. Basndose en ~tas y otras suposiciones , Virkkunen y
Hamalainen simulan el desarroilo de la epidemia dentro de una poblacin limitada. El objetivo de estos experimentos es investigar el fenmeno de saturacin, esto es, averiguar hasta qu momento la curva de
crecimiento para el nmero de casos tiene carcter exponencial. Se
investig la epidemia sobre el intervalo de 25 aos con la condicin
inicial! (un enfermo). El experimento con la poblacin de 2 millones de
personas mostr que la saturacin no se alcanz en este periodo. Dentro de una poblacin reducida a 200,000 personas la curva de crecimiento deja de ser exponencial despus de 15 aos. y para la poblacin
de 2000 personas dentro de 9 aos. As, los resultados no son muy optimistas y muestran que en el futuro prximo no podemos esperar
ninguna baja significativa en la tasa de crecimiento de la enfermedad.
Milan Kotva y B. Zdenkova presentan. en e! mismo nmero de Simulaton, otro modelo del desarrollo del SIDA, suponiendo que el periodo entre el momento de contagio y la primera manifestacin de la
enfermedad tiene la distribucin de Weibull. El objetivo de este trabajo
es calcular el nmero posible de personas contagiadas con el virus del
SIDA (HIV) que no muestran ningunos sntomas. Esta inormacin es
importante en la planificacin de las estrategias preventivas.
Los modelos mencionados aqu representan slo unos ejemplos de
la inmensa investigacin que se lleva a cabo en el campo de la simulacin del SIDA. Hasta el momento la investigacin est todava en su etapa inicial y sus resultados se verificarn en un periodo de 10 a 15 aos.
Viendo el enfoque de los mtodos de modelacin hay que observar
que casi todos los autores buscan una descripcin matemtica 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 slo a la simula~
cin de la epidemia del SIDA y del sistema inmunolgico, sino tambin
a la simulacin de cualquier sistema complejo.
Primero, para describir un fenmeno 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 mayora de los autores olvid el hecho que antes de
buscar una ecuacin que describa un fenmeno real, hay que mostrar
que la ecuacin existe. La suposicin de que la trayectoria del sistema
est descrita por una ecuacin diferencial ordinaria implica que el sistema no tiene ninguna otra memoria que la que resulta del modelo
matemtico. Si el modelo incluye. por ejemplo. 50 ecuaciones diferen-

Modelos y simulacin del sistema inmunolgico


188

189

Simulacin de SIDA

ciales ordinarias de orden uno, el vector de estado tiene dimensin 50


y representa toda la "memoria" del sistema. En el caso de la propagacin de una enfermedad tan compleja como el SIDA una simplificacin de este tipo es imposible.
Por otro lado, la simulacin, hasta el momento, es la nica informacin alcanzable sobre la posible dinmica de la enfermedad y no
podemos darnos el lujo de rechazarla. Otra posibilidad de simular fenmenos complejos es usar modelos de tipo "comportamental" (behavioral). que significa aplicacin de mtodos de simulacin y lenguajes
orientados a objetos (Simula, Pasin , Smalltalk, vea captulo 5) . Modelos de este tipo simulan el comportamiento de los componentes del
modelo sin usar modelos matemticos. En la siguiente seccin se descr ibe un ejemplo d e la simulacin orientada a objetos , aplicad<i a un
modelo del sistema inmunolgico.

9.2
9.2.1.

Modelos y simulacin del sistema inmunolgico


Introduccin
La intensa investigacin que se lleva a cabo recientemente permite
entender cada vez ms, los principales mecanismos del sistema inmunolgico humano (SIH). El problema de modelacin y simulacin del
SIH resulta ser mucho ms difcil de lo que se pensaba hace unos aos.
En la opinin de muchos especialistas , SIH es uno de los ms complejos
y sofisticados sistemas del cuerpo humano, quizs el segundo en complejidad despus del sistema nervioso central. El conocimiento de los
mecanismos bsicos del sistema nos permite construir los primeros
modelos todava muy simplificados y llevar a cabo interesantes experimentos simulacionales.
La simulacin del S!H puede ser til para explorar sus propiedades
dinmicas. El aspecto didctico tambin es importante. Modelos simulacionales pueden usarse en la enseanza de la inmunologa y en la
divulgacin de los conocimientos bsicos en este campo.
Existe una inmensa literatura sobre la modelacin matemtica del
SIH. Unos modelos sencillos como. por ejemplo, el modelo de la tolerancia inmunolgica en los pollos (Hrabal 51), describen algunas respuestas del sistema. Bel\l51propone un modelo basndose en las llamadas ecuaciones "cazadorpresa". Muchos autores siguen los conceptos de
Jernel 5 ll y Richterl9 11 los cuales desarrollaron la "teora de redes" en la
inmunologa. Vamos a comentar los conceptos bsicos de esta teora
ms 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 clulas usando ecuaciones diferenciales parciales.
Perelson1~ 0 1 sugiere que el lenguaje de la teora de grficas puede ser til
cuando se analizan modelos de tipo "red" y proporciona como ejemplo
un sistema de ecuaciones que describen el comportamiento de anticuerpos, clulas "B" y antgenos . Una sugestin 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 artculo 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 coautoreslbI, por ejemplo, proporcionan 187 referencias
en su artculo. La lista de referencias del artculo de Boy er y coautoresl71 comprende 458 (cuatrocientas cincuenta y ocho) posicio nes.
Hoffman y coautoresl71 calculan que actuaimente se conocen ms que
1,000,000 de hechos (fenmenos , propiedades) en la ciencia de la inmunologa. Este nmero es el resultado de la multipiicacin del nmero de trabajos publicados cada ao (son alrededor de 8.000) por el
nmero de hechos que se describen en cada artculo, y por el periodo
de 25 aos del desarrollo de la inmunologa.
La mayora 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 macrfagos, clulas "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 clulas involucradas en el SIH, para los modelos en
cancerologa. Las ecuaciones tienen tres diferentes componentes de
retraso. Ecuaciones de este tipo pueden resolverse fcilmente. Sin
embargo, utilizando modelos tan sencillos no hay que olvidar que las
ecuaciones diferenciales de tipo "muertes y nacimientos " que se usan,
son vlidas 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 estocsticos involucrados. Una suposicin fundamental de la
ecuacin 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 ms las tres variables de retraso y las
variables de entrada determinan completamente el estado del sistema
en el momento. que parece ser una suposicin poco realista para el
SIH. Esta observacin hace todos los modelos del SIH basados en las
ecuaciones diferenciales poco confiables . Mi opinin personal es que
es poco probable que el SIH obedezca a cualquier ecuacin diferencial. en general.

Modelos y simulaci n del sistema inmunolgico

191

190 Simulacin de SIDA

9.2.2

9.2;3 Un modelo discreto del sistema inmunolgico y del SIDA

Teora de redes en la simulacin del sistema inmunolgico

Este enfoque en la inmunologa fue desarrollado por Jerne y Richter151. 91 1 y modificado posteriormente por muchos investigadores.
Consiste en la observacin 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 clula y desactivarla. El epitope es lo que caracteriza el tipo de clula y permite al
anticuerpo distinguir entre las propias clulas del organismo y las clulas o virus invasores. El sistema inmunolgico produce constante
mente los anticuerpos con trillones de paratopes distintos, que estn
listos para combatir cualquier infeccin. Uno de los conceptos bsicos
de la teora de redes es que los mismos anticuerpos tambin 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 nmero de anticuerpos con distintos paratopes. respondiendo as a los estmulos e infecciones exteriores. Los anticuerpos son producidos por clulas de
tipo "B" del SIH. Estas clulas, a su vez, se activan a travs de un sistema sofisticado de mensajes que llevan sustancias llamadas linfoquines.
Todo el mecanismo est controlado por las clulas auxiliares de tipo "H".
El virus del SIDA (el HIV) ataca exactamente a las clulas "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 bsico en la teora de redes consiste en el siguiente sistema de ecuaciones:

dx/dt=S-x,
j

=1

K,f1
(1)

en donde x, es el nmero de anticuerpos con i-smo 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
ecuacin (1) tiene muchas versiones. En algunos modelos la dimensin del sistema es tambin variable. Ya que la dimensin N es muy
grande y el sistema tiene muchas interacciones internas. es poco probable que la solucin 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 mtodo de simulacin de eventos en


lugar de la simulacin continua. La idea es simular los eventos ms importantes que ocurren en la vida de cada clula del SIH. Desde el punto
de vista de la prctica, esto parece ser imposible, tomando en cuenta el
nmero de objetos (clulas) 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
prximo simulaciones similares se real izarn fcilmente con millones
de objetos. Segundo, para averiguar el comportamiento de poblaciones grandes. no es necesario generar conjuntos de objetos del mismo
tamao que tiene el sistema real. Adems, simulando un objeto con
eventos discretos, no tenemos ningunas restricciones con respecto a
su comportamiento estocstico. 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 bucin, que permite simular poblaciones que no
cumplen con las condiciones de la ecuacin de muertes y nacimientos . Por eso la simulacin discreta y orientada a objetos puede ser ms
flexible que la simulacin continua que usa ecuaciones diferenciales.
Otro aspecto que dis.tingue la simulacin orientada a objetos de la
simulacin continua es que en los modelos continuos se evalan trayectorias promedio para el nmero de clulas 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 simulacin orientada a objetos da como resultado una o
ms posibles trayectorias del sistema y permite sacar cualquier tipo de
estadsticas. El costo de la simulacin orientada a objetos es , desde luego, ms alto que el costo de la simulacin 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 ms parece un "j uego inmunolgico". Para realizar un modelo ms 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

1Wacrfagos. Estas clulas del SIH son los primeros defensores. Con-

sumen todo lo que reconocen como una materia extraa al organismo. Tambin pueden activar otros mecanismos defensivos, activando las clulas auxiliares de tipo "r.
Clulas auxiliares "T'". Estas clulas. c uando se activan, empiezan a
reproducirse ms rpido. Cuando un macrfago entra en contacto
con una clula "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 clu las del SIH.

;.i;;!-;-,.;:~;;;.i1:::-">;~,.-..;;-~'(>~.-6':... -:.\"'.' ;_'~~: ~ '

,...~( - '

;>/t.~ :-

":-Z;;;...~~~- :

i.--~

/._'<:

;1~0e:':<-~

)2

Simulacin de SIDA

Modelos y simuiacin del sistema inmunolgico 193

Clulas cazadoras de tipo "T" (Killer "T" Cells). Pueden reconocer y


matar a las clulas del propio organismo infectadas por virus, rompiendo as el ciclo de reproduccin del virus.
Clulas"B". Estas clulas producen anticuerpos. La superficie de
cada clula B est cubierta por millones de anticuerpos, que pueden ser liberados cuando la clula se activa recibiendo al BCGF. El
BCGF estimula tambin la ms rpida reproduccin de las clulas "B".
Anticuerpos. Son molculas producidas por las clulas "B", capaces
de reconocer y desactivar diversos tipos de virus.
Clulas supresoras "T". Estas clulas desactivan o disminuyen la rapidez de los mecanismos defensivos del SIH, cuando la infeccin
ha sido combatida.
El timo. Es el rgano que produce las nuevas clulas "T" y las libera
al sistema de circulacin sangunea.
El virus. Es uno de los invasores que entran en la sangre. Para
multiplicarse, tiene que entrar a una clula del organismo, donde
se multiplica rpidamente.
las reglas de interaccin: Al entrar en la sangre el virus busca a una
clula del organismo para infectarla y reproducirse dentro de ella.
Algunos virus son devorados por macrfagos, pero una gran parte
logra entrar a las clulas del organismo y reproducirse. Las clulas
infectadas mueren soltando miles de nuevos virus listos para infectar a otras clulas. Los macrfagos que devoraron al virus muestran su "antigen" (una identificacin de la materia extraa) en su
superficie. Cuando el macrfago entra en contacto con una clula
"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 clulas "B". Las clulas "B" producen anticuerpos,
que desactivan al virus.

ste es un modelo muy simplificado , donde no se modela todo el mecanismo descrito por la teora de redes mencionada anteriormente.
El modelo para la infeccin por el virus del SIDA es similar. La nica diferencia consiste en el hecho de que el virus HIV entra a estas clulas "T" para multiplicarse. La disminucin en el nmero de estas
clulas 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 Cmputo de la Universidad
Panamericana en Mxico, se aplic el lenguaje PASlON. _El listado 14
muestra la forma general (un bosquejo) del programa. Slo se muestran los nombres de los procesos y eventos.
El proceso lNGEN genera conjuntos ini;:iales de las clulas . Elevento GENER tiene algunos ciclos que generan un nmero de clulas T. B,
macrfagos. etc.. as como un nmero de "clulas de cuerpoft generalizadas (body cells). El proceso VRGE controla la generacin del virus

que infecta al organismo. Los objetos BOD son las clulas del cuerpo. El
evento MULTIP describe la multiplicacin de las clulas del cuerpo, y el
evento DIE.Ses la muerte de la clula. Evento REL representa la muerte de
una clula infectada, donde aparecen nuevos virus. Proceso HTC representa clulas auxiliares "T". Eventos RELIL2 y RELBCGF describen
la produccin de los linfoquines IL-1, IL-2 y BCGF. El proceso KTC
describe las clulas cazadoras ''T".
El proceso lLTEM es un proceso continuo que controla los cambios
en la temperatura del cuerpo y la descomposicin de los linfoqunes.
El proceso MACROF describe las actividades de un macrfago. El
evento EATS ocurre cuando el macrfago encuentra a un virus y lo come. Despus, el macrfago busca y entra en contacto con una clula
"T" (evento UNION). De esta manera se activan las clulas "T". que
empiezan a producir los linfoquines para activar las clulas "B". Las
clulas "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 clulas supresoras T. THYMUS es
un generador de nuevas clulas de tipo "T".
El programa completo del modelo es bastante largo y no semostrar aqu. El programa necesita alrededor de 50 parmetros, tales
como la duracin promedio de la vida (natural) para las clulas. probabilidades del contacto entre las clulas y el virus, etc. Algunos de los
parmetros se pueden encontrar en la iiteratura, y algunos son bastante difciles para definir. La identificacin de los parmetros para
modelos de este tipo es un problema difcil y muchos investigadores trabajan intensamente para resolverlo (Belll"' . Brunif 13 1, Covan y Cupin27 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 simulacin 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 ms reales que permitirn 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 clulas de cada tipo. no
ms de 2000 en total. No se efecturcn ningunas comparaciones cuantitativas con el sistema real. Las comparaciones cualitativas de respuesta simulada a la infeccin 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 mviles 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 inmunoli gic o

Sirnu l<.1 c iH1 de SIDA

texto contiene algunos resultados numricos. La figura 9.3 (v er pgina


siguiente) muestra la respuesta a una infeccin viral. Las trazas son
t rayectorias promedio calculadas con 30 corridas de l a sim ulacin,
trazadas contra el tiempo. En la figura 9.4 (ver pgina 197) podemos ver
un ejemplo del conjunto alcanzable (los valores mximos y mnimos
alcanzables) para el nmero de clulas 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 clulas
auxiliares "T". El nmero de clulas 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 ms de 40 trazas diferentes.
Adems 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 macrfagos y por los anticuerpos se model a travs d e comp aracin 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 tamao 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:

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 =

lnf.H =

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=

BCDF =

0 .001

EANT=

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<er spacing: 10 time-steps


Reachable set and av ' raga trajectory lar Helper T

.,"

<C

....

H,

~~

IJ
h

'

,...

IJ

11' /

V
)

'-

'

\
\

l/

' v

Maxirnum =

Figura 9.4.

5.0689

Minirnum =

0 . 0000

time -1

Modelos y simulaciin del sis tema inmuno lgico

19'!

modelos de este tipo usando declaraciones preparadas ameriorrnente. Adems . el programa fuente en PASION es "portable" en el sentido de
que produce el cdigo correspondiente en Pascal, que puede ser compilado con un compilador de Pascal en cualquier mquina.

1'
Q)

o
o
o

L~

>-

O;
"-

2
"'
<':i

>

-~

"~>

ss

ss
\

Q)

L_

e:""'
ou
-e
e

"'

t.n
a;:

2:'0

::i

Q)

Ol

'a;

>

<{

ff/ff

"'>

"' "' Cl
:;

>

<

~~

e~
u
ill
c

:g"'
c
o
u

'

r1
::;:

..

::;
.s

""

::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 dinmicos", Revista de
computacin 010, 7(4), Septiembre 1984 Fundacin Arturo Rosenblueth,
Mxico.
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 ecuations 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 parta! 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.. Simulacin. Un enfoque prctico, 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: Proceedngs 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.."Anlisis de sistemas dinmicos y control uutomtico", 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 Simulaton 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 Diferential 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.\fIA.TlON .t3(3), September 1984. pp.133-136.

24 Conte S.D .. de Boor C.. Anlisis Numrico 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-<limensional network", in: Theoretical Jmmunology, Segunda Parte,
Addison-Wesley, 1988.

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., "Simulacin digital de sistemas: una introduccin", Revista de computacion OIO. 7(4), Septiembre 1984, Fundacin
Arturo Rosenblueth, Mxico.
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., "Anatoma de un compilador para simulacin dinmica", Revista de Computacin 010, 7(-t). Septiembre 1984. Fundacin
Arturo Rosenblueth. :\lxico.

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. Tcnicas de Simulacin
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.. Ingeniera 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 Desgned Simulation and Dstribution 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 Introduccin",
ComputerWorlcl/ Mxico. 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.

*Cmo usar Microsoft Works


Bridges

-oOo-

J-

i,

* Introduccin a la Programacin
de Visual Basic
Brown
1

* Introduccin a la Informtica
Fournier

,1

'

* DS 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 EDICIN CONSTA DE 3,000 EJEMPLARES
Y SOBRANTES PARA REPOSICIN

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

~
~

* Secretos de Windows 3J
Livingston

* Cmo usar Fox Pro 2


Siegel

* Cmo usar Excel 4 para Windows


Townsend

r:1

S-ar putea să vă placă și