You are on page 1of 62

UNIVERSIDAD AUTONOMA NETROPOLITANA-IZTAPALAPA

128272

PROYECTO DE INVESTIGACION II

CONPILADOR PARA UN LENGUAJE DE SIMILACION REPORTE

FINAL

A.1umnos :

/ Ortega

Bonequi Mauricio

Sinz Bravo ubn Alfonso Asesor: Pedro Luis Flores

Octubre de 1991. /

PRESENTACI6N DEL PROYECTO

128272

Debido

a la gran importancia que han adquirido las

,computadoras tipo PC en nuestros tiempos, surge tambin la necesidad de crear aplicaciones para una gran variedad de temas, tal es el caso de la dinmica de sistemas.

Para real i a aplicaciones de dinmica de sistemas contamos zr


con un compilador llamado dynamo cuya principal desventaja radica en que est diseado para computadores grandes, adems de contar con un medio ambiente no muy agradable para el usuario.

El presente reporte corresponde a l realizacin de un a


compilador para dinmica de sistemas diseado para usuarios de PC, cuenta con las funciones principales que se realizan en un modelo de simulacin, adems de tener la facilidad de trabajar en su propio editor de textos y mediante un medio ambiente a base de menus. De esta manera se puede elegir entre varias opciones: Cargar archivo Guardar archivo Editar archivo Desplegar directorio Cambiar directorio Renombrar archivo Compilar Ejecutar Llamar al S.O. Terminar

Al ejecutar un modelo se obtiene una salida grfica-tabular,


sta se depliega a pantalla en ventanas separadas correspondiendo

a cada variable graficada a una variable tabulada, de t l forma que para cada grfica se puede obtener sus correspondientes puntos. Dentro de la ventana en salida tabular se tiene la facilidad de desplazarse pginas arriba y abajo de tal manera que se logra ver todos los puntos asociados
8

una grfica.

DINMICA DE SISTEMAS

La dinmica de sistemas no es sino una metodologa para construccin de modelos de sistemas sociales, considerando en sta clase a sistemas socioeconmicos, sociolgicos y psicolgicos, pudiendo aplicar tambin sus tcnicas a sistemas ecolgicos. Su desarrollo se inserta en el intento de establecer tcnicas que permitan expresar en un lenguaje formalizado -el de

las

matemticas- los modelos verbales

(mentales) de los sistemas

sociales. La dinmica de sistemas se basa en l teora de los a servomecanismos que son ingenios cuya caracteristica fundamental es
la existencia

en

los

mismos

de

una

realimentacin de

informacin. Se entiende por realimentacin el proceso en virtud del cual, cuando se acta sobre un determinado sistema, se obtiene (realimenta) continuamente informacin sobre los

resultados de las decisiones tomadas, informacin que servir para tomar las decisiones sucesivas. La teora de los servomecanismos tiene dos caracteristicas particularmente interesantes: el estudio sistemtico del concepto de realimentacin y un amplio desarrollo del estudio del comportamiento dinmico de los sistemas, en el

cual se encuentra el grmen de la nocin de sistema dinmico. Las ideas desarrolladas inicialmente para el estudio de los servomecanismos se aplicaron inmediatamente a otro tipo de

problemas como por ejemplo la regulacin de los procesos qumicos. Posteriormente la fecundidad de las ideas de realimentacin y de
l sistemas dinmicos indujo a intentar su generalizacin a estudio

de procesos socioecon6micos ya que todas las organizaciones

- 4 -

sociales o econmicas, muestran un comportamiento dinmico y una fuerte interaccin entre sus partes. Debemos tener en cuenta que la teora de sistemas tal como se encuentra desarrollada en
l actualidad suministra un a
til

analtico suficientemente elaborado para

el

estudio

de

los

sistemas lineales. Sin embargo, en el estudio de los sistemas socioeconmicos debe tenerse especialmente en cuenta la presencia de no linealidades que determinan, en gran medida, las formas de comportamiento observadas en l realidad. La consideracin de stas a

no linealidades impide, normalmente, una resolucin analtica del


modelo, es entonces cuando surge la necesidad de recurrir a un computador.

El especialista en ciencias sociales rara vez ser capaz de


descomponer su sistema en partes ni de experimentar con los componentes independientemente, pero ste especialista puede, por otra parte, emplear un procedimiento que, aunque de aparente categora inferior, constituye una alternativa posible; consiste en disponer de una lista de interacciones hipotticas entre las variables del sistema e intentar dar validez a stas relaciones con ayuda de datos tomados del sistema real. Basandose en stas
a relaciones se construyen modelos que reciben l denominacin de

modelos de simulacin.

El disponer de un modelo de un sistema social permite


realizar experiencias sobre el mismo. La posibilidad de stas experiencias sobre el modelo da lugar a un trabajo similar a l trabajo de laboratorio.
As,

por ejemplo se puede estudiar el

- 5 -

comportamiento del sistema bajo circunstancias que raramente se den en la practica. Con ello se tienen respuestas rpidas y baratas a cuestiones que, de ser experimentadas en la vida real, requeriran un enorme costo de dinero y de tiempo. En lugar de emplearse en las experiencias la realidad misma, se emplea un modelo de ella. Se observa el comportamiento del modelo y se realizan experimentos mediante los que se responde a cuestiones especficas acerca del sistema real que se ha

representado por el modelo. El proceso mediante el cual se realizan experiencias sobre el modelo, y no sobre la realidad, recibe la denominacin genrica de simulacin. Se puede considerar que' hay dos puntos de vista radicalmente opuestos en relacin al problema del establecimiento de modelos matemticos de sistemas sociales. El primero est sustentado por especialistas que pretenden construir el modelo de un sistema social partir, fundamentalmente, del procesamiento de datos

"histricos" de evolucin del mismo. Es un punto de vista que, en cierta manera, se puede considerar conductista, porque no trata de establecer la estructura interna del sistema, sino nicamente ajustar un modelo a los datos reales que se conocen. A ste enfoque pertenece la econometra. Otro punto de vista es aqul segn el cual se trata de construir un modelo tras un anlisis cuidadoso y detenido de los distintos elementos que intervienen en el sistema observado. De ste anlisis cuidadoso se extrae la lgica interna del modelo, y
a partir de la estructura a construida se intenta un ajuste con s

- 6 -

los datos histricos. La dinmica de sistemas pertenece a sta segunda escuela, a


la que, en cierta forma, cabe considerar estructuralista.

La dinmica de sistemas es una versin especializada, ligada


a Jay U.

Forrester. La tcnica de Forrester establece una

estructura para el modelo de fcil caracterizacin grfica. Para obtener los valores mas probables tomados por un suceso futuro normalmente se emplean mtodos estadisticos, pero para comprender

la respuesta del sistema a un conjunto de condiciones futuras es


preferible el empleo de la dinmica de sistemas. Asimismo, los mtodos estadsticos son tiles en estudios a corto plazo, mientras que los modelos que suministra la dinmica de sistemas tienen inters para la previsin de las tendencias a largo plazo. La caracteristica esencial de los sistemas sociales, reside en la consideracin de que en el interior de los mismos se generan
las fuerzas que determinan su evolucin en el tiempo, es decir, en

el interior de un sistema se realizan una serie de interacciones entre sus elementos constituyentes que generan el comportamiento dinmico del mismo. El estudio, anlisis e integracin de todas estas interacciones elementales para explicar en conjunto el comportamiento global del sistema, constituye uno de los objetivos bsicos de la dinmica de sistemas.
la caracteristica fundamental en el estudio de un sistema es

su evolucin en el tiempo y, en concreto, como las interacciones entre las partes determinan esta evolucin. El modelo del comportamiento dinmico de un sistema se

- 7 -

denomina sistema dinmico y se puede decir que ste en cuanto a modelo de una cierta parcela de la realidad, constituye un resumen abstracto de los datos observados en la misma. La? variaciones que se producen en los sistemas son

consecuencia, fundamentalmente, de las propias interacciones. Estas interacciones constituyen la estructura del sistema, de ah que se diga que bajo el punto de vista de la dinmica de sistemas, el comportamiento dinmico de un sistema est determinado por su estructura.

- 8 -

NETODOLOGIA DE PROGRANACION EN D I N M I C A DE S I S E N A S DIAGRANAS CAUSALES.

Entre establece un

los elementos que constituyen el bosquejo esquemtico de aquellos

sistema se que estn

relacionados entre s , lo cual se hace por medio de un diagrama en el cual los nombres de los distintos elementos estn unidos entre
s

por flechas. El diagrama que as se obtiene recibe las

denominaciones de diqgrama causal. El diagrama causal permite conocer la estructura de un sistema dinmico.Esta estructura viene dada por la especificacin de
las

variables

que

aparecen

en

el

mismo,

por

el

establecimiento de la existencia, o no existencia, de una relacin entre cada par de variables.

El diagrama causal no contiene informacin cuantitativa sobre


l naturaleza de a

las relaciones que

ligan a

los distintos

elementos, sino que solo suministra un bosquejo esquemtico de las relaciones de influencia causal. En un diagrama causal complejo se pueden distinguir bucles
1

realimentados. Un bucle realimentado es una cadena cerrada de relaciones causales, estos pueden ser bucles de realimentacin positiva (son aquellos en los que la variacin de un elemento se propaga a lo largo del bucle de manera que se refuerza la variacin inicial) o bucles de realimentacin negativa (son

aquellos en los que una variacin en un elemento se transmite a lo largo del bucle de manera que determine una variacin de signo contrario en el mismo elemento).

- 9 -

En

todo diagrama causal

coexisten normalmente bucles

de

realimentacin positiva con bucles de realimentacin negativa. Las interacciones entre ambos tipos de bucles determinan el

comportamiento global del sistema.

YO

El diagrama causal anterior indica que a mayor poblacin, menor comida per cpita y a menor comida per cpita menor tasa de nacimientos y a menor tasa de nacimientos menos nacimientos por
aiio

y a menos nacimientos por ao menos poblacin y a menos mayor comida


per

poblacin

cpita

(siempre

tendiendo

a l

equilibrio). Entonces suceder que en los estados iniciales del desarrollo de una poblacin el bucle que limita su crecimiento por agotamiento disminucin del de territorio disponible, y
l a

por

lo tanto un

por

comida

per

cpita,

tendr

efecto

practicamente nulo debido a que no se ha llegado a niveles de saturacin. En consecuencia, en sta primera etapa ser el bucle de crecimiento de poblacin el que dominar y se registrar un crecimiento de la misma tal como el indicado en la respectiva grafica del diagrama causal. Sin embargo, segn se vaya aumentando

la poblacin, se producirn problemas de agotamiento de recursos,


por lo que el bucle negativo empezar a dominar sobre el bucle
positivo, dando como resultado una tendencia a estancamiento en l el crecimiento, tal como se aprecia en la misma grfica. Observese que es la existencia de bucles de realimentacin lo que determina un comportamiento peculiar para cada sistema

dinmico.

11

DIAGRAMAS DE FORRESTER

Los distintos elementos que constituyen el diagrama causal se representan por medio de variables, las cuales se clasifican de acuerdo con los tres grupos siguientes: variables de nivel, varibles de flujo y variables auxiliares.

Para ayudar a comprender el significado de estas clases de


variables se puede concebir un smil hidrodinmico tal como el representado en la figura siguiente. En sta se representan tres depsitos con los que se acumulan tres niveles Las variaciones de
Ni,N2

y N3.

los niveles vienen determinadas por

las

actuaciones sobre unas ciertas \rlvulas que regulan los caudales que alimentan a cada uno de los depsitos. La decisin sobre l apertura de stas vlvulas se toma a teniendo como nica informacin los valores alcanzados por los niveles en cada uno de los depsitos en el instante de tiempo considerado. En la figura sto se representa con ayuda de un observador que teniendo como nica informacin el conocimiento de los niveles en el resto de los dep6sitos determina la apertura de
la vlvula correspondiente. Aunque en la figura solo aparece el

observador para una de

las vlvulas, debe considerarse que

existira uno por cada una de ellas. Se observa como el valor tomado por la variable de fl.ujo en cada instante depende,

exclusivamente, de los valores alcanzados por los niveles en dicho instante; de forma anloga, los valores alcanzados por los niveles dependen de los valores tomados por las variables de flujo que alimentan a dichos niveles.

- 1.2 -

I
I

I
I

J
\

Es inmediato ver que no se hace sino representar de forma


analgica, un sistema de ecuaciones diferenciales tal como: dNi/dt

F i

F2

dNz/dt = F4 dN~/dt
s i endo

F2

- F3

F i

fi(Ni,N2,N3) para i=1,2,3,4

Estas funciones fi pueden ser lineales o no lineales. La


o determinacin del valor tomado por una variable de flujo, p r

ejemplo F i , a partir de los niveles

Ni, N2

y N3 puede que sea

conveniente hacerla en distintas etapas, requiriendose para ello


o el establecimiento de unas variables auxiliares; p r ejemplo, la

funcin fi puede descomponerse en tres etapas, empleando dos variables auxiliares VAi y VA2 teniendose:

VAi = (pi(Ni,Nz)
VA2 = p(VAi, N3)

F = (p(A) i p3Vz
Observese que Fi = (pa((ppz(VAi,Ns) 1
=
(p:~((pz((pi(Ni,Nz),N3))

= fi.(Ni,Nz,N3)

Las variables auxiliares representan etapas intermedias en la


determinacin de los flujos a partir de los niveles y, en ltimo extremo pueden ser eliminadas.

E smil hidrodinmico de la figura se puede completar con la l

13

inclusin de variables exgenas, stas suministran infomacin adicional y exterior, que debe considerarse para decidir el valor que toman las variables de flujo Fi. Llamando E a una variable exgena.

F = fi(Ni,Nz,N3,E) i
El inters del simil hidrodinmico reside en mostrar que constituye una analoga de un sistema de ecuaciones diferenciales de primer orden y que, alternativamente, todo sistema de

ecuaciones diferenciales de primer orden puede representarse con ayuda de un smil de sta naturaleza. Empleando sta analoga, en dinmica de sistemas, las

variables que aparecen en un modelo se clasifican en variables de nivel, variables de flujo y variables auxiliares.
Los
NIVELES

representan

magnitudes

que

acumulan

los

resultados de acciones tomadas en el pasado. Es decir, el estado de un sistema se representa por medio de las variables de nivel. En los diagramas de Forrester los niveles se representan por medio de rectangulos. La variacin de un nivel tiene lugar por medio de variables de flujo.
A

cada nivel N se le puede asociar un flujo de entrada FE y

un flujo de salida FS; la ecuacin que representa la evolucin del nivel es la siguiente,

N(t) = N(O) + [(FE-FSldt que es lo mismo dN/dt = FE

- FS

14

Esta

ecuacin

se

puede

escribir,

de

forma

aproximada,

empleando el mtodo de ELER de Integracin numrica, N(t+ht) = N(td) + ht[FE(t)-FS(t)l Esta ltima forma de escribir la ecuacin de un nivel es la que se emplea comunmente en dinmica de sistemas.

15

sInBoLos

QUE APARECEN EN LOS DIAGRAXAS DE FORRESTER

Nube: Representa una fuente; puede interpretarse como un nivel que no tiene inters y es practicamente
i nag0tab1e.

a Nivel: Representa la acumulacin de un flujo; l

variable de estado. Flujo: Variacin de un nivel; representa un cambio en el estado del sistema. Canal de material: canal de transmisin de

una

magnitud fisica, que se conserva. Canal de informacin: Canal de transmisibn de una cierta informacin, que no es necesario que se conserve, Variable auxiliar: Una cantidad con un cierto

significado fsico en el mundo real y con un tiempo de respuesta instantneo. Constante: Un elemento del modelo que no cambia de valor. Retraso:

Un elemento que simula retrasos en

la

transmisin de informacin o de material. Variable Exgena: Variable cuya evolucin es

independiente de las del resto del sistema. Representa

una accin del medio sobre el sistema.


Las variables de FLUJO determinan las variaciones en los

niveles del sistema. Las variables de flujo caracterizan las

16

acciones que se toman en el sistema, las cuales quedan acumuladas en los correspondientes niveles. Las variables de flujo determinan como se convierte la informacin disponible en una accin o actuac in.

A las variables de flujo se asocian ecuaciones que definen el


comportamiento del sistema. El bloque representativo de un flujo admite, como seal de entrada, la informacin proveniente de los niveles, o de variables auxiliares, del sistema y suministra como salida el flujo que alimenta a un nivel.

Por ejemplo, a un flujo se le puede asociar una ecuacin de l a


forma:

Siendo A(t) y B(t) dos variables de nivel o auxiliares. Las ecuaciones asociadas a una variable de flujo reciben el nombre de ecuaciones de flujo. La ecuacin de flujo representa la funcin desarrollada
por el observador del

smil hidrodinmico. Es decir, con ayuda de

la ecuacin de flujo el observador calcula en cada instante la

abertura de l vlvula, o sea el flujo. a

Las variaciones de flujo tienen como entradas exclusivamente


a niveles y a variables auxiliares. Es decir, dos variables de

flujo no pueden conectarse entre s . Las variables AUXILIARES representan pasos o etapas en que se descompone el clculo de una variable de flujo a partir de los valores tomados por los niveles.

17

Normalmente, cuando se va a simular un modelo matemtico no tiene inters la forma analtica., pues lo que entoces interesa es
la escritura del modelo en una forma facilmente programable sobre

un

computador.

partir

de

las ecuaciones

que

rigen

el

comportamiento de las distintas variables que intervienen en un modelo se obtiene la evolucin del sistema.

Las ecuaciones del modelo se escriben de acuerdo con un


mtodo de integracin numrica que, normalmente, es el mtodo de

Euler.
La programacin de las ecuaciones de un sistema dinmico puede hacerse en cualquier lenguaje de alto nivel como FORTRAN,
BASIC,

etc. No obstante se ha desarrollado un

lenguaje de

programacin especfico con ayuda del cual se pretende que la escritura de las ecuaciones asoc:iadas a un diagrama de Forrester sea lo mas sencilla posible. Este lenguaje es el DYNAMO. En las ecuaciones escritas en dynamo se hace
At =

DT. Las

letras J, K y L que siguen a los smbolos de las variables son los indicadores de considerando, J tiempo. K el indica el instante el que se est

precedente y L

siguiente.

Para

las

ecuaciones de flujo, JK denota el flujo calculado en el intervalo precedente, y KL el flujo que se calcula para el siguiente. La figura muestra esquemticamente la secuencia de clculo implcita en las ecuaciones. En la secuencia de calculo se sobreentiende que l evolucin del sistema ha alcanzado el a intervalo

instante K, pero que las ecuaciones an no se han resuelto para

18

" I
F LUJ
1
I

los niveles en el instante K ni para los flujos sobre el intervalo

KL.

El clculo de los niveles en el instante K, est basado en el


conocimiento de los niveles en el instante anterior, J, y de los flujos (supuestos constantes) en el intervalo

JK.

Una

vez

calculados los niveles en el instante K, y despus de haber calculado los flujos Correspondientes al intervalo KL, los ndices se adelantan un tiempo dt para iniciar el siguiente ciclo de clculo.

Los flujos calculados para el intervalo KL se convertirn en


los flujos correspondientes al intervalo JK despus del cambio de ndices; los ndices K de los niveles se transforman en J; se inicia el siguiente ciclo de clcxlo, y as sucesivamente.

Las no linealidades que se consideran en los modelos de


dinmica de sistemas son no linealidades sin memoria; es decir, funciones de una variable que solo responden al valor de la seal de entrada en el instante considerado. Empleando el dynamo, la no linealidad se introduce por puntos, tal como se indica en la grfica; por ello l s no linealidades se denominan tambin a tablas.

El

cuadro muestra la forma que toman en dynamo l s a

sentencias de los tipos de ecuaciones mas usuales en dinmica de sistemas.

19

La no

linealidad

A=F(B)

se escribe por

medio

de

dos

sentencias. En la primera de ellas, en el segundo miembro, aparece en primer lugar, entre parentesis, el simbolo AT que hace

referencia a la segunda de las sentencias y que se describir mas abajo. En segundo lugar aparece B.K, que indica cual es la variable con la que se alimenta la no linealidad, es decir B. Aparecen a continuacin B y Bs, que constituyen los dos valores i que representan el intervalo para el que se define la no

linealidad; es decir, se consideran solo valores de B comprendidos entre B y i


B5.

Por ltimo, el valor de

indica la separacin

entre dos valores sucesivos de Bi.

La segunda de las sentencias indica los valores tomados por A para los valores de B indicados en la primera de las sentencias. Es decir, los valores Ai=f(Bi), para i=1,2,3,4 5. y
Con los datos suministrados por stas dos sentencias se

l tienen definidos una serie de puntos de la no linealidad. E


compilador est concebido para realizar una interpolacin para valores de B comprendidos entre los definidos en las sentencias.

20

EJEMPLO DE APLICACION DE LA DINMICA DE SISTEMAS. Problema de las ballenas.

Se trata de estudiar la conservacin de una determinada poblacin, por ejemplo la de ballenas, sometida
a

una extincin

importante por accin de la pesca o de la caza. La evolucin de la poblacin de ballenas depende de los nacimientos, las muertes naturales y las muertes por pesca. Con estas relaciones iniciales se puede construir un diagrama causal como el que se muestra.

128272

I!

Las grficas muestran la relacih no lineal que existe


i entre la poblacin y los nacimientos o las muertes naturales. S
la poblacin se encuentra por debajo de un valor Pi, se tiene una situacin de <csubpoblacin>>: las tasas de nacimiento son muy bajas debido a que por l baja densidad de poblacin, es difcil a que se encuentren parejas, por problemas de "soledad", falta de

i produccin para las cras, etc. S la poblacin se encuentra por


encima de
P2

se tiene

una <<superpoblacin>> que

determina

problemas de densidad relativamente elevada, por lo que las tasas de nacimiento tienden a estabilizarse, mientras que las tasas de mortalidad tienden a aumentar.

Por otra parte y simplificando mucho el modelo, se supone que la mortalidad debida a la pesca es proporcional a la poblacin
total, es decir.
Mp=K*P

en donde

Mp

representa la mortalidad debida a l pesca, P es la a

poblacin de ballenas y K es una constante de proporcionalidad. Existe un lmite superior para sta mortalidad fijado por la capacidad de procesamiento
y

almacenaje

de

los

productos

a balleneros por parte de l flota pesquera, por lo tanto se tiene que :

MP = Min (K

* P, BMAX) * P,

que significa que la mortalidad anual de ballenas, por efecto de la pesca, ser el mnimo de los valores tomados por K

fraccin de la poblacin que puede ser pescada, y BMAX, nmero mximo de cetceos que pueden ser- procesados por la flota.

22

Las hiptesis realizadas son efiarmemente simplificadoras.

Por ejemplo, se ha supuesto que todas las ballenas son igualmente


apreciadas. Sin embargo, en un primer ejemplo introductorio se consideran aceptables. En la figura siguiente se considera el diagrama de Forrester correspondiente a diagrama causal del modelo de evolucin de la l poblacin de ballenas.

23

TOTAL

+/

/'

Se observa cmo para l caracterizacin del sistema se a requiere un solo nivel. Escrita en forma de ecuaciones

diferenciales, la ecuacin del modelo sera dP/dt = N

Mn

Mp

En donde P es la poblacin de ballenas, N es el nmero de


nacimientos, Mn el nmero de muertes naturales y muertes por pesca. Las no linealidades de la figura pueden representarse o
Mp

el nmero de

bin analticamente o bien por puntos. En el primer caso, se tiene para la relacin entre el numero de nacimientos y la poblacin la siguiente expresin:
N = A[x(a'] iep-F)
+ Az[exp(-bP)l + C

siendo los valores de las constantes


Ai = -8000

A2

= 40 00

a =
C

0.69

b = 1.38

= 40 00

Por lo que respecta a la relacin entre la tasa de mortalidad y la poblacin se puede ajustar por medio de un polinomio de segundo orden tal como

M =

Ai' x

4-

A2'

x PZ

siendo los valores numricos de l s constantes a

Ai' = 0.875
A2' = 1.70 IO'
El modelo as obtenido puede ser simulado sobre un computador
i y se requiere el empleo de un lenguaje tal como el dynamo, s es as, las no linealidades deben tabularse. Teniendo en cuenta sta

24

tabulacin, el modelo en dynamo se escribe as:

POB.K=POB.J+(DT)(NAC.JK-MNA. JK-MPES. JK)

1 NAC . KL=TABLE ( NACT. POB.K,O, 50000,5000


NACT
=0/340/993/1662/2240/2701/3054/3317/3509/3649/3750

MNA. KL=TABLE(MNAT, POB.K, O, 50000,5000) MNAT


=0/86/257/514/855/1281/1792/2388/3070/3836/4687

MPES. KL=MIN [ (FP) (POB.K), BMAX I

S i

se

emplea

cualquier

lenguaje

de

alto

nivel,

la

programacin de las no linealidades puede conservar su forma


a analtica, por lo que aparentemente l programacin del modelo es

mas simple que la programacin en dynamo. Sin embargo, aunque para

un caso sencillo como el que se est tratando sea as, para


problemas de mayor complejidad es patente la superioridad del dynamo sobre otros lenguajes en modelos de dinmica de sistemas, debido a que se trata de un lenguaje especialmente diseado para este tipo de modelos.

25

Se deben tomar las siguientes consideraciones acerca de dynamo:

Al evaluar, el compilador ordena las ecuaciones de la


siguiente manera: nivel, auxiliar y flujo. Existen adems de las ecuaciones anteriores:
Constantes: Donde nicamente se asigna un valor numrico

a nombre simblico que representa a dicha constante. l


Ecuaciones iniciales: A todas las ecuaciones de nivel

l deben ser dados valores iniciales a empezar la simulacin, estos

son provistos por ste tipo de ecuaciones.

Para el proceso de inicializacin se conservan las mismas


reglas que para el clculo de ecuaciones. Los niveles, que son auxiliares del intervalo de tiempo

calculados de niveles y

l anterior y de flujos, tambin correspondientes a tiempo anterior.


Las

auxiliares son calculadas de niveles y otras auxiliares,

calculadas durante esa misma etapa de tiempo. Los flujos son calculados de niveles y auxiliares de sta misma etapa de tiempo.
a Por consiguiente l etapa de inicializacin consiste en

evaluar primero

las ecuaciones iniciales, siguiendo con las

auxiliares y posteriormente las de flujo (sto es nicamente para el primer intervalo de tiempo, TIME = O 1, para las siguientes etapas de tiempo se contina de manera normal: nivel, auxiliar y flujo.

Al evaluar las ecuaciones iniciales puede surgir el problema


de que la variable del lado derecho de la asignacin corresponda a una ecuacin auxiliar o de flu.jo, entonces dynamo evala stas

26

ecuaciones como s i fueran tambin iniciales, a su vez, stas pueden tener el mismo problema, dynamo contina evaluando como s i fueran iniciales hasta inicializar todas las ecuaciones necesarias para obtener un valor numrico en la primera expresin.

- i!7 -

Convenciones en dynamo.

Forrnatos de declaraciones. Las declaraciones en dynamo empiezan con

un

identificador en la primera columna de la lnea.

L
A

Ecuacin de nivel Ecuacin auxi1 iar Ecuacin de flujo Ecuacin suplementaria Ecuacin de valor inicial
o

R
S

CP

Constante Tablas Especificacin de la simulacin Nota o comentario Declaracin plot Declaracin print Calcular graficar. valores de variables de salida sin

T o TP SPEC NOTE PLOT PRINT


SAVE

OPT NOISE
RUN

Declaracin opt Numeros aleatorios Declaracin r n u Declaracin quit

QUIT

El identificador es seguido por uno o mas espacios y a continuacin la ecuacin o declaracin de control.

28

Operaciones aritmticas en dynamo

Suma
Resta Multiplicacin

*
/

Divisin

La declaracin SPEC es usada para especificar el valor del DT


(intervalo de integracin), el valor de LENGTH (etapa de tiempo en que
la simulacin se detiene) y

otros dos parmetros que

especifican la separacin entre puntos para la salida. La declaracin NOTE es para indicar que a continuacin sigue un comentario. La declaracin RUN marca el fin del modelo.

La declaracin QUIT es usada nicamente al hacer un re-run y


l es tratada como RUN a encontrarse en el modelo.

Declaraciones de salida. Dynamo produce salida tabular y grfica.


PRINT

La

salida

tabular

es

especificada

por

sta

dec1aracin.

PLOT

La salida grfica es especificada por declaracin.

sta

La declaracin

SAVE

sirve para indicar que a tiempo de

compilacin se almacenan los valores correspondientes a las variables aqu especificadas aunque no estn como salidas, ya que sern utilizadas en los posteriores re-run.

La declaracin NOISE es una funcin generadora de nmeros

- 29 -

aleatorios. La declaracin OPT sirve para especificar nuevas opciones al hacer un re-run.

30

Funciones en dynamo

Retrasos y extrapolacionec.

128272

Al construir el diagrama causal de un sistema debe


considerarse que la relacin causal que liga a dos variables puede indicar una transmisin (de material o de informacin) para la que se requiera el transcurso de un cierto tiempo. Es entonces cuando empleamos las funciones de retraso.
Delayl-

Es un retraso material de primer orden (contiene un

nivel) y tiene l forma: a Delayl ( IN, DEL) Donde

IN
DEL

Es un parmetro de entrada Es el promedio de tiempo de retraso

Delayl es equivalente a las ecuaciones:

A
L

Delayl.K = LV.WDEL LV.K LV


= LV.J+(BT) (IN. JK-DELAY.J) = DEL

IN

Delay3- Es un retraso material de tercer orden, con la

forma:

Delay3 (IN, DEL) donde

IN
DEL

Es un parmetro de entrada Es el promedio de tiempo de retraso

Delay3 es equivalente a las ecuaciones dynamo:

31

A
L N

DELAY3.K = LV3.WDL. K LV3.K LV3 RT2.KL LV2.K


= LV3.J+(DT)(RT2.JK-DELAY3.J
= DL*IN = LV2.KlDL.K

R
L N R L N

= LV2.J*(DT)(RTl. JK-RT2.JK)
= LV3 = LV1.WDL. K = LV1.J+(DT)(IN. JK-RT1.JK) = LV3

LV2
RT1.KL LV1.K LV1 DL.K

= DELI3

D1 inf3- Es un retraso de informacin de tercer orden, con la


forma:

D1 inf3( IN,DEL)
donde

IN
DEL
equivale a

Es un parmetro de entrada Es el promedio de tiempo de retraso

DLINF3.K = DLINF3 J+(DT/DL. J)(LV2.J-DLINF3.J) DLINF3 LV2.K LV2 LV1.K LV1 .DL.K
= IN

N
L N L N

J-LV2.J) = LV2.J+ DT/DL. J)(LV1.


= IN
= LV1.J+(DT/DL. J)(IN. J-LV1.J)

= IN = DELI3

Smooth- Es un retraso de informacin de primer orden con

la forma:

3%

Smooth( IN,DEL) donde

IN

Es un parmetro de entrada

DEL Es el promedio de tiempo de retraso equivale a: L SMOOTH.K = SMOOTH.J+(DT/DEL) (IN.J-SMOOTH.J) SMOOTH


=

IN

Funciones de especificacin. Las funciones en &Sta clase son generalmente usadas para especificar relaciones entre dos variables en un modelo.
Exp(A)

Calcula el exponencial de

A A

Logn(A1 Sqrt(A1

Calcula el logaritmo natural de Calcula la ra.iz cuadrada de A

Funciones lgicas.
CliP(P1 q>r,8 )

la funcin regresa el valor de p s i


r>=s o

qsircs.

b ( P , Q) Minp, ql Switch(p,q,r)

Regresa el valor mximo. Regresa el valor mnimo. Regresa el valor de p s r=O o q s i i


r <:> O.

Otras funciones.
Cos ( A)
Sin(A)

Regresan el

valor

del

coseno

el

seno

3: 3

respectivamente.
Ramp(slp.strt1

SIP
strt La salida es:

Es la inclinacin del ramp. Es el inicio del TIME

i Ramp = O s time < strt

u Ramp = S m desde strt a TIME de (slp


si TIME > strt

* DT)
un
valor

STEP

Produce

un

salto

de

cero

especificado, la forma de la funcin es: Step (hght,sttm) donde el valor del step es cero s TIME < sttm, o i hght s TIME >= sttm. i

NOTA: Se han puesto la mayora de las funciones en dynamo y no se


l ha profundizado a explicar cada una de ellas ya que lo que nos interesa es tener un conocimiento general del lenguaje para

ampliar nuestro criterio en el tema y poder realizar una mejor critica del trabajo realizado en ste proyecto de investigacin.

34

CONPILADOR DE UN LENGUAJE DE SIWLACIdN

Editor

Se utiliz un editor de pantalla para aumentar l a interaccin usuario-mquina, teniendose la facilidad de poder regresar al texto editado sin tener necesidad de abandonar el mismo, despus de haber realizado una compilacin y/o ejecucin del programa dynamo. Una de l s caracteristicas importantes es que a momento de a l compilar un programa dynamo con errores de sintxis, se tiene la posibilidad de desplegar la pgina donde se encuentra
la

informacin incorrecta, con el cursor indicando l posicin del a error. Por tanto tan pronto como el usuario corrija el error podr seguir con el proceso de compilacin.

El editor de pantalla se elabor usando una estructura


doblemente ligada. Cada registro contiene

un

campo

para

l informacin (rengln de texto), un apuntador de este mismo tipo a

siguiente nodo y otro ms que apuntar a un posible rengln anterior. El uso de listas doblemente ligadas permite recorrer el texto bidireccionalmente sin tener que guardar apuntadores a posiciones anteriores y siguientes como sucedera por ejemplo con una lista lineal con ligas simples. El editor dynamo es capaz de realizar las siguientes funciones:
-Flecha Abajo: Al presionar flecha abajo se recorre el

apuntador a siguiente nodo. l


-Flecha Arriba

35

-Flecha Derecha -Pgina Abajo -pgina Arriba -Borra Caracter -Inicio Linea: Al presionar HOME el cursor se coloca en

l columna igual a tamao del rengln mas uno del mismo. a l


-MarcaInicioBloque: Despus de presionar F9 se guarda un

apuntador en el rengln actual donde est el cursor, indicando que en sta posicin iniciar un bloque
a

copiar,

borrar,

intercambiar.
-MarcaFinBloque: S despus de presionar F9 se digita i

F10 se determinar el extremo final del bloque pudiendo ser

diferenciado en la pantalla por un cambio de color del texto marcado o delimitado.


-Primera Pgina:

Esta primera pgina de

texto

se

despliega despus de presionar C'TRL-PGP

-Pgina Abajo: En forma anloga al teclear CTRL-PGDN se

obtendr en l pantalla la iltima pgina del texto. a


-Copiar Bloque:

Una vez que se marc6 un

bloque, la

operacin de copiado se puede realizar s se presiona CTRL-C B. El i bloque de texto delimitado ser duplicado a partir de la nueva posicin del cursor.
-1ntercambia Bloque: Al igual que en el caso anterior a l

presionar CTFL-I B el bloque de texto ser removido a lugar l actual del cursor.
-Elimina Bloque: De manera anloga CTRL-E B

efecta un

36

borrado del texto delimitado o marcado, quedando ste fuera de vista en la pantalla y anulado en l lista ligada. a
-Borra Linea: Se elimina una lnea de texto a presionar l

CTRL-B.
-Espacio Atrs:

Se retrocedeuna posicin a digitar l

BACKSPACE, adems de borrarse el caracter que se hubiese encontrado una posicin antes del cursor.
-Borra Palabra: Ce elimina una palabra de texto despus

de presionar CTRL-P. La palabra a borrar ser a partir de la posicin del cursor hasta enconti-ar un carater distinto de letra.
-Avanzar

Cadena: Con CTRL-A el cursor se recorre a l


o

inicio de una palabra

cadena que pudiese existir.

-Reduce Pantalla: Si se digita F5 se definirn nuevos

lmites de la pantalla de edicihn, es decir, el nmero de lneas ser uno menos cada vez que se presione F5, sto hasta llegar a dos renglones de texto.
-Aumenta Pantalla: De manera contraria a la anterior, F6

incrementa el nmero de lneas en edicin hasta llegar a un lmite de 19 lneas o renglones por pgina.
-Cargar

Archivo: Sin tener que pasar por el men uno

puede cargar un archivo directamente presionando F3.


-Salvar Archivo: Anlogo al punto anterior. Presionar F2. -Ventana de men principal: Despus de presionar F1 se

desplegar en pantalla una ventana con las posibles opciones de dynamo.


-Ayuda:

Al

momento de teclear F4 se desplegar en

3 7

pantalla la ayuda necesaria para manejar el editor de textos.


-Buscar una palabra: Al presionar CTRL-Q E se despliega

en pantalla un mensaje de captura para la cadena a encontrar. Al presionar RETURN, aparecer otro mensaje de captura para las opcioned de bsqueda. Estas pueden ser:

-BE

Buscar desde la posicin actual del cursor

hacia abajo estrictamente como se captura la cadena a encontrar.

-AE

Buscar desde! la posicin actual del cursor

a hacia arriba l cadena que se captur.

-TE
reng16n.

Buscar en todo el texto a partir del primer

-BM
mi nusculas.
-AM

Se compara la cadena capturada en letras

Hacia

arriba

comparando

la

cadena

en

mi nscu1as.

TM

En todo el texto con letras minsculas. Hacia abajo en letras maysculas. Hacia arriba y en letras maysculas. En todo el texto en letras minisculas.

Bc
AC

TC

-Reemplazar una palabra : Al presionear CTRL-Q R se

despliegan consecutivamente tres mensajes de captura, los cuales son


:

Cadena a Reemplazar : , P o r : , Opciones

:.

En la captura de opciones, adems de tener las posibilidades


l que existen a buscar una palabra, se agregan dos caracteres mas
:

Cambiar las cadenas preguntando una

por una

1, N

Cambiar

:38

todas las ocurrencias sin preguntar I . Por tanto en opciones se puede tener
:

-BPE -AEP -TEP -BMP

-BEP
-AEN

-TEN
-BMN
-A

-AMP
-TMP

-TMN
-BCN -ACN -TCN
Buscando

-BCP -ACP -TCP

-Seguir

Reemplazando

Despus de

teclear

CTRL-S,

se

continuar buscando o reemplazando cadenas dependiendo

s antes ya se busc o reemplazo alguna. i

Una manera eficiente de desplegar una pantalla es utilizando

la memoria de video, la cual comienza en la direccin base $B800


para un monitor a color, y en la direccin $BOO0 para un monitor monocramtico.
Por

lo tanto an un monitor
:

80x25

se puede

representar grficamente de l siguiente manera a

39

3
t

)9

80

2
3

F odl
I 1
I

1
I

I I
1 I

I
I

I I

I
I I
1

7l l 4 -

Del esquema anterior de observa que un caracter representa un byte para el mismo y otro para su atributo. Los tres primeros bits
i representan el color, s se enciende el cuarto bit indicar que el

color elegido ser brillante, en otro caso ser normal; del cuarto
a sexto bit se utilizan para representar el caracter con un color l

de video inverso, el Utimo bit texto desplegado.

' 7

1 indica el parpadeo del

Por consiguiente la matriz de video constar de 4 0 bytes, 00


la posicin i indicar el caracter y la i + 1 su atributo,

Comenzando desde i = O Hasta i = 3999.

De esta manera no se notar un barrido del cursor a travs de


la pantalla por cada linea de informacin que se despliegue, sino

que esta informacin parecer que es "salpicada".

40

Cornpilador :

128272
(
o

Un compilador es un programa que traduce cdigo fuente en este caso en Dynamo 1 a cdigo objeto

en su defecto a un

cdigo intermedio el cual pueda ser interpretado.

Las fases de un compilador son las siguientes :

Analizador Lexicogrfico : En esta parte se analizan

los

smbolos o tokens que conforman ima estructura gramatical.


Analizador Sintctico : Un analizador sintctico verifica que

la estructura de una frase corresponda a una gramtica definida.


Analizador Semntico : En esta parte el compilador verifica

que la frase u oracin analizada tenga sentido.

El compilador diseado es recursivo descendente, de manera que a encontrar un error ste detiene su proceso de anlisis l dejando paso a una rutina que verifica errores de compilacin para
l a mostrar a usuario programador l pgina donde se encuentra dicho

error adems de mandar un mensaje, indicandole el porqu de ste.


Los posibles mensajes de error son los siguientes:

Esperaba la palabra Programa Esperaba M identificador Tipo no declarado Esperaba punto y coma Esperaba la palabra 'Fin' de program Esperaba signo igual

41

Esperaba nmero entero Esperaba parentesis izquierdo Esperaba parentesis derecho Espereba punto Esperaba coma Esperaba palabra reservada SOBRE Esperaba una constante entera o real Esperaba identificador o nmero Esperaba signo igual Esperaba

dos puntos

Esperaba punto final de programa Identificador no definido o error sintctico Esperaba llave izquierda { Esperaba llave derecha

Identificador doblemente definido <identificador> Esperaba fin de comentario a / Esperaba palabra reservada comienza Esperaba palabra reservada termina o Esperaba identificador de nivel Esperaba tipo de ecuacin a analizar Esperaba identificador de nivel o auxiliar Esperaba sufijo de identificador Esperaba sufijo ACT Esperaba sufijo N AT Esperaba operador suma

Esperaba identificador especial DT

42

Esperaba operador

o I

Esperaba sufijo IAN

El identificador no deber llevar sufijo


Esperaba identificador de flujo Esperaba sufijo IAC

Error en el nmero de parentesis


No se permite variable suplementaria en una ecuacin de

nivel, flujo, auxiliar o inicial. Esperaba identificador de variable suplementaria


No se permiten variables en ecuaciones constantes

Rango incorrecto

Esperaba nmero positivo Se excede en datos para la tabla Faltan datos para la tabla Esperaba identificador tipo inicial Esperaba identificador tipo auxiliar Esperaba identificador de la constante Esperaba corchete izquierdo Esperaba corchete derecho Inesperado fin de archivo Expresin de nivel incorrecta

DT es una variable especial


Incorrecto uso de identificador especial DT
No podr aparecer una variable de tipo tabla

Esperaba palabra reservada LENGTH Especificaciones ya definidas

43

La representacitb
caracter Esperaba un dato mayor al anterior Pila vaca Pila llena

ser dada por un solo

Esperaba identificador '<identificador>.ant' Palabra reservada Esperaba valor n-rico

En el compilador se emplea la siguiente estructura de datos:

44

En la cul en cada nodo se almacenan los identificadores. La posicin que le corresponde en el arreglo a cada uno de ellos est determinado por l funcin que se localiza en la parte inferior. a Donde Ord(Cad) proporciona el cdigo ascii del caracter de sta cadena. Las palabras reservadas de que consta el programa son
Auxi 1 iar,
Constante, Inicial, Flujo, Suplementaria, Tabla, Sobre, Comienza, Termina, Programa, Nivel, Fin, Spec. Nota, Length,
:

DT,
Time.

Existen dos tipos de comentarios comentario y

/*

para abrir inicio de

*/

para cerrarlo o Nota que indica que el rengln

ser empleado como un comentario.

45

La gramtica que reco:noce el compilador, empleando la


representacin conocida como forma de Bacus Naur Form ( BNF 1, es la siguiente :

. .= .
I
[

Significa "Se define como" Significa


"0"

I Encierra un conjunto el cual puede ser repetido cero

o ms veces.

46

Cabe hacer notar que el compilador diseado reconoce el mismo tipo de ecuaciones y funciones empleadas en dynamo ( y que hemos mencionado en el presente reporte) ya que est basado en ste, sin embargo contamos con un medio ambiente mejorado, adems se le han realizado cambios de usuario. tal manera de hacerlo agradable al

.47

Ejecucin

Al encontrar una tabla definida en las declaraciones, el


compilador genera una estructura como la mostrada en la siguiente hoja.

48

. I . .

En sta se guarda l variable de tipo tabla, la variable a independiente sobre la cual acta, as como su valor mnimo, mximo e incremento, adems un apuntador a una lista ligada donde se encuentran los valores correspondientes a los puntos de la no
1 inealidad.

Respecto a las ecuaciones, 1 a misma gramtica definida para el . lenguaje va dejando un codigo intermedio en notacin polaca

(posfija) generando una lista ligada para ste. El DT y el LENGTH son depositados a inicio de sta 1ista.Tambin a tiempo de l compilacin se guardan en la tabla de hash los valores

correspondientes a las constantes.

Al llegar a la parte de salidas, por cada PRINT

PLOT

encontrado se genera una estructura, la cual se puede apreciar tambin en la siguiente hoja. Donde, en el arreglo de registros se guardan las variables a ser graficadas y tabuladas. Estas son las estructuras de datos que se requieren a tiempo de ejecucin, entonces se recorre la lista ligada de

las

expresiones en posfija y para cada una se llama a un procedimiento que las evala con ayuda de un stack, al terminar de evaluar cada expresin se actualiza l tabla de hash depositando el resultado a
a obtenido en el lugar correspondiente a l variable que

obtuvo

dicho valor, de tal manera que al evaluar en la siguiente etapa de tiempo se pueda extraer de aqu los valores tomados anteriormente por las variables.
S un identificador tiene un tipo tabla, se realiza una i

49

interpolacin con ayuda de la estructura correspondiente a esa


a tabla con el valor actual de l variable independiente.

S por otro lado corresponde a una funcin (de retraso), se i


genera un nodo (la primera vez) donde se guardan los distintos valores tomados por las variables de esa funcin, ya que las funciones contienen ecuaciones de nivel y stas dependen del intervalo de tiempo anterior, stos valores servirn para calcular la misma funcin en el intervalo de tiempo siguiente

S el i

identificador corresponde a otro tipo de funcin se calcula de manera normal ya que no requieren de valores anteriores para su clculo. La manera de inicializar los niveles es como sigue:

S es i

la primera etapa de tiempo y

la expresin

corresponde a una inicial, entonces se evala, pero si a su vez depende para ser calculada de una auxiliar o de flujo, sta ltima se evala como s fuera inicial, sto se repite hasta poder i obtener un valor inicial para l ecuacin de nivel. En la primera a
as etapa de tiempo se evalan l . iniciales, posteriormente las

auxiliares y por ltimo las de flujo; en las siguientes etapas de tiempo, como los niveles ya cuentan con u valor inicial se n evaluan niveles, auxiliares y flujos en este orden.

Al terminar cada ciclo

SE!

crean nodos correspondientes a

los valores obtenidos en sta etapa de tiempo para cada variable de salida y se van adicionando ei la estructura correspondiente. r
Al

compilar

nuevamente

un

modelo

se

eliminan

las

50

estructuras. Por el contrario s se ejecuta otra vez, sin compilar i de nuevo, se eliminan nicamente los valores obtenidos para las variables de salida (sin eliminar las estructuras generadas a tiempo de compilacin), se elimina tambin la estructura para almacenar los valores de las funciones y se inicializa l tabla de a hash dejando los valores de las constantes.

El despliegue de las variables de salida es en forma grafica y tabular en ventanas individuales, en la forma tabular se tiene la opcin de mover pginas arriba y abajo para poder apreciar todos
i los puntos, s stos sobrepasan una pgina. Como se grafican cada 4

variables ms el TIEMPO, se obtiene una escala adecuada, sta se indica en el margen izquierdo de las grficas y en la parte superior dentro de l ventana de salida tabular. a

51

12822%
Conclusiones :

Consideramos que este producto puede ser de mucha utilidad en reas como las ciencias sociales para la enseanza de modelos de simulacin que nos representen

un

determinado

l comportamiento, por ejemplo en : a economa podra ser llevado a

cabo un estudio de mercado para determinado producto, o en psicologa estudiando los sntomas de una perturbacin.

52

Bibliografa :

Aracil Santoja Javier. Introduccin a la dinmica de sistemas. Alianza Editorial.

Jay W. Forrester. Dinmica Industrial.

Jay W. Forrester Principles of systems.

MiniDynamo Users Guide.

Dynamo sers Guide.

53