Professional Documents
Culture Documents
Proyecto de Grado
Presentado ante la ilustre Universidad de Los Andes como requisito parcial para
obtener el Ttulo de Ingeniero de Sistemas
n e Implementacio
n del prototipo
Especificacio
o de Experimentos en
de la librera para Disen
Galatea
Por
c
Derechos Reservados 2015
Universidad de Los Andes
Especificaci
on e Implementaci
on del prototipo de la librera
para Dise
no de Experimentos en Galatea
Br. Miguel Antonio A
nez Nu
nez
Proyecto de Grado Sistemas Computacionales, 175 paginas
Resumen: La plataforma Galatea desarrollada para permitir la simulacion y modelado, incorporando agentes que razonan y act
uan sobre su entorno, esta formada por
un conjunto de libreras que pueden trabajar tanto en conjunto como individualmente.
El documento presente propone la especificacion de una nueva librera para Galatea
que permitira incorporar el Dise
no de Experimentos a los modelos de simulacion en
Galatea. Todo esto pensando en la facilidad de manipulacion para usuarios no expertos
en simulacion o en el uso de Galatea.
Palabras clave: Simulacion, Galatea, Dise
no de Experimentos, Interfaz Grafica de
Usuario
Indice
Indice de Tablas
xi
Indice de Figuras
xii
1 Introducci
on
1.1
Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
1.3
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1
Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.2
Objetivos Especficos . . . . . . . . . . . . . . . . . . . . . . . .
1.4
Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5
Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6
2 Marco te
orico
2.1
2.2
Simulacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1
2.1.2
2.1.3
Formalismo DEVS . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4
Dise
no de Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
2.3
Parametros . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Galatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3.1
10
iii
2.3.2
11
2.3.3
14
3 Modeloteca
3.1
3.2
3.3
3.4
3.5
3.6
3.7
16
Taquilla simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.3
18
Sistema Burocratico . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2.3
20
20
3.3.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3.3
21
22
3.4.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.4.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.4.3
23
23
3.5.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.5.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.5.3
24
24
3.6.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.6.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.6.3
27
28
3.7.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.7.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.7.3
30
3.8
3.9
temperatura
. . . . . . . .
30
3.8.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.8.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.8.3
33
. . . . . . . . . .
33
3.9.1
Tabla de Analisis . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.9.2
Variables Definidas . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.9.3
37
38
39
39
40
40
41
42
42
43
45
45
46
46
47
49
49
51
51
52
53
53
54
56
56
58
59
60
60
60
61
61
62
62
63
66
67
69
71
72
73
74
74
74
75
75
75
77
78
4 Dise
no
81
4.1
Tipos de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.1.1
Atomicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
4.1.2
Compuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Formas de Experimentar . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.2.1
85
4.2
4.3
4.2.2
86
4.2.3
86
4.2.4
86
87
5 Prototipo
5.1
5.2
5.3
5.4
88
Manejo de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
5.1.1
Entero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
5.1.2
Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
5.1.3
Cadena de Caracteres
. . . . . . . . . . . . . . . . . . . . . . .
90
5.1.4
Logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
5.1.5
Arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
5.1.6
Enumerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
93
5.2.1
93
5.2.2
93
5.2.3
94
Interfaz Grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
5.3.1
Seleccion Idioma . . . . . . . . . . . . . . . . . . . . . . . . . .
94
5.3.2
Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
5.3.3
Seleccion Variables . . . . . . . . . . . . . . . . . . . . . . . . .
95
5.3.4
Editar Variables . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
5.3.5
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
Resultados de la Experimentacion . . . . . . . . . . . . . . . . . . . . .
99
Conclusiones
100
Trabajos Futuros
101
A Modeloteca. C
odigos Galatea
102
temperatura
. . . . . . . . 110
. . . . . . . . . . 111
145
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Bibliografa
175
Indice de Tablas
3.1
17
3.2
19
3.3
21
3.4
22
3.5
22
3.6
24
3.7
26
3.8
26
3.9
28
29
31
36
39
41
45
48
52
56
59
61
65
72
74
77
xi
Indice de Figuras
2.1
11
2.2
12
3.1
41
3.2
Lnea de autob
us. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.3
70
4.1
Tipos de Datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
5.1
89
5.2
89
5.3
90
5.4
90
5.5
91
5.6
92
5.7
92
5.8
. . . . . . . . . . . . . . . . . . .
93
5.9
GUI Idioma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
96
96
97
98
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
xii
99
Captulo 1
Introducci
on
En este captulo se definiran los antecedentes que son la base para la realizacion del
problema, as como tambien, el planteamiento del problema, la justificacion y los objetivos que encaminaran el desarrollo del mismo, el alcance del proyecto, la metodologa
para su desarrollo y finalmente se dara una descripcion de la estructura del presente
documento.
1.1
Antecedentes
1.1 Antecedentes
de-
n del problema
1.2 Definicio
1.2
Definici
on del problema
1.3
1.3.1
Objetivos
Objetivo General
1.3.2
Objetivos Especficos
1.4 Metodologa
1.4
Metodologa
1.5
Alcance
1.6
Captulo 2
Marco te
orico
En este captulo, se describen los fundamentos teoricos necesarios para el entendimiento
y comprension del proyecto. Se define que es una simulacion (Zeigler, 2000) as como
algunos de sus componentes, se explica en que consiste el dise
no de experimentos
y se define detalladamente que es Galatea (Uzcategui, 2002) y su funcionamiento,
conocimientos necesarios para el desarrollo del prototipo propuesto en el captulo 1.
Creando una base teorica con la finalidad de tener una introduccion a las herramientas
de dise
no y permitir al lector tener una idea de la naturaleza del contenido del resto
del documento.
2.1
Simulaci
on
Es la imitacion de la manera en que opera un proceso o sistema del mundo real a traves
del tiempo, generalmente enfatizando caractersticas particulares del sistema donde
se centrara la atencion como aspectos importantes de la simulaci
on (Banks, 2001).
Estas caractersticas son representadas a traves de un modelo que no es mas que el
sistema en si a ser estudiado, y la simulacion representa la operacion del sistema
en el tiempo. La simulacion es una herramienta de analisis que nos permite sacar
conclusiones sin necesidad de trabajar directamente con el sistema real que se esta
simulando, es especialmente u
til cuando no disponemos de dicho sistema real o nos
resulta demasiado arriesgado realizar experimentos sobre el. (Zeigler, 2000)
n
2.1 Simulacio
2.1.1
Definici
on del sistema
Consiste en estudiar el contexto del problema, identificar los objetivos del proyecto,
especificar los ndices de medicion de la efectividad del sistema, establecer los objetivos
especficos del modelo y definir el sistema que se va a modelar.
2.1.2
Formulaci
on del modelo
Una vez definidas con exactitud preguntas que esperan responder haciendo uso del
estudio, se define y construye el modelo con el cual se obtendran los resultados deseados.
En la formulacion del modelo es necesario definir todas las variables que forman parte
de el, sus relaciones logicas y los diagramas de flujo que describan en forma completa
el modelo.
2.1.3
Formalismo DEVS
2.1.4
n
2.1 Simulacio
Tpicamente, los
modelos de simulacion continua involucran ecuaciones diferenciales que determinan las relaciones de las tasas de cambio de las variables de estado en el tiempo.
(Banks, 2001)
Simulacion combinada
Modelado de un sistema por medio de una representacion en la cual unas
variables de estado cambian continuamente con respecto al tiempo y otras cambian instantaneamente en instantes de tiempo separados. Es una simulacion en
la cual interact
uan variables de estados discretas y continuas. (Banks, 2001)
Simulacion paralela
Es el estudio de sistemas que presentan procesos separables que deben ocurrir
simultaneamente. (Uzcategui, 2002)
Simulacion distribuida
Es el estudio de sistemas para llevar a cabo el modelado y la simulacion de estos,
cuidando principalmente la coordinacion y la asignacion de procesos que pueden
ser separados y alojados en procesadores diferentes. (Uzcategui, 2002)
o de Experimentos
2.2 Disen
2.2
Dise
no de Experimentos
2.3 Galatea
2.2.1
10
Par
ametros
Es una variable o factor que debe ser considerado a la hora de analizar, criticar y hacer
juicios de una situacion.
2.3
Galatea
2.3.1
Componentes b
asicos de Galatea
Siguiendo el formalismo DEVS, la plataforma se rige por una lista de eventos que van
siendo ejecutados en cierto orden, lo que ocasiona activaciones o llegadas de nuevos
eventos en nodos pertenecientes al sistema y la interaccion entre ellos mediante mensajes, como se observa en la Figura 2.1.
Eventos
Los eventos se utilizan para controlar la evolucion del sistema modelado en el tiempo.
Estos eventos son almacenados en una lista de eventos ordenada denominada FEL
(acronimo de Future Event List). Cada evento asocia el nodo a ser activado con el
tiempo en el que debe ocurrir dicha activacion.
Nodos
Representan los subsistemas componentes del sistema a modelar. Cada nodo esta
definido por dos listas que contienen mensajes: la lista externa, EL (acronimo de
External List), donde permanecen los mensajes antes de ser procesados y en el nodo y
2.3 Galatea
11
la lista interna, IL (acronimo de Internal List), que almacena los mensajes que estan
siendo tratados. Los nodos se almacenan en una lista, LNodos, a la que tendra acceso
el simulador para activar el nodo indicado en el momento preciso.
Mensajes
Representan las entidades que viajan a traves de la red y que almacenan informacion
en su lista LCampos. Estas entidades se almacenan en la lista, LMensajes, y el
recorrido que realizan en la red se representa a traves de un cambio de una lista a otra.
2.3.2
2.3 Galatea
12
Titulo
Esta seccion inicia con la etiqueta TITLE y permite incorporar un titulo al modelo.
Red
La seccion de Red se inicia con la etiqueta NETWORK. En esta seccion se describen
las relaciones entre los nodos y el codigo que simula su comportamiento.
Agentes
Esta seccion empieza con la etiqueta AGENTS y contiene descripcion de cada tipo
de agente, que incluye la especificacion interna del agente y el estado mental. El
codigo ubicado aqu permite particularizar a cada tipo de agente. Para cada entrada,
hay una subdivision.
2.3 Galatea
13
Interfaz
Esta seccion empieza con la etiqueta INTERFACE. En esta seccion se incluye la
descripcion de las relaciones entre los agentes y el resto del sistema. Esta seccion
contiene el codigo que describe el comportamiento del simulador para permitir a los
agentes percibir y actuar.
Iniciaci
on
La seccion de iniciacion se indica con la etiqueta INIT, aca se realiza la asignacion de
valores que seran usados en tiempo de ejecucion de la simulaci
on.
Declaraci
on
La seccion de declaraciones se inicia con la etiqueta DECL y seg
un el tipo de
declaracion a realizar es necesario utilizar las etiquetas:
2.3 Galatea
14
2.3.3
2.3 Galatea
15
simulacion.
Durante una experimentacion el usuario esencialmente se centrara en los posibles
efectos que puedan causar cambios en variables y funciones, ya sean componentes
intrnsecos de la plataforma o intrnsecos previamente definidos.
Captulo 3
Modeloteca
En este captulo, se realiza una revision exhaustiva de la modeloteca actual de
Galatea. Obteniendo informacion pertinente para la definicion de los tipos de datos
mas comunes en la simulacion que seran utilizados por la librera de dise
no de
experimentos.
Durante la revision de la modeloteca se obtuvo la siguiente informacion para cada
ejercicio. Se proporciono la lista de variables experimentales obtenidas del ejercicio,
revisando cada variable se puede dar una descripcion detallada de las variables, tanto
de las pertenecientes al sistema, as como las definidas por el usuario que pueden
llegar a ser consideradas variables experimentales.
En base a este estudio, se propone una version del codigo Galatea necesaria para
incluir en el dise
no de experimentos dichas variables.
Se realiza una correccion de la modeloteca actual de Galatea, actualizando cada uno
de los ejercicios contenidos en la misma.
A continuacion se muestra cada uno de los modelos presentados en la modeloteca que
han sido sometidos a este proceso para su evaluacion y estudio.
3.1
17
Taquilla simple
3.1.1
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
InArrTime
Usuario
Rango
Estado
Dato
IT Gate (I)
Real
Valor
Inicial
[0,TSIM]
Declarada/
Iniciada
MeSerTime
Usuario
Stay
Teller
Real
[0,+]
(R)
DeSerTime
Usuario
Stay
Usuario
3.8
Iniciada
Teller
Real
[0,+]
(R)
NM20
Declarada/
Contador
Declarada/
0.8
Iniciada
Entero
[0,+]
Gate (I)
Declarada/
Iniciada
3.1.2
Variables Definidas
En esta seccion incluimos las variables que se han identificado en el ejemplo que
pueden ser experimentables.
InArrTime IR [0,TSIM] es el intervalo de tiempo entre la llegada de personas a la
taquilla, el rango implica que tendremos al menos una llegada durante la simulacion.
MeSerTime, DeSerTime IR [0,+] definen el tiempo de duracion del servicio
en la taquilla.
NM20 Z [0,+] es un contador que llevara registro de la cantidad de veces en
que la cola sera superior a 20 durante la simulacion.
3.1.3
18
C
odigo Propuesto para Dise
no de Experimentos
INTI(Identificador,
Descripcion,
<Valor
Inicial>,
<Valor
tico
3.2 Sistema Burocra
19
3.2
Sistema Burocr
atico
Cada 20 segundos llegan personas al sistema, las cuales son atendidas en 4 oficinas
distintas, cada oficina tiene una puerta las cuales abren 310 unidades de tiempo despues
de la primera llegada. Se clasifican a las personas seg
un los 4 tipos de oficina existente,
una inspeccion previa rechaza el 20% de las personas de tipo 4. Las puertas se cierran
y abren cada 100 unidades de tiempo, cuando estan abiertas las personas pasan en
orden desde el tipo 1 hasta el tipo 4.
El codigo original de este modelo es mostrado en la seccion A.2
3.2.1
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
MeanWait
Usuario
Rango
Dato
Stay Bureau
Arreglo
Usuario
Stay Bureau
Arreglo
[0,+]
[0,+]
(R)
i
Usuario
Seleccion
Valor
Inicial
(R)
DeviWait
Estado
Declarada/
(40,39,
Iniciada
12,62)
Declarada/
(4,5,3,
Iniciada
12)
Entero
[1,4]
Declarada
Logico
{Verdadero,
Declarada/
Falso}
Iniciada
Compuerta
OPEN
Usuario
State
Gates
(G)
TSIM
Sistema
Entero
(0,+]
Iniciada
PeType
Entero
[1,4]
Declarada
Logico
{Verdadero,
Declarada
Usuario
Rejected
Falso}
Tabla 3.2: Analisis de Sistema Burocratico
Falso
1000
3.2.2
20
Variables Definidas
3.2.3
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT( A r r i v a l s , 0 ) ;
TSIM: = 1 0 0 0 ;
Bureau :=MAXREAL;
OPEN:=FALSE ;
FOR
ASSI MeanWait [ 1 . . 4 ] : = ( 4 0 , 3 9 , 1 2 , 6 2 ) ;
ASSI DeviWait [ 1 . . 4 ] : = ( 4 , 5 , 3 , 1 2 ) ;
( Dise n
o de Experimentos )
INTI ( MeanWait [ 1 . . 4 ] , Tiempo E s t a da , ( 4 0 , 3 9 , 1 2 , 6 2 ) , 0 ) ;
INTI ( DeviWait [ 1 . . 4 ] , D e s v i a c i o n Tiempo E s t a da , ( 4 , 5 , 3 , 1 2 ) , 0 ) ;
INTI (OPEN, Estado Puerta , F a l s e ) ;
3.3
Los clientes llegan al cajero en intervalos determinados por una distribucion exponencial con media MarrT. El tiempo de la transaccion tambien esta determinado por una
distribucion exponencial con media MeCashT.
El programa simula el proceso y grafica la longitud de la cola y su valor medio,
21
3.3.1
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
MarrT
Rango
Dato
Usuario
IT
Arrivals
Real
Usuario
Stay
[0,TSIM]
Declarada/
Iniciada
Teller
Real
[0,+]
(R)
TSIM
Valor
Inicial
(I)
MeCashT
Estado
Sistema
Declarada/
3.8
Iniciada
Entero
(0,+]
Iniciada
5000
3.3.2
Variables Definidas
3.3.3
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT( A r r i v a l s , 0 ) ;
TSIM: = 5 0 0 0 ;
MarrT : = 4 ;
MeCashT : = 3 . 8 ;
( Para metros )
( Dise n
o de Experimentos )
INTI ( MarrT , Tiempo e n t r e L l e g a d a s , 4 , 0 ,TSIM) ;
INTI (MeCashT , Tiempo T r a n s a c c i o n , 3 . 8 , 0 ) ;
3.4
22
3.4.1
Tabla de An
alisis
Nombre
Tipo Dato
Rango
TYPRO
Rango
{CASHWITH,DEPOSIT}
Nombre
Tipo
Uso
Variable
PROCTIME
Usuario
Tipo
Rango
Estado
Dato
Stay TELLER
Valor
Inicial
Real
[0,+]
Declarada
Real
[0,+]
Declarada/
(R)
BALANCE
Usuario
TELLER (R)
Iniciada
WITHD
Usuario
TELLER (R)
Real
[0,BALANCE]
Declarada
DEPO
Usuario
TELLER (R)
Real
[0,+]
Declarada
PROC
Mensajes/ ENTRANCE
TYPRO
TYPRO
Declarada
Usuario
(I)
3.4.2
23
Variables Definidas
3.4.3
C
odigo Propuesto para Dise
no de Experimentos
3.5
Presentaci
on de valores de una cola
Este modelo es similar al ejemplo 3 (Graficando los valores de una cola). En este
caso los valores de la longitud de la cola son almacenados en una variable real RL y
archivados en un archivo ARCOL.
Este archivo puede ser usado para graficar.
El codigo original de este modelo es mostrado en la seccion A.5
3.5.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
MarrT
Usuario
Tipo
Rango
Estado
Dato
IT Arivals (I)
Real
Valor
Inicial
[0,TSIM]
Declarada/
Iniciada
MeserT
Usuario
Stay
Teller
Real
24
[0,+]
(R)
RL
Usuario
TSIM
Sistema
Arrivals (I)
Declarada/
3.8
Iniciada
Real
[0,+]
Declarada
Entero
(0,+]
Iniciada
300
3.5.2
Variables Definidas
3.5.3
INIT
C
odigo Propuesto para Dise
no de Experimentos
ACT( A r r i v a l s , 0 ) ;
TSIM: = 3 0 0 ;
MarrT : = 4 ;
MserT : = 3 . 8 ;
( Para metros )
( Dise n
o de Experimentos )
INTI ( MarrT , Tiempo e n t r e L l e g a d a s , 4 , 0 ,TSIM) ;
INTI ( MeserT , Tiempo T r a n s a c c i o n , 3 . 8 , 0 ) ;
3.6
25
3.6.1
26
Tabla de An
alisis
Nombre
Tipo Dato
Rango
TTypShip
Rango
TExit
Rango
{A, B, C}
TTypTur
Rango
Nombre
Tipo
Uso
Tipo Dato
Rango
Estado
Variable
MI
Usuario
Valor
Inicial
Stay
Arreglo
[0,MO]
TourPier
Declarada/
(5,27,72)
Iniciada
(R)
MO
Usuario
Stay
Arreglo
[MI,MA]
TourPier
Declarada/
(6,40,93)
Iniciada
(R)
MA
Usuario
Stay
Arreglo
[MO,+]
TourPier
Declarada/
(8,47,
Iniciada
130)
(R)
TypTur
Usuario
TourPier (R)
TTypTur
TTypTur
Declarada
ExitClass
Usuario
DecExit (G)
TExit
TExit
Declarada
Usuario
Aleatorio
Real
[1,+]
Declarada
Harbor (I)
P
Usuario
RESUL (A)
Real
[0,+]
Declarada
ShipType
Usuario
Harbor (I)
TTypShip
TTypShip
Declarada
3.6.2
Variables Definidas
27
3.6.3
INIT
C
odigo Propuesto para Dise
no de Experimentos
ACT( Harbor , 0 ) ; ACT(RESUL, 3 6 5 2 4 ) ;
FTBArr : = 0 . 0 , 0 . 5 / 0 . 2 , 1 / 0 . 3 , 2 / 0 . 3 5 , 2 . 5 / 0 . 4 0 , 3 . 5 / 0 . 4 5 , 3 . 9 /
0.50 ,4.1/0.55 ,4.8/0.60 ,5/0.70 ,5.5/0.80 ,6/0.90 ,6.25/1.0 ,6.5;
FType:= F r e i g h t e r , 6 1 1 / Bulk , 4 2 3 / T o u r i s t , 2 1 2 / Repair , 1 5 ;
TFreig : = 0 . 0 , 7 / 0 . 2 , 1 3 / 0 . 4 , 1 5 / 0 . 6 , 1 9 / 0 . 8 , 2 1 / 1 . 0 , 2 2 ;
TBulk : = 0 . 0 , 9 / 0 . 2 , 1 2 / 0 . 4 , 1 6 / 0 . 6 , 1 9 . 5 / 0 . 8 , 2 2 / 1 . 0 , 2 2 . 5 ;
TRepair : = 0 . 0 , 5 5 / 0 . 3 , 7 2 / 0 . 7 , 8 1 / 0 . 9 , 8 8 / 1 . 0 , 9 0 ;
FTypTur:= Stopping , 7 5 / V i s i t , 1 2 2 / T r a n s f e r , 1 5 ;
FClaExit := F r e i g h t e r ,A/ Bulk ,A/ T o u r i s t , B/ Repair , C ;
MI [ S t o p p i n g ] : = 5 ; MO[ S t o p p i n g ] : = 6 ; MA[ S t o p p i n g ] : = 8 ;
MI [ V i s i t ] : = 2 7 ; MO[ V i s i t ] : = 4 0 ; MA[ V i s i t ] : = 4 7 ;
MI [ T r a n s f e r ] : = 7 2 ; MO[ T r a n s f e r ] : = 9 3 ; MA[ T r a n s f e r ] : = 1 3 0 ;
F r e i P i e r : = 5 ; TourPier : = 3 ; B u l k P i e r : = 2 ; RepPier : = 1 ;
( A c t u a l i z a Capacidad L i b r e )
F F r e i P i e r := M F r e i P i e r ;
F TourPier := M TourPier ;
F B u l k P i e r := M BulkPier ;
F RepPier := M RepPier ;
( Dise n
o de Experimentos )
INTI (MI [ S t o p p i n g . . T r a n s f e r ] , Tiempo Mnimo Barco T u r s t i c o
, ( 5 , 2 7 , 7 2 ) , 0 ,MO) ;
INTI (MO[ S t o p p i n g . . T r a n s f e r ] , Tiempo Pr oba bl e Barco T u r s t i c o
, ( 6 , 4 0 , 9 3 ) ,MI ,MA) ;
INTI (MA[ S t o p p i n g . . T r a n s f e r ] , Tiempo Maximo Barco T u r s t i c o
, ( 8 , 4 7 , 1 3 0 ) ,MO) ;
3.7
28
3.7.1
Tabla de An
alisis
Nombre
Tipo Dato
Rango
TT
Rango
{TYPA,TYPB}
Nombre
Tipo
Uso
Variable
TBA
Usuario
Tipo
Rango
Estado
Dato
IT INA (I)
Real
Valor
Inicial
[0,TSIM]
Declarada/
Iniciada
TBB
Usuario
IT INB (I)
Real
[0,TSIM]
Declarada/
Iniciada
TS
Usuario
EXIT (E)
PRIOR
Real
[0,+]
Declarada
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada
Usuario
PRIOR
3.5
TYP
29
TT
TT
Declarada
TT
TT
Declarada
Real
[0,+]
Declarada
Real
[0,+]
Declarada
Real
[0,+]
Declarada
Entero
(0,+]
Iniciada
Usuario
TYP
TA
TB
TB
TSIM
Sistema
400
3.7.2
Variables Definidas
3.7.3
temperatura
30
C
odigo Propuesto para Dise
no de Experimentos
3.8
Procesamiento
de
partes
con
ajuste
de
temperatura
Las partes a ser procesadas llegan a una maquina. Estas llegan en intervalos determinados por una distribucion triangular. Sus temperaturas TEMP tienen una distribucion
uniforme entre TL1 y TL2. En la cola para ser procesadas por la maquina son ordenadas por su temperatura de forma ascendente. En la cola pierden temperatura a un
ritmo proporcional a TEMP-TE, donde TE es la temperatura ambiente.
Para ser procesadas la temperatura debe estar entre TP1 y TP2. Si la temperatura
de una parte esta por debajo de TP1, debe ser removida y recalentada en un horno
hasta alcanzar una temperatura TR, lo que toma un tiempo REHEAT y luego debe
ser procesada instantaneamente ya que no puede ser recalentada nuevamente. Debe
reemplazar la parte que esta siendo procesada a menos que esta vaya a terminar de ser
procesada en un tiempo menor a TSIM. Cuando regresan al proceso deben ser procesadas desde el inicio.
El enfriamiento en la cola es simulado en el nodo COOLING. La simulacion esta
hecha para observar como el n
umero de partes procesadas y recalentadas cambian con
el tiempo de procesamiento, la temperatura mnima y la constante de enfriamiento. El
n
umero y el patron de las llegadas debe ser el mismo para detectar solo el efecto de los
cambios en los parametros.
Esto se logra usando una corrida independiente para los 3 n
umeros aleatorios.
El codigo original de este modelo es mostrado en la seccion A.8
3.8.1
temperatura
31
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
TL1
Usuario
Rango
Estado
Dato
ARRIVAL (I)
Real
Valor
Inicial
[-,TL2]
Declarada/
720
Iniciada
TL2
Usuario
ARRIVAL (I)
Real
[TL1,+]
Declarada/
770
Iniciada
TP1
Usuario
CONTROL
Real
[-,TP2]
(G)
TP2
Usuario
Usuario
CONTROL
Stay
Real
[TP1,+]
Usuario
Declarada/
870
Iniciada
PRO-
Real
[0,+]
CESS (R)
K
690
Iniciada
(G)
PROCTIME
Declarada/
Declarada/
15.8
Iniciada
COOLING (A)
Real
[-,+]
Declarada/
2.52e12
Iniciada
TR
Usuario
REHEATING
Real
[0,+]
(R)
REHEAT
Usuario
Stay
Declarada/
735
Iniciada
RE-
Real
[0,+]
HEATING
Declarada/
2.5
Iniciada
(R)
TE
Usuario
COOLING (A)
Real
[-,+]
Declarada/
28
Iniciada
TIM
Usuario
PROCESS (R)
Real
[0,+]
Declarada/
2.5
Iniciada
D
Usuario
COOLING (A)
Real
[-,+]
Declarada
DT
Usuario
IT COOLING
Real
[0,+]
Declarada/
(A)
Iniciada
Usuario
RESULT (A)
Entero
[0,+]
Declarada
PRI
Logico
{Verdadero,
Declarada
Usuario
TEMP
Falso}
Real
[0,+]
Declarada
Real
[0,+]
Declarada
Usuario
REMA
3.8.2
temperatura
32
Variables Definidas
3.8.3
33
C
odigo Propuesto para Dise
no de Experimentos
7:2
( Dise n
o de Experimentos )
INTI (TL1 , Temperatura Mnima P a r t e s E n t r a n t e s , 7 2 0 , , TL2) ;
INTI (TL2 , Temperatura Maxima P a r t e s E n t r a n t e s , 7 7 0 , TL1) ;
INTI (TP1 , Temperatura Mnima P r o c e s a r , 6 9 0 , 0 ,TP2) ;
INTI (TP2 , Temperatura Maxima P r o c e s a r , 8 7 0 ,TP1) ;
INTI (PROCTIME, Tiempo P r o c e s a m i e n t o , 1 5 . 8 , 0 ) ;
INTI (K, Constante E n f r i a m i e n t o , 2 . 5 2 E12) ;
INTI (TR, Temperatura Requerida R e c a l e n t a m i e n t o , 7 3 5 , 0 ) ;
INTI (REHEAT, Tiempo R e c a l e n t a m i e n t o , 2 . 5 , 0 ) ;
INTI (TE, Temperatura Ambiente , 2 8 ) ;
INTI (TIM, Tiempo Maximo E v i t a r Reemplazo , 2 . 5 , 0 ) ;
INTI (DT, I n t e r v a l o Tiempo E n f r i a d o , 2 , 0 ) ;
3.9
Sistema de fundici
on para producir lingotes de
acero
34
material desechable (mazarota) para retrasar el enfriamiento del acero que sube en el
molde. Un tren esta formado por una sucesion de placas.
Su n
umero depende de el tipo de fundicion.
En el proceso de fundicion que sigue el armado del tren se carga un envase con el acero
lquido. Este es vertido en cada una de las placas mediante un embudo en el centro
de las mismas. En adelante el acero es distribuido a traves de canales de material
refractario que lleva el acero al final de los moldes y llena los moldes. Cuando la
fundicion termina luego de un tiempo de enfriamiento, una gr
ua extrae los moldes y
los pone en un espacio abierto. Los lingotes permanecen en las placas mientras se
siguen enfriando.
Si la fundicion es de tipo 1, los moldes requieren mayor tiempo de enfriamiento para
permitir que la mazarota colocada este lista para la fundicion. Esto se hace en lotes
de 50 moldes cada uno.
Por otra parte, los lingotes deben ser recortados. Esto consiste en retirar las barras
de acero formadas por los canales que son cortados por sopletes. Para que esten listos
para ser transportados.
Las placas son transportadas al area de refabricacion por una gr
ua. Ahi los canales
y embudos son preparados. As estan listos para preparar el tren nuevamente. Para
lograr esto los moldes deben estar disponibles. Toda la operacion es realizada de manera
sucesiva cada serie de fundiciones del mismo tipo.
Estos procesos estan descritos en el modelo por una matriz OpMat. Para cada proceso
se tiene el tipo de fundicion, seccion, altura, n
umero de lingotes, n
umero de placas y
n
umero de fundiciones por proceso. No toda esta informacion es usada en este modelo
simple. Las fallas y el mantenimiento de las gr
uas no esta incluido. El objetivo de esta
version es experimentar con el tiempo de los diferentes procesos.
El codigo original de este modelo es mostrado en la seccion A.9
3.9.1
35
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
OpMat
Usuario
Rango
Estado
Valor Inicial
[0,+]
Declarada/
((1,2,1,3,2),
Iniciada
(415,480,415,
Dato
StartCamp (I)
Arreglo
515,480),
(1500,1600,
1500,1800,
1600),
(144,96,144,
96,96),
(6,8,6,8,8),
(24,12,24,
12,12),
(5,6,7,5,6))
TTraintSet
Usuario
Stay
TrainSet
Arreglo
[0,+]
(R)
TCasting
Usuario
Stay
Usuario
(6,5,5)
Iniciada
Casting
Arreglo
[0,+]
(R)
TCool
Declarada/
Arreglo
[0,+]
Declarada/
(1.32,1.32,
Iniciada
1.32)
Declarada/
(12,12, 12)
Iniciada
TTransMold
Usuario
Stay TransMold
Arreglo
[0,+]
(R)
TCoolIngot
Usuario
Stay CoolIngot
Arreglo
[0,+]
(R)
TTrimIngot
Usuario
Stay TrimIngot
Arreglo
[0,+]
(R)
TTraPlate
Usuario
Stay
Usuario
Stay
TraPlate
Arreglo
[0,+]
Usuario
SetPlate
Arreglo
[0,+]
Usuario
Stay TraIngots
Stay
(R)
4.92)
Declarada/
(4.67,4.67,
Iniciada
4.67)
Declarada/
(12,4,4)
Declarada/
(2,2,2)
Declarada/
(5,5,5)
Iniciada
Arreglo
[0,+]
(R)
TTraIngot
Iniciada
Iniciada
(R)
TTraIngots
(5.32,4.92,
Iniciada
(R)
TSetPlate
Declarada/
TraIngot
Arreglo
[0,+]
Declarada/
(4.43,3.52,
Iniciada
3.52)
Declarada/
(2,2,2)
Iniciada
TTraMoPlate
Usuario
Stay
TraMo-
Arreglo
[0,+]
Plate (R)
36
Declarada/
(1,1,1)
Iniciada
NL
Usuario
Decision (D)
Arreglo
[0,+]
Declarada
CAMP
Usuario
StartCamp (I)
Entero
[0,Camp Declarada
Num]
NC
Usuario
StartCamp (I)
Entero
[0,Camp Declarada
Num]
CastType
Usuario
StartCamp (I)
Entero
[0,+]
Declarada
NLM
Usuario
Stay TransSet-
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada/
Maz (R)
CDM
Usuario
CampNum
Usuario
Continue (G)
Iniciada
TCoolType1
Usuario
Stay CoolType1
Real
[0,+]
(R)
TsetMaz
Usuario
TransSetMaz
Declarada/
Iniciada
Real
[0,+]
(R)
Declarada/
0.066667
Iniciada
3.9.2
Variables Definidas
37
3.9.3
INIT
C
odigo Propuesto para Dise
no de Experimentos
ACT( StartCamp , 0 ) ;
CampNum: = 5 ;
ASSI OpMat [ 1 . . 7 , 1 . . 5 ] : = ( (
1,
2,
1,
3,
2) ,
96 , 144 ,
ASSI TCool
6,
8,
6,
8,
8) ,
24 ,
12 ,
24 ,
12 ,
12) ,
5,
6,
7,
5,
ASSI TTransMold [ 1 . . 3 ] : = ( 5 . 3 2 , 4 . 9 2 , 4 . 9 2 ) ;
TsetMaz
TCoolType1
:=0.066667;
:=6;
ASSI TCoolIngot
ASSI TTrimIngot
[1..3]:=(12 ,4 ,4) ;
ASSI TTraPlate
[1..3]:=(2 ,2 ,2) ;
[1..3]:=(5 ,5 ,5) ;
ASSI TTraIngot
[1..3]:=(2 ,2 ,2) ;
ASSI TTraMoPlate [ 1 . . 3 ] : = ( 1 , 1 , 1 ) ;
ASSI TTraIngots
96) ,
ASSI TTrainSet [ 1 . . 3 ] : = ( 6 , 5 , 5 ) ;
ASSI TCasting
96 ,
6) ) ;
38
( Dise n
o de Experimentos )
INTI (OpMat [ 1 . . 7 , 1 . . 5 ] , P r o c e s o s I n v o l u c r a d o s , ( ( 1 , 2 , 1 , 3 , 2 ) ,
(415 ,480 ,415 ,515 ,480) ,
(1500 ,1600 ,1500 ,1800 ,1600) ,
(144 ,96 ,144 ,96 ,96) ,
(6 ,8 ,6 ,8 ,8) ,
(24 ,12 ,24 ,12 ,12) ,
(5 ,6 ,7 ,5 ,6) ) ,0) ;
INTI ( TTraintSet [ 1 . . 3 ] , Tiempo Formacio n G e n e r a l , ( 6 , 5 , 5 ) , 0 ) ;
INTI ( TCasting [ 1 . . 3 ] , Tiempo F u n d i c i o n , ( 1 . 3 2 , 1 . 3 2 , 1 . 3 2 ) , 0 ) ;
INTI ( TCool [ 1 . . 3 ] , Tiempo E n f r i a d o , ( 1 2 , 1 2 , 1 2 ) , 0 ) ;
INTI ( TTransMold [ 1 . . 3 ] , Tiempo T r a n s p o r t e Moldes
,(5.32 ,4.92 ,4.92) ,0) ;
INTI ( TCoolIngot [ 1 . . 3 ] , Tiempo E n f r i a d o L i n g o t e s
,(4.67 ,4.67 ,4.67) ,0) ;
INTI ( TTrimIngot [ 1 . . 3 ] , Tiempo R e c o r t e L i n g o t e s , ( 1 2 , 4 , 4 ) , 0 ) ;
INTI ( TTraPlate [ 1 . . 3 ] , Tiempo T r a n s p o r t e Pl ac a , ( 2 , 2 , 2 ) , 0 ) ;
INTI ( T S etPlate [ 1 . . 3 ] , Tiempo Procesado P la ca , ( 5 , 5 , 5 ) , 0 ) ;
INTI ( TTraIngot [ 1 . . 3 ] , Tiempo Formacio n L i n g o t e s , ( 2 , 2 , 2 ) , 0 ) ;
INTI ( TTraIngots [ 1 . . 3 ] , Tiempo T r a n s p o r t e L i n g o t e s
,(4.43 ,3.52 ,3.52) ,0) ;
INTI ( TTraMoPlate [ 1 . . 3 ] , Tiempo Formacio n Pl a ca , ( 1 , 1 , 1 ) , 0 ) ;
INTI ( TsetMaz , Duracio n C o l o c a r Mazarota , 0 . 0 6 6 6 6 7 , 0 ) ;
INTI ( TCoolType1 , Tiempo E n f r i a d o Mazarota , 6 , 0 ) ;
INTI (CampNum, N
umero Maximo Jornadas Trabajo , 5 , 0 ) ;
3.10
M
aquina con fallas
39
3.10.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
Fault
Usuario
SimTim
Tipo
Rango
Estado
Dato
Control (G)
Usuario
Logico
Real
Valor
Inicial
{Verdadero,
Declarada/
Falso}
Iniciada
[0,+]
Declarada/
Falso
2000
Iniciada
TBetweenFaults
Usuario
FaultEnd (A)
Real
[0,+]
Declarada/
15
Iniciada
TtonextFault
Usuario
Machine (R)
Real
[0,TBetween
Declarada
Faults]
FixingTime
Usuario
Faults (A)
Real
[0,+]
Declarada/
Iniciada
NumFaults
Usuario
FaultEnd (A)
Entero
[0,+]
Declarada/
Iniciada
FinishedParts
Usuario
ProcTime
Result (A)
Entero
[0,+]
Declarada
Real
[0,+]
Declarada
(R)
Tabla 3.13: Analisis de Maquina con fallas
3.10.2
Variables Definidas
Fault L
ogico estado de falla en el sistema.
FixingTime IR [0,+] tiempo de reparacion del sistema.
FinishedParts Z [0,+] es el n
umero de partes terminadas.
ProcTime IR [0,+] representa el tiempo de estada en la maquina.
TtonetxFaults IR [0,TBetweenFaults] representa el tiempo hasta la proxima
falla.
TBetweenFaults IR [0,+] representa l tiempo entre fallas.
NumFaults Z [0,+] representa el n
umero de fallas que han ocurrido.
n
3.11 Proceso de ensamblado con sincronizacio
40
3.10.3
C
odigo Propuesto para Dise
no de Experimentos
: Tiempo S i m u l a c i o n ;
( Tiempo h a s t a l a p r im e r a f a l l a )
TtoNextFault :=GAUSS( TBetweenFaults , 0 . 1 TBetweenFaults ) ;
( Dise n
o de Experimentos )
INTI ( Fault , Estado F a l l a , F a l s e ) ;
INTI ( SimTim , Tiempo S i m u l a c i o n , 2 0 0 0 , 0 ) ;
INTI ( TBetweenFault , Tiempo e n t r e f a l l a s , 1 5 , 0 ) ;
INTI ( FixingTime , Tiempo Repa ra cio n , 4 , 0 ) ;
INTI ( NumFaults , N
umero F a l l a s O c u r r i d a s , 0 , 0 ) ;
3.11
n
3.11 Proceso de ensamblado con sincronizacio
41
Cuando estan terminadas las dos partes estas son ensambladas de nuevo y un nuevo
proceso es ejecutado en todo el aparato.
El codigo original de este modelo es mostrado en la seccion A.11
3.11.1
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo
Variable
TiMinA
Usuario
Rango
Dato
Stay
EquiA
Arreglo
Usuario
Stay
[0,TiMaxA]
Usuario
Stay
EquiA
Arreglo
EquiB
Arreglo
[TiMinA,
Declarada/
+]
Iniciada
[0,+]
Declarada/
(R)
DTiB
Usuario
Stay
Usuario
Stay
EquiB
Arreglo
[0,+]
Usuario
Stay
EquiC
Real
[0,+]
Usuario
(12,14)
Declarada/
(3,4)
Declarada/
Iniciada
EquiC
Real
[0,+]
(R)
MeTiBeArr
(18,20)
Iniciada
(R)
DtC
(14,15)
Iniciada
(R)
TmC
Declarada/
Iniciada
(R)
MeTiB
Valor
Inicial
(R)
TiMaxA
Estado
IT
Declarada/
Iniciada
Real
[0,+]
Ent Appar
Declarada/
25
Iniciada
(I)
DMeTi
Usuario
IT
Real
[0,+]
Ent Appar
Declarada/
Iniciada
(I)
lin
Usuario
TSIM
Sistema
EquiA (R)
Entero
[1,2]
Declarada
Entero
(0,+]
Iniciada
500
n
3.11 Proceso de ensamblado con sincronizacio
3.11.2
42
Variables Definidas
3.11.3
C
odigo Propuesto para Dise
no de Experimentos
3.12
43
Ruta crtica
En este ejemplo se da una red de actividades relacionadas para cumplir con una tarea.
Cada actividad es representada por un arco de un grafo dirigido. Una actividad puede
empezar cuando todas las actividades que terminan en su nodo origen han finalizado.
Para cada actividad se dan 3 tiempos de cumplimiento: el probable (normal), el maximo
(pesimista) y el mnimo (optimista).
El programa debe encontrar:
1) El camino crtico, este es la sucesion de actividades cuyo retraso afecta la duracion
de toda la tarea.
2) el tiempo mnimo, dado por la suma de los tempos de las actividades en el camino
crtico.
3) el tiempo de holgura de cada actividad, este es el tiempo que la actividad puede ser
retrasada sin afectar la duracion de la tarea.
El tiempo de cada actividad es asignado aleatoriamente tomado de una distribucion
triangular con mnimo, modo y maximo respectivamente equivalentes a los tiempos
optimista, normal y pesimista.
Por esta razon si repetimos un calculo obtendremos diferentes tiempos crticos y por
lo tanto un camino crtico diferente. As, el resultado final debe ser estimado tomando
valores medios de los resultados de muchos experimentos. En este ejemplo la computacion estatica no esta hecha.
La simulacion esta hecha representando las actividades por nodos tipo R que contienen
un mensaje (que representa la ejecucion de la actividad) por un tiempo equivalente
a la duracion asignada. Los nodos son representados por nodos tipo G que arman
los mensajes entrantes, y cuando todo ha llegado, envia copias de los mensajes a las
actividades que salen del nodo.
Para cada actividad un registro es mantenido de el tiempo en que la actividad inicio
(arreglo MINST) y el tiempo que la actividad tomo.
El tiempo del mensaje cuando llega al nodo final es el tiempo crtico.
Con la informacion almacenada el u
ltimo tiempo de cada actividad es computarizado.
Este es el u
ltimo tiempo en que puede terminar sin retrasar la tarea completa. Esto
es hecho empezando con la u
ltima actividad (la cual su u
ltimo tiempo es el tiempo
44
crtico) y luego ir en retroceso hasta el nodo inicial. En cada una el tiempo inicial es
computarizado restando del tiempo final la duracion de la actividad. Las actividades
que terminan en el origen de la actividad considerada tienen el tiempo inicial como su
u
ltimo tiempo. Si en un nodo muchas actividades son originadas, para cada actividad
que termine en el puede haber diferentes valores de el u
ltimo tiempo. La menor cantidad sera considerada el verdadero u
ltimo tiempo porque un mayor tiempo retrasara
la tarea.
Con el u
ltimo tiempo y el tiempo mnimo de la iniciacion de cada actividad podemos
obtener el tiempo maximo permitido para cada actividad. Si restamos la duracion de
la actividad obtenemos el tiempo de holgura por actividad, es decir, cuanto tiempo
despues de el tiempo asignado puede ser retrasado sin retrasar toda la tarea. Las actividades que tienen el tiempo de holgura igual a cero son las actividades crticas y
forman el camino crtico. Debido a errores de redondeo pueden diferir de cero en el
orden de la precision de los calculos. Ellas son consideradas cero si tienen un valor
absoluto menor que 0.0000001.
Aunque el ejemplo es equivalente a un programa convencional de CPM, la flexibilidad
de el lenguaje permite una simulacion mas realista. La duracion de una actividad
puede depender de los recursos usados o compartidos con otras actividades. Los mensajes pueden contener informacion que permita la liberacion de recursos o cambiar la
duracion de otras actividades.
Otras estadsticas interesantes pueden ser agregadas: la distribucion de la duracion de
una tarea, la probabilidad de que una actividad resulte crtica, etc.
Los datos del ejemplo son: En unidades de tiempo
Actividad
Nodo Origen
Nodo Final
Mnimo
Normal
Maximo
45
14
16
20
11
10
3.12.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
Tipo
Rango
Estado
Dato
Valor
Inicial
Usuario
E (E)
Entero
[0,10]
Declarada
NC
Usuario
E (E)
Entero
[0,+]
Declarada/
Iniciada
AC
Usuario
E (E)
Entero
[0,10]
Declarada
ACLL
Usuario
E (E)
Entero
[0,10]
Declarada
ORAC
Usuario
E (E)
Entero
[0,10]
Declarada
TM
Usuario
E (E)
Real
[0,+]
Declarada
MINST
Usuario
R (R)
Arreglo
[0,+]
Declarada
MAXFT
Usuario
E (E)
Arreglo
[0,+]
Declarada
T ACT
Usuario
R (R)
Arreglo
[0,+]
Declarada
SLACK
Usuario
E (E)
Arreglo
[0,+]
Declarada
NODFA
Usuario
E (E)
Arreglo
[0,+]
Declarada/
(2,3,4,2,4,
Iniciada
5,6,7,7,8)
Declarada/
(1,1,1,3,3,
Iniciada
2,4,6,5,7)
NODOA
Usuario
E (E)
Arreglo
[0,+]
3.12.2
Variables Definidas
s
3.13 Lnea de autobu
46
3.12.3
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT( IA , 0 ) ;
ASSI NODOA[ 1 . . 1 0 ] : = ( 1 , 1 , 1 , 3 , 3 , 2 , 4 , 6 , 5 , 7 ) ; {Nodo o r i g e n de l a
actividad I}
ASSI NODFA[ 1 . . 1 0 ] : = ( 2 , 3 , 4 , 2 , 4 , 5 , 6 , 7 , 7 , 8 ) ; {Nodo f i n a l de l a
actividad
I}
NC: = 0 ;
( Dise n
o de Experimentos )
INTI (NODOA[ 1 . . 1 0 ] , Nodo Origen A c t i v i d a d , ( 1 , 1 , 1 , 3 , 3 , 2 , 4 , 6 , 5 , 7 )
,0) ;
INTI (NODFA[ 1 . . 1 0 ] , Nodo F i n a l A c t i v i d a d , ( 2 , 3 , 4 , 2 , 4 , 5 , 6 , 7 , 7 , 8 )
,0) ;
INTI (NC, N
umero C o r r i d a s , 0 , 0 ) ;
3.13
Lnea de autob
us
s
3.13 Lnea de autobu
47
Pasajeros llegan a cada parada en intervalos dados por una distribucion exponencial.
La media es diferente para cada parada. El destino es asignado a cada pasajero de forma
aleatoria por una distribucion frecuencial dada por la matriz de frecuencia origendestino. Filas I Columnas J es proporcional con la probabilidad de que un pasajero
tome el autob
us en la parada I y se baje en la parada J.
Cuando un autob
us alcanza una parada los pasajeros con ese destino se bajan del
autob
us. El n
umero de pasajeros que toman el autob
us es el mnimo entre la longitud
de la cola y la capacidad disponible en el autob
us. El autob
us viaja a la siguiente
parada. En la simulacion los autobuses son representados por mensajes que tienen
un campo ESBUS=TRUE que indica que el mensaje es un autob
us y un campo que
indica el n
umero actual de pasajeros.
Las paradas son simuladas como nodos R m
ultiplos del nodo STOP de dimension 6.
La carretera entre paradas es simulada como un nodo R TRAVEL de dimension 6.
Cuando un autob
us sale de la carretera representado por TRAVEL[J] va a la parada
STOP[J+1]. Si J es 6 va a STOP[1].
La funcion FORDEST computa de manera aleatoria el destino cuando el origen es
dado. El tiempo esta en minutos. Se desea una opcion para monitorear el movimiento
de los pasajeros en detalle.
El codigo original de este modelo es mostrado en la seccion A.13
3.13.1
Nombre
Tabla de An
alisis
Tipo
Uso
Variable
Tipo
Rango
Estado
Dato
Valor
Inicial
GETIN
Usuario
STOP (G)
Entero
[0,+]
Declarada
Usuario
TRAVEL (R)
Entero
[0,6]
Declarada
BUSCAP
Usuario
STOP (G)
Entero
[0,+]
Declarada/
50
Iniciada
OFF
Usuario
BUSGEN (I)
Entero
[0,+]
Declarada
NB
Usuario
BUSGEN (I)
Entero
[1,4]
Declarada/
Iniciada
P
Usuario
STOP (G)
Entero
[0,+]
Declarada/
Iniciada
s
3.13 Lnea de autobu
MOR
Usuario
48
Function
Arreglo
[0,+]
FORDEST
Declarada/
((0,12,17,
Iniciada
15,0,0),
(0,0,11,
15,0,0),
(0,0,0,
15,0,0),
(14,0,0,
0,9,17),
(15,0,0,
0,0,12),
(16,0,0,
0,0,0))
TBARR
Usuario
IT
ARRIV-
Arreglo
[0,+]
PASS (I)
TTRAVEL
TTTRAVEL
Usuario
Usuario
TRAVEL (R)
TRAVEL (R)
Arreglo
Arreglo
[0,+]
[0,+]
Declarada/
(2.8,3.2,3,
Iniciada
2.5,3.1,2.2)
Declarada/
(15,24,17,
Iniciada
17,24,15)
Declarada/
(0,0,0,0)
Iniciada
NTOTPAS
Usuario
RESULT (A)
Arreglo
[0,BUSCAP] Declarada/
Iniciada
ENTER
Usuario
STOP (G)
Logico
{Verdadero,
Declarada
Falso}
ESBUS
Mensajes/ ARRIVPASS
Usuario
DEST
ESBUS
(I)
Mensajes/ ARRIVPASS
Usuario
Logico
Declarada
Falso}
Entero
[0,+]
Declarada
Logico
{Verdadero,
Declarada
(I)
NPAS
{Verdadero,
Falso}
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada
Usuario
NBUS
(0,0,0,0)
s
3.13 Lnea de autobu
3.13.2
49
Variables Definidas
3.13.3
C
odigo Propuesto para Dise
no de Experimentos
s
3.13 Lnea de autobu
50
( Frecuencias )
( 0 , 0 , 0 ,15 , 0 , 0) ,
(14 , 0 , 0 , 0 , 9 ,17) ,
(15 , 0 , 0 , 0 , 0 ,12) ,
(16 , 0 , 0 , 0 , 0 , 0) ) ;
( Dise n
o de Experimentos )
INTI (BUSCAP, Capacidad Autob
us , 5 0 , 0 ) ;
INTI (MOR[ 1 . . 6 , 1 . . 6 ] , F r e c u e n c i a D e s t i n o s , ( ( 0 , 1 2 , 1 7 , 1 5 , 0 , 0 ,
(0 ,0 ,11 ,15 ,0 ,0) ,
(0 ,0 ,0 ,15 ,0 ,0) ,
(14 ,0 ,0 ,0 ,9 ,17) ,
(15 ,0 ,0 ,0 ,0 ,12) ,
(16 ,0 ,0 ,0 ,0 ,0) ) ,0) ;
INTI (P , P a s a j e r o , 0 , 0 ) ;
INTI (NB, N
umero Autob
us , 0 , 0 ) ;
INTI (TBARR[ 1 . . 6 ] , Tiempo L l eg ad a P a s a j e r o s Paradas
,(2.8 ,3.2 ,3 ,2.5 ,3.1 ,2.2) ,0) ;
INTI (TTRAVEL [ 1 . . 6 ] , Tiempo V i a j e Parada
,(15 ,24 ,17 ,17 ,24 ,15) ,0) ;
INTI (TTTRAVEL[ 1 . . 4 ] , Tiempo V i a j e T o t a l , ( 0 , 0 , 0 , 0 ) , 0 ) ;
INTI (NTOTPAS [ 1 . . 4 ] , N
umero P a s a j e r o s Autob
us , ( 0 , 0 , 0 , 0 ) , 0 ,
BUSCAP) ;
3.14
51
3.14.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
C1
Usuario
Tipo
Rango
Estado
Dato
RF (C)
Real
Valor
Inicial
[0,+]
Declarada/
0.18
Iniciada
C2
Usuario
RF (C)
Real
[0,+]
Declarada/
0.00015
Iniciada
C3
Usuario
RF (C)
Real
[0,+]
Declarada/
0.2
Iniciada
C4
Usuario
RF (C)
Real
[0,+]
Declarada/
0.0001
Iniciada
RM
Usuario
RF (C)
Real
[0,+]
Declarada/
Iniciada
20000
Usuario
RF (C)
52
Continuo
[0,RM]
Declarada/
1000
Iniciada
F
Usuario
RF (C)
Continuo
[0,+]
Declarada/
750
Iniciada
Tabla 3.17: Analisis de Sistema Presa Depredador
3.14.2
Variables Definidas
C1, C2, C3 ,C4 IR [0,+] son variables utilizadas en los calculos de RF.
R Continuo [0,RM] y RM IR [0,+] definen la poblacion de conejos y la
cantidad maxima de conejos posible.
F Continuo [0,+] define la poblacion de zorros.
gico perturbado
3.15 Sistema ecolo
3.14.3
53
C
odigo Propuesto para Dise
no de Experimentos
( Valor I n i c i a l )
RM: = 2 0 0 0 0 ;
( Para metros )
C1 : = 0 . 1 8 ;
C2 : = 0 . 0 0 0 1 5 ;
C3 : = 0 . 2 ;
C4 : = 0 . 0 0 0 1 ;
DT RF: = 0 . 1 2 5 ;
( Dise n
o de Experimentos )
INTI (R, P o b l a c i o n Conejos , 1 0 0 0 , 0 ,RM) ;
INTI (F , P o b l a c i o n Z o r r o s , 7 5 0 , 0 ) ;
INTI (RM, P o b l a c i o n Maxima Conejos , 2 0 0 0 0 , 0 ) ;
INTI (C1 , V a r i a b l e Ecuacio n LotkaV o l t e r r a , 0 . 1 8 , 0 ) ;
INTI (C2 , V a r i a b l e Ecuacio n LotkaV o l t e r r a , 0 . 0 0 0 1 5 , 0 ) ;
INTI (C3 , V a r i a b l e Ecuacio n LotkaV o l t e r r a , 0 . 2 , 0 ) ;
INTI (C4 , V a r i a b l e Ecuacio n LotkaV o l t e r r a , 0 . 0 0 0 1 , 0 ) ;
3.15
Sistema ecol
ogico perturbado
gico perturbado
3.15 Sistema ecolo
54
3.15.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
RespP
Usuario
Tipo
Rango
Dato
CHANGES
Real
Usuario
CHANGES
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
(C)
Declarada/
0.976823
Declarada/
0.71199
Declarada/
11.3855
Iniciada
Real
[0,+]
(C)
MortH
0.00627
Iniciada
(C)
ConsHC
Declarada/
Iniciada
(C)
RespH
3.70117
Iniciada
(C)
MigrP
Declarada/
Iniciada
(C)
MortP
Valor
Inicial
(C)
ConsPH
Estado
Declarada/
0.04614
Iniciada
Real
[0,+]
Declarada/
Iniciada
8.63253
gico perturbado
3.15 Sistema ecolo
MigrH
Usuario
CHANGES
55
Real
[0,+]
(C)
RespC
Usuario
CHANGES
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Real
[0,+]
Usuario
CHANGES
Declarada/
1.85714
Declarada/
Declarada/
0.14286
Declarada/
0.99000
Declarada/
0.29090
Iniciada
Real
[0,+]
(C)
SUN
0.00280
Iniciada
(C)
MigrD
Declarada/
Iniciada
(C)
MortD
0.7800
Iniciada
(C)
RespD
Declarada/
Iniciada
(C)
MigrS
0.0600
Iniciada
(C)
MortS
Declarada/
Iniciada
(C)
RespS
6.32
Iniciada
(C)
MigrC
Declarada/
Iniciada
(C)
MortC
0.00537
Iniciada
(C)
ConsCS
Declarada/
Declarada/
1.81820
Iniciada
Real
[0,+]
Declarada
Real
[0,+]
Declarada/
(C)
MSUN
Usuario
CHANGES
(C)
EntrH
Usuario
CHANGES
Iniciada
Real
[0,+]
(C)
D
Usuario
CONTAM (A)
1700000
Declarada/
486
Iniciada
Continuo
[0,+]
Declarada/
22
Iniciada
S
Usuario
CHANGES
Continuo
[0,+]
(C)
C
Usuario
CHANGES
Usuario
CHANGES
(C)
Iniciada
Continuo
[0,+]
(C)
H
Declarada/
Declarada/
50
Iniciada
Continuo
[0,+]
Declarada/
Iniciada
166
gico perturbado
3.15 Sistema ecolo
Usuario
EXTRAC (A)
56
Continuo
[0,+]
Declarada/
3236
Iniciada
PhotE
Usuario
CHANGES
RET:3?
[0,+]
(C)
TSIM
Sistema
Declarada/
0.01282
Iniciada
Entero
(0,+]
Iniciada
300
3.15.2
Variables Definidas
3.15.3
C
odigo Propuesto para Dise
no de Experimentos
gico perturbado
3.15 Sistema ecolo
57
( r e s p i r a c i o n de l o s p r o d u c t o r e s )
ConsPH : = 0 . 0 0 6 2 7 ;
( p r o d u c t o r e s consumidos por h e r bv o r o s )
MortP : = 0 . 9 7 6 8 2 3 ;
( m o r t a l i d a d de l o s p r o d u c t o r e s )
MigrP : = 0 . 7 1 1 9 9 ;
( m i g r a c i o n de l o s p r o d u c t o r e s )
RespH : = 1 1 . 3 8 5 5 ;
( r e s p i r a c i o n de l o s h e r bv o r o s )
ConsHC: = 0 . 0 4 6 1 4 ;
( h e r bv o r o s consumidos por c a r nv o r o s )
MortH : = 8 . 6 3 2 5 3 ;
( m o r t a l i d a d de l o s h e r bv o r o s )
MigrH : = 0 . 0 0 5 3 7 ;
( m i g r a c i o n de l o s h e r bv o r o s )
RespC : = 6 . 3 2 0 0 ;
( r e s p i r a c i o n de l o s c a r nv o r o s p r i m a r i o s )
ConsCS : = 0 . 0 6 0 0 ;
( consumo de l o s c a r nv o r o s p r i m a r i o s por
secundarios )
MortC : = 0 . 7 8 0 0 ;
( m o r t a l i d a d de c a r nv o r o s p r i m a r i o s )
MigrC : = 0 . 0 0 2 8 0 ;
( m i g r a c i o n de c a r nv o r o s p r i m a r i o s )
RespS : = 1 . 8 5 7 1 4 ;
( r e s p i r a c i o n de c a r nv o r o s s e c u n d a r i o s )
MortS : = 1 . 0 0 0 0 0 ;
( m o r t a l i d a d de c a r nv o r o s s e c u n d a r i o s )
MigrS : = 0 . 1 4 2 8 6 ;
( m i g r a c i o n de c a r nv o r o s s e c u n d a r i o s )
RespD : = 0 . 9 9 0 0 0 ;
( r e s p i r a c i o n de l o s descomponedores )
MortD : = 0 . 2 9 0 9 0 ;
( m o r t a l i d a d de l o s descomponedores )
MigrD : = 1 . 8 1 8 2 0 ;
( m i g r a c i o n de l o s descomponedores )
MSUN:=1700000 ;
EntrH :=486
)
( V a l o r e s i n i c i a l e s de l a s v a r i a b l e s )
P:=3236
( Biomasa ( e n e r ga ) de l o s p r o d u c t o r e s
primarios )
H:=166
( Biomasa ( e n e r ga ) de l o s h e r bv o r o s )
C:=50
( Biomasa ( e n e r ga ) de l o s c a r nv o r o s )
S:=7
( Biomasa ( e n e r ga ) de l o s s e c u n d a r i o s )
D:=22
( Biomasa ( e n e r ga ) de l o s descomponedores )
DT CHANGES: = 0 . 0 0 7 8 1 2 5 ;
58
( Dise n
o de Experimentos )
INTI ( RespP , R e s p i r a c i o n P r o d u c t o r e s , 3 . 7 0 1 1 7 , 0 ) ;
INTI ( MortP , M o r t a l i d a d P r o d u c t o r e s , 0 . 9 7 6 8 2 3 , 0 ) ;
INTI ( MigrP , M i g r a c i o n P r o d u c t o r e s , 0 . 7 1 1 9 9 , 0 ) ;
INTI ( ConsPH , Consumo P r o d u c t o r e s , 0 . 0 0 6 2 7 , 0 ) ;
INTI ( RespH , R e s p i r a c i o n H e r vb o r o s , 1 1 . 3 8 5 5 , 0 ) ;
INTI ( MortH , M o r t a l i d a d H e r vb o r o s , 8 . 6 3 2 5 3 , 0 ) ;
INTI ( MigrH , M i g r a c i o n H e r vb o r o s , 0 . 0 0 5 3 7 , 0 ) ;
INTI ( ConsHC , Consumo H e r vb o r o s , 0 . 0 4 6 1 4 , 0 ) ;
INTI ( RespC , R e s p i r a c i o n C a r nv o r o s , 6 . 3 2 , 0 ) ;
INTI ( MortC , M o r t a l i d a d C a r nv o r o s , 0 . 7 8 0 0 , 0 ) ;
INTI ( MigrC , M i g r a c i o n C a r nv o r o s , 0 . 0 0 2 8 0 , 0 ) ;
INTI ( ConsCS , Consumo C a r nv o r o s , 0 . 0 6 0 0 , 0 ) ;
INTI ( RespS , R e s p i r a c i o n S e c u n d a r i o s , 1 . 8 5 7 1 4 , 0 ) ;
INTI ( MortS , M o r t a l i d a d S e c u n d a r i o s , 1 , 0 ) ;
INTI ( MigrS , M i g r a c i o n S e c u n d a r i o s , 0 . 1 4 2 8 6 , 0 ) ;
INTI ( RespD , R e s p i r a c i o n DescomponedoreS , 0 . 9 9 0 0 0 , 0 ) ;
INTI ( MortD , M o r t a l i d a d Descomponedores , 0 . 2 9 0 9 0 , 0 ) ;
INTI ( MigrD , M i g r a c i o n Descomponedores , 1 . 8 1 8 2 0 , 0 ) ;
INTI (MSUN, Media E n e r ga S o l a r , 1 7 0 0 0 0 0 , 0 ) ;
INTI (P , Biomasa P r o d u c t o r e s , 3 2 3 6 , 0 ) ;
INTI (H, Biomasa H e r vb o r o s , 1 6 6 , 0 ) ;
INTI (C, Biomasa C a r nv o r o s , 5 0 , 0 ) ;
INTI ( S , Biomasa S e c u n d a r i o s , 7 , 0 ) ;
INTI (D, Biomasa Descomponedores , 2 2 , 0 ) ;
INTI ( PhotEff , A b s o r c i o n E n e r ga V e g e t a l , 0 . 0 1 2 8 2 , 0 ) ;
INTI ( EntrH , Entrada E n e r ga H e r vb o r o s , 4 8 6 , 0 ) ;
3.16
Sistema din
amico (Puerta Oscilante)
Una puerta tiene un momento de inercia I respecto al eje de las abscisas de rotacion.
Se cierra automaticamente, luego de abrir, por medio de una elastica de constante K
Kg.m2 /s2 . Tambien tiene un interruptor para las oscilaciones con una constante R
Kg.m/s.
59
3.16.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
W
Usuario
Tipo
Rango
Estado
Dato
C (C)
Continuo
Valor
Inicial
[0,+]
Declarada/
0.0
Iniciada
Z
Usuario
C (C)
Continuo
[0,+]
Declarada/
1.4
Iniciada
R
Usuario
C (C)
Real
[0,+]
Declarada/
0.1
Iniciada
K
Usuario
C (C)
Real
[0,+]
Declarada/
0.9
Iniciada
I
Usuario
C (C)
Real
[0,+]
Declarada/
1.2
Iniciada
TSIM
Sistema
Entero
(0,+]
Iniciada
80
3.16.2
60
Variables Definidas
3.16.3
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT(C, 0 ) ;
Z:=1.4;
W: = 0 . 0 ;
R: = 0 . 1 ;
K: = 0 . 9 ;
I :=1.2;
TSIM: = 8 0 ;
DT C: = 0 . 0 6 2 5 ;
( Dise n
o de Experimentos )
INTI ( I , Momeno I n e r c i a , 1 . 2 , 0 ) ;
INTI (R, Constante Amortiguacio n , 1 . 4 , 0 ) ;
INTI (K, Constante E l a s t i c i d a d , 0 . 9 , 0 ) ;
INTI (W, V e l o c i d a d Angular , 0 . 0 , 0 ) ;
INTI ( Z , Angulo
,1.4 ,0) ;
3.17
Gr
afico de la cola normal y antit
etica
Dos sistemas de servicio simple, cada uno similar al ejemplo 3 son simulados en el
mismo programa. El primero es tomado como el experimento normal. El segundo es
el experimento antitetico. En el antitetico los valores aleatorios generados son anticorrelacionados con los valores correspondientes del experimento normal. Como en el
caso simple los efectos o las variables aleatorias tienen efectos de la misma forma en
61
ambos experimentos como es esperado, cuando los valores de las variables del sistema
en el experimento normal se desvian del valor medio en una direccion en el antitetico se
desvian en la direccion opuesta. El valor promedio se supone que tendra menor diferencia que el normal y el antitetico. En el sistema GLIDER el antitetico es obtenido
tomando la semilla de un n
umero aleatorio igual a la semilla del normal con signo
negativo. En este experimento basado en variantes aleatorias en tecnicas de rechazo
deben ser evitadas por la desincronizacion de las series de n
umeros aleatorios.
En TIME=600 las estadsticas son inicializadas para evitar efectos transitorios iniciales. Una grafica de salida muestra la longitud de la cola en los experimentos normal,
antitetico y el promedio.
El codigo original de este modelo es mostrado en la seccion A.17
3.17.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
TAT
Usuario
Tipo
Rango
Estado
Dato
Stay TIC (R)
Real
Valor
Inicial
[0,+]
Declarada/
3.99
Iniciada
RLT
Usuario
GRA (A)
Real
[0,+]
Declarada/
Iniciada
RLA
Usuario
GRA (A)
Real
[0,+]
Declarada/
Iniciada
RLM
Usuario
TSIM
Sistema
GRA (A)
Real
[0,+]
Declarada
Entero
(0,+]
Iniciada
12000
3.17.2
Variables Definidas
3.17.3
62
C
odigo Propuesto para Dise
no de Experimentos
TAT: = 3 . 9 9 ;
( Para metros )
( Dise n
o de Experimentos )
INTI (TAT, Tiempo E s t a da , 3 . 9 9 , 0 ) ;
INTI (RLT, Tama
no Cola Normal , 0 , 0 ) ;
INTI (RLA, Tama
no Cola A n t i t e t i c a , 0 , 0 ) ;
3.18
Puerto petrolero
63
vacos. El tiempo entre llegadas efectivas es diferente por cada tipo, y puede ser
aproximado por una distribucion triangular con parametros (mnimo, moda y maximo)
dependiendo del tipo de barco.
Si el barco tiene que esperar mas de 42 horas desde su llegada al puerto hasta su
salida, una multa debe ser pagada al due
no del barco de acuerdo con el tiempo en
exceso. Vol
umenes estan en mb millones de barriles, tiempo esta en das.
En el modelo, experimentos pueden ser hechos cambiando la capacidad de los tanques y
la velocidad de bombeo (ambos costosos), intentando evitar largos tiempos de detencion
en los flujos de petroleo (que pueden resultar en cierres costosos de los pozos) y largos
tiempos de espera de los barcos (que puede resultar en multas).
El programa tiene un monitoreo grafico del contenido de los tanques y produce un
reporte final con el petroleo bombeado y las multas.
El codigo original de este modelo es mostrado en la seccion A.18
3.18.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
FILLRATE
Usuario
Tipo
Rango
Estado
[0,+]
Declarada/ (32,56.5,145,
Dato
TANK (C)
Arreglo
Iniciada
PUMPRATE
Usuario
Valor Inicial
TANK (C)
Arreglo
[0,+]
80,150)
1000,
1200,
1000)
VMAX
Usuario
TANK (C)
Arreglo
[VMIN,
+]
Iniciada
1780,
1700,
1510)
VMIN
Usuario
TANK (C)
Arreglo
[0,VMAX]
Declarada/ (90,60,60,
Iniciada
VFTANK
Usuario
TANK (C)
Arreglo
80,60)
[VMIN,
VMAX]
Iniciada
1760,
1630,
1490)
VFTANKER
Usuario
TANK (C)
Arreglo
[0,+]
Declarada/ (140,100,
Iniciada
100,140,
100)
FILL
Usuario
64
TANK (C)
Arreglo
[0,+]
Declarada/ (1,1,1,1,1)
Iniciada
PUMP
Usuario
TANK (C)
Arreglo
[0,+]
Declarada/ (0,0,0,0,0)
Iniciada
SIZETANKER
Usuario
PUMPING
Arreglo
[0,+]
(C)
1000,
1000,
1000)
SIZET
Usuario
ENTRANCE
Arreglo
[0,+]
(G)
Declarada/ (200,300,
Iniciada
500,700,
900)
FINE
Usuario
EXIT (E)
Arreglo
[0,+]
Declarada/ (0,0,0,0,0)
Iniciada
TSHUT
Usuario
TANK (C)
Arreglo
[0,+]
Declarada/ (0,0,0,0,0)
Iniciada
TTSHUT
Usuario
TANK (C)
Arreglo
[0,+]
Declarada/ (0,0,0,0,0)
Iniciada
VTANK
Usuario
TANK (C)
Arreglo
[0,+]
Declarada/ (250,300,
Iniciada
350,300,
466)
VTT
Usuario
Volumen
Arreglo
[0,+]
PUMPING
Declarada/ (0,0,0,0,0)
Iniciada
(C)
VTANKER
Usuario
PUMPING
Arreglo
[0,+]
(C)
TBAMIN
Usuario
IT ARRIVAL
(I)
Declarada/ (0,0,0,0,0)
Iniciada
Arreglo
[0,
Declarada/ (12.6,10.17,7.1
TBAMO]
Iniciada
3,16.25,10.17,
22.3,16.25,
5.3,34.5,12.6,
0,34.5,16.25,
43.63,34.5,0,
0,28.42,180.5,
43.63,0,0,43.5,
119.67,71)
TBAMO
Usuario
65
IT ARRIVAL
Arreglo
(I)
Iniciada
MAX]
3,18.25,12.17,
24.33,18.25,
7.3,36.5,14.6,
0,36.5,16.25,
43.63,34.5,0,0,
28.42,180.5,
43.63,0,0,43.5,
119.67,71)
TBAMAX
Usuario
IT ARRIVAL
Arreglo
(I)
[TBAMO,
Declarada/ (16.6,14.17,1
+]
Iniciada
1.13,20.25,14.1
7,26.33,20.25,
9.3,38.5,16.6,
0,38.5,20.25,
47.63,38.5,0,
0,32.42,184.5,
47.63,0,0,47.5,
123.67,75)
Usuario
TANK (C)
Entero
[0,+]
Declarada
Usuario
ARRIVAL (I)
Entero
[0,+]
Declarada/ 0
Iniciada
CH
Usuario
ARRIVAL (I)
Caracter
Alfanum
Declarada
FINETAX
Usuario
EXIT (E)
Real
[0,+]
Declarada/ 300
Iniciada
TPLL
Usuario
PRIMA-
Real
[0,+]
Declarada
Real
[0,+]
Declarada
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada
Entero
[0,+]
Declarada
RRIVAL (A)
TE
Usuario
EXIT (E)
TYP
BERT
SIZE
3.18.2
66
Variables Definidas
3.18.3
67
C
odigo Propuesto para Dise
no de Experimentos
10.17 ,
22.33 , 16.25 ,
5.3 ,
34.5 ,
0.0 ,
34.5 ,
0.0 ,
0.0 ,
0.0 ,
0.0 ,
ASSI TBAMO[ 1 . . 2 5 ] : = ( 1 4 . 6 ,
12.17 ,
24.33 , 18.25 ,
ASSI TBAMAX[ 1 . . 2 5 ] : = ( 1 6 . 6 ,
0.0 ,
36.5 ,
0.0 ,
0.0
0.0 ,
0.0 ,
7.3 ,
36.5 ,
,45.63 ,
38.5 ,
16.6 ,
0.0 ,
38.5 ,
0.0 ,
0.0 ,
0.0 ,
0.0 ,
ASSI SIZET [ 1 . . 5 ] : = ( 2 0 0 , 3 0 0 , 5 0 0 , 7 0 0 , 9 0 0 ) ;
ASSI SIZETANKER[ 1 . . 5 ] : = ( 1 0 0 0 , 1 0 0 0 , 1 0 0 0 , 1 0 0 0 , 1 0 0 0 ) ;
EREL: = 1 0 0 0 0 ;
14.6 ,
EABS: = 1 0 0 0 0 ;
12.6 ,
68
DT TANK: = 0 . 0 3 1 2 5 ;
DT PUMPING: = 0 . 0 3 1 2 5 ;
FINETAX: = 3 0 0 ;
ASSI FINE [ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
VTANK[ 1 ] : = 2 5 0 ;
VTANK[ 2 ] : = 3 0 0 ;
VTANK[ 3 ] : = 3 5 0 ;
VTANK[ 4 ] : = 3 0 0 ;
VTANK[ 5 ] : = 4 6 6 ;
ASSI VTT[ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
ASSI VTANKER[ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
R: = 0 ;
( Dise n
o de Experimentos )
INTI (TBAMIN [ 1 . . 2 5 ] , I n t e r v a l o Ll eg ad a Mnimo
,(12.6 ,10.17 ,7.13 ,16.25 ,10.17 ,22.3 ,
16.25 ,5.3 ,34.5 ,12.6 ,0 ,34.5 ,16.25 ,
4 3 . 6 3 , 3 4 . 5 , 0 , 0 , 2 8 . 4 2 , 1 8 0 . 5 , 4 3 . 6 3 , 0 , 0 , 4 3 . 5 , 1 1 9 . 6 7 , 7 1 ) , 0 ,TBAMO) ;
INTI (TBAMO[ 1 . . 2 5 ] , I n t e r v a l o Lleg a da Promedio
,(14.6 ,12.17 ,9.13 ,18.25 ,12.17 ,24.33 ,
18.25 ,7.3 ,36.5 ,14.6 ,0 ,36.5 ,16.25 ,
4 3 . 6 3 , 3 4 . 5 , 0 , 0 , 2 8 . 4 2 , 1 8 0 . 5 , 4 3 . 6 3 , 0 , 0 , 4 3 . 5 , 1 1 9 . 6 7 , 7 1 ) ,TBAMIN,TBAMAX
);
INTI (TBAMAX[ 1 . . 2 5 ] , I n t e r v a l o L leg a da Maximo
,(16.6 ,14.17 ,11.13 ,20.25 ,14.17 ,26.33 ,
20.25 ,9.3 ,38.5 ,16.6 ,0 ,38.5 ,20.25 ,
4 7 . 6 3 , 3 8 . 5 , 0 , 0 , 3 2 . 4 2 , 1 8 4 . 5 , 4 7 . 6 3 , 0 , 0 , 4 7 . 5 , 1 2 3 . 6 7 , 7 5 ) ,TBAMO) ;
n de piloto de un avio
n
3.19 Eyeccio
69
3.19
Eyecci
on de piloto de un avi
on
n de piloto de un avio
n
3.19 Eyeccio
70
n de piloto de un avio
n
3.19 Eyeccio
71
3.19.1
Tabla de An
alisis
Nombre
Tipo
Uso
Tipo Dato
Rango
Estado
Variable
X
Usuario
Valor
Inicial
CA (C)
Continuo
[0,+]
Declarada/
Iniciada
Y
Usuario
CA (C)
Continuo
[0,+]
Declarada/
Iniciada
V
Usuario
CA (C)
Continuo
[0,+]
Declarada
TH
Usuario
CA (C)
Continuo
[0,+]
Declarada/
0.2618
Iniciada
PAS
Usuario
CA (C)
Logico
{Verdadero,
Declarada/
Falso}
Iniciada
Usuario
CA (C)
Real
[0,+]
Declarada
CD
Usuario
CA (C)
Real
[0,+]
Declarada/
Verdadero
Iniciada
VP
Usuario
CA (C)
Real
[0,+]
Declarada/
275
Iniciada
G
Usuario
CA (C)
Real
[0,+]
Declarada/
9.80
Iniciada
P
Usuario
CA (C)
Real
[0,+]
Declarada/
1.22
Iniciada
VE
Usuario
CA (C)
Real
[0,+]
Declarada/
12.2
Iniciada
M
Usuario
CA (C)
Real
[0,+]
Declarada/
Iniciada
102
n de piloto de un avio
n
3.19 Eyeccio
Usuario
CA (C)
Real
72
[0,+]
Declarada/
0.93
Iniciada
Y1
Usuario
CA (C)
Real
[0,+]
Declarada/
1.22
Iniciada
VX
Usuario
CA (C)
Real
[0,+]
Declarada
VY
Usuario
CA (C)
Real
[0,+]
Declarada
HCRIT
Usuario
FIN (A)
Real
[0,+]
Declarada
Usuario
CA (C)
Entero
[0,+]
Declarada/
Iniciada
Tabla 3.22: Analisis de Eyeccion de piloto de un avion
3.19.2
Variables Definidas
n de piloto de un avio
n
3.19 Eyeccio
3.19.3
C
odigo Propuesto para Dise
no de Experimentos
( P o s i c i o n i n i c i a l d e l punto de e y e c c i o n )
CD: = 1 . 0 ;
( c o e f i c i e n t e de a r r a s t r e )
VP: = 2 7 5 . 0 ;
( V e l o c i d a d d e l a v i o n M/S )
G: = 9 . 8 0 ;
( a c e l e r a c i o n de l a gravedad M/S2 )
P: = 1 . 2 2 ;
TH: = 0 . 2 6 1 8 ;
( Densidad d e l a i r e K/M3 )
( Angulo
de e y e c c i o n ( 1 5 Gr ) )
VE: = 1 2 . 2 ;
( V e l o c i d a d de e y e c c i o n M/S )
M: = 1 0 2 . 0 ;
( Masa e x p u l s a d a Kg )
S:=0.93;
( Area e f e c t i v a d e l c u e r p o e x p u l s a d o M2 )
Y1 : = 1 . 2 2 ;
( l o n g i t u d de l a e s c a l e r a de e y e c c i o n m )
PAS:=TRUE;
( A l t u r a c r t i c a no r e g i s t r a d a a
un )
( V e l o c i d a d y a n g u l o de s e p a r a c i o n )
VX:=VPVESIN (TH) ;
VY:=VECOS(TH) ;
V:=SQRT(VXVX+VYVY ) ;
TH:=ARCTAN(VY/VX) ;
K: = 0 ;
DT CA: = 0 . 0 0 8 ;
( Dise n
o de Experimentos )
INTI (X, P o s i c i o n I n i c i a l X , 0 , 0 ) ;
INTI (Y, P o s i c i o n I n i c i a l Y , 0 , 0 ) ;
INTI (M, Masa EXpulsada , 1 0 2 , 0 ) ;
INTI ( S , Area
E f e c t i v a Cuerpo , 0 . 9 3 , 0 ) ;
73
3.20
74
Atractor Lorenz
3.20.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
X
Usuario
Tipo
Rango
Estado
Dato
CON (C)
Continuo
Valor
Inicial
[0,+]
Declarada/
Iniciada
Y
Usuario
CON (C)
Continuo
[0,+]
Declarada/
Iniciada
Z
Usuario
CON (C)
Continuo
[0,+]
Declarada/
Iniciada
TSIM
Sistema
Entero
[0,+]
Iniciada
300
3.20.2
Variables Definidas
X, Y, Z Continuo [0,+] son variables que forman las ecuaciones del sistema.
3.20.3
75
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT(CON, 0 ) ;
TSIM: = 3 0 0 ;
X: = 1 ;
Y: = 1 ;
Z:=1;
DT CON: = 0 . 0 6 2 5 ;
( Dise n
o de Experimentos )
INTI (X, V a r i a b l e Ecuacio n , 1 , 0 ) ;
INTI (Y, V a r i a b l e Ecuacio n , 1 , 0 ) ;
INTI ( Z , V a r i a b l e Ecuacio n , 1 , 0 ) ;
3.21
Este modelo del sistema mundial toma en cuenta la poblacion, recursos naturales,
produccion de bienes y servicios, producion de comida y polucion.
El n
umero de ecuaciones corresponden a parrafos en el captulo 3 del libro de Forrester.
El codigo original de este modelo es mostrado en la seccion A.21
3.21.1
Tabla de An
alisis
Nombre
Tipo
Uso
Variable
Tipo
Rango
Estado
Dato
Valor
Inicial
POP
Usuario
MODEL (C)
Continuo
[0,+]
Declarada
CAP
Usuario
MODEL (C)
Continuo
[0,+]
Declarada
NR
Usuario
MODEL (C)
Continuo
[0,+]
Declarada
POLN
Usuario
MODEL (C)
Continuo
[0,+]
Declarada/
Iniciada
BRN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
0.04
Iniciada
DRN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
0.028
CGN
Usuario
MODEL (C)
76
Real
[0,+]
Declarada/
0.05
Iniciada
CDN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
0.025
Iniciada
CAR
Usuario
MODEL (C)
Real
[0,+]
Declarada
NRFR
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
NRUN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
NRI
Usuario
MODEL (C)
Real
[0,+]
Declarada
MSL
Usuario
MODEL (C)
Real
[0,+]
Declarada/
0.25
Iniciada
FR
Usuario
MODEL (C)
Real
[0,+]
Declarada/
0.3
Iniciada
CRA
Usuario
MODEL (C)
Real
[0,+]
Declarada
CR
Usuario
MODEL (C)
Real
[0,+]
Declarada
ECR
Usuario
MODEL (C)
Real
[0,+]
Declarada/
0.25
Iniciada
PG
Usuario
MODEL (C)
Real
[0,+]
Declarada
PA
Usuario
MODEL (C)
Real
[0,+]
Declarada
QLS
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
CAQR
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
LAND
Usuario
MODEL (C)
Real
[0,+]
Declarada/
135e6
Iniciada
PDN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
26.5
Iniciada
CAFT
Usuario
MODEL (C)
Real
[0,+]
Declarada/
15
Iniciada
FN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
ECRN
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
POLS
Usuario
MODEL (C)
Real
[0,+]
Declarada/
Iniciada
3.6e9
TSIM
Sistema
77
Entero
[0,+]
Iniciada
230
3.21.2
Variables Definidas
3.21.3
C
odigo Propuesto para Dise
no de Experimentos
INIT ACT(MODEL, 0 ) ;
TSIM: = 2 3 0 ;
( Primera a c t i v a c i o n d e l modelo )
( Tiempo S i m u l a c i o n )
( Para metros y v a l o r e s e s t a n d a r s ( n o r m a l e s ) )
BRN: = 0 . 0 4 ;
( C o e f i c i e n t e t a z a n a t a l i d a d , normal )
DRN: = 0 . 0 2 8 ;
( C o e f i c i e n t e t a z a m o r t a l i d a d , normal )
NRUN: = 1 ;
FC: = 1 ;
( Taza a l i m e n t o s , normal en 1 9 7 0 )
CGN: = 0 . 0 5 ;
( C o e f i c i e n t e de t a z a de c r e c i m i e n t o de c a p i t a l ,
normal )
CDN: = 0 . 0 2 5 ;
( C o e f i c i e n t e de t a z a de d e s t r u c c i o n de c a p i t a l )
POLN: = 1 ;
( Taza p o l u c i o n , normal 1 en 1 9 7 0 )
ECRN: = 1 ;
( Taza normal de c a p i t a l e f e c t i v o )
LAND:=135E+6;
( Terreno t o t a l Km2 )
PDN: = 2 6 . 5 ;
( Normal d e n s i d a d de p o b l a c i o n ( 1 9 7 0 ) )
CAFT: = 1 5 . 0 ;
( A j u s t e de r e t r a s o de f r a c c i o n de c a p i t a l de
agricultura
FN: = 1 ;
FR: = 0 . 3 ;
( F r a c c i o n de c a p i t a l en a g r i c u l t u r a , i n i c i a l )
POLS: = 3 . 6E+9;
( P o l u c i o n en 1 9 7 0 )
( Variables in te rm edi ar ia s , v a l o r e s i n i c i a l e s )
QLS : = 1 . 0 ;
( Estandar de l a c a l i d a d de v i d a ( 1 9 7 0 ) )
MSL: = 0 . 2 5 ;
( M a t e r i a l e s t a n d a r de v i d a i n i c i a l ( 1 9 0 0 ) )
CAQR: = 2 ;
( Taza i n i c i a l de c a l i d a d de v i d a )
ECR: = 0 . 2 5 ;
( Taza i n i c i a l de c a p i t a l e f e c t i v o )
NRFR: = 1 ;
( F r a c c i o n de r e c u r s o s n a t u r a l e s n a c i o n a l e s
r e s t a n t e s ; 1 en 1 9 0 0 )
DT MODEL: = 0 . 5 ;
( I n t e r v a l o de i n t e g r a c i o n )
( Funciones ( M u l t i p l i c a d o r e s ) )
BRMM: = 0 . 0 1 , 0 / 0 , 1 . 2 / 1 , 1 . 0 / 2 , 0 . 8 5 / 3 , 0 . 7 5 / 4 , 0 . 7 / 5 , 0 . 7 ; { 3 }
BRFM: = 0 , 0 / 1 , 1 / 2 , 1 . 6 / 3 , 1 . 9 / 4 , 2 . 0 ; { 1 7 }
78
BRCM: = 0 . 0 1 , 0 / 0 , 1 . 0 5 / 1 , 1 . 0 / 2 , 0 . 9 / 3 , 0 . 7 / 4 , 0 . 6 / 5 , 0 . 5 5 / 7 , 0 . 5 5 ; { 1 6 }
BRPM: = 0 . 0 1 , 0 / 0 , 1 . 0 2 / 1 0 , 0 . 9 / 2 0 , 0 . 7 / 3 0 , 0 . 4 /
40 ,0.25/50 ,0.15/60 ,0.1;{18}
DRMM: = 0 . 0 1 , 0 / 0 , 3 . 0 / 0 . 5 , 1 . 8 / 1 . 0 , 1 . 0 / 1 . 5 , 0 . 8 / 2 . 0 , 0 . 7 / 2 . 5 , 0 . 6 /
3.0 ,0.53/3.5 ,0.5/4.0 ,0.5/4.5 ,0.5/5.0 ,0.5;{11}
DRFM: = 0 . 0 1 , 0 / 0 . 0 , 3 0 / 0 . 2 5 , 3 / 0 . 5 0 , 2 / 0 . 7 5 , 1 . 4 / 1 . 0 , 1 . 0 / 1 . 2 5 , 0 . 7 /
1.50 ,0.6/1.75 ,0.50/2.0 ,0.50/3.0 ,0.50;{13}
DRCM: = 0 . 0 1 , 0 / 0 , 0 . 9 / 1 , 1 / 2 , 1 . 2 / 3 , 1 . 5 / 4 , 1 . 9 / 5 , 3 ;
DRPM: = 0 . 0 1 , 0 / 0 , 0 . 9 2 / 1 0 , 1 . 3 / 2 0 , 2 . 0 / 3 0 , 3 . 2 /
40 ,4.8/50 ,6.8/60 ,9.2;{12}
CFFR: = 0 . 0 1 , 0 / 0 . 0 , 1 . 0 / 0 . 5 , 0 . 6 / 1 . 0 , 0 . 3 /
1.5 ,0.15/2.0 ,0.1/3.0 ,0.1;{36}
NREM: = 0 . 0 , 0 . 0 / 0 . 2 5 , 0 . 1 5 / 0 . 5 0 , 0 . 5 0 / 0 . 7 5 , 0 . 8 5 / 1 . 0 , 1 . 0 ; { 6 }
CMM: = 0 . 0 1 , 0 / 0 . 0 , 0 . 1 / 1 . 0 , 1 . 0 / 2 . 0 , 1 . 8 / 3 . 0 , 2 . 4 /
4.0 ,2.8/5.0 ,3.0;{26}
FCM: = 0 . 0 1 , 0 / 0 , 2 . 4 / 1 , 1 / 2 , 0 . 6 / 3 , 0 . 4 / 4 , 0 . 3 / 5 , 0 . 2 ; { 2 0 }
FPM: = 0 . 0 1 , 0 / 0 , 1 . 0 2 / 1 0 , 0 . 9 / 2 0 , 0 . 6 5 / 3 0 , 0 . 3 5 / 4 0 , 0 . 2 /
50 ,0.1/60 ,0.05;{28}
FPC: = 0 . 0 1 , 0 / 0 , 0 . 5 / 1 , 1 / 2 , 1 . 4 / 3 , 1 . 7 / 4 , 1 . 9 / 5 , 2 . 0 5 / 6 , 2 . 2 ; { 2 1 }
NRMM: = 0 , 0 . 0 / 1 , 1 . 0 / 2 , 1 . 8 / 3 , 2 . 4 / 4 , 2 . 9 / 5 , 3 . 3 / 6 , 3 . 6 / 7 , 3 . 8 /
8 ,3.9/9 ,3.95/10 ,4.0;{42}
POLCM: = 0 , 0 . 0 5 / 1 , 1 / 2 , 3 / 3 , 5 . 4 / 4 , 7 . 4 / 5 , 8 . 0 ; { 3 2 }
POLAT: = 0 . 0 1 , 0 / 0 , 0 . 6 / 1 0 , 2 . 5 / 2 0 , 5 . 0 / 3 0 , 8 . 0 / 4 0 , 1 1 . 5 /
50 ,15.5/60 ,20.0;{34}
QLM: = 0 . 0 1 , 0 / 0 , 0 . 2 / 1 , 1 . 0 / 2 , 1 . 7 / 3 , 2 . 3 / 4 , 2 . 7 / 5 , 2 . 9 ; { 3 8 }
QLC: = 0 . 0 1 , 0 / 0 , 2 / 0 . 5 , 1 . 3 / 1 , 1 . 0 / 1 . 5 , 0 . 7 5 / 2 , 0 . 5 5 / 2 . 5 , 0 . 4 5 /
3 ,0.38/3.5 ,0.3/4 ,0.25/4.5 ,0.22/5 ,0.20;{39}
QLF: = 0 , 0 / 1 , 1 / 2 , 1 . 8 / 3 , 2 . 4 / 4 , 2 . 7 ; { 4 0 }
QLP: = 0 . 0 1 , 0 / 0 , 1 . 0 4 / 1 0 , 0 . 8 5 / 2 0 , 0 . 6 0 / 3 0 , 0 . 3 0 /
40 ,0.15/50 ,0.05/60 ,0.02;{42}
CQR: = 0 . 0 1 , 0 / 0 . 0 , 0 . 7 / 0 . 5 , 0 . 8 / 1 . 0 , 1 . 0 / 1 . 5 , 1 . 5 / 2 , 2 ; { 4 3 }
79
( Dise n
o de Experimentos )
INTI (POLN, Taza P o l u c i o n , 1 , 0 ) ;
INTI (BRN, C o e f i c i e n t e Taza N a t a l i d a d , 0 . 0 4 , 0 ) ;
INTI (DRN, C o e f i c i e n t e Taza M o r t a l i d a d , 0 . 0 2 8 , 0 ) ;
INTI (CGN, Taza C r e c i m i e n t o C a p i t a l , 0 . 0 5 , 0 ) ;
INTI (CDN, Taza Disminucio n C a p i t a l , 0 . 0 2 5 , 0 ) ;
INTI (NRFR, F r a c c i o n R e c u r s o s R e s t a n t e s , 1 , 0 ) ;
INTI (NRUN, R e c u r s o s Consumidos , 1 , 0 ) ;
INTI (MSL, M a t e r i a l Esta ndar Vida , 0 . 2 5 , 0 ) ;
INTI (FR, F r a c c i o n C a p i t a l A g r i c u l t u r a , 0 . 3 , 0 ) ;
INTI (ECR, Taza C a p i t a l E f e c t i v o , 0 . 2 5 , 0 ) ;
INTI (QLS, C a l i d a d Vida , 1 , 0 ) ;
INTI (CAQR, Taza C a l i d a d Vida , 2 , 0 ) ;
INTI (LAND, Terreno T o t a l , 1 3 5E+6 ,0) ;
INTI (PDN, Densidad P o b l a c i o n , 2 6 . 5 , 0 ) ;
INTI (CAFT, A j u s t e F r a c c i o n C a p i t a l A g r i c u l t u r a , 1 5 , 0 ) ;
INTI (FN, Normal Comida , 1 , 0 ) ;
INTI (ECRN, Normal Taza C a p i t a l E f e c t i v o , 1 , 0 ) ;
INTI (POLS, P o l u c i o n , 3 . 6E+9 ,0) ;
80
Captulo 4
Dise
no
En este captulo, se muestra la planificacion del contenido de la librera de dise
no
de experimentos, basado en la informacion obtenida en la revision de la modeloteca
explicada en el captulo 3, y con la nueva seccion de codigo que agregada para que
todos los ejercicios de la modeloteca sean compatibles con la librera propuesta.
La planificacion contemplara el dise
no completo de la librera que servira como base y
gua al momento de desarrollar el prototipo, as como para completar la construccion
de la librera.
4.1
Tipos de Datos
Se describiran los datos usados comunmente en el modelado con Galatea, que tienden
a ser suceptibles a ser utilizados al momento de realizar una experimentacion, razon
principal por la cual los mismos deben ser incluidos en la librera.
Dichos datos seran definidos como los tipos de datos primitivos utilizados por la librera de Dise
no de Experimentos. Dividiremos los tipos en dos grupos para un mayor
entendimiento, los datos atomicos y los compuestos.
82
4.1.1
At
omicos
Entero
Tipo de dato que puede representar un subconjunto finito de los n
umeros enteros.
La librera de Dise
no de Experimentos permite el manejo de n
umeros enteros dentro
de los parametros de entrada y la manipulacion de los mismos para obtener nuevos
valores que cumplan con las condiciones impuestas por el usuario para la realizacion
83
de experimentos.
Para la representacion de n
umeros enteros en java podemos utilizar cualquiera de los
tipos primitivos que representan un n
umero entero, mediante su tipo objeto o wrapper.
byte enteros de 8 bits con signo, con complemento a dos. Tipo objeto en
java Byte.
short enteros de 16 bits con signo, con complemento a dos. Tipo objeto
en java Short.
int enteros de 32 bits con signo, con complemento a dos. Tipo objeto en
java Integer.
long enteros de 64 bits con signo, con complemento a dos. Tipo objeto en
java Long.
Real
Tipo de dato que representa los n
umeros reales. Este tipo de dato sera tan preciso
como el n
umero de decimales que posea.
La librera de Dise
no de Experimentos permite el manejo de los n
umeros reales
definidos previamente como objetos del tipo primitivo que representa n
umeros reales,
mediante el uso de su tipo objeto o wrapper.
84
Cadena de caracteres
Tipo de dato que representa una cadena de caracteres.
La librera de Dise
no de Experimentos permite el manejo de entrada de cadena de
caracteres, mediante el procesamiento de las mismas y obteniendo su respectivo valor
para el experimento. Esta variable sera un objeto del tipo String de Java y por lo tanto
contara con todos los metodos disponibles para dicho objeto.
L
ogico
Tipo de dato que representa valores de logica binaria. Este dato puede tomar dos
valores u
nicamente, Verdadero o Falso, por omision inicialmente el valor sera Falso.
La librera de Dise
no de Experimentos permite el manejo de los datos Logicos mediante
un objeto que hace referencia a un tipo primitivo boolean de Java que representa el
valor true o false con un tama
no de 1 byte y a su vez este tipo primitivo estara envuelto
por su equivalente como representacion en forma de objeto para Java Boolean y contara
con todos los metodos disponibles para dicho objeto, las variables de este tipo siempre
tendran un u
nico valor.
4.1.2
Compuestos
Arreglos
Tipo estructurado de dato, capaz de almacenar una coleccion de datos del mismo
tipo. Este dato puede agrupar de forma simple componentes de un mismo tipo en un
determinado orden y de un cierto tama
no.
En general un arreglo puede ser n-dimensional y requerira de n ndices para recorrer o
acceder a sus elementos.
La librera de Dise
no de Experimentos permite el manejo de Arreglos de n-dimensiones,
de tama
no predefinido, de cualquiera de los tipos de datos disponibles para la librera
tanto atomicos como compuestos.
85
Enumerados
Tipo de dato usado en Galatea para describir variables que denotan un conjunto de
valores no necesariamente n
umericos, en forma de un arreglo de una dimension definido
por el usuario. Dichos datos seran identificados generalmente haciendo uso de cadenas
de caracteres que representan los distintos estados de la variable a estudiar y por tanto
tendran significado para el usuario que realice la simulacion.
Funciones
Tipo de dato compuesto definido por el usuario que permite la inclusion de funciones
que determinan un rango de accion para datos de entrada permitidos. Estos datos
dependeran de funciones de un determinado tipo como por ejemplo funciones de frecuencia, funciones de distribucion, funciones polinomicas, etc.
4.2
Formas de Experimentar
La librera de Dise
no de Experimentos cuenta con cuatro maneras de realizar la experimentacion, se podra seleccionar un parametro o un conjunto de parametros dentro
de las variables detectadas, el valor para cada variable podra cambiarse para valores
dentro de un subconjunto de valores permitidos para dicha variable y en el caso que
sea una variable numerica esta podra tomar valores dentro de un rango seleccionado.
4.2.1
86
4.2.2
4.2.3
4.2.4
La u
ltima forma de experimentar consiste de nuevo en la seleccion de un subrango de
valores para una variable y el valor del paso al cual este n
umero se ira incrementando
hasta alcanzar o sobrepasar el valor maximo.
Para valores n
umericos se selecciona un valor mnimo y un valor maximo, y este rango
es recorrido de principio a fin en base a un valor de paso brindado por parte del usuario.
4.3
87
Una vez obtenido los valores experimentales, se realizan los calculos del dise
no de
experimentos y obtenemos los valores de salida. Estos valores saldran bajo el formato
aceptado por la consola de comandos para Galatea, es decir, cambiaremos del formato
inicial explicado en la seccion 3.1.3 a un formato de salida que tendra la siguiente
sintaxis, requerida para que pueda ser reconocida por la consola de comandos de
Galatea.
Iniciando por la etiqueta java seguido de el nombre de una variable y su nuevo valor,
se definiran en la misma linea bajo una sola etiqueta java tantas variables con su valor
inicial como se desee.
java ID=VALUE
Se realizaran tantas simulaciones como experimentos sean configurados.
Los resultados saldran bajo una estructura de archivos que se propone durante el
uso de la librera. Todas las lneas de comandos de cada experimento realizado, seran
almacenadas en un archivo (.log) ubicado en el mismo directorio del archivo de entrada
y bajo el mismo nombre.
Para cada experimento configurado se generara una carpeta para cada simulacion bajo
el directorio de trabajo seleccionado inicialmente, donde el nombre estara formado por
el nombre del archivo de entrada, la fecha y la hora actual.
Captulo 5
Prototipo
En este captulo, se describe el prototipo desarrollado para la librera de Dise
no de
Experimentos de Galatea, as como su funcionamiento y el uso paso a paso de la
interfaz grafica para realizar un Dise
no de experimento. Adicionalmente, planteamos
posibles mejoras y cambios a futuro.
5.1
Manejo de Datos
En el prototipo actual no hemos incluido todos los tipos de datos soportados por
Galatea. Para asegurar que el prototipo sea funcional seleccionamos un grupo de datos
mostrados a continuacion.
5.1.1
Entero
Las variables de tipo entero que son detectadas en la lectura del archivo de entrada,
son iniciadas como tipo primitivo int de java para su manejo dentro del prototipo.
Al ser un tipo atomico con valor numerico la variable es elegible para tres de los cuatro
tipos de experimentacion, respetando las condiciones de mantener el mismo tipo de
dato.
89
5.1.2
Real
Las variables de tipo real que son detectadas en la lectura del archivo de entrada, son
iniciadas de tipo primitivo double de java para su manejo dentro del prototipo.
Al ser un tipo atomico con valor numerico la variable es elegible para tres de los cuatro
tipos de experimentacion, respetando las condiciones de mantener el mismo tipo de
dato, los valores que se obtengan como resultado tendran tantos decimales como los
indique el usuario.
90
5.1.3
Cadena de Caracteres
Las variables que son detectadas como cadenas de caracteres, son procesadas y almacenadas como tipo String de java para su manejo dentro del prototipo.
Basicamente todas las Strings que son detectadas en la lectura inicial posteriormente
caen en una de dos categorias, Logicos o Personalizables dependiendo de su valor.
El intercambio de valor simple de una cadena por otra esta permitido. Para este tipo
de dato esta deshabilitada la opcion de experimentacion por Rangos y en su lugar
se permite la seleccion de n valores de el conjunto de valores disponibles para dicha
variable.
5.1.4
91
L
ogico
Las variables que son detectadas como datos de tipo Logico, son almacenadas en un
String de java con valor Boolean dependiendo de si es TRUE o FALSE. Este tipo de
variables experimentables solo admiten una modalidad que es el cambio de valor simple
seleccionado, pero solo se puede cambiar su valor por otro de sus valores permitidos.
5.1.5
Arreglos
Las variables que son detectadas como arreglos, son procesadas y almacenadas dentro
de un tipo ArrayList de java para su manejo dentro del prototipo.
Actualmente el prototipo maneja arreglos de una y dos dimensiones de tama
no n, y
solo para datos de valor numerico de tipo entero o real.
Las tres modalidades de experimentacion estan disponibles para los arreglos, ya que
al momento de seleccionar los nuevos valores para el arreglo, cada posicion es tomada
como un valor individual y por lo tanto se aplican las mismas condiciones mencionadas
anteriormente para enteros y reales. Una vez que los calculos se han realizado
indi-
vidualmente para todos los valores, se construiran tantos arreglos como sean necesarios
para obtener todas las combinaciones de los posibles valores de todas las posiciones del
arreglo.
92
5.1.6
Enumerados
Las variables que son detectadas como datos de tipo Enumerados, son almacenadas
en un ArrayList de java para su manejo dentro del prototipo.
Una vez que se detecta una variable Enumerado, tambien se almacena en un arreglo
de una dimension todos los posibles valores que esta variable puede tomar ( definidos
en el archivo de entrada ) para un manejo mas facil al momento de manipular la misma.
Valor Simple Seleccionado al igual que para los datos de tipo logico se admite el
cambio de valor simple por otro de sus valores permitidos dentro del conjunto
previamente definido.
o Experimental
5.2 Funcionamiento del Disen
93
5.2
5.2.1
Se recibe un archivo bajo el formato permitido (.g) y se comienza a leer lnea por lnea
hasta encontrar la seccion de inicializacion, especficamente bajo la etiqueta INTI y
se procesan todas y cada una de las variables definidas seg
un el formato mencionado
en 3.1.3.
Las variables que son detectadas como Arreglos reciben una identificacion como tal,
para continuar un procesamiento mas exhaustivo que permita convertirlas en un
ArrayList de java para un manejo mas facil dentro del prototipo.
Si se detecta alguna variable de tipo Personalizable se activa un segundo proceso de
busqueda para el archivo de entrada, en el cual se lee lnea por lnea hasta encontrar
la etiqueta TYPE y se almacenan en arreglos de una dimension todos aquellos tipos
de datos especficados por el usuario ( Personalizables ).
5.2.2
Recolecci
on de los nuevos valores
En esta etapa se recolecta todos los datos obtenidos de la interaccion con el usuario,
basicamente se hace una barrida de todos los campos de las variables experimentables
seleccionadas y se almacenan los valores indicados. Los cuales son formateados seg
un
fica
5.3 Interfaz Gra
94
las restricciones establecidas y una vez que no se tienen errores ni campos en blanco
estos son enviados a la siguiente etapa para su procesamiento.
5.2.3
C
alculo de los valores de Salida
Una vez obtenidos los datos y las preferencias para los calculos de los valores de las
diferentes variables, se realizan dos procesos.
Inicialmente se calcula para cada una de las variables seleccionadas todos sus posibles
valores dependiendo de las preferencias obtenidas, solo ocurre con las rango, las simples
tienen un u
nico valor, es decir, aquellas variables cuyo valor cambiara bajo la modalidad
de Valor simple, solamente se les asignara ese nuevo valor y estaran listas para la
siguiente fase. Pero aquellas variables que han sido seleccionadas para la modalidad
de rango ya sean variables con valores numericos (N
umero de intervalos o Seleccion
de Paso 4.2.3) o variables no numericas ( Logicas/Personalizables), tendran mas de un
posible valor de salida que deben ser calculados antes de pasar a la siguiente fase.
En la etapa final una vez que se tienen todos los posibles valores para cada variable,
estos datos son enviados a una funcion recursiva que se encarga de generar todas las
posibles combinaciones entre los diferentes datos de las variables que seran nuestros
valores de salida.
5.3
Interfaz Gr
afica
En esta seccion mostraremos y explicaremos las diferentes ventanas que son mostradas
a lo largo de una experimentacion utilizando la librera.
5.3.1
Selecci
on Idioma
fica
5.3 Interfaz Gra
95
5.3.2
Inicio
5.3.3
Selecci
on Variables
En esta pantalla podemos observar y seleccionar todas las variables del usuario que
han sido detectadas en el archivo de entrada. Por defecto siempre se mostraran las
variables del Sistema correspondientes a TSIM y TIME, la diferencia radicara en
que si una de estas ha sido definida en el archivo de entrada, su valor inicial se vera
reflejado de lo contrario el valor inicial estara vacio. Al menos una variable debe ser
seleccionada antes de poder continuar.
fica
5.3 Interfaz Gra
96
fica
5.3 Interfaz Gra
5.3.4
97
Editar Variables
En esta pantalla se produce la recoleccion de los nuevos valores para las variables
seleccionadas, as como se definen las preferencias para el calculo de cada una de ellas
y se indica el numero de decimales que se desea para los valores de salida. No debe
haber campos en blanco ni con se
nalizaciones (Min, Max, Paso, Intervalo, etc) antes
de poder continuar.
fica
5.3 Interfaz Gra
5.3.5
98
Resultados
n
5.4 Resultados de la Experimentacio
5.4
99
Resultados de la Experimentaci
on
Una vez que se ha realizado una experimentacion de manera exitosa obtenemos dos
tipos de resultado de salida.
Primero, en el directorio de trabajo seleccionado se generara un directorio con el nombre
del archivo de entrada, la fecha y la hora en que se realizo la experimentacion sobre
el cual se almacenaran tantos directorios como sean necesarios para cubrir todos los
valores obtenidos en la salida del experimento.
Segundo, en el directorio del archivo de entrada se generara un archivo (.log) con el
mismo nombre, donde se almacenaran en formato de linea de comando para Galatea,
todos los experimentos que han sido realizados sobre dicho archivo.
Se realizaran tantas simulaciones como experimentos sean configurados.
Conclusiones
En base a los objetivos planteados inicialmente, se logro de manera exitosa el dise
no y
el desarrollo del prototipo para la librera de Dise
no de Experimentos.
Se plantean los diferentes tipos de datos con los que la librera debe poder trabajar, y
se implementaron los datos basicos con los que puede realizarse una experimentacion.
Se desarrollo una interfaz grafica de usuario amigable e intuitiva, que permite el procesamiento y la manipulacion y preparacion de los datos de un modelo para realizar
experimentos. La interfaz cuenta con la caracterstica de internacionalidad que permitira a los usuarios seleccionar un idioma de su agrado, dentro de la lista de idiomas de
preferencia.
La planificacion y el dise
no desarrollado durante el proyecto, permitira de manera
sencilla retomar el proyecto en un futuro para continuar con su desarrollo.
Trabajos Futuros
En vista de los objetivos alcanzados durante la realizacion de este proyecto, quedan
fundamentadas las bases para la continuacion y la terminacion de la librera para Dise
no
de Experimentos. Se logro desarrollar un prototipo funcional para los tipos basicos
principales usados en el modelado con el uso de Galatea, por lo que queda a disposicion
de trabajos futuros la continuidad de dicho proyecto para que puedan ser agregados
aquellos tipos de datos que fueron planteados y definidos pero que actualmente no
forman parte del prototipo.
Tambien seria posible la integracion de nuevas formas de realizar experimentaciones con
la librera, ya sean de manera complementaria con las actuales o agregando contenido
completamente nuevo.
Y finalmente, aunque quizas lo mas importante sea lograr la integracion de la interfaz
grafica de la librera de Dise
no de Experimentos con la interfaz grafica de Galatea.
Ap
endice A
Modeloteca. C
odigos Galatea
A.1
Taquilla simple
TITLE T a q u i l l a s i m p l e
NETWORK
Gate ( I )
::
IT:=EXPO( InArrTime ) ;
IF LL( E L T e l l e r ) >20 THEN NM20:=NM20+1;
T e l l e r (R) : :
Exit
::
tico
A.2 Sistema Burocra
DECL
103
STATISTICS ALLNODES;
END.
A.2
Sistema Burocr
atico
TITLE S i s t em a B u r o c r a t i c o
NETWORK
Arrivals ( I ) : :
IT : = 2 0 ; PeType:=UNIFI ( 1 , 4 ) ; R e j e c t e d :=FALSE ;
SENDTO( I n s p e c [ PeType ] ) ;
WRITELN( Enter Someone o f Type , PeType ) ;
I n s p e c (L) [ 1 . . 4 ] Gates , E x i t : :
IF ( PeType=4) AND BER( 0 . 2 )
THEN BEGIN R e j e c t e d :=TRUE; SENDTO( E x i t ) END
ELSE FIFO ;
Gates (G) [ 1 . . 4 ]
: : STATE
Exit : :
after
,TIMEGT: 8 : 2 , s e c . i n t h e system ) ;
ASSI MeanWait [ 1 . . 4 ] : = ( 4 0 , 3 9 , 1 2 , 6 2 ) ;
ASSI DeviWait [ 1 . . 4 ] : = ( 4 , 5 , 3 , 1 2 ) ;
DECL
VAR CH:CHAR; MeanWait , DeviWait :ARRAY[ 1 . . 4 ] OF REAL; OPEN:BOOLEAN;
104
i : integer ;
MESSAGES A r r i v a l s ( PeType :INTEGER; R e j e c t e d :BOOLEAN) ;
STATISTICS A r r i v a l s , I n s p e c , Gates , Bureau , E x i t ;
END.
A.3
TITLE G r a f i c a n d o l o s v a l o r e s de una c o l a
NETWORK
Arrivals ( I )
::
Teller
(R)
::
STAY:=EXPO( MeCashT , 2 ) ;
Exit
(E)
::
ACT( Gra , 0 ) ;
Gra (A)
::
( Para metros )
STATISTICS ALLNODES;
END.
A.4
STAY:=PROCTIME;
EXIT (E)
::
RESULT (A)
105
DECL
TYPE TYPRO=PROCEDURE;
VAR
PROCTIME,BALANCE,WITHD,DEPO:REAL;
MESSAGES ENTRANCE(PROC:TYPRO) ;
STATISTICS ALLNODES;
PROCEDURES
PROCEDURE CASHWITH;
BEGIN
( Cantidad R e t i r a d a )
WITHD:=ERLG( 7 5 0 , 4 ) ;
BALANCE:=BALANCEWITHD;
( Balance de l a T a q u i l l a )
PROCTIME: = 0 . 0 0 0 6 4 WITHD+2+UNIF ( 0 , 0 . 8 ) ;
( Tiempo de P r o c e s a m i e n t o )
END;
PROCEDURE DEPOSIT ;
BEGIN
DEPO:=GAUSS( 3 2 0 0 , 2 5 0 ) ;
( Cantidad D e p o s i t a d a )
BALANCE:=BALANCE+DEPO;
( Balance de l a T a q u i l l a )
PROCTIME: = 0 . 0 0 0 6 1 DEPO+1+NORM( 0 , 1 . 0 ) ;
( Tiempo de P r o c e s a m i e n t o )
A.5
Presentaci
on de valores de una cola
TITLE P r e s e n t a c i o n de v a l o r e s de una c o l a
NETWORK
Arrivals ( I )
::
IT:=EXPO( MarrT ) ;
RL:=LL( E L T e l l e r ) ; FILE ( ARCOL , TIME, RL) ;
Teller
(R)
::
STAY:=EXPO( MserT , 2 ) ;
Exit
(E)
::
( Para metros )
DECL
STATISTICS ALLNODES, RL ;
END.
A.6
TourPier
(R) DecExit : :
TypTur:=FTypTur ; ( Asigna s u b t i p o a t u r i s t a )
STAY:=TRIA(MI [ TypTur ] ,MO[ TypTur ] ,MA[ TypTur ] ) ;
BulkPier
106
107
P:=MSTL ( E L F r e i P i e r ) ;
P:=DMSTL( E L F r e i P i e r ) ;
OUTG P : 7 : 2 : D e v i a t i o n
P:=MSTL ( EL TourPier ) ;
P:=DMSTL( EL TourPier ) ;
OUTG P : 7 : 2 : D e v i a t i o n
P:=MSTL ( EL BulkPier ) ;
P:=DMSTL( EL BulkPier ) ;
OUTG P : 7 : 2 : D e v i a t i o n
P:=MSTL ( EL RepPier ) ;
P:=DMSTL( EL RepPier ) ;
OUTG P : 7 : 2 : D e v i a t i o n
Bulk
;
;
Repa ir
;
;
PAUSE; ENDSIMUL;
INIT
FTBArr : = 0 . 0 , 0 . 5 / 0 . 2 , 1 / 0 . 3 , 2 / 0 . 3 5 , 2 . 5 / 0 . 4 0 , 3 . 5 / 0 . 4 5 , 3 . 9 /
0.50 ,4.1/0.55 ,4.8/0.60 ,5/0.70 ,5.5/0.80 ,6/0.90 ,6.25/1.0 ,6.5;
FType:= F r e i g h t e r , 6 1 1 / Bulk , 4 2 3 / T o u r i s t , 2 1 2 / Repair , 1 5 ;
TFreig : = 0 . 0 , 7 / 0 . 2 , 1 3 / 0 . 4 , 1 5 / 0 . 6 , 1 9 / 0 . 8 , 2 1 / 1 . 0 , 2 2 ;
TBulk : = 0 . 0 , 9 / 0 . 2 , 1 2 / 0 . 4 , 1 6 / 0 . 6 , 1 9 . 5 / 0 . 8 , 2 2 / 1 . 0 , 2 2 . 5 ;
TRepair : = 0 . 0 , 5 5 / 0 . 3 , 7 2 / 0 . 7 , 8 1 / 0 . 9 , 8 8 / 1 . 0 , 9 0 ;
FTypTur:= Stopping , 7 5 / V i s i t , 1 2 2 / T r a n s f e r , 1 5 ;
FClaExit := F r e i g h t e r ,A/ Bulk ,A/ T o u r i s t , B/ Repair , C ;
MI [ S t o p p i n g ] : = 5 ; MO[ S t o p p i n g ] : = 6 ; MA[ S t o p p i n g ] : = 8 ;
MI [ V i s i t ] : = 2 7 ; MO[ V i s i t ] : = 4 0 ; MA[ V i s i t ] : = 4 7 ;
MI [ T r a n s f e r ] : = 7 2 ; MO[ T r a n s f e r ] : = 9 3 ; MA[ T r a n s f e r ] : = 1 3 0 ;
F r e i P i e r : = 5 ; TourPier : = 3 ; B u l k P i e r : = 2 ; RepPier : = 1 ;
INTI M F r e i P i e r :
4 : 0 : Capacity o f F r e i g h t e r P i e r
INTI M TourPier :
4 : 0 : Capacity o f T o u r i s t P i e r
INTI M BulkPier :
4 : 0 : Capacity o f Bulk P i e r
INTI M RepPier :
4 : 0 : Capacity o f Repa ir P i e r
( A c t u a l i z a Capacidad L i b r e )
F F r e i P i e r := M F r e i P i e r ;
F TourPier := M TourPier ;
F B u l k P i e r := M BulkPier ;
F RepPier := M RepPier ;
DECL TYPE TTypShip=( F r e i g h t e r , Bulk , T o u r i s t , R epair ) ;
108
TExit=(A, B,C) ;
TTypTur=( Stopping , V i s i t , T r a n s f e r ) ;
VAR MI ,MO,MA:ARRAY[ S t o p p i n g . . T r a n s f e r ] OF REAL;
TypTur : TTypTur ; E x i t C l a s s : TExit ;
R, P :REAL;
MESSAGES Harbor ( ShipType : TTypShip ) ;
GFUNCTIONS
FTBArr POLYG (REAL) :REAL: 1 3 ;
FType FREQ ( TTypShip ) :REAL : 4 ;
TFreig SPLINE (REAL) :REAL : 6 ;
TBulk SPLINE (REAL) :REAL : 6 ;
TRepair
A.7
TITLE S i s t em a de t r e s c o l a s
NETWORK
( Lle gada y a s i g n a c i o n de v a l o r e s )
INA ( I ) QA : :
INB ( I ) QG: :
( Cola y ventana d e l p r o c e s o A )
QA (L) : :
WA (R)DAB
::
RELEASE SENDTO(DAB) ;
STAY:=TA+UNIF( 0 . 1 , 0 . 1 ) TA;
( D e c i d i r s i s a l i r o c o n t i n u a r a l p r o c e s o B )
DAB (D) EXIT ,QG : : IF BER( 0 . 2 ) THEN SENDTO(EXIT) ELSE SENDTO(QG) ;
( Gate b e f o r e queues and windows f o r p r o c e d u r e B )
QG (L) : : {ORDER(PRIOR,A) ; ( Ordenados por p r i o r i d a d ) } ( P r i o r i d a d e s a
usar )
109
::
STAY:=TB+UNIF( 0 . 1 , 0 . 1 ) TB;
STAY:=TB+FTB(RANDOM) TB;
( S a l i r y t a b u l a r tiempo de s d e l l e g a d a a l s i s t e m a )
EXIT (E) : :
INIT
ACT(INA , 0 ) ;ACT( INB , 0 . 2 ) ;
EXPER
TSIM: = 4 0 0 ;
TBA: = 3 ; TBB: = 3 . 5 ;
FTB: = 0 . 0 , 0 . 2 / 0 . 3 , 0 . 1 / 0 . 5 , 0 . 0 / 0 . 8 , 0 . 2 / 1 . 0 , 0 . 2 ;
RN[ 1 ] : = 2 9 8 7 1 ;
TTS: = 0 . 0 , 1 5 , 1 0 ;
ENDEXP;
DECL
TYPE
TT=(TYPA,TYPB) ;
VAR
TBA,TBB, TS :REAL;
GFUNCTIONS
MESSAGES
TABLES TS : TTS ;
STATISTICS TBA,TBB,ALLNODES;
END.
A.8
Procesamiento
de
temperatura
partes
con
110
ajuste
temperatura
TITLE P r o c e s a m i e n t o de p a r t e s con a j u s t e de t e m p e r a t u r a
NETWORK
ARRIVAL ( I ) : : IT:=TRIA( 1 4 , 1 5 , 1 6 , 3 ) ; {Usa una c o r r i d a de 3 n
u meros
aleatorios }
TEMP:=UNIF(TL1 , TL2 , 3 ) ;
REMA: = 0 ;
PRI:=FALSE ;
QUEUE (L)
{ Sin p r i o r i d a d }
::
FINISH (E) : :
COOLING (A) REHEATING : :
IT:=DT; ( E n f ra y remueve l o s que e s t a n demasiado f r o s )
SCAN(IL QUEUE) BEGIN D:=O TEMPTE; O TEMP:=O TEMPKDDDDDT END;
SCAN(IL QUEUE) IF (O TEMP<TP1) THEN SENDTO(REHEATING) ;
REHEATING (R) PROCESS : : ( Reheat , a g r e g a l a p r i o r i d a d y l o s e n v i a a
PROCESS )
TEMP:=TR; PRI:=TRUE; STAY:=REHEAT;
RESULT (A) : :
REPORT
de
111
OUTG TP1 : 7 : 2
OUTG K
: Constante de E n f r i a m i e n t o
N:=ENTR( EL FINISH ) ;
OUTG N: 7
: Partes Procesadas
N:=ENTR(EL REHEATING) ;
OUTG N: 7
: Partes Recalentadas
ENDREPORT;
ENDSIMUL;
INIT ACT(ARRIVAL, 0 ) ; ACT(COOLING, 0 ) ; ACT(RESULT, 1 4 4 0 ) ; DT: = 2 ;
TL1: = 7 2 0 ; TL2: = 7 7 0 ; TP1: = 6 9 0 ; TP2: = 8 7 0 ;
PROCTIME: = 1 5 . 8 ; K: = 2 . 5 2E12; TIM: = 2 . 5 ;
TR: = 7 3 5 ; TE: = 2 8 ; REHEAT: = 2 . 5 ;
REHEATING: = 1 0 ;
INTI PROCTIME : 7 : 2 : Tiempo Medio de Procesado
INTI TP1 :
: Constante de E n f r i a m i e n t o
INTI K
DECL
7:2
VAR TL1 , TL2 , TP1 , TP2 ,PROCTIME, K,TR,REHEAT, TE, TIM, D,DT:REAL;
N:INTEGER;
MESSAGES ARRIVAL( PRI :BOOLEAN; TEMP,REMA:REAL) ;
STATISTICS ALLNODES;
END.
A.9
Sistema de fundici
on para producir lingotes de
acero
TITLE S i s t em a de f u n d i c i o n para p r o d u c i r l i n g o t e s de a c e r o
NETWORK
StartCamp ( I )
( Preparando l a f u n d i c i o n y e n f r i a m i e n t o )
T r a i n S e t (R) : :
WRITELN( S e t t h e Train
Time ,TIME : 7 : 2 ) ;
112
NLM: = 1 4 4 ; CDM: = 5 0 ;
( R e t i r a r l o que s e ha p u e s t o )
(E) : :
( T r a n s p o r t e y p r e p a r a c i o n de l a s p l a c a s )
TraP lat e
SetPlate
( S i n c r o n i z a p l a c a s y moldes )
E1
Continue
113
TraIngot
INIT
ACT( StartCamp , 0 ) ;
CampNum: = 5 ;
ASSI OpMat [ 1 . . 7 , 1 . . 5 ] : = ( (
1,
2,
1,
3,
2 ) , ( Tipo de f u n d i d o s
)
( 4 1 5 , 4 8 0 , 4 1 5 , 5 1 5 , 4 8 0 ) , ( S e c c i o n )
(1500 ,1600 ,1500 ,1800 ,1600) , ( Altura )
( 144 ,
96 , 144 ,
96 ,
9 6 ) , ( N
umero de moldes
8 ) , ( N
umero de p l a c a s
)
(
6,
8,
6,
8,
12 ,
24 ,
12 ,
7,
5,
)
(
24 ,
1 2 ) , ( L i n g o t e s por
placa )
(
5,
6,
6 ) ) ; ( N
umero de
fundidos )
( Tiempo de f o r m a c i o n )
ASSI TTrainSet [ 1 . . 3 ] : = ( 6 , 5 , 5 ) ;
ASSI TCasting
ASSI TCool
( Tiempo f u n d i c i o n )
( Tiempo e n f r i a m i e n t o )
ASSI TTransMold [ 1 . . 3 ] : = ( 5 . 3 2 , 4 . 9 2 , 4 . 9 2 ) ;
( Moldes tiempo en t r a n s p
. alm )
TsetMaz
TCoolType1
:=0.066667;
:=6;
poner Mazarota )
ASSI TCoolIngot
[ 1 . . 3 ] : = ( 4 . 6 7 , 4 . 6 7 , 4 . 6 7 ) ; ( Tiempo e n f r i a m i e n t o
Lingote )
ASSI TTrimIngot
[1..3]:=(12 ,4 ,4) ;
( Tiempo de r e c o r t e L i n g o t e )
ASSI TTraPlate
[1..3]:=(2 ,2 ,2) ;
( P l a c a s tiempo en t r a n s . alm )
[1..3]:=(5 ,5 ,5) ;
( Tiempo p r o c e s a m i e n t o p l a c a )
ASSI TTraIngot
[1..3]:=(2 ,2 ,2) ;
ASSI TTraMoPlate [ 1 . . 3 ] : = ( 1 , 1 , 1 ) ;
ASSI TTraIngots
114
[ 1 . . 3 ] : = ( 4 . 4 3 , 3 . 5 2 , 3 . 5 2 ) ; ( L i n g o t e s tiempo en
t r a n s . alm )
DECL
VAR OpMat :ARRAY[ 1 . . 7 , 1 . . 5 ] OF INTEGER;
TTrainSet , TCasting , TCool , TTransMold , TCoolIngot , TTrimIngot ,
TTraPlate , TSetPlate , TTraIngots , TTraIngot , TTraMoPlate
:ARRAY[ 1 . . 3 ] OF REAL;
NL :ARRAY[ 1 . . 3 ] OF INTEGER;
CAMP,NC, CastType ,NLM,CDM,CampNum:INTEGER;
TCoolType1 , TsetMaz :REAL;
END.
A.10
M
aquina con fallas
(R) E x i t : :
IF ProcTime<TtoNextFault
THEN TtoNextFault := TtoNextFaultProcTime
ELSE ACT( F a u l t s , TtoNextFault ) ;
STAY:= ProcTime ;
Exit
(E) : :
F a u l t s (A) C o n t r o l : :
F a u l t :=TRUE;
( I n i c i o d e l e s t a d o de f a l l a )
n
A.11 Proceso de ensamblado con sincronizacio
115
F a u l t :=FALSE ;
NumFaults:=NumFaults +1;
R e s u l t (A) : :
F i n i s h e d P a r t s :=ENTR( EL Exit ) ;
OUTG F i n i s h e d P a r t s : 5 : F i n i s h e d P a r t s
OUTG NumFaults : 5
: Number o f F a u l t s
PAUSE; ENDSIMUL;
INIT SimTime : = 2 0 0 0 ;
ACT( Arriv , 0 ) ; F a u l t :=FALSE ; FixingTime : = 4 . 0 ; NumFaults : = 0 ;
TBetweenFaults : = 1 5 ;
INTI TBetweenFaults : 7 : 1 : Mean Time Between F a u l t s ;
INTI SimTime : 7 : 1
: S i m u l a t i o n Time
( Tiempo h a s t a l a p ri m er a f a l l a )
TtoNextFault :=GAUSS( TBetweenFaults , 0 . 1 TBetweenFaults ) ;
ACT( Re su l t , SimTime ) ;
DECL VAR F a u l t :BOOLEAN; SimTime , TBetweenFaults ,
TtoNextFault , FixingTime :REAL;
NumFaults , F i n i s h e d P a r t s :INTEGER;
MESSAGES A r r i v ( ProcTime :REAL) ;
STATISTICS Arriv , Control , Machine , Exit , F a u l t s , FaultEnd ;
END.
A.11
(I) ::
EquiA
(R) [ 1 . . 2 ]
::
Sincr
]) ;
EquiB
(R) [ 1 . . 2 ] : :
EquiC
(R) : :
116
Ex Appar (E) : :
INIT ACT( Ent Appar , 0 ) ; TSIM: = 5 0 0 ;
ASSI TiMinA [ 1 . . 2 ] : = ( 1 4 , 1 5 ) ; ASSI TiMaxA [ 1 . . 2 ] : = ( 1 8 , 2 0 ) ;
ASSI MeTiB [ 1 . . 2 ] : = ( 1 2 , 1 4 ) ; ASSI DTiB [ 1 . . 2 ] : = ( 3 , 4 ) ;
TmC: = 7 ; DtC: = 1 ; MeTiBeArr : = 2 5 ; DMeTi: = 4 ;
DECL VAR TiMinA ,
TiMaxA ,
MeTiB ,
DTiB
( D e s v i a c i o n
:ARRAY[ 1 . . 2 ] o f REAL;
TmC,
DtC ,
( D e s v i a c i o n
MeTiBeArr ,
( Tiempo medio e n t r e l l e g a d a s )
DMeTi
( D e s v i a c i o n
)
)
:REAL;
MESSAGES Ent Appar ( l i n :INTEGER) ;
STATISTICS ALLNODES;
END.
A.12
Ruta crtica
TITLE Ruta c r t i c a
NETWORK
( Actividades )
R12 G2 : :
STAY:=TRIA ( 1 , 3 , 4 ) ;
T ACT [ 1 ] : = STAY;
MINST[ 1 ] : = TIME ;
R13 G3 : :
STAY:=TRIA ( 4 , 5 , 6 ) ;
T ACT [ 2 ] : = STAY;
MINST[ 2 ] : = TIME ;
R14 G4 : :
STAY:=TRIA ( 6 , 7 , 9 ) ;
T ACT [ 3 ] : = STAY;
MINST[ 3 ] : = TIME ;
R32 G2 : :
STAY:=TRIA ( 4 , 6 , 8 ) ;
T ACT [ 4 ] : = STAY;
MINST[ 4 ] : = TIME ;
R34 G4 : :
STAY:=TRIA ( 3 , 4 , 5 ) ;
T ACT [ 5 ] : = STAY;
MINST[ 5 ] : = TIME ;
R25 G5 : :
STAY:=TRIA ( 5 , 7 , 9 ) ;
T ACT [ 6 ] : = STAY;
MINST[ 6 ] : = TIME ;
R46 G6 : :
STAY:=TRIA ( 1 , 2 , 4 ) ;
T ACT [ 7 ] : = STAY;
MINST[ 7 ] : = TIME ;
R67 G7 : :
MINST[ 8 ] : = TIME ;
R57 G7 : :
STAY:=TRIA( 7 , 8 , 1 1 ) ;
T ACT [ 9 ] : = STAY;
MINST[ 9 ] : = TIME ;
R78 E : :
STAY:=TRIA ( 2 , 3 , 5 ) ;
T ACT[ 1 0 ] : =STAY;
MINST[ 1 0 ] : =TIME ;
117
( Nodos )
IA R12 , R13 , R14 : :
G2 R25 : :
G3 R32 , R34 : :
G4 R46 : :
G5 R57 : :
SENDTO( R57 ) ;
G6 R67 : :
SENDTO( R67 ) ;
G7 R78 : :
E var j , ac , a c l l : i n t e g e r ; : :
NC:=NC+1; {N
umero de c o r r i d a s }
WRITELN( C r i t i c a l Time , TIME : 7 : 2 ) ;
( Enc ontrar u
l t i m o tiempo de f i n a l i z a c i o n )
FOR
( <= Que e l c r i t i c o )
( Para cada a c t i v i d a d m i r a r l a s a n t e r i o r e s
)
BEGIN
ORAC:=NODOA[AC ] ;
( Ver e l nodo de o r i g e n )
IF NODFA[ACLL]=ORAC THEN
BEGIN TM:=MAXFT[AC]T ACT [AC ] ;
T ACT ,T ACT [ J ] : 8 : 3 ,
MAXFT
,MAXFT[ J ] : 8 : 3 ,
SLACK ,SLACK[ J ] : 1 0 : 5 ) ;
s
A.13 Lnea de autobu
118
( Tiempo de h o l g u r a de l a a c t i v i d a d )
:ARRAY[ 1 . . 1 0 ] OF REAL;
NODFA,NODOA:ARRAY[ 1 . . 1 0 ] OF INTEGER;
END.
A.13
Lnea de autob
us
Ln ea de autob u
s
NETWORK
BUSGEN ( I ) STOP[ INO ] : :
NPAS: = 0 ;
s
A.13 Lnea de autobu
119
( Es un autob u
s )
ESBUS:=TRUE;
NB:=NB+1;
( N
umero de Autob
us )
NBUS:=NB;
( Lleg ada de p a s a j e r o s )
DEST:=FORDEST(INO) ;
( Asignar d e s t i n o )
ESBUS:=FALSE ;
( P a s a j e r o no e s un autob u
s )
SENDTO(STOP[ INO ] ) ;
STOP
IF P=1 THEN
WRITELN( BUS N ,NBUS, AT STOP , INO , CARRYING ,NPAS) ;
OFF: = 0 ;
DISASSEMBLE
( S a l i r a l d e s t i n o )
IF O DEST=INO THEN
BEGIN
( Contar c u a n t o s s e b a j a r o n )
OFF:=OFF+1;
NPAS:=NPAS1;
SENDTO(SAL [ INO ] )
( Fuera d e l s i s t e m a )
END;
UPDATE(MESS) ;
( Pasar
NPAS a
IF P=1 THEN
WRITELN(OFF, PASSENGERS OFF ) ;
( N
umero a tomar e l autob u
s )
( Nota : En GETIN a g r e g a r 1 para t e n e r en c u e n t a e l autob u
s )
GETIN:=MINI (BUSCAPNPAS+1,LL(EL STOP [ INO ] ) ) ;
IF GETIN>1
THEN
( Montar p a s a j e r o s en e l autob u
s )
s
A.13 Lnea de autobu
120
BEGIN
IF P=1 THEN BEGIN
WRITELN(GETIN1 , PASSENGERS ENTER THE BUS ) ; WRITELN; PAUSE END;
ENTER:=TRUE;
ASSEMBLE( FIRST , GETIN,ENTER)
BEGIN NPAS:=NPAS+GETIN1; SENDTO(TRAVEL[ INO ] ) ;
ENTER:=FALSE ;
NTOTPAS[NBUS] : =NTOTPAS[NBUS]+GETIN1
END
END
ELSE
BEGIN
( No hay p a s a j e r o s )
SENDTO(TRAVEL[ INO ] ) ;
IF P=1 THEN BEGIN
WRITELN( No p a s s e n g e r s loaded ) ; PAUSE END;
END
END
ELSE STOPSCAN; ( S i e l mensaje e n t r a n t e no e s un autob u
s
( e s un p a s a j e r o ) permanecer en l a c o l a )
TRAVEL (R) [ 1 . . 6 ] STOP[ INO ] : :
RELEASE
BEGIN
( a c c o u n t t r a v e l time )
( c a l c u l a r n
u mero proxima parda )
( Tiempo de v i a j e )
IF P=1 THEN
BEGIN WRITELN( BUS N ,NBUS, s t a r t s t r a v e l
WRITELN; PAUSE
, INO) ;
s
A.13 Lnea de autobu
121
END;
SAL (E) [ 1 . . 6 ]
::
RESULT (A) : :
OUTG TTTRAVEL [ 1 . . 4 ] : 8 : 2 : T o t a l time t r a v e l by bus
OUTG NTOTPAS [ 1 . . 4 ] : 8
: T o t a l number o f p a s s e n g e r s i n bus ;
PAUSE;
ENDSIMUL;
INIT ACT(RESULT, 6 0 0 ) ;
ACT(BUSGEN, 1 2 ) ; ACT(BUSGEN, 4 4 ) ; ACT(BUSGEN, 7 0 ) ; ACT(BUSGEN, 1 0 0 ) ;
ACT(ARRIVPASS [ 1 ] , 0 ) ;
ACT(ARRIVPASS [ 2 ] , 1 0 ) ;
ACT(ARRIVPASS [ 3 ] , 4 5 ) ;
ACT(ARRIVPASS [ 4 ] , 6 0 ) ; ACT(ARRIVPASS [ 5 ] , 6 7 ) ;
ACT(ARRIVPASS [ 6 ] , 8 0 ) ;
( Frecuencias )
( 0 , 0 , 0 ,15 , 0 , 0) ,
(14 , 0 , 0 , 0 , 9 ,17) ,
(15 , 0 , 0 , 0 , 0 ,12) ,
(16 , 0 , 0 , 0 , 0 , 0) ) ;
( EXPERIMENTAL PARAMETERS )
INTI BUSCAP : 5 : Maximum c a p a c i t y o f b u s e s ;
INTI TTRAVEL [ 1 . . 6 ] : 7 : 2 : Time t r a v e l s i n c e s t o p number ;
INTI P : P a s s e n g e r s d e t a i l e d number ( 1 ) ;
DECL
VAR GETIN, J ,BUSCAP, OFF,NB, P :INTEGER; MOR:ARRAY[ 1 . . 6 , 1 . . 6 ] OF REAL;
TBARR,TTRAVEL:ARRAY[ 1 . . 6 ] OF REAL;
122
TTTRAVEL:ARRAY[ 1 . . 4 ] OF REAL;
NTOTPAS:ARRAY[ 1 . . 4 ] OF INTEGER;
ENTER:BOOLEAN;
MESSAGES ARRIVPASS(ESBUS :BOOLEAN;DEST:INTEGER) ;
BUSGEN(ESBUS :BOOLEAN; NPAS,NBUS:INTEGER) ;
STATISTICS BUSGEN, ARRIVPASS, STOP,TRAVEL, SAL ;
PROCEDURES
FUNCTION FORDEST( I :INTEGER) :INTEGER;
( DA DESTINO PROBABLE, SEGUN FRECUENCIAS EN MOR, DEL SALIDO DE I )
VAR K:INTEGER; R, P ,FTOT:REAL;
BEGIN FTOT: = 0 ;
FOR K:=1 TO 6 DO FTOT:=FTOT+MOR[ I ,K ] ;
R:=RANDOM; K: = 1 ; P:=MOR[ I ,K] /FTOT;
WHILE P<R DO BEGIN K:=K+1; P:=P+MOR[ I ,K] /FTOT END;
FORDEST:=K;
END;
END.
A.14
TITLE S i s t em a p r e s a d ep re da do r
NETWORK
RF (C) : :
( Valor I n i c i a l )
gico perturbado
A.15 Sistema ecolo
123
( Para metros )
RM: = 2 0 0 0 0 ;
C1 : = 0 . 1 8 ; C2 : = 0 . 0 0 0 1 5 ;
C3 : = 0 . 2 ; C4 : = 0 . 0 0 0 1 ;
DT RF: = 0 . 1 2 5 ;
( Para m o d i f i c a r c o n d i c i o n e s i n i c i a l e s y t i p o de g r a f i c a )
INTI R : 9 : 0 : RABBITS INITIAL ;
INTI F : 9 : 0 : FOXES
INITIAL ;
C1 , C2 , C3 , C4 ,RM:REAL; R, F :CONT;
END.
A.15
Sistema ecol
ogico perturbado
TITLE S i s t em a e c o l o g i c o p e r t u r b a d o
NETWORK
CHANGES (C) : :
( E c u a c i o n e s d i f e r e n c i a l e s para l a biomasa )
(220.000582857=0.01282)
P : = PhotEff SUNRespPPConsPHPHMortPPMigrPP ;
IF P<0 THEN P: = 0 ;
H : = ConsPHPH+EntrHRespHHConsHCHCMortHHMigrHHH;
C : = ConsHCHCRespCCConsCSCSMortCC+MigrCCC;
S : = ConsCSCSRespS SMortSSMigrS SS ;
D : = MortPP+MortHH+MortCC+MortSS
RespD ( MortPP+MortHH+MortCC+MortSS )MortDDMigrDD;
EXTRAC
(A) : : IT:=1+TRIA ( 0 . 1 , 0 . 0 , 0 . 1 ) ;
( E x t r a c c i o n
gico perturbado
A.15 Sistema ecolo
CONTAM (A) : :
D:=D 7 . 0 ;
124
( D e s t r u c c i o n de l o s descomponedores )
( p e r i o d o de g r a f i c a c i o n )
( r e s p i r a c i o n de l o s p r o d u c t o r e s )
ConsPH : = 0 . 0 0 6 2 7 ;
( p r o d u c t o r e s consumidos por h e r bv o r o s )
MortP : = 0 . 9 7 6 8 2 3 ;
( m o r t a l i d a d de l o s p r o d u c t o r e s )
MigrP : = 0 . 7 1 1 9 9 ;
( m i g r a c i o n de l o s p r o d u c t o r e s )
RespH : = 1 1 . 3 8 5 5 ;
( r e s p i r a c i o n de l o s h e r bv o r o s )
ConsHC: = 0 . 0 4 6 1 4 ;
( h e r bv o r o s consumidos por c a r nv o r o s )
MortH : = 8 . 6 3 2 5 3 ;
( m o r t a l i d a d de l o s h e r bv o r o s )
MigrH : = 0 . 0 0 5 3 7 ;
( m i g r a c i o n de l o s h e r bv o r o s )
RespC : = 6 . 3 2 0 0 ;
( r e s p i r a c i o n de l o s c a r nv o r o s p r i m a r i o s )
ConsCS : = 0 . 0 6 0 0 ;
( consumo de l o s c a r nv o r o s p r i m a r i o s por
secundarios )
MortC : = 0 . 7 8 0 0 ;
( m o r t a l i d a d de c a r nv o r o s p r i m a r i o s )
MigrC : = 0 . 0 0 2 8 0 ;
( m i g r a c i o n de c a r nv o r o s p r i m a r i o s )
RespS : = 1 . 8 5 7 1 4 ;
( r e s p i r a c i o n de c a r nv o r o s s e c u n d a r i o s )
MortS : = 1 . 0 0 0 0 0 ;
( m o r t a l i d a d de c a r nv o r o s s e c u n d a r i o s )
MigrS : = 0 . 1 4 2 8 6 ;
( m i g r a c i o n de c a r nv o r o s s e c u n d a r i o s )
RespD : = 0 . 9 9 0 0 0 ;
( r e s p i r a c i o n de l o s descomponedores )
MortD : = 0 . 2 9 0 9 0 ;
( m o r t a l i d a d de l o s descomponedores )
MigrD : = 1 . 8 1 8 2 0 ;
( m i g r a c i o n de l o s descomponedores )
MSUN:=1700000 ;
EntrH :=486
( V a l o r e s i n i c i a l e s de l a s v a r i a b l e s )
P:=3236
)
( Biomasa ( e n e r ga ) de l o s p r o d u c t o r e s p r i m a r i o s
gico perturbado
A.15 Sistema ecolo
H:=166
( Biomasa ( e n e r ga ) de l o s h e r bv o r o s )
C:=50
( Biomasa ( e n e r ga ) de l o s c a r nv o r o s )
S:=7
( Biomasa ( e n e r ga ) de l o s s e c u n d a r i o s )
D:=22
( Biomasa ( e n e r ga ) de l o s descomponedores )
DT CHANGES: = 0 . 0 0 7 8 1 2 5 ;
DECL VAR
MortS , MigrS ,
RespD ,
MortD , MigrD ,
125
A.16
126
Sistema din
amico (Puerta Oscilante)
INIT ACT(C, 0 ) ; Z : = 1 . 4 ; W: = 0 . 0 ;
R: = 0 . 1 ; K: = 0 . 9 ; I : = 1 . 2 ;
TSIM: = 8 0 ; DT C: = 0 . 0 6 2 5 ;
INTI I : 6 : 2 : Moment o f i n e r t i a ;
INTI R : 6 : 2 : Damping c o n s t a n t ;
INTI K : 6 : 2 : E l a s t i c c o n s t a n t ;
DECL VAR W, Z :CONT; R, K, I :REAL;
END.
A.17
Gr
afico de la cola normal y antit
etica
TITLE G r a f i c o de l a c o l a normal y a n t i t e t i c a
NETWORK
( Experimento normal
RN[ 1 ] : = 1 1 1 1 1 1
ENT ( I )
::
IT:=TRIA ( 2 , 4 , 6 , 1 ) ;
TIC (R)
::
STAY:=TAT;
EXIT (E)
::
ACT(GRA, 0 ) ;
ACT(GRA, 0 ) ;
( Experimento a n t i t e t i c o
ENTA ( I )
RN[2]:= 111111
: : IT:=TRIA ( 2 , 4 , 6 , 2 ) ;
ACT(GRA, 0 ) ;
TICA (R)
::
EXITA(E)
GRA (A)
STAY:=TAT;
::
::
127
ACT(GRA, 0 ) ;
RLT:=LL( EL TIC ) ; RLA:=LL( EL TICA ) ;
RLM: = 0 . 5 (RLT+RLA) ;
GRAPH( 0 , 1 2 0 0 0 ,BLACK; TIME : 6 : 0 ,WHITE;
RLT: 6 : 0 ,COLAT, 0 , 2 0 ,GREEN;
RLA: 6 : 0 ,COLAA, 0 , 2 0 ,RED;
RLM: 6 : 0 ,COLAM, 0 , 2 0 ,YELLOW) ;
( Para metros )
A.18
Puerto petrolero
TITLE Puerto p e t r o l e r o
NETWORK
( Los b a r c o s que l l e g a n pueden s e r de 25 t i p o s d i f e r e n t e s , ( 5
capacidades
y 5 t i p o s de p e t r o l e o . Dependiendo d e l t i p o de p e t r o l e o e s e n v i a d o
a su
entrada c or r e sp o n di e nt e a l puerto )
ARRIVAL ( I ) [ 1 . . 2 5 ] ENTRANCE[ INO ] : :
TYP:=INO ;
IT:= TRIA(TBAMIN[ INO ] ,TBAMO[ INO ] ,
TBAMAX[ INO ] ) ;
BERT: = ( (TYP1) MOD 5 ) +1;
128
5) + 1 ;
SENDTO(ENTRANCE[BERT] ) ;
IF R=1 THEN
BEGIN
S i z e , SIZET [ SIZE ] : 7 : 1 ,
i t g o e s t o b e r t h ,BERT) ;
{CH:=READKEY; }
END;
( S i e l a t r a c a d e r o e s t a l i b r e y hay s u f i c i e n t e p e t r o l e o en su
tanque , e l
barco es enviado a ese atracadero )
ENTRANCE (G) [ 1 . . 5 ]
BERTH[ INO ] : :
IF (F BERTH [ INO] >0) AND (VTANK[ INO]>VFTANKER[ INO
])
THEN
BEGIN
DOEVENT
BEGIN
( s i z e i s s t o r e d i n SIZETANKER )
SIZETANKER [ INO] : = SIZET [ SIZE ] ;
IF R=1 THEN
WRITELN( T= ,TIME : 8 : 2 ,
Ship a s s i g n e d t o b e r t h ,BERT) ;
SENDTO(BERTH[ INO ] ) ;
END;
END;
( El b a r c o e s t a a l b e r g a d a en e l p u e r t o )
BERTH(R) [ 1 . . 5 ] EXIT : :
( S a l i d a d y multa acumulada d e l p u e r t o )
EXIT(E) : : TE:=TIMEGT;
IF TE>1.75 THEN
FINE [BERT] : = FINE [BERT]+(TE1.75) FINETAX ;
TANK (C) var i : i n t e g e r ; : : ( Llenado de t a n q u e s )
( Dos c o n d i c i o n e s de d e t e n c i o n :
129
FOR I :=1 TO 5 DO
BEGIN
IF VTANK[ I ]>VMAX[ I ] THEN
BEGIN IF FILL [ I ]=1 THEN TSHUT[ I ] : =TIME ; FILL [ I ] : = 0 END;
IF (VTANK[ I ]<VFTANK[ I ] ) AND ( FILL [ I ] = 0 . 0 )
THEN BEGIN FILL [ I ] : = 1 ;
TTSHUT[ I ] : =TTSHUT[ I ]+TIMETSHUT[ I ]
END;
IF (VTANK[ I ]<=VMIN[ I ] ) THEN PUMP[ I ] : = 0 ;
IF (VTANK[ I ]>VFTANKER[ I ] ) AND (F BERTH [ I ]=0)
THEN PUMP[ I ] : = 1 ;
END;
( r i t m o de l l e n a d o de l o s t a n q u e s
FILL [ ] o PUMP[ ] pueden s e r c e r o en t i e m p o s d i f e r e n t e s )
VTANK [ 1 ] : = FILL [ 1 ] FILLRATE[1] PUMP[ 1 ] PUMPRATE[ 1 ] ;
VTANK [ 2 ] : = FILL [ 2 ] FILLRATE[2] PUMP[ 2 ] PUMPRATE[ 2 ] ;
VTANK [ 3 ] : = FILL [ 3 ] FILLRATE[3] PUMP[ 3 ] PUMPRATE[ 3 ] ;
VTANK [ 4 ] : = FILL [ 4 ] FILLRATE[4] PUMP[ 4 ] PUMPRATE[ 4 ] ;
VTANK [ 5 ] : = FILL [ 5 ] FILLRATE[5] PUMP[ 5 ] PUMPRATE[ 5 ] ;
MODULE
( D i v i s i o n de l a s e c c i o n de l a r e d )
::
( Rate o f f i l l i n g o f t h e t a n k e r s )
VTANKER [ 1 ] : =PUMPRATE[ 1 ] PUMP[ 1 ] ;
VTANKER [ 2 ] : =PUMPRATE[ 2 ] PUMP[ 2 ] ;
VTANKER [ 3 ] : =PUMPRATE[ 3 ] PUMP[ 3 ] ;
VTANKER [ 4 ] : =PUMPRATE[ 4 ] PUMP[ 4 ] ;
VTANKER [ 5 ] : =PUMPRATE[ 5 ] PUMP[ 5 ] ;
( C o n d i c i o n e s de l l e n a d o en cada a t r a c a d e r o )
FOR I :=1 TO 5 DO
130
i b e r t := b e r t ;
FOR iBERT:=1 TO 5 DO
BEGIN
TYP:=( iSIZE 1) 5 + iBERT ;
IF TBAMO[TYP]<>0 THEN
BEGIN
TPLL:=TRIA(TBAMIN[TYP] ,TBAMO[TYP] ,
TBAMAX[TYP] ) ;
ACT(ARRIVAL[TYP] , TPLL) ;
IF R=1 THEN BEGIN WRITELN( T= ,TIME : 8 : 2 ,
A c t i v a t e d a r r i v a l S i z e , SIZET [ iSIZE ] : 7 : 1 ,
Berth , iBERT : 3 ,
Type ,TYP: 3 ,
{PAUSE; } END;
END;
END;
END;
( G r a f i c a d e l volumen de cada tanque )
GRA(A) : : IT : = 0 . 0 6 2 5 ;
IF R=2 THEN
Time ,TPLL : 8 : 1 ) ;
131
BEGIN
GRAPH ( 0 , 3 6 5 ,BLACK; TIME : 6 : 1 ,WHITE;
VTANK[ 1 ] : 7 : 1 , TANK1, 0 , 2 0 0 0 , MAGENTA;
VTANK[ 2 ] : 7 : 1 , TANK2, 0 , 2 0 0 0 , RED;
VTANK[ 3 ] : 7 : 1 , TANK3, 0 , 2 0 0 0 , GREEN;
VTANK[ 4 ] : 7 : 1 , TANK4, 0 , 2 0 0 0 , BLUE;
VTANK[ 5 ] : 7 : 1 , TANK5, 0 , 2 0 0 0 , YELLOW) ;
END;
( Reporte de multas y e n v i o s en l o s p u e r t o s )
RESUL (A) : : {CLRSCR; }
REPORT
OUTG VMAX
[ 1 . . 5 ] : 1 0 : 1 : Tank c a p a c i t y
OUTG PUMPRATE
[ 1 . . 5 ] : 1 0 : 1 : Pumping r a t e
OUTG FINE
[ 1 . . 5 ] : 1 0 : 1 : Fine i n each b e r t h
OUTG VTT
OUTG TTSHUT
[ 1 . . 5 ] : 1 0 : 1 : F i l l i n g tank shutdown ;
ENDREPORT;
{PAUSE; } ENDSIMUL;
INIT
10.17 ,
22.33 , 16.25 ,
5.3 ,
34.5 ,
12.6 ,
132
0.0 ,
34.5 ,
0.0 ,
0.0 ,
0.0 ,
0.0 ,
ASSI TBAMO[ 1 . . 2 5 ] : = ( 1 4 . 6 ,
12.17 ,
24.33 , 18.25 ,
0.0 ,
36.5 ,
0.0 ,
0.0
0.0 ,
0.0 ,
ASSI TBAMAX[ 1 . . 2 5 ] : = ( 1 6 . 6 ,
36.5 ,
14.6 ,
,45.63 ,
26.33 , 20.25 ,
9.3 ,
38.5 ,
16.6 ,
0.0 ,
38.5 ,
0.0 ,
0.0 ,
0.0 ,
0.0 ,
ASSI SIZET [ 1 . . 5 ] : = ( 2 0 0 , 3 0 0 , 5 0 0 , 7 0 0 , 9 0 0 ) ;
ASSI SIZETANKER[ 1 . . 5 ] : = ( 1 0 0 0 , 1 0 0 0 , 1 0 0 0 , 1 0 0 0 , 1 0 0 0 ) ;
EABS: = 1 0 0 0 0 ; EREL: = 1 0 0 0 0 ;
DT TANK: = 0 . 0 3 1 2 5 ;
DT PUMPING: = 0 . 0 3 1 2 5 ;
FINETAX: = 3 0 0 ;
ASSI FINE [ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
VTANK[ 1 ] : = 2 5 0 ; VTANK[ 2 ] : = 3 0 0 ; VTANK[ 3 ] : = 3 5 0 ; VTANK[ 4 ] : = 3 0 0 ;
VTANK[ 5 ] : = 4 6 6 ;
ASSI VTT[ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
ASSI VTANKER[ 1 . . 5 ] : = ( 0 , 0 , 0 , 0 , 0 ) ;
R: = 0 ;
INTI R : 2 :WRITE 1
GRAF 2
NONE 0 ;
DECL
VAR
( para cada p u e r t o o t i p o de p e t r o l e o : )
FILLRATE,
( t a z a de l l e n a d o d e l tanque mb/d )
PUMPRATE,
( v e l o c i d a d de bombeo mb/d )
VMAX,
VMIN,
VFTANK,
133
)
VFTANKER,
)
FILL ,
)
PUMP,
)
SIZETANKER, ( c a p a c i d a d l l e n a n d o s e d e l tanque )
SIZET ,
( c a p a c i d a d a l l e n a r en e l tanque mb
FINE ,
( multa acumulada )
TSHUT,
( tiempo de c i e r r e de un tanque l l e n o )
TTSHUT
( tiempo t o t a l de c i e r r e de un tanque l l e n o )
:ARRAY[ 1 . . 5 ] OF REAL;
VTANK,
( volumen a c t u a l en e l tanque mb )
VTT,
( volumen t o t a l t r a n s p o r t a d o mb )
VTANKER
( volumen a c t u a l en e l tanque mb )
:ARRAY[ 1 . . 5 ] OF CONT;
( Para cada t i p o de buque : )
TBAMIN,
( Mnimo tiempo e n t r e l l e g a d a s d )
TBAMO,
( Tiempo mas p r o b a b l e e n t r e l l e g a d a s d )
TBAMAX
( Maximo tiempo e n t r e l l e g a d a s d )
:ARRAY[ 1 . . 2 5 ] OF REAL;
I ,R:INTEGER; CH:CHAR;
FINETAX,
TPLL,
( Variables a u x i l i a r e s )
TE:
REAL;
MESSAGES ARRIVAL(TYP,BERT, SIZE :INTEGER) ;
STATISTICS ARRIVAL,ENTRANCE,BERTH, EXIT ;
END.
n de piloto de un avio
n
A.19 Eyeccio
A.19
134
Eyecci
on de piloto de un avi
on
TITLE E y e c c i o n de p i l o t o de un a v i o n
NETWORK
CA : :
METHOD(RK4) ;
X : = VCOS(TH)VP;
( V e l o c i d a d s o b r e X r e s p e c t o a l a v i o n )
Y : = VSIN (TH) ;
( V e l o c i d a d s o b r e Y r e s p e c t o a l a v i o n )
IF Y>Y1 THEN
( Si separados )
BEGIN
D:= 0 . 5 (PCDSVV) ;
( a r r a s t r e )
V : = (D/M+GSIN (TH) ) ; ( a c e l e r a c i o n a l o l a r g o de V )
TH : = (GCOS(TH) /V) ;
( V a r i a c i o n d e l a n g u l o )
END;
IF K=0
THEN
GRAPH( 0 , 2 . 4 ,BLACK;
X: 4 : 1 , X,0 , 10 0 ,GREEN; Y: 4 : 1 , Y, 0 , 1 0 ,RED)
ELSE
BEGIN
WRITELN( TI ,TIME : 1 2 : 4 ,
X ,X: 8 : 3 ,
V ,V: 8 : 3 ,
Y ,Y: 8 : 4 ,
TH ,TH: 8 : 5 ) ; PAUSE;
END;
IF (X<=20) AND PAS THEN
( almacena a l t u r a c r t i c a )
,HCRIT 3 . 5 : 7 : 2 ) ;
) ; PAUSE;
135
X: = 0 . 0 ; Y: = 0 . 0 ;
( P o s i c i o n i n i c i a l d e l punto de e y e c c i o n )
CD: = 1 . 0 ;
( c o e f i c i e n t e de a r r a s t r e )
VP: = 2 7 5 . 0 ;
( V e l o c i d a d d e l a v i o n M/S )
G: = 9 . 8 0 ;
( a c e l e r a c i o n de l a gravedad M/S2 )
P: = 1 . 2 2 ;
TH: = 0 . 2 6 1 8 ;
( Densidad d e l a i r e K/M3 )
( Angulo
de e y e c c i o n ( 1 5 Gr ) )
VE: = 1 2 . 2 ;
( V e l o c i d a d de e y e c c i o n M/S )
M: = 1 0 2 . 0 ;
( Masa e x p u l s a d a Kg )
S:=0.93;
( Area e f e c t i v a d e l c u e r p o e x p u l s a d o M2 )
Y1 : = 1 . 2 2 ;
( l o n g i t u d de l a e s c a l e r a de e y e c c i o n m )
PAS:=TRUE;
( A l t u r a c r t i c a no r e g i s t r a d a a
un )
INTI VP : 9 : 2 : Speed o f t h e p l a n e
INTI VE : 9 : 2 : E j e c t i o n s p e e d
( V e l o c i d a d y a n g u l o de s e p a r a c i o n )
VX:=VPVESIN (TH) ;
VY:=VECOS(TH) ;
V:=SQRT(VXVX+VYVY ) ;
TH:=ARCTAN(VY/VX) ;
K: = 0 ;
INTI K: 3 : Graphic output 0
Numerical 1 .
DT CA: = 0 . 0 0 8 ;
DECL
VAR X, Y, V,TH:CONT;
PAS :BOOLEAN;
A.20
Atractor Lorenz
TITLE A t r a c t o r Lorenz
NETWORK
CON : : X : = 1 0 (YX) ;
Y : = 1 7 XYXZ ;
Z : =XY1Z ;
136
GRAPH ( 0 , 3 0 0 ,BLACK;
X: 6 : 1 , X, 20 ,20 ,RED;
Z : 6 : 1 , Z , 0 , 3 0 ,GREEN) ;
INIT
ACT(CON, 0 ) ; TSIM: = 3 0 0 ; X: = 1 ; Y: = 1 ; Z : = 1 ;
DT CON: = 0 . 0 6 2 5 ;
DECL VAR X, Y, Z :CONT;
END.
A.21
{2}
{10}
POP : =BRDR;
{1}
{Taza Amontonamiento }
CR:=POP/ (LANDPDN) ;
{15}
( CAPITAL )
CG:=POPCGNCMM(MSL) ;
{CAP. G e n e r a c i o n }
{25}
CD:=CAPCDN;
{CAP. D e s c a r t e }
{27}
CAP : =CGCD;
CAR:=CAP/POP;
{24}
{CAP. Taza : CAP por p e r s o n a }
{23}
{5}
MSL:=ECR/ECRN; { E f e c t i v o r e l a t i v o a 1970}
{4}
{Es un n d i c e de m a t e r i a l b a s i c o para v i v i r }
( Comida . F r a c c i o n c a p i t a l en l a a g r i c u l t u r a )
RETARD( 1 ,CAF,CAFT,CFFR(FR) CQR(CAQR) ) ;
CRA:=CARCAF/CAFN;
{RAT. ADJ. }
{35}
{22}
{9}
NR:=NRUR; {NAT. R e c u r s o s R e s t a n t e s }
{8}
NRFR:=NR/NRI ;
137
{ F r a c c i o n de NAT. r e c u r s o s r e s t a n t e s }
{7}
{Taza de P o l u c i o n . R e l a t i v o a 1970}
{29}
( P o l u c i o n )
POLR:=POL/POLS ;
PG:=POPPOLNPOLCM(CAR) ; { G e n e r a c i o n P o l u c i o n }
PA:=POL/POLAT(POLR) ;
{ A b s o r c i o n P o l u c i o n }
POL : =PGPA;
{31}
{33}
{30}
( I n d i c e de c a l i d a d de v i d a )
QOL:=QLSQLM(MSL) QLC(CR) QLF(FR) QLP(POLR) ;
{37}
( Para cambiar pa r a m e t r o s d e s d e 1 9 7 0 )
BEGIN
BRN:=BRN1 ;
( Taza n a c i m i e n t o normal )
DRN:=DRN1;
( Taza de m o r t a l i d a d normal )
NRUN:=NRUN1;
FC:=FC1 ;
CGN:=CGN1;
( Taza c r e c i m i e n t o c a p i t a l normal )
CDN:=CDN1;
( Taza r e d u c c i o n c a p i t a l normal )
POLN:=POLN1 ;
( Valor normal P o l u c i o n )
END;
INIT
138
TSIM: = 2 3 0 ;
( Tiempo S i m u l a c i o n )
ACT(MODEL, 0 ) ;
( Primera a c t i v a c i o n d e l modelo )
( Para metros y v a l o r e s e s t a n d a r s ( n o r m a l e s ) )
BRN: = 0 . 0 4 ;
( C o e f i c i e n t e t a z a n a t a l i d a d , normal
)
DRN: = 0 . 0 2 8 ;
( C o e f i c i e n t e t a z a m o r t a l i d a d , normal
)
NRUN: = 1 ;
FC: = 1 ;
CGN: = 0 . 0 5 ;
normal
CDN: = 0 . 0 2 5 ;
( C o e f i c i e n t e de t a z a de c r e c i m i e n t o de c a p i t a l ,
)
( C o e f i c i e n t e de t a z a de d e s t r u c c i o n de c a p i t a l
)
POLN: = 1 ;
( C o e f i c i e n t e t a z a n a t a l i d a d , normal
)
DRN1: = 0 . 0 2 8 ;
( C o e f i c i e n t e t a z a m o r t a l i d a d , normal
)
NRUN1: = 1 ;
FC1: = 1 ;
CGN1: = 0 . 0 5 ;
normal
CDN1: = 0 . 0 2 5 ;
( C o e f i c i e n t e de t a z a de c r e c i m i e n t o de c a p i t a l ,
)
( C o e f i c i e n t e de t a z a de d e s t r u c c i o n de c a p i t a l
)
POLN1: = 1 ;
ECRN: = 1 ;
( Taza normal de c a p i t a l e f e c t i v o
)
LAND:=135E+6;
139
( Terreno t o t a l Km2
)
( Normal d e n s i d a d de p o b l a c i o n ( 1 9 7 0 )
PDN: = 2 6 . 5 ;
)
CAFT: = 1 5 . 0 ;
( A j u s t e de r e t r a s o de f r a c c i o n de c a p i t a l de
agricultura
CAFN: = 0 . 3 ;
FC: = 1 ;
FN: = 1 ;
( F r a c c i o n de c a p i t a l en a g r i c u l t u r a , i n i c i a l
FR: = 0 . 3 ;
)
POLS: = 3 . 6E+9;
( P o l u c i o n en 1970
)
QLS : = 1 . 0 ;
)
( M a t e r i a l e s t a n d a r de v i d a i n i c i a l ( 1 9 0 0 )
MSL: = 0 . 2 5 ;
)
( Taza i n i c i a l de c a l i d a d de v i d a
CAQR: = 2 ;
)
( Taza i n i c i a l de c a p i t a l e f e c t i v o
ECR: = 0 . 2 5 ;
)
( F r a c c i o n de r e c u r s o s n a t u r a l e s n a c i o n a l e s r e s t a n t e s ;
NRFR: = 1 ;
1 en 1900
DT MODEL: = 0 . 5 ;
)
( I n t e r v a l o de i n t e g r a c i o n )
( Cambios i n t e r a c t i v o s de l o s pa r a m e t r o s )
INTI BRN1 : 1 0 : 3 : BIRTH RATE COEFFICIENT
: 1 0 : 3 :FOOD COEFFICIENT
140
T. I n i c i a l 1900
POP: = 1 . 6 5E+9;
( P o b l a c i o n i n i c i a l ( 1 9 0 0 ) )
CAP: = 0 . 4E+9;
( Capital i n c i a l (1900) )
CAF: = 0 . 2 ;
( C a p i t a l FRACT. En a g r i c u l t u r a i n i c l a ( 1 9 0 0 ) )
CAR:=CAP/POP;
( C a p i t a l por p e r s o n a )
CRA: = 1 ;
( C a p i t a l i n v e r t i d o en a g r i c u l t u r a por p e r s o n a )
POL: = 0 . 2E+9;
( P o l u c i o n i n i c i a l ( 1 9 0 0 )
CR:=POP/ (LANDPDN) ;
( n d i c e de amontonamiento v a l o r =1 en 1970
NRI:=900E+9;
( R e c u r s o s n a t u r a l e s i n i c i a l : 250 a n
os en
t a z a de consumo de 1970 ( 1 unidad por p e r s o n a ) )
( r e c u r s o s n a t u r a l e s , como su v a l o r i n i c i a l )
NR:=NRI ;
( Funciones ( M u l t i p l i c a d o r e s )
BRMM: = 0 . 0 1 , 0 / 0 , 1 . 2 / 1 , 1 . 0 / 2 , 0 . 8 5 / 3 , 0 . 7 5 / 4 , 0 . 7 / 5 , 0 . 7 ;
{3}
BRFM: = 0 , 0 / 1 , 1 / 2 , 1 . 6 / 3 , 1 . 9 / 4 , 2 . 0 ;
{17}
BRCM: = 0 . 0 1 , 0 / 0 , 1 . 0 5 / 1 , 1 . 0 / 2 , 0 . 9 / 3 , 0 . 7 / 4 , 0 . 6 / 5 , 0 . 5 5 / 7 , 0 . 5 5 ;
{16}
BRPM: = 0 . 0 1 , 0 / 0 , 1 . 0 2 / 1 0 , 0 . 9 / 2 0 , 0 . 7 / 3 0 , 0 . 4 / 4 0 , 0 . 2 5 / 5 0 , 0 . 1 5 /
60 ,0.1;
{18}
DRMM: = 0 . 0 1 , 0 / 0 , 3 . 0 / 0 . 5 , 1 . 8 / 1 . 0 , 1 . 0 / 1 . 5 , 0 . 8 / 2 . 0 , 0 . 7 / 2 . 5 , 0 . 6 /
{11}
3.0 ,0.53/3.5 ,0.5/4.0 ,0.5/4.5 ,0.5/5.0 ,0.5;
DRFM: = 0 . 0 1 , 0 / 0 . 0 , 3 0 / 0 . 2 5 , 3 / 0 . 5 0 , 2 / 0 . 7 5 , 1 . 4 / 1 . 0 , 1 . 0 / 1 . 2 5 , 0 . 7 /
1.50 ,0.6/1.75 ,0.50/2.0 ,0.50/3.0 ,0.50;
{13}
DRCM: = 0 . 0 1 , 0 / 0 , 0 . 9 / 1 , 1 / 2 , 1 . 2 / 3 , 1 . 5 / 4 , 1 . 9 / 5 , 3 ;
DRPM: = 0 . 0 1 , 0 / 0 , 0 . 9 2 / 1 0 , 1 . 3 / 2 0 , 2 . 0 / 3 0 , 3 . 2 / 4 0 , 4 . 8 / 5 0 , 6 . 8 /
60 ,9.2;
{12}
CFFR: = 0 . 0 1 , 0 / 0 . 0 , 1 . 0 / 0 . 5 , 0 . 6 / 1 . 0 , 0 . 3 / 1 . 5 , 0 . 1 5 / 2 . 0 , 0 . 1 / 3 . 0 , 0 . 1 ;
{36}
NREM: = 0 . 0 , 0 . 0 / 0 . 2 5 , 0 . 1 5 / 0 . 5 0 , 0 . 5 0 / 0 . 7 5 , 0 . 8 5 / 1 . 0 , 1 . 0 ;
{6}
CMM: = 0 . 0 1 , 0 / 0 . 0 , 0 . 1 / 1 . 0 , 1 . 0 / 2 . 0 , 1 . 8 / 3 . 0 , 2 . 4 / 4 . 0 , 2 . 8 / 5 . 0 , 3 . 0 ;
{26}
FCM: = 0 . 0 1 , 0 / 0 , 2 . 4 / 1 , 1 / 2 , 0 . 6 / 3 , 0 . 4 / 4 , 0 . 3 / 5 , 0 . 2 ;
{20}
FPM: = 0 . 0 1 , 0 / 0 , 1 . 0 2 / 1 0 , 0 . 9 / 2 0 , 0 . 6 5 / 3 0 , 0 . 3 5 / 4 0 , 0 . 2 / 5 0 , 0 . 1 /
{28}
60 ,0.05;
FPC: = 0 . 0 1 , 0 / 0 , 0 . 5 / 1 , 1 / 2 , 1 . 4 / 3 , 1 . 7 / 4 , 1 . 9 / 5 , 2 . 0 5 / 6 , 2 . 2 ;
{21}
NRMM: = 0 , 0 . 0 / 1 , 1 . 0 / 2 , 1 . 8 / 3 , 2 . 4 / 4 , 2 . 9 / 5 , 3 . 3 /
{42}
6 ,3.6/7 ,3.8/8 ,3.9/9 ,3.95/10 ,4.0;
POLCM: = 0 , 0 . 0 5 / 1 , 1 / 2 , 3 / 3 , 5 . 4 / 4 , 7 . 4 / 5 , 8 . 0 ;
{32}
POLAT: = 0 . 0 1 , 0 / 0 , 0 . 6 / 1 0 , 2 . 5 / 2 0 , 5 . 0 / 3 0 , 8 . 0 / 4 0 , 1 1 . 5 / 5 0 , 1 5 . 5 /
{34}
60 ,20.0;
QLM: = 0 . 0 1 , 0 / 0 , 0 . 2 / 1 , 1 . 0 / 2 , 1 . 7 / 3 , 2 . 3 / 4 , 2 . 7 / 5 , 2 . 9 ;
{38}
QLC: = 0 . 0 1 , 0 / 0 , 2 / 0 . 5 , 1 . 3 / 1 , 1 . 0 / 1 . 5 , 0 . 7 5 / 2 , 0 . 5 5 / 2 . 5 , 0 . 4 5 /
3 ,0.38/3.5 ,0.3/4 ,0.25/4.5 ,0.22/5 ,0.20;
{39}
QLF: = 0 , 0 / 1 , 1 / 2 , 1 . 8 / 3 , 2 . 4 / 4 , 2 . 7 ;
{40}
QLP: = 0 . 0 1 , 0 / 0 , 1 . 0 4 / 1 0 , 0 . 8 5 / 2 0 , 0 . 6 0 / 3 0 , 0 . 3 0 / 4 0 , 0 . 1 5 / 5 0 , 0 . 0 5 /
{42}
60 ,0.02;
CQR: = 0 . 0 1 , 0 / 0 . 0 , 0 . 7 / 0 . 5 , 0 . 8 / 1 . 0 , 1 . 0 / 1 . 5 , 1 . 5 / 2 , 2 ;
{43}
141
142
( para m os t rar y m o d i f i c a c i o n e s i n t e r a c t i v a s de l a s f u n c i o n e s )
{INTI BRMM,BRFM,BRCM,BRPM, DRMM,DRFM,DRCM,DRPM,CFFR,NREM,CMM,FCM,
FPM, FPC,NRMM,POLCM,POLAT,QLM,QLC, QLF, QLP,CQR;
}
( D e c l a r a c i o n de v a r i a b l e s , p a r a m e t r o s y f u n c i o n e s )
DECL
VAR
( V a r i a b l e s e s t a d o v a l o r a c t u a l , nuevo v a l o r : 1 . e s c a l a para g r a f i c a :
G
POP,
( p o b l a c i o n
CAP,
NR,
POL
:CONT;
CAF:RET : 3 ;
( F r a c c i o n c a p i t a l en a g r i c u l t u r a
( Variables intermedias )
POPG,
( POP para G r a f i c a )
CAPG,
( CAP para G r a f i c a )
NRG,
( NR
BR,
( Taza n a t a l i d a d . N
umero de p e r s o n a s n a c i d a s en una unidad de
para G r a f i c a )
tiempo ( a
no )
( Taza m o r t a l i d a d . N
umero de p e r s o n a s muertas en una unidad
DR,
de tiempo ( a
no )
CG,
CD,
CAR,
( Taza c a p i t a l )
NRFR,
( F r a c c i o n r e s t a n t e de r e c u r s o s n a t u r a l e s )
NRUR,
( Taza de uso de r e c u r s o s n a t u r a l e s )
NRI ,
( Recursos n a t u r a l e s i n i c i a l )
143
( M a t e r i a l e s t a n d a r de v i d a . I n d i c e de c a p a c i d a d c o r r e g i d o
MSL,
por NR. )
( C o e f i c i e n t e de a l i m e n t a c i o n . I n d i c e de p r o d u c c i o n de comida
FR,
por p e r s o n a )
( C a p i t a l . en unidad de a g r i c u l t u r a : CAP. en AGR. / p e r s o n a en
CRA,
1970 )
( Taza amontonamiento .
CR,
n d i c e de d e n s i d a d de p o b l a c i o n . 1 en
1970
( C a p i t a l e f e c t i v o . c o r r e g i d o por NR d i s m i n u c i o n (=MSL v a l o r )
ECR,
)
PG,
a
no ) )
( Taza de a b s o r c i o n de p o l u c i o n en una unidad de tiempo ( a
no )
PA,
)
QOL,
( Radio p o l u c i o n . n d i c e de p o l u c i o n 1 en 1970 )
( I n d i c e de c a l i d a d de v i d a )
CAQR,
POLR,
( p aram et ros )
BRN,
( Normal t a z a de n a t a l i d a d )
DRN,
( Normal t a z a de m o r t a l i d a d )
NRUN,
FC,
CGN,
( Taza normal de c r e c i m i e n t o de c a p i t a l )
CDN,
( Taza normal de r e d u c c i o n de c a p i t a l )
POLN,
( Valor normal p o l u c i o n )
( v a l o r e s experimentales )
BRN1,
( Normal t a z a de n a t a l i d a d )
DRN1,
( Normal t a z a de m o r t a l i d a d )
NRUN1,
FC1 ,
CGN1,
( Taza normal de c r e c i m i e n t o de c a p i t a l )
CDN1,
( Taza normal de r e d u c c i o n de c a p i t a l )
POLN1,
( Valor normal p o l u c i o n )
LAND,
( Tierra t o t a l d i s p o n i b l e )
PDN,
( Densidad de p o b l a c i o n i n i c i a l )
144
CAFN,
( F r a c c i o n de c a p i t a l en a g r i c u l t u r a , normal )
CAFT,
( A j u s t e de r e t r a s o de f r a c c i o n de c a p i t a l de a g r i c u l t u r a )
FN,
( Comida Normal )
ECRN,
( C a p i t a l e f e c t i v o , normal )
POLS,
( P o l u ci o n , i n i c i a l )
QLS
( C a l i d a d de vida , e s t a n d a r )
:REAL;
( m u l t i p l i c a d o r e s )
GFUNCTIONS
BRMM POLYG (REAL) :REAL : 8 ;
( Taza n a c i m i e n t o ( m a t e r i a l de v i d a )
( Taza n a c i m i e n t o ( t a z a comida )
( Taza n a c i m i e n t o ( t a z a amontonamiento )
( Taza n a c i m i e n t o ( t a z a p o l u c i o n )
( Taza m o r t a l i d a d ( t a z a amontonamiento )
( Taza m o r t a l i d a d ( t a z a p o l u c i o n )
( CAP.FRAC.ADEQ( t a z a comida )
( CAP( m a t e r i a l de v i d a )
( F r a c c i o n comida ( amontonamiento ) t a z a
( F r a c c i o n comida ( p o l u c i o n ) t a z a
( C a l i d a d de v i d a ( m a t e r i a l de v i d a )
( C a l i d a d de v i d a ( amontonamiento )
( C a l i d a d de v i d a ( t a z a comida )
( C a l i d a d de v i d a ( t a z a p o l u c i o n )
( a j u s t e de cap . a g r ( t a z a de C a l i d a d de v i d a
) )
END.
Ap
endice B
Modeloteca. C
odigos Java
B.1
B.1.1
Taquilla simple
Programa Principal
import g a l a t e a . g l i d e r . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c d o u b l e InArrTime ;
p u b l i c s t a t i c i n t NM20 ;
p u b l i c s t a t i c d o u b l e MeSerTime ;
p u b l i c s t a t i c d o u b l e DeSerTime ;
// Nodos
s t a t i c Gate g a t e = new Gate ( ) ;
s t a t i c T e l l e r t e l l e r = new T e l l e r ( ) ;
s t a t i c E x i t e x i t = new E x i t ( ) ;
s t a t i c R e s u l t r e s u l t = new R e s u l t ( ) ;
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
Glider . act (1000 , r e s u l t ) ;
Glider . act (0 , gate ) ;
NM20 = 0 ;
setExperiment ( args ) ;
// Rastro
G l i d e r . t r a c e ( Example . t r c ) ;
// E s t a d s t i c a s
G l i d e r . s t a t ( Example . s t a ) ;
G l i d e r . addStat ( g a t e ) ;
G l i d e r . addStat ( t e l l e r ) ;
G l i d e r . addStat ( e x i t ) ;
G l i d e r . addStat ( r e s u l t ) ;
// S a l i d a
G l i d e r . setOutg ( NM20 , A r r i v a l s with queue >20) ;
Glider . process () ;
}
public s t a t i c void setExperiment ( String [ ] args ) {
InArrTime = G al at ea . doubleArg ( a r g s , InArrTime , 4 . 0 , Mean
I n t e r a r r i v a l Time ) ;
MeSerTime = G al at e a . doubleArg ( a r g s , MeSerTime , 3 . 8 0 , Mean
s e r v i c e time ) ;
DeSerTime = G al at ea . doubleArg ( a r g s , DeSerTime , 0 . 8 0 ,
D e v i a t i o n o f Mean S e r v i c e Time ) ;
G al a t e a . checkArgs ( a r g s ) ;
G l i d e r . addPath ( Ga la t e a . g e t E x p e r D i r ( ) ) ;
}
}
B.1.2
Nodo Teller
import g a l a t e a . g l i d e r . ;
c l a s s T e l l e r e x t e n d s Node {
Teller () {
s u p e r ( t e l l e r , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
}
@Override
public void fscan ( ) {
s t a y (GRnd . g a u s s ( Example . MeSerTime , Example . DeSerTime ) ) ;
}
}
146
B.1.3
Nodo Gate
import g a l a t e a . g l i d e r . ;
c l a s s Gate e x t e n d s Node {
Gate ( ) {
super ( gate , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
i t (GRnd . expo ( Example . InArrTime ) ) ;
i f ( ( Example . t e l l e r . g e t E l ( ) . l l ( ) > 2 0 ) ) {
Example . NM20 = Example . NM20 + 1 ;
}
s e n d t o ( G l i d e r . mess , Example . t e l l e r ) ;
}
}
B.1.4
Nodo Exit
import g a l a t e a . g l i d e r . ;
c l a s s E x i t e x t e n d s Node {
Exit ( ) {
s u p e r ( e x i t , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
p u b l i c v o i d f s c a n ( ) {}
}
B.1.5
Nodo Result
import g a l a t e a . g l i d e r . ;
c l a s s R e s u l t e x t e n d s Node {
Result () {
s u p e r ( r e s u l t , A ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
147
tico
B.2 Sistema Burocra
public void f a c t ( ) {
G l i d e r . outg ( NM20 , Example . NM20) ;
G l i d e r . en d si mu l ( ) ;
}
}
B.2
B.2.1
Sistema Burocr
atico
Programa Principal
import g a l a t e a . g l i d e r . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c b o o l e a n OPEN;
p u b l i c s t a t i c d o u b l e [ ] MeanWait = new d o u b l e [ 4 ] ;
p u b l i c s t a t i c d o u b l e [ ] DeviWait = new d o u b l e [ 4 ] ;
p u b l i c s t a t i c d o u b l e R;
p u b l i c s t a t i c i n t INO ;
p u b l i c s t a t i c c h a r CH;
// Nodos
s t a t i c A r r i v a l s a r r i v a l s = new A r r i v a l s ( ) ;
s t a t i c Inspec inspec [ ] = {
new I n s p e c ( ) ,
new I n s p e c ( ) ,
new I n s p e c ( ) ,
new I n s p e c ( )
};
s t a t i c Gates g a t e s [ ] = {
new Gates ( ) ,
new Gates ( ) ,
new Gates ( ) ,
new Gates ( )
};
s t a t i c Bureau bureau = new Bureau ( ) ;
s t a t i c E x i t e x i t = new E x i t ( ) ;
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
Glider . act (0 , a r r i v a l s ) ;
148
tico
B.2 Sistema Burocra
149
R = F l o a t .MAX VALUE;
OPEN = f a l s e ;
f o r (INO = 0 ; INO < 4 ; INO++){
G l i d e r . a c t ( 3 1 0 , g a t e s [ INO ] ) ;
}
MeanWait [ 0 ] = 4 0 ;
MeanWait [ 1 ] = 3 9 ;
MeanWait [ 2 ] = 1 2 ;
MeanWait [ 3 ] = 6 2 ;
DeviWait [ 0 ] = 4 ;
DeviWait [ 1 ] = 5 ;
DeviWait [ 2 ] = 3 ;
DeviWait [ 3 ] = 1 2 ;
setExperiment ( args ) ;
// Rastro
G l i d e r . t r a c e ( Example . t r c ) ;
// E s t a d s t i c a s
G l i d e r . s t a t ( Example . s t a ) ;
G l i d e r . addStat ( a r r i v a l s ) ;
G l i d e r . addStat ( i n s p e c ) ;
G l i d e r . addStat ( g a t e s ) ;
G l i d e r . addStat ( bureau ) ;
G l i d e r . addStat ( e x i t ) ;
Glider . process () ;
}
public s t a t i c void setExperiment ( String [ ] args ) {
G l i d e r . setTsim ( G al a t ea . doubleArg ( a r g s , tSim , 1 0 0 0 , Tiempo de
Simulacion ) ) ;
G al a t e a . checkArgs ( a r g s ) ;
G l i d e r . addPath ( Ga la t e a . g e t E x p e r D i r ( ) ) ;
}
}
B.2.2
Nodo Arrivals
import j a v a . i o . ;
import g a l a t e a . g l i d e r . ;
c l a s s A r r i v a l s e x t e n d s Node {
tico
B.2 Sistema Burocra
p u b l i c s t a t i c S t r i n g PeType = PeType ;
public s t a t i c String Rejected = Rejected ;
Arrivals () {
super ( a r r i v a l s , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
G l i d e r . mess . s e t F i e l d ( PeType , GRnd . u n i f ( 0 , 3 ) ) ;
i t (20) ;
G l i d e r . mess . s e t F i e l d ( R e j e c t e d , f a l s e ) ;
System . out . p r i n t l n ( Enter Someone o f Type + ( G l i d e r . mess .
g e t i n t V a l u e ( PeType ) ) ) ;
s e n d t o ( G l i d e r . mess , Example . i n s p e c [ G l i d e r . mess . g e t i n t V a l u e (
PeType ) ] ) ;
}
}
B.2.3
Nodo Gates
import g a l a t e a . g l i d e r . ;
c l a s s Gates e x t e n d s Node {
p r i v a t e s t a t i c i n t mult = 0 ;
Gates ( ) {
s u p e r ( g a t e s , mult , G ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
mult++;
}
@Override
public void f a c t ( ) {
i t (100) ;
Example .OPEN = ! Example .OPEN;
}
@Override
public void fscan ( ) {
i f ( Example .OPEN) {
s e n d t o ( G l i d e r . mess , Example . bureau ) ;
} else {
150
tico
B.2 Sistema Burocra
setScanFlag ( f a l s e ) ;
return ;
}
}
}
151
tico
B.2 Sistema Burocra
B.2.4
152
Nodo Bureau
import g a l a t e a . g l i d e r . ;
c l a s s Bureau e x t e n d s Node {
Bureau ( ) {
s u p e r ( bureau , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
}
@Override
public void fscan ( ) {
s t a y (GRnd . g a u s s ( Example . MeanWait [ G l i d e r . mess . g e t i n t V a l u e ( PeType
) ] , Example . DeviWait [ G l i d e r . mess . g e t i n t V a l u e ( PeType ) ] ) ) ;
}
}
B.2.5
Nodo Inspec
import g a l a t e a . g l i d e r . ;
c l a s s I n s p e c e x t e n d s Node {
p r i v a t e s t a t i c i n t mult = 0 ;
Inspec () {
s u p e r ( i n s p e c , mult , L ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
mult++;
}
@Override
public void fscan ( ) {
i f ( ( ( G l i d e r . mess . g e t i n t V a l u e ( PeType ) == 3 ) && GRnd . b e r ( 0 . 2 ) ) )
{
G l i d e r . mess . s e t F i e l d ( R e j e c t e d , t r u e ) ;
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
} else {
s e n d t o ( G l i d e r . mess , Example . g a t e s [ g e t I n o ( ) ] ) ;
}
153
}
}
B.2.6
Nodo Exit
import j a v a . i o . ;
import g a l a t e a . g l i d e r . ;
c l a s s E x i t e x t e n d s Node {
Exit ( ) {
s u p e r ( e x i t , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
System . out . p r i n t ( Someone o f Type + ( G l i d e r . mess . g e t i n t V a l u e (
PeType ) ) + ( g o t out
a f t e r ) + ( G l i d e r . getTime ( ) G l i d e r .
B.3
B.3.1
import g a l a t e a . g l i d e r . ;
import j a v a . i o . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c d o u b l e mArT ;
p u b l i c s t a t i c d o u b l e mCashT ;
// A r c h i v o s
p u b l i c s t a t i c PrintStream g r a p h 0 0 0 1 d a t ;
// Nodos
s t a t i c A r r i v a l s a r r i v a l s = new A r r i v a l s ( ) ;
154
s t a t i c T e l l e r t e l l e r = new T e l l e r ( ) ;
s t a t i c E x i t e x i t = new E x i t ( ) ;
s t a t i c Gra g r a = new Gra ( ) ;
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
Glider . act (0 , a r r i v a l s ) ;
mArT = 4 ;
mCashT = 3 . 8 ;
setExperiment ( args ) ;
// Rastro
G l i d e r . t r a c e ( Example . t r c ) ;
// E s t a d s t i c a s
G l i d e r . s t a t ( Example . s t a ) ;
G l i d e r . addStat ( a r r i v a l s ) ;
G l i d e r . addStat ( t e l l e r ) ;
G l i d e r . addStat ( e x i t ) ;
G l i d e r . addStat ( g r a ) ;
g r a p h 0 0 0 1 d a t = G l i d e r . s e t F i l e ( G l i d e r . getPath ( ) , graph0001 . dat ,
# G l i d e r . getTime ( ) \n# Example . t e l l e r . g e t E l ( ) . l l ( ) \n# 20\n
##) ;
Glider . process () ;
}
public s t a t i c void setExperiment ( String [ ] args ) {
G l i d e r . setTsim ( G al a t ea . doubleArg ( a r g s , tSim , 5 0 0 0 0 , Tiempo
de S i m u l a c i o n ) ) ;
G al a t e a . checkArgs ( a r g s ) ;
G l i d e r . addPath ( Ga la t e a . g e t E x p e r D i r ( ) ) ;
}
}
B.3.2
Nodo Teller
import g a l a t e a . g l i d e r . ;
c l a s s T e l l e r e x t e n d s Node {
Teller () {
s u p e r ( t e l l e r , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
}
@Override
public void fscan ( ) {
s t a y (GRnd . expo ( Example . mCashT , 2 ) ) ;
}
}
B.3.3
Nodo Arrivals
import g a l a t e a . g l i d e r . ;
c l a s s A r r i v a l s e x t e n d s Node {
Arrivals () {
super ( a r r i v a l s , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
i t (GRnd . expo ( Example . mArT) ) ;
G l i d e r . a c t ( 0 , Example . g r a ) ;
s e n d t o ( G l i d e r . mess , Example . t e l l e r ) ;
}
}
B.3.4
Nodo Exit
import g a l a t e a . g l i d e r . ;
c l a s s E x i t e x t e n d s Node {
Exit ( ) {
s u p e r ( e x i t , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
G l i d e r . a c t ( 0 , Example . g r a ) ;
}
}
155
B.3.5
Nodo Gra
import g a l a t e a . g l i d e r . ;
c l a s s Gra e x t e n d s Node {
Gra ( ) {
s u p e r ( g r a , A ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
G l i d e r . f i l e ( Example . g ra ph00 01 da t , G l i d e r . getTime ( ) + +
Example . t e l l e r . g e t E l ( ) . l l ( ) + + 2 0 ) ;
}
}
B.4
B.4.1
import g a l a t e a . g l i d e r . ;
import j a v a . i o . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c d o u b l e R;
p u b l i c s t a t i c d o u b l e FTBArr ;
p u b l i c s t a t i c i n t FType ;
public s t a t i c f i n a l int Freighter = 0;
p u b l i c s t a t i c f i n a l i n t Bulk = 1 ;
public s t a t i c f i n a l int Tourist = 2;
p u b l i c s t a t i c f i n a l i n t Repair = 3 ;
p u b l i c s t a t i c d o u b l e TFreig ;
p u b l i c s t a t i c i n t TypTur ;
p u b l i c s t a t i c i n t FTypTur ;
p u b l i c s t a t i c d o u b l e [ ] MI = new d o u b l e [ 3 ] ;
p u b l i c s t a t i c d o u b l e [ ] MO = new d o u b l e [ 3 ] ;
p u b l i c s t a t i c d o u b l e [ ] MA = new d o u b l e [ 3 ] ;
p u b l i c s t a t i c d o u b l e TBulk ;
p u b l i c s t a t i c d o u b l e TRepair ;
156
157
158
r e t u r n 1;
}
p u b l i c s t a t i c i n t FType ( i n t x ) {
d o u b l e p = GRnd . u n i f ( 0 , 1 2 6 1 . 0 , x ) ;
i f ( p<=611.0) r e t u r n Example . F r e i g h t e r ;
i f ( p<=1034.0) r e t u r n Example . Bulk ;
i f ( p<=1246.0) r e t u r n Example . T o u r i s t ;
i f ( p<=1261.0) r e t u r n Example . Repa ir ;
System . out . p r i n t l n ( E r r o r : No s e pudo e v a l u a r e l metodo FType ) ;
r e t u r n 1;
}
p u b l i c s t a t i c d o u b l e TFreig ( d o u b l e x ) {
i f ( x <0.0)
System . out . p r i n t l n ( E r r o r : method TFreig can not be e v a l u a t e d
) ;
i f ( x <=0.2) r e t u r n 7 . 0 + ( x 0 . 0 ) ( 3 6 . 2 4 4 0 1 9 1 3 8 7 5 5 9 8 + ( x 0 . 0 )
( 0 . 0 + ( x 0 . 0 ) 156.1004784688995) ) ;
i f ( x <=0.4) r e t u r n 1 3 . 0 + ( x 0 . 2 ) ( 1 7 . 5 1 1 9 6 1 7 2 2 4 8 8 0 4 + ( x 0 . 2 )
( 93.66028708133972 + ( x 0 . 2 ) 2 8 0 . 5 0 2 3 9 2 3 4 4 4 9 7 6 5 ) ) ;
i f ( x <=0.6) r e t u r n 1 5 . 0 + ( x 0 . 4 ) ( 1 3 . 7 0 8 1 3 3 9 7 1 2 9 1 8 7 + ( x 0 . 4 )
( 7 4 . 6 4 1 1 4 8 3 2 5 3 5 8 8 8 + ( x 0 . 4 ) 215.90909090909108) ) ;
i f ( x <=0.8) r e t u r n 1 9 . 0 + ( x 0 . 6 ) ( 1 7 . 6 5 5 5 0 2 3 9 2 3 4 4 5 0 2 + ( x
0 . 6 ) ( 54.90430622009574 + ( x 0 . 6 ) 8 3 . 1 3 3 9 7 1 2 9 1 8 6 6 1 3 ) ) ;
i f ( x <=1.0) r e t u r n 2 1 . 0 + ( x 0 . 8 ) ( 5 . 6 6 9 8 5 6 4 5 9 3 3 0 1 3 9 5 + ( x
0 . 8 ) ( 5.023923444976041 + ( x 0 . 8 ) 8 . 3 7 3 2 0 5 7 4 1 6 2 6 7 3 7 ) ) ;
System . out . p r i n t l n ( E r r o r : method TFreig can not be e v a l u a t e d ) ;
r e t u r n 1;
}
p u b l i c s t a t i c d o u b l e TBulk ( d o u b l e x ) {
i f ( x <0.0)
System . out . p r i n t l n ( E r r o r : method TBulk can not be e v a l u a t e d
) ;
i f ( x <=0.2) r e t u r n 9 . 0 + ( x 0 . 0 ) ( 1 3 . 5 2 8 7 0 8 1 3 3 9 7 1 2 9 3 + ( x 0 . 0 )
(0.0 + (x 0 . 0 ) 36.78229665071768) ) ;
i f ( x <=0.4) r e t u r n 1 2 . 0 + ( x 0 . 2 ) ( 1 7 . 9 4 2 5 8 3 7 3 2 0 5 7 4 1 5 + ( x
0 . 2 ) ( 2 2 . 0 6 9 3 7 7 9 9 0 4 3 0 6 1 3 + ( x 0 . 2 ) 58.91148325358845) ) ;
159
i f ( x <=0.6) r e t u r n 1 6 . 0 + ( x 0 . 4 ) ( 1 9 . 7 0 0 9 5 6 9 3 7 7 9 9 0 4 5 + ( x
0 . 4 ) ( 13.27751196172246 + ( x 0 . 4 ) 1 1 . 3 6 3 6 3 6 3 6 3 6 3 6 2 4 ) ) ;
i f ( x <=0.8) r e t u r n 1 9 . 5 + ( x 0 . 6 ) ( 1 5 . 7 5 3 5 8 8 5 1 6 7 4 6 4 1 3 + ( x
0 . 6 ) ( 6.4593301435407176 + ( x 0 . 6 ) 49.04306220095679) ) ;
i f ( x <=1.0) r e t u r n 2 2 . 0 + ( x 0 . 8 ) ( 7 . 2 8 4 6 8 8 9 9 5 2 1 5 3 0 7 + ( x 0 . 8 )
( 35.8851674641148 + ( x 0 . 8 ) 5 9 . 8 0 8 6 1 2 4 4 0 1 9 1 3 5 ) ) ;
System . out . p r i n t l n ( E r r o r : method TBulk can not be e v a l u a t e d ) ;
r e t u r n 1;
}
p u b l i c s t a t i c d o u b l e TRepair ( d o u b l e x ) {
i f ( x <0.0)
System . out . p r i n t l n ( E r r o r : method TRepair can not be
evaluated ) ;
i f ( x <=0.3) r e t u r n 5 6 . 6 6 6 6 6 6 6 6 6 6 6 6 6 7 x + 5 5 . 0 ;
i f ( x <=0.7) r e t u r n 2 2 . 5 0 0 0 0 0 0 0 0 0 0 0 0 0 4 x + 6 5 . 2 5 ;
i f ( x <=0.9) r e t u r n 3 4 . 9 9 9 9 9 9 9 9 9 9 9 9 9 8 6 x + 5 6 . 5 0 0 0 0 0 0 0 0 0 0 0 0 1 4 ;
i f ( x <=1.0) r e t u r n 2 0 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 x + 7 0 . 0 ;
System . out . p r i n t l n ( E r r o r : method TRepair can not be e v a l u a t e d ) ;
r e t u r n 1;
}
p u b l i c s t a t i c i n t FTypTur ( i n t x ) {
d o u b l e p = GRnd . u n i f ( 0 , 2 1 2 . 0 , x ) ;
i f ( p<=75.0) r e t u r n Example . S t o p p i n g ;
i f ( p<=197.0) r e t u r n Example . V i s i t ;
i f ( p<=212.0) r e t u r n Example . T r a n s f e r ;
System . out . p r i n t l n ( E r r o r : No s e pudo e v a l u a r e l metodo FTypTur )
;
r e t u r n 1;
}
p u b l i c s t a t i c i n t FClaExit ( i n t x ) {
i f ( x==Example . F r e i g h t e r ) r e t u r n Example .A;
i f ( x==Example . Bulk ) r e t u r n Example .A;
i f ( x==Example . T o u r i s t ) r e t u r n Example . B ;
i f ( x==Example . Repair ) r e t u r n Example . C ;
System . out . p r i n t l n ( E r r o r : No s e pudo e v a l u a r e l metodo FClaExit
) ; r e t u r n 1;
}
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
G l i d e r . a c t ( harbor , 0 ) ;
G l i d e r . a c t ( rESUL , 180 2 4 ) ;
MI [ Example . S t o p p i n g ] = 5 ;
MO[ Example . S t o p p i n g ] = 6 ;
MA[ Example . S t o p p i n g ] = 8 ;
MI [ Example . V i s i t ] = 2 7 ;
MO[ Example . V i s i t ] = 4 0 ;
MA[ Example . V i s i t ] = 4 7 ;
MI [ Example . T r a n s f e r ] = 7 2 ;
MO[ Example . T r a n s f e r ] = 9 3 ;
MA[ Example . T r a n s f e r ] = 1 3 0 ;
f r e i B e r t h . setCap ( 5 ) ;
t o u r B e r t h . setCap ( 3 ) ;
bulkB ert h . setCap ( 2 ) ;
r e p a i r B e r t h . setCap ( 1 ) ;
// Rastro
G l i d e r . t r a c e ( Example . t r c ) ;
// E s t a d s t i c a s
G l i d e r . s t a t ( Example . s t a ) ;
G l i d e r . addStat ( ha r b o r ) ;
G l i d e r . addStat ( f r e i B e r t h ) ;
G l i d e r . addStat ( bulkB erth ) ;
G l i d e r . addStat ( t o u r B e r t h ) ;
G l i d e r . addStat ( r e p a i r B e r t h ) ;
G l i d e r . addStat ( d e c E x i t ) ;
G l i d e r . addStat ( e x i t A ) ;
G l i d e r . addStat ( e x i t B ) ;
G l i d e r . addStat ( e x i t C ) ;
// S a l i d a
G l i d e r . setOutg ( P , D e v i a t i o n ) ;
Glider . process () ;
}
}
B.4.2
Nodo BulkBerth
160
import g a l a t e a . g l i d e r . ;
c l a s s BulkBerth e x t e n d s Node {
BulkBerth ( ) {
s u p e r ( bu lkBerth , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
s t a y ( Example . TBulk (GRnd . u n i f ( 0 , 1 ) ) ) ;
s e n d t o ( G l i d e r . mess , Example . d e c E x i t ) ;
}
}
B.4.3
Nodo RepairBerth
import g a l a t e a . g l i d e r . ;
c l a s s Re pa ir Be rt h e x t e n d s Node {
Re p ai rB er th ( ) {
s u p e r ( r e p a i r B e r t h , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
s t a y ( Example . TRepair (GRnd . u n i f ( 0 , 1 ) ) ) ;
s e n d t o ( G l i d e r . mess , Example . d e c E x i t ) ;
}
}
B.4.4
Nodo FreiBerth
import g a l a t e a . g l i d e r . ;
c l a s s F r e i B e r t h e x t e n d s Node {
FreiBerth () {
s u p e r ( f r e i B e r t h , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
161
B.4.5
Nodo TourBerth
import g a l a t e a . g l i d e r . ;
c l a s s TourBerth e x t e n d s Node {
TourBerth ( ) {
s u p e r ( t o u r B e r t h , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
Example . TypTur = Example . FTypTur ( 1 ) ;
s t a y (GRnd . t r i a ( Example . MI [ Example . TypTur ] , Example .MO[ Example .
TypTur ] , Example .MA[ Example . TypTur ] ) ) ;
s e n d t o ( G l i d e r . mess , Example . d e c E x i t ) ;
}
}
B.4.6
Nodo Harbor
import g a l a t e a . g l i d e r . ;
c l a s s Harbor e x t e n d s Node {
p u b l i c s t a t i c S t r i n g ShipType = ShipType ;
Harbor ( ) {
s u p e r ( h a r bo r , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
Example .R = GRnd . u n i f ( 0 , 1 ) ;
i t ( Example . FTBArr ( Example .R) ) ;
G l i d e r . mess . s e t F i e l d ( ShipType , Example . FType ( 1 ) ) ;
s w i t c h ( G l i d e r . mess . g e t i n t V a l u e ( ShipType ) ) {
c a s e Example . F r e i g h t e r :
162
s e n d t o ( G l i d e r . mess , Example . f r e i B e r t h ) ;
break ;
c a s e Example . Bulk :
s e n d t o ( G l i d e r . mess , Example . b ul kB er th ) ;
break ;
c a s e Example . T o u r i s t :
s e n d t o ( G l i d e r . mess , Example . t o u r B e r t h ) ;
break ;
c a s e Example . Repai r :
s e n d t o ( G l i d e r . mess , Example . r e p a i r B e r t h ) ;
break ;
}
}
}
163
B.4.7
Nodo DecExit
import g a l a t e a . g l i d e r . ;
c l a s s DecExit e x t e n d s Node {
DecExit ( ) {
s u p e r ( d e c E x i t , G ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
Example . E x i t C l a s s = Example . FClaExit ( G l i d e r . mess . g e t i n t V a l u e (
ShipType ) ) ;
s w i t c h ( Example . E x i t C l a s s ) {
c a s e Example .A:
s e n d t o ( G l i d e r . mess , Example . e x i t A ) ;
break ;
c a s e Example . B :
s e n d t o ( G l i d e r . mess , Example . e x i t B ) ;
break ;
c a s e Example .C:
s e n d t o ( G l i d e r . mess , Example . e x i t C ) ;
break ;
}
}
}
B.4.8
Nodo ExitA
import g a l a t e a . g l i d e r . ;
c l a s s ExitA e x t e n d s Node {
ExitA ( ) {
s u p e r ( e x i t A , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
p u b l i c v o i d f s c a n ( ) {}
}
164
B.4.9
Nodo ExitB
import g a l a t e a . g l i d e r . ;
c l a s s ExitB e x t e n d s Node {
ExitB ( ) {
s u p e r ( e x i t B , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
p u b l i c v o i d f s c a n ( ) {}
}
B.4.10
Nodo ExitC
import g a l a t e a . g l i d e r . ;
c l a s s ExitC e x t e n d s Node {
ExitC ( ) {
s u p e r ( e x i t C , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
p u b l i c v o i d f s c a n ( ) {}
}
B.4.11
Nodo RESUL
import g a l a t e a . g l i d e r . ;
c l a s s RESUL e x t e n d s Node {
RESUL( ) {
s u p e r ( rESUL , A ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
Example . P = Example . f r e i B e r t h . g e t E l ( ) . m s t l ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . f r e i B e r t h . g e t E l ( ) . dmstl ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . t o u r B e r t h . g e t E l ( ) . m s t l ( ) ;
165
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . t o u r B e r t h . g e t E l ( ) . dmstl ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . bulkBerth . g e t E l ( ) . m s t l ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . bulkBerth . g e t E l ( ) . dmstl ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . r e p a i r B e r t h . g e t E l ( ) . m s t l ( ) ;
G l i d e r . outg ( P , Example . P) ;
Example . P = Example . r e p a i r B e r t h . g e t E l ( ) . dmstl ( ) ;
G l i d e r . outg ( P , Example . P) ;
G l i d e r . en d si mu l ( ) ;
}
}
B.5
B.5.1
import g a l a t e a . g l i d e r . ;
import j a v a . i o . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c d o u b l e TBA;
p u b l i c s t a t i c i n t TYPA = 0 ;
p u b l i c s t a t i c d o u b l e TBB;
p u b l i c s t a t i c i n t TYPB = 1 ;
p u b l i c s t a t i c d o u b l e FTB;
p u b l i c s t a t i c d o u b l e TS ;
// Histogramas
s t a t i c Histogram TTS = new Histogram ( TTS , 0 . 0 , 1 5 , 1 0 . 0 ) ;
// A r c h i v o s
p u b l i c s t a t i c PrintStream a r t b a d a t ;
// Nodos
s t a t i c InA inA = new InA ( ) ;
s t a t i c InB inB = new InB ( ) ;
s t a t i c WA wA = new WA( ) ;
166
167
s t a t i c G g = new G( ) ;
s t a t i c WB1 wB1 = new WB1( ) ;
s t a t i c WB2 wB2 = new WB2( ) ;
s t a t i c E x i t e x i t = new E x i t ( ) ;
p u b l i c s t a t i c d o u b l e FTB( d o u b l e x ) {
i f ( x <0.0)
System . out . p r i n t l n ( E r r o r : method FTB can not be e v a l u a t e d ) ;
i f ( x <=0.3) r e t u r n 0 . 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 7 x + 0.2;
i f ( x <=0.5) r e t u r n 0 . 5 x + 0.25;
i f ( x <=0.8) r e t u r n 0 . 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 x + 0.3333333333333333;
i f ( x <=1.0) r e t u r n 0 . 0 x + 0 . 2 ;
System . out . p r i n t l n ( E r r o r : method FTB can not be e v a l u a t e d ) ;
r e t u r n 1;
}
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
G l i d e r . a c t ( 0 , inA ) ;
G l i d e r . a c t ( 0 . 2 , inB ) ;
TBA = 3 ;
TBB = 3 . 5 ;
GRnd . setRn ( 1 , 2 9 8 7 1 ) ;
setExperiment ( args ) ;
// Rastro
G l i d e r . t r a c e ( Example . t r c ) ;
// E s t a d s t i c a s
G l i d e r . s t a t ( Example . s t a ) ;
G l i d e r . addStat (TBA) ;
G l i d e r . addStat (TBB) ;
G l i d e r . addStat ( inA ) ;
G l i d e r . addStat ( inB ) ;
G l i d e r . addStat (wA) ;
G l i d e r . addStat ( g ) ;
G l i d e r . addStat (wB1) ;
G l i d e r . addStat (wB2) ;
G l i d e r . addStat ( e x i t ) ;
a r t b a d a t = G l i d e r . s e t F i l e ( G l i d e r . getPath ( ) , a r t b a . dat , #
G l i d e r . getTime ( ) \n# g e t I t ( ) \n##) ;
Glider . process () ;
168
}
public s t a t i c void setExperiment ( String [ ] args ) {
G l i d e r . setTsim ( G al a t ea . doubleArg ( a r g s , tSim , 4 0 0 , Tiempo de
Simulacion ) ) ;
G al a t e a . checkArgs ( a r g s ) ;
G l i d e r . addPath ( Ga la t e a . g e t E x p e r D i r ( ) ) ;
}
}
B.5.2
Nodo InA
import g a l a t e a . g l i d e r . ;
c l a s s InA e x t e n d s Node {
p u b l i c s t a t i c S t r i n g TA = TA ;
InA ( ) {
s u p e r ( inA , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
i t (GRnd . expo ( Example .TBA) ) ;
G l i d e r . mess . s e t F i e l d ( TA , 4 ) ;
G l i d e r . mess . s e t F i e l d ( TB , 5 ) ;
G l i d e r . mess . s e t F i e l d ( TYP , Example .TYPA) ;
Example .TBA = 3 + 0 . 0 2 G l i d e r . getTime ( ) ;
G l i d e r . mess . s e t F i e l d ( PRIOR , 4 ) ;
G l i d e r . f i l e ( Example . a r t b a d a t , G l i d e r . getTime ( ) + + g e t I t ( ) ) ;
s e n d t o ( G l i d e r . mess , Example .wA) ;
}
}
B.5.3
169
Nodo InB
import g a l a t e a . g l i d e r . ;
c l a s s InB e x t e n d s Node {
InB ( ) {
s u p e r ( inB , I ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
i t (GRnd . expo ( Example .TBB) ) ;
G l i d e r . mess . s e t F i e l d ( TB , 8 ) ;
G l i d e r . mess . s e t F i e l d ( TYP , Example .TYPB) ;
Example .TBB = 3 . 5 + 0 . 0 1 G l i d e r . getTime ( ) ;
G l i d e r . mess . s e t F i e l d ( PRIOR , 3 ) ;
s e n d t o ( G l i d e r . mess , Example . g ) ;
}
}
B.5.4
Nodo G
import g a l a t e a . g l i d e r . ;
c l a s s G e x t e n d s Node {
G( ) {
s u p e r ( g , G ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
i f ( Example . wB1 . g e t I l ( ) . l l ( ) + Example . wB2 . g e t I l ( ) . l l ( ) < 1 0 ) {
i f ( Example . wB1 . g e t I l ( ) . l l ( ) < Example . wB2 . g e t I l ( ) . l l ( ) ) {
s e n d t o ( G l i d e r . mess , Example . wB1) ;
} else {
s e n d t o ( G l i d e r . mess , Example . wB2) ;
}
} else {
setScanFlag ( f a l s e ) ;
return ;
}
}
}
B.5.5
Nodo WA
import g a l a t e a . g l i d e r . ;
c l a s s WA e x t e n d s Node {
WA( ) {
s u p e r ( wA , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void f a c t ( ) {
i f (GRnd . b e r ( 0 . 2 ) ) {
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
} else {
s e n d t o ( G l i d e r . mess , Example . g ) ;
}
}
@Override
public void fscan ( ) {
s t a y ( G l i d e r . mess . g e t d o u b l e V a l u e ( TA ) + GRnd . u n i f ( 0.1 , 0 . 1 )
G l i d e r . mess . g e t d o u b l e V a l u e ( TA ) ) ;
}
}
B.5.6
Nodo WB1
import g a l a t e a . g l i d e r . ;
c l a s s WB1 e x t e n d s Node {
WB1( ) {
s u p e r ( wB1 , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
s t a y ( G l i d e r . mess . g e t d o u b l e V a l u e ( TB ) + GRnd . u n i f ( 0.1 , 0 . 1 )
G l i d e r . mess . g e t d o u b l e V a l u e ( TB ) ) ;
170
171
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
}
}
B.5.7
Nodo WB2
import g a l a t e a . g l i d e r . ;
c l a s s WB2 e x t e n d s Node {
WB2( ) {
s u p e r ( wB2 , R ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
s t a y ( G l i d e r . mess . g e t d o u b l e V a l u e ( TB ) + Example .FTB(GRnd . u n i f ( 0 ,
1 ) ) G l i d e r . mess . g e t d o u b l e V a l u e ( TB ) ) ;
s e n d t o ( G l i d e r . mess , Example . e x i t ) ;
}
}
B.5.8
Nodo Exit
import g a l a t e a . g l i d e r . ;
c l a s s E x i t e x t e n d s Node {
Exit ( ) {
s u p e r ( e x i t , E ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
}
@Override
public void fscan ( ) {
Example . TTS . addObservation ( G l i d e r . getTime ( ) G l i d e r . mess . getGt ( )
);
}
}
B.6
B.6.1
172
import g a l a t e a . g l i d e r . ;
import j a v a . i o . ;
p u b l i c c l a s s Example {
// A t r i b u t o s
p u b l i c s t a t i c d o u b l e c1 ;
p u b l i c s t a t i c d o u b l e rm ;
p u b l i c s t a t i c d o u b l e c2 ;
p u b l i c s t a t i c d o u b l e c3 ;
p u b l i c s t a t i c d o u b l e c4 ;
// A r c h i v o s
p u b l i c s t a t i c PrintStream g r a p h 0 0 0 1 d a t ;
// Nodos
s t a t i c RF rF = new RF( ) ;
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
G l i d e r . a c t ( 0 , rF ) ;
c1 = 0 . 1 8 ;
c2 = 0 . 0 0 0 1 5 ;
c3 = 0 . 2 ;
c4 = 0 . 0 0 0 1 ;
rF . dt ( 0 . 1 2 5 ) ;
setExperiment ( args ) ;
g r a p h 0 0 0 1 d a t = G l i d e r . s e t F i l e ( G l i d e r . getPath ( ) , graph0001 . dat ,
# G l i d e r . getTime ( ) \n# r . g e t S t a t e ( ) \n# f . g e t S t a t e ( ) \n##) ;
Glider . process () ;
}
public s t a t i c void setExperiment ( String [ ] args ) {
G l i d e r . setTsim ( G al a t ea . doubleArg ( a r g s , tSim , 2 5 0 , Tiempo de
Simulacion ) ) ;
rF . s e t S t a t e ( r , Ga la te a . doubleArg ( a r g s , r , 1 0 0 0 , RABBITS
INITIAL ) ) ;
rF . s e t S t a t e ( f , Ga la t e a . doubleArg ( a r g s , f , 7 5 0 , FOXES
INITIAL ) ) ;
rm = G al at ea . doubleArg ( a r g s , rm , 2 0 0 0 0 , RABBITS MAXIMUM ) ;
G al a t e a . checkArgs ( a r g s ) ;
G l i d e r . addPath ( Ga la t e a . g e t E x p e r D i r ( ) ) ;
}
}
B.6.2
Nodo RF
import g a l a t e a . g l i d e r . ;
import j a v a . u t i l . ;
c l a s s RF e x t e n d s Node {
ContR r ;
ContF f ;
RF( ) {
s u p e r ( rF , C ) ;
G l i d e r . n o d e s l . add ( t h i s ) ;
r = new ContR ( r ) ;
t h i s . addEqs ( r ) ;
f = new ContF ( f ) ;
t h i s . addEqs ( f ) ;
}
@Override
public void f a c t ( ) {
G l i d e r . f i l e ( Example . g ra ph00 01 da t , G l i d e r . getTime ( ) + + r .
getState () + + f . getState () ) ;
}
p u b l i c v o i d s e t S t a t e ( S t r i n g id , d o u b l e v a l u e ) {
switch ( id ) {
c a s e r : r . s e t S t a t e ( v a l u e ) ; break ;
c a s e f : f . s e t S t a t e ( v a l u e ) ; break ;
}
}
c l a s s ContR e x t e n d s Cont {
ContR ( S t r i n g l ) {
super ( l ) ;
}
@Override
p u b l i c double f e v a l ( double x , double [ ] y ) {
double r = y [ 0 ] ;
double f = y [ 1 ] ;
173
174
Bibliografa
Banks, J. (2001), Discrete-Event System Simulation, Prentice Hall.
Fisher, R. (1935), The Design of Experiments, Macmillan.
Johnson, J. (2010), Designing with the Mind in Mind: Simple Guide to Understanding
User Interface Design Rules, Morgan Kaufmann.
McConnell, S. (2004), Code Complete: A Practical Handbook of Software Construction,
Microsoft Press.
Ramos, A. (2006), Gide: un ambiente de desarrollo integrado para la plataforma de
simulacion galatea.
Uzcategui, M. (2002), Dise
no de la plataforma de simulacion de sistemas multi-agentes
galatea.
Zeigler, B. (1984), Simulation and Model-Based Methodologies: An Inegrative View,
Springer.
Zeigler, B. (2000), Theory of Modeling and Simulation, ACADEMIC PRESS.