PFC Modelado Dinámico Y Simulación En Java De Interacciones...

132
PROYECTO FIN DE CARRERA MODELADO DINÁMICO Y SIMULACIÓN EN JAVA DE INTERACCIONES DE SISTEMAS DE ENJAMBRES DE PARTÍCULAS AUTOR: D. ROBERTO GARCÍA HABA TUTOR: DR. D. FEDERICO CUESTA ROJO FECHA: JUNIO DE 2011 UNIVERSIDAD DE SEVILLA ESCUELA SUPERIOR DE INGENIEROS DPTO. DE INGENIERÍA DE SISTEMAS Y AUTOMÁTICA INGENIERÍA DE TELECOMUNICACIÓN

Transcript of PFC Modelado Dinámico Y Simulación En Java De Interacciones...

Page 1: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

PROYECTO FIN DE CARRERA

MODELADO DINÁMICO Y

SIMULACIÓN EN JAVA DE

INTERACCIONES DE

SISTEMAS DE ENJAMBRES

DE PARTÍCULAS

AUTOR: D. ROBERTO GARCÍA HABA

TUTOR: DR. D. FEDERICO CUESTA ROJO

FECHA: JUNIO DE 2011

UNIVERSIDAD DE SEVILLA

ESCUELA SUPERIOR DE INGENIEROS

DPTO. DE INGENIERÍA DE SISTEMAS Y AUTOMÁTICA

INGENIERÍA DE TELECOMUNICACIÓN

Page 2: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

2

ÍNDICE DE CONTENIDOS

CAPÍTULO 1: INTRODUCCIÓN 4

CAPÍTULO 2: ACERCA DE LA APLICACIÓN DE APOYO EASY JAVA SIMULATIONS 7

2.1. Instalando y arrancando Ejs por vez primera 8

2.2. Estructura de directorios 8

2.3. Ejecutando Ejs 9

2.4. Trabajando con una simulación 11

2.4.1. La introducción 11

2.4.2. El modelo 12

Declaración de variables 13

Inicialización del modelo 14

Evolución del modelo 14

Ligaduras entre variables 16

Métodos propios o a medida 16

Comportamiento del modelo 16

2.4.3. La vista 17

2.4.4. Comportamiento de la simulación 23

2.4.5. Ejecutando una simulación 24

2.4.6. Distribución de las simulaciones 25

CAPÍTULO 3: SISTEMA DE CONTROL DEL NIVEL DE UN DEPÓSITO 27

3.1. Obtención del modelo y la vista de la simulación 30

Esquemas de control y realimentación 34

Vista de la simulación 38

3.2. Diseño de controladores para el sistema 42

3.2.1. Diseño empleando control por realimentación simple 43

Estudio del controlador P 43

Estudio del controlador PI 45

Estudio del controlador PD 48

Estudio del controlador PID 53

3.2.2. Diseño empleando control en cascada 56

3.3. Otras consideraciones 57

Efecto windup 57

Variable de control ilimitada 59

Valoración final 60

CAPÍTULO 4: OPTIMIZACIÓN DE ENJAMBRES DE PARTÍCULAS 62

4.1. Obtención del modelo y la vista de la simulación 66

Vista de la simulación 79

4.2. Análisis del fenómeno bajo estudio 84

Caso 1. Comparativa de las diversas aceleraciones 84

Caso 2. Equilibrio velocidad-ángulo de giro en poblaciones 87

Caso 3. Desequilibrio velocidad-ángulo de giro en poblaciones 89

4.3. Otras consideraciones 91

Page 3: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

3

Efecto de la variación de los pesos en las aceleraciones 92

Agrupación de manadas de distinta especie en una única 93

Rangos de detección y separación diferentes según la especie 94

Piezas finitas en depredadores 97

Incluyendo obstáculos y plantas 98

Valoración final 102

CAPÍTULO 5: MOVIMIENTO MIGRATORIO DE HERBÍVOROS 104

5.1. Obtención del modelo y la vista de la simulación 107

Vista de la simulación 110

5.2. Análisis del fenómeno bajo estudio 111

Caso 1. Estudio inicial con Haz Activo e Igual Salida habilitados 112

Caso 2. Aumentando el rango de detección en carnívoros 115

Caso 3. Desequilibrio velocidad-ángulo de giro en poblaciones 118

5.3. Otras consideraciones 121

Efecto de la variación en el ancho de haz de salida en herbívoros 121

Valoración final 126

CAPÍTULO 6: CONCLUSIONES 128

CAPÍTULO 7: BIBLIOGRAFÍA 130

7.1. Apuntes 130

7.2. Manuales 130

7.3. Páginas webs 130

Page 4: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

4

CAPÍTULO 1: INTRODUCCIÓN

La finalidad de este proyecto es analizar el modelado y la simulación de sistemas

dinámicos compuestos por múltiples individuos interactuando, ayudándose para ello

de la herramienta Ejs (Easy Java Simulations), elaborada por el profesor -doctorado en

Matemáticas- Francisco Esquembre, el cual desempeña actualmente sus funciones en

la Universidad de Murcia.

En primer lugar, trataremos de dar una vista global al entorno de programación Ejs.

Veremos que es de muy fácil manejo, ya que el aspecto que su interfaz presenta se

antoja muy intuitivo, y aunque no sea quizá la aplicación más potente para el estudio

de procesos complejos, en cuanto a lo que se refiere a sistemas con fines didácticos -lo

que se pretende en este trabajo- cumple sobradamente los requisitos esperados.

Ejs simplifica nuestra tarea a la hora de programar en Java, lo que resulta de agradecer

para los programadores inexpertos, aunque también incluye la posibilidad de añadir

nuestro propio código importado si somos analistas informáticos experimentados.

Dispone además de varios métodos de resolución de ecuaciones diferenciales

ordinarias, según la precisión y el grado de complejidad del sistema a modelar.

Esta herramienta es capaz de generar el código necesario (applets de Java, páginas

HTML) para poder colgar las simulaciones en internet.

Además, presenta la eventualidad de interconectarse con la herramienta Matlab para

así aprovechar su gran potencia de cálculo.

A continuación y como segunda parte del proyecto, procederemos al estudio de un

sistema de control del nivel de agua de un tanque, con objeto de ahondar más en las

características de la herramienta Ejs para adquirir mayor destreza en su manejo.

Modelaremos el sistema de tal forma que se asemeje lo más posible a cualquiera que

nos pudiéramos encontrar en un laboratorio, con parámetros específicos para las

válvulas, los depósitos, la bomba y los controladores PID que dispone.

Consideraremos distintas estructuras de control: control por realimentación simple

usando un PID y control por realimentación en cascada (también conocida como

maestro-esclavo).

Tendremos en cuenta la existencia de saturación en la señal de control de la

servoválvula.

Page 5: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

5

Del mismo modo, la bomba podrá ser configurada para que trabaje al cien por cien o,

por el contrario, existan unas pérdidas que no le permitan rendir al máximo,

disminuyendo el caudal máximo admisible de la servoválvula.

Pese a ello, otra opción que estará a nuestro alcance será la de estudiar el efecto ideal

de no saturación de la señal de control ni de la bomba, lo que desembocará en un flujo

ilimitado a la salida de la servoválvula.

Incluso corregiremos, si así lo queremos, el efecto integral del controlador cuando la

variable de control alcanza los límites prefijados del actuador. Cuando esto sucede, el

bucle realimentado permanece en su límite independientemente de la salida del

proceso. Si empleamos un controlador con acción integral, el error continuará siendo

integrado, incrementando aún más su valor. Por lo que el término integral puede

volverse muy grande, produciéndose de esta guisa el efecto denominado windup.

Evitaremos que este fenómeno ocurra mediante el empleo de un condicional en la

estructura de control que deje de integrar el error cuando se rebasen los límites de

saturación de la señal de control, es lo que se llama control anti-windup.

Luego de abordar el capítulo dedicado a la implementación de un laboratorio de

control para familiarizarnos aún más con la herramienta Ejs, estaremos ya capacitados

para adentrarnos en el análisis de la optimización de enjambres (o manadas o

bandadas) de partículas.

Así, veremos cómo actúan dichas bandadas para agruparse o disgregarse según se

encuentren con individuos de la misma o distinta especie, respectivamente.

Básicamente, son tres las reglas que rigen el comportamiento de un enjambre:

- Alineación: cada elemento del grupo intentará llevar la misma velocidad

(ángulo y módulo) que todos los que estén en su radio de detección.

- Cohesión: tratará de dirigirse al centro percibido de la bandada, es decir, al

centroide de todos los individuos que es capaz de detectar en su radio.

- Separación: evitará sitios donde haya mucha congregación de partículas.

Siguiendo estas tres normas, junto con otras como las de evitar predadores y

obstáculos o perseguir a sus presas, analizaremos con detenimiento la conducta de

todas las especies animales implicadas.

Tras la comprensión del problema de optimización de enjambres de partículas,

acometeremos la empresa de evaluar la manera de proceder de los herbívoros en un

caso particular que cualquier amante de la naturaleza habrá tenido la ocasión de

vislumbrar en algún documental de vida salvaje: la migración anual de cebras y ñus

Page 6: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

6

desde la reserva del Serengeti (Serengueti en castellano), en Tanzania, hasta su

homóloga en Kenia, la del Masai Mara.

En este viaje de ida y vuelta que emprenden tales sujetos tendrán que enfrentarse a

innumerables vicisitudes.

Nosotros nos centraremos principalmente en dos circunstancias:

- La travesía de la sabana, lugar donde moran grandes carnívoros terrestres

como el león, el leopardo y el guepardo, aunque en primer término sólo

examinaremos el problema con los leones como único predador en potencia de

la sabana.

- El dramático cruce del río Mara, que sirve de frontera entre los territorios de

Tanzania y Kenia, residencia habitual de unos de los más voraces y ancestrales

predadores acuáticos: el cocodrilo.

De esta forma, haremos un estudio de población de las diversas familias que habitan

estas regiones del continente africano, analizaremos sus movimientos y su manera de

actuar frente a la casuística existente sobre este tema.

Finalmente, dedicaremos unas páginas a las conclusiones que se hayan podido sacar

de todas las aplicaciones realizadas, cerrando este proyecto con las citas de los

materiales bibliográficos empleados para su elaboración.

Page 7: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

7

CAPÍTULO 2: ACERCA DE LA APLICACIÓN DE

APOYO EASY JAVA SIMULATIONS

Una vez expuestos los motivos fundamentales y la planificación a seguir a lo largo de

esta memoria, iremos paso a paso por los respectivos puntos del índice de contenidos

de la misma.

Para acometer nuestro trabajo -como en toda labor técnica- precisaremos de una

utilidad concreta. Se ha optado por Ejs por su facilidad de uso; no obstante, podría

haberse realizado con la ayuda de cualquier lenguaje de programación actual.

Es el momento de explicar, sin lujo de detalles pero de manera sucinta, la herramienta

usada para la elaboración de las distintas simulaciones de este proyecto.

Fue denominada Ejs (Easy Java Simulations) por el profesor -doctorado en

Matemáticas- Francisco Esquembre, consultar las fuentes [3] y [5] en bibliografía, que

actualmente desempeña su cargo en la Universidad de Murcia.

Esta aplicación presenta enormes ventajas, como la simplificación de la tarea tanto

desde el punto de vista técnico como conceptual.

En cuanto a lo primero, nos facilita la construcción de la parte gráfica de la simulación,

llamada vista en Ejs, basándose para ello en la noción de configuración arbórea o

padre-hijo.

Respecto a lo segundo, porque nos proporciona una estructura simplificada para la

creación del modelo de la simulación, esto es, de la descripción científica del

fenómeno bajo estudio.

Evidentemente, parte de la tarea sigue estando en nuestras manos. Corre a nuestro

cargo diseñar la vista y especificar a Ejs las variables y algoritmos que describen el

modelo de la simulación. Veremos cómo usar debidamente la herramienta para

realizar la vista. En cuanto al modelo, aprenderemos a proporcionar las variables

necesarias que describen su estado y a escribir el pertinente código Java de los

métodos del mismo. En otras palabras, adquiriremos la habilidad necesaria para

programar el computador a que nos ayude a resolver el modelo.

Page 8: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

8

2.1. Instalando y arrancando Ejs por vez primera

Ejs funciona en cualquier sistema operativo. Sólo precisa que este tenga instalada una

máquina virtual de Java. Supondremos que estamos bajo el sistema operativo

Windows, al ser el más extendido en la comunidad global, aunque se podría emplear

cualquier otro, existiendo obviamente algunas diferencias en cuanto a lo que se

pretende explicar en este sub-apartado.

Los pasos a seguir para instalar Ejs son los siguientes:

- Copiar los archivos de Ejs (a disposición en el CD del proyecto) al disco duro,

por ejemplo, en C:\Ejs.

- Instalar la herramienta de desarrollo Java (JDK), si es preciso (también

encontramos una en el CD). Consultar [6] en la literatura para más información.

- Indicar a Ejs el lugar donde se halla esta última herramienta.

Mostrarle al ordenador la ruta del JDK dependerá del modo en que vayamos a ejecutar

Ejs.

En caso de hacerlo mediante la consola (archivo EjsConsole.jar), que es el método

recomendado, indicaremos en el correspondiente campo de texto el directorio de

instalación del JDK.

Si por el contrario queremos correr Ejs desde una ventana de comandos, deberemos

editar el correspondiente script (comando) según nuestro sistema operativo, que para

Windows es Ejs.bat. Cambiaremos la línea que dice:

set JAVAROOT=C:\Program files\Java\jdk1.5.0_04sdf

por otra con el directorio actual de nuestro JDK.

Si deseamos obtener una versión gratuita más reciente tanto de Ejs como del kit de

desarrollo Java (JDK), sólo tenemos que visitar las correspondientes páginas webs de

sus autores: www.um.es/fem/Ejs/ para la primera, www.java.com/es/ para la segunda.

2.2. Estructura de directorios

En el lugar donde tenemos instalado Ejs aparecen junto a los archivos para ejecutar

dicha aplicación dos directorios: data y Simulations. El primero de ellos contiene los

archivos de programa de Ejs y por tanto no se debe modificar. El segundo será nuestro

directorio de trabajo por defecto y podremos modificar libremente su contenido con la

Page 9: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

9

única excepción del directorio _library, que deberemos dejarlo tal cual, puesto que es

usado como su propio nombre indica a modo de librería por Ejs, y será necesario

incorporarlo en nuestras simulaciones allá donde nos las llevemos si deseamos que

estas funcionen.

2.3. Ejecutando Ejs

Una vez hayamos lanzado la aplicación Ejs por cualquiera de los dos métodos

mencionados, tendremos ante nuestros ojos la interfaz que se muestra a continuación

en la figura 2.1.

Figura 2.1. Interfaz de usuario Easy Java Simulations.

Page 10: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

10

Como podemos observar, la interfaz es bastante básica, poco cargada de iconos. Esto

es muy de agradecer, puesto que un usuario novel no sentirá pánico al tener de frente

el programa para experimentarlo por primera vez.

Para crear una nueva página de cada tema, únicamente debemos hacer click con el

ratón en la zona central del panel (panel de trabajo), destinada una vez generada al

desarrollo de cada uno.

En la parte superior, apreciamos el selector de panel de trabajo:

- Introducción: aquí se explicará en qué consiste nuestra simulación. Esto se

traducirá automáticamente a una página (o varias) HTML si tenemos habilitado

Ejs para ello.

- Modelo: contendrá las variables y ecuaciones diferenciales que gobiernan

nuestro proceso, así como los métodos Java necesarios para el mismo.

- Vista: construiremos en esta sección el aspecto gráfico que deseamos tenga

nuestra simulación al ser ejecutada. Para dicho fin se usa una estructura en

forma de árbol jerarquizado.

En la zona inferior se halla el área de mensajes, donde se visualizarán las posibles

anomalías al compilar el programa o cualquier otro evento reseñable.

En el lado derecho tenemos la barra de tareas. Brevemente explicamos ahora las ocho

opciones que dispone:

New: al pulsar sobre ella se limpia la simulación actual (si la hay) y se

devuelve a Ejs a su estado inicial.

Open: si queremos cargar una simulación existente.

Save: para guardar la simulación actual en el mismo archivo desde el que se

cargó.

Save as: para guardar la simulación con un nombre distinto al actual.

Run: para generar y ejecutar la simulación actual.

Font: este icono permite cambiar el tipo y tamaño de la fuente usada en las

áreas de texto de Ejs.

Options: este botón modifica algunas opciones acerca de la apariencia y el

comportamiento de Ejs.

Information: muestra información relativa a Easy Java Simulations.

Page 11: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

11

2.4. Trabajando con una simulación

Haremos uso a continuación de una simulación existente para profundizar un poco en

las diferentes partes que la componen.

Para ello, abriremos el fichero Spring.xml que se encuentra dentro del directorio

denominado _examples/Manual/FirstContact en nuestra carpeta de trabajo

(Simulations) donde hemos instalado Ejs.

2.4.1. La introducción

En la figura 2.2 se aprecia una breve descripción de la simulación en cuestión,

consistente en el estudio del movimiento horizontal de una masa situada en el

extremo de un muelle siguiendo la conocida Ley de Hooke.

Page 12: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

12

Figura 2.2. Páginas de introducción para la simulación de un resorte.

Estas páginas pueden ser modificadas a nuestro gusto si hacemos click derecho con el

ratón sobre su nombre y escogemos la opción editar, apareciendo un sencillo editor

HTML para este fin.

2.4.2. El modelo

Ahora procedemos a inspeccionar el modelo. Si pinchamos en el botón

correspondiente de la zona superior de la interfaz podremos visualizar la imagen de la

figura 2.3.

Page 13: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

13

Figura 2.3. Sub-paneles del modelo. El panel para la definición de las variables es el

mostrado actualmente.

Se observa como arriba aparecen cinco sub-paneles con las distintas partes que

conforman el modelo.

Declaración de variables

El primero de ellos, etiquetado como Variables y mostrado en la figura 2.3, es el

destinado a especificar todas las variables (ya sean parámetros, variables de estado o

de entrada y salida, constantes) presentes en el modelo.

Se deberá elegir un nombre adecuado para las mismas, un valor inicial, el tipo (si es de

valor entero -int-, real -double-, booleano -boolean-, texto -String-, u objeto -Object-), y

su dimensión (en caso de tratarse de un vector, una matriz, etc.).

En nuestro caso, las variables son las siguientes:

m: la masa de la bola en el extremo del resorte.

k: la constante elástica del muelle.

l: la longitud del resorte en equilibrio.

Page 14: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

14

x: la coordenada horizontal del extremo del muelle.

y: la coordenada vertical del extremo del resorte, la cual permanecerá

constante.

vx: la velocidad del movimiento horizontal.

t: el tiempo de la simulación.

dt: el incremento de tiempo de cada paso de simulación.

Como podemos observar, algunas variables corresponden a parámetros del sistema

(m, k, l), otras describen su estado (x, y, vx), y otras son requeridas para la simulación

(t, dt).

Además, si nos fijamos en la línea inferior de la figura 2.3, donde aparece la palabra

Comment o Comentario (según el idioma de Ejs), hay un hueco a su derecha para

añadir si lo deseamos una breve descripción de cada variable. Esto es muy útil, puesto

que si algún usuario experimenta por vez primera una simulación le resultará más fácil

de comprender, así como también para el creador de la misma, ya que si transcurre un

largo período de tiempo podrá recordar mejor su funcionamiento.

Inicialización del modelo

Aunque a través del apartado anterior somos capaces de darle un valor inicial a las

variables, hay ocasiones en las que se precisa una inicialización más compleja (por

ejemplo, si necesitamos realizar algunos cálculos preliminares). Para estos casos,

usaremos el segundo sub-panel del modelo.

En nuestra simulación no necesitamos emplear este sub-panel de inicialización, debido

a que hacemos esto en la misma declaración de variables, por lo que dejamos dicho

sub-panel sin editar (vacío).

Evolución del modelo

En este tercer sub-panel especificaremos lo que queremos que la aplicación haga cada

vez que se ejecute un paso de simulación. Pueden coexistir dos tipos de páginas: un

primer tipo donde se escribirá el código Java para implementar el algoritmo deseado, y

un segundo donde el modelo es descrito usando sistemas de ecuaciones diferenciales

ordinarias.

Page 15: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

15

Vamos a describir el comportamiento del muelle mediante el segundo tipo de página.

La ecuación diferencial que gobierna nuestro modelo se obtiene de aplicar la Segunda

Ley de Newton, F m a= ⋅ , en conjunción con la Ley de Hooke para el movimiento de un

muelle, F k dx= − ⋅ .

De este modo, obtenemos la ecuación diferencial de segundo orden:

( )k

x x lm

= − −ɺɺ (1.1)

A continuación necesitamos reescribir esta ecuación para introducirla en el editor de

ecuaciones diferenciales de Ejs. Para ello, usaremos la variable xv x= ɺ . De esta forma,

el resultado final es el de la figura 2.4.

Figura 2.4. Panel de evolución con las ecuaciones diferenciales de nuestro resorte.

Se distingue en esta imagen como hemos seleccionado t como variable independiente,

dt como el incremento de tiempo de cada paso de simulación, el Método de Euler-

Richardson como método de cálculo numérico empleado en la resolución de las

ecuaciones, y un valor de veinte fotogramas o imágenes por segundo (FPS o IPS) para

la simulación.

Page 16: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

16

Ligaduras entre variables

El panel etiquetado como Constraints o Ligaduras se usa para escribir el código Java

necesario para establecer ciertas relaciones que deben cumplirse siempre entre

algunas variables, es lo que llamamos ligaduras.

Como nuestro modelo no presenta ninguna ligadura, esta página estará en blanco.

Métodos propios o a medida

El quinto sub-panel, denominado Custom o Propio, puede ser usado por el autor para

crear sus propios métodos Java. Al contrario que los otros paneles del modelo, si

queremos hacer uso de estos métodos deberemos invocarlos desde cualquier otra

parte de la simulación.

Nuevamente, en nuestro caso no precisamos ningún método a medida, por lo que no

daremos ningún uso a este panel.

Comportamiento del modelo

Acto seguido, vamos a describir la conducta que sigue el modelo a lo largo de la

simulación.

Cabe mencionar antes que el orden habitual de ejecución del modelo en la simulación

es de izquierda a derecha (primero el sub-panel Variables, luego Inicialización, etc.), y

el mismo orden se aplica si tenemos creadas varias páginas en un sub-panel. La

excepción es el sub-panel Propio, que no será ejecutado nunca, teniendo que ser

llamados los métodos que haya en él mediante el resto de sub-paneles o desde algún

elemento de la vista.

Al arrancar la simulación, Ejs declara las variables y las inicializa, haciendo uso para ello

del valor inicial dado en la tabla de variables y del código que pueda haber escrito en el

panel de inicialización. En este momento, se ejecutan las posibles ligaduras o

restricciones entre variables, ya que estas pueden alterar el valor de las mismas y

deben cumplirse en todo momento.

Entonces, Ejs ejecuta el código pertinente del panel de evolución y, justo después, las

posibles ligaduras. De esta forma, el sistema se encuentra listo para el próximo paso

de la evolución, el cual se repetirá a la velocidad establecida por FPS.

Page 17: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

17

2.4.3. La vista

Es el turno de inspeccionar la vista de la simulación.

Al cargar el archivo de nuestro caso podemos apreciar como han aparecido dos nuevas

ventanas en pantalla. Estas ventanas, mostradas en la figura 2.5, corresponden a la

interfaz de la simulación, lo que hemos denominado vista.

Figura 2.5. Visualización del fenómeno (izquierda) y panel para gráficas (derecha) de la

simulación de un resorte.

Si queremos averiguar cómo esta ha sido construida, sólo tenemos que seleccionar en

Ejs el panel correspondiente, apareciendo lo que la figura 2.6 refleja.

Page 18: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

18

Figura 2.6. Árbol de elementos de la simulación (izquierda) y conjunto de elementos

gráficos de Ejs (derecha).

En el lado derecho se encuentran los elementos gráficos que la vista dispone para su

construcción, agrupados en tres tipos según su funcionalidad.

Mientras que la parte izquierda nos ilustra con la vista de nuestro programa objeto de

estudio, con estructura en forma de árbol jerarquizado.

Toda vista se diseña siguiendo dos pasos. El primero de ellos es construir el árbol de

elementos de nuestra simulación. El segundo, editar las propiedades de los elementos

(bien sea su color, fuente, tamaño, posición, etc.) para que el programa refleje lo que

nosotros deseamos obtener por pantalla.

Los elementos gráficos se dividen en tres grupos: contenedores (containers),

elementos básicos (basics elements) y elementos de dibujo (drawing elements o

drawables).

Un contenedor es un elemento que aloja a otros elementos dentro de su área de

pantalla. De esta manera, llamamos al contenedor elemento padre, mientras que

cualquier elemento que contenga será su hijo, obteniéndose así la estructura

jerárquica en forma de árbol, cuya raíz, que no es realmente un elemento, es la

llamada vista de la simulación (Simulation View).

Page 19: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

19

El primer hijo que creamos para esta raíz es lo que llamamos ventana principal (Main

Window), que es la ventana que aparece primero en pantalla cuando ejecutamos la

simulación como aplicación, o la única que aparece incrustada en la página HTML

cuando ejecutamos la simulación como una applet.

Los elementos que interactúan con el resto de ventanas del sistema operativo son un

tipo de contenedores especiales llamados ventanas (Windows). Hay dos clases de

ventanas: fotogramas (Frames) y diálogos (Dialogs).

Las ventanas de tipo frame se caracterizan porque se comportan como el resto de

ventanas de nuestro sistema operativo, pudiendo ser minimizadas, maximizadas o

cerradas. Toda vista debe tener al menos una ventana de este tipo, que será la

ventana principal.

Por otra parte, las ventanas de tipo dialog son también ventanas independientes, pero

únicamente disponen de la opción de ser escondidas en pantalla.

Existen dos familias de contenedores: los usados para alojar elementos básicos y

otros contenedores, y los contenedores para elementos de dibujo.

Para la materia que nos compete, observamos en la figura 2.6 como nuestra

simulación precisa de los siguientes contenedores: una ventana principal y otra de

diálogo.

Como muestra la figura 2.5, la primera será usada para controlar los parámetros de la

simulación y mostrar cómo el muelle se estira o encoge. En cuanto a la segunda

ventana, la emplearemos para representar en una gráfica el desplazamiento y la

velocidad de la masa del extremo del resorte a lo largo del tiempo.

Además, la ventana principal hace uso de dos nuevos tipos de contenedores: panel y

panel de dibujo (drawing panel). El primero, el más básico de todos los contenedores,

sirve sólo para agrupar otros elementos. El segundo, es un contenedor para dibujos en

dos dimensiones.

Emplearemos para nuestra aplicación los contenedores tipo panel para agrupar los

botones de control de la simulación (Play, Pause, Reset) y para el selector que nos

permite mostrar u ocultar la gráfica de desplazamiento y velocidad (Plot).

El panel de dibujo tendrá la finalidad de representar el movimiento de contracción y

estiramiento del resorte en pantalla.

Por otro lado, la ventana de diálogo también nos ilustra con un nuevo contenedor: el

panel de trazas (Plotting Panel). Este panel incorpora un sistema de ejes cartesianos o

polares, y es comúnmente usado para representar la evolución de las distintas

variables (trazas) en pantalla.

Page 20: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

20

Para lo que nos concierne, el panel de trazas servirá para observar la evolución

temporal del desplazamiento y la velocidad de la partícula en el cabo del resorte.

Los elementos básicos de la vista son un conjunto de elementos que se emplean para

adornar la misma, visualizar y editar las variables del modelo, e invocar métodos

propios o predefinidos que actúan sobre el modelo.

En nuestro caso, hacemos uso de los siguientes elementos básicos: botón (Button),

selector (Check Box) y campo numérico (Number Field).

Botón, para invocar métodos. Lo necesitamos para las acciones de control de la

simulación (Play, Pause, Reset).

Selector, un botón que nos permite elegir entre dos posibles estados booleanos

(verdadero o falso). Se precisa para mostrar u ocultar la gráfica del desplazamiento y

velocidad de la bola del muelle en la simulación (Plot).

Campo numérico, para visualizar y modificar un valor numérico usando el teclado. Se

requiere para controlar la masa de la bola (m) y la constante elástica del muelle (k).

Los elementos de dibujo de la vista consisten en un conjunto de elementos que se

destinan a crear animaciones gráficas para visualizar la evolución del modelo de la

simulación. Estos elementos pueden ir desde lo más simple a lo más complejo,

pudiendo ser dibujados en dos o en tres dimensiones.

Nosotros haremos uso para el estudio del muelle de los elementos de dibujo

siguientes: cubo (box 3d), muelle (spring), partícula (particle) y traza (trace).

Los tres primeros estarán contenidos en el panel de dibujo, mientras que el último

quedará alojado dentro del panel de trazas.

Cubo, una caja en tres dimensiones. Lo necesitamos para dibujar la pared (sólo

precisaremos de dos dimensiones) a la que se encuentra unido el resorte en la

simulación (Wall).

Muelle, un muelle interactivo. Lo emplearemos para ubicar en nuestra pantalla un

resorte (Spring).

Partícula, dibuja una elipse o rectángulo interactivo. Servirá para pintar la bola que

está en un extremo del muelle (Ball).

Traza, dibuja una línea poligonal creada por acumulación de puntos sucesivos. Será

usada para representar en una gráfica el movimiento de compresión y estiramiento del

muelle y la celeridad que adquiere la partícula que se encuentra asida a una de sus

puntas, es decir, el desplazamiento (Displacement) y la velocidad (Velocity).

Page 21: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

21

Para adquirir destreza con la creación de una vista se requiere principalmente de la

práctica y dedicación habitual. Para ello, animamos al usuario a que sea curioso e

investigue por su cuenta todos los elementos existentes en la vista de nuestra

simulación, así como los que no han sido incorporados al mismo, explorando sus

propiedades y modificándolas para ver cómo se comportan.

Aunque únicamente vamos a comentar a modo de ejemplo en el estudio del resorte

cómo editar el elemento Ball (la bola que se halla en el extremo del muelle), dejamos

el resto de elementos de la vista a disposición de la curiosidad científica del usuario. De

todos modos, a lo largo del proyecto iremos mostrando partes de la implementación

de las respectivas simulaciones que resulten de interés.

Dicho esto y procediendo ya con la bola del resorte, si hacemos click derecho sobre el

elemento Ball en la vista aparecerá un menú emergente como el de la figura 2.7.

Figura 2.7. Menú emergente para la bola de la vista.

Si seleccionamos ahora la opción Properties o Propiedades saldrá una nueva ventana

donde podremos modificar las propiedades del elemento en liza (figura 2.8).

Figura 2.8.Tabla de propiedades para el elemento Ball en la vista.

Page 22: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

22

Distinguimos como el aspecto de la bola será el de una elipse (ELLIPSE) de color cian

(cyan, una variedad de azul), de forma o tamaño circular (0.2, 0.2), y que responde a la

interacción del usuario.

Pero lo más relevante de todo esto son las propiedades que hacen uso de variables del

modelo, ya sea directamente o mediante expresiones que las contienen, e incluso

hasta usando métodos propios o predefinidos.

De este modo, la posición de la bola está asociada al punto (x, y), con x e y como

variables del modelo. Esta asociación se da en los dos sentidos. Por un lado, cada vez

que ejecutemos un paso de simulación las variables del modelo serán actualizadas a

sus nuevos valores, siendo avisado de ello el elemento para que sus propiedades sean

convenientemente actualizadas y el movimiento de la bola en pantalla sea el regido

por las ecuaciones del modelo. Por el otro lado, si el usuario interactúa con la bola

para cambiar su posición los valores de las variables del modelo asociadas a las

propiedades del elemento también serán actualizados.

La manera en la que la bola debe reaccionar ante el usuario se determina en la zona de

la tabla de propiedades llamada Actions o Acciones.

Aquí haremos uso de una serie de métodos llamados métodos predefinidos. Estos

métodos se usan para controlar la ejecución de la simulación. Por ejemplo, para

detener o poner en marcha la simulación, modificar su velocidad (FPS), ejecutarla paso

a paso, o devolverla a su estado inicial. Quizás las más sofisticadas sean las que

permiten guardar el estado de una simulación en un archivo y leerlo posteriormente a

través de internet. Puesto que para implementarlos se requiere un conocimiento

específico del funcionamiento interno de Ejs, estos métodos son suministrados por el

sistema para su propio uso, bien sea directamente o a través de otros métodos.

En la página web de Ejs (incluida en la bibliografía) puede obtenerse más información

acerca de estos métodos.

Para nuestro caso, la acción producida cuando el usuario pulsa el botón izquierdo del

ratón (On Press o Al Pulsar) será detener temporalmente o pausar la simulación

mediante el método predefinido _pause(), como podemos ver en la figura 2.8.

También se observa como la acción producida al arrastrar la bola con el ratón (On Drag

o Al Mover) mantiene al muelle en posición horizontal al evaluarse el código y = 0.0;.

Además, la acción al liberar el elemento (On Release o Al Soltar) hace que la velocidad

horizontal valga cero y que se limpie la vista mediante las sentencias vx = 0.0;

_resetView();.

Como ya hemos mencionado, si se desea inspeccionar el resto de los elementos sólo

basta con indagar un poco en sus propiedades para averiguar su funcionamiento.

Page 23: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

23

Procedamos ahora a ejecutar la simulación. Pulsando el botón Run de la barra de

tareas, generaremos y ejecutaremos la simulación en curso. Observamos como este

botón adquiere un color rojo para indicarnos que la simulación se ha generado

satisfactoriamente.

Si ahora oprimimos el botón de la ventana Spring denominado Play, podremos

visualizar la simulación del resorte, tal como se muestra en la figura 2.9.

Figura 2.9. Resultado de la ejecución de la simulación del movimiento de contracción y

estiramiento de un resorte y su correspondiente gráfica de evolución temporal.

Se puede apreciar a la izquierda de la figura cómo el muelle se alarga y contrae,

mientras que a la derecha distinguimos las curvas de desplazamiento (negro) y

velocidad (rojo) de la bola del extremo del resorte a lo largo del tiempo.

Además, en el mismo subdirectorio en el que se encuentra el fichero Spring.xml se

hallan otros dos archivos (Spring2D.xml y SpringAdvanced.xml), donde se ahonda un

poco más en los entresijos de la programación con Ejs, haciendo de nuevo hincapié en

el estudio del comportamiento de una bola en el extremo de un muelle, aunque esta

vez permitiendo su movimiento tanto en el eje horizontal como en el vertical (para el

primer fichero), y computando la transmisión de energía cinética y potencial y

mostrando su espacio de fases (para el segundo). Invitamos al usuario a que los

investigue por su cuenta si desea profundizar sobre este fenómeno físico.

2.4.4. Comportamiento de la simulación

Una vez que hemos establecido las relaciones entre el modelo y la vista que

precisamos, la simulación está preparada para ejecutarse. Con esta información, Ejs

genera el código necesario para el comportamiento adecuado de la simulación futura.

Ahora podemos completar la descripción de la ejecución de una simulación generada

Page 24: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

24

por Ejs que empezamos en el apartado 2.4.2, cuando únicamente habíamos descrito el

modelo.

Cuando una simulación se ejecuta, esto es lo que ocurre exactamente:

1. Las variables son creadas y sus valores establecidos a los estipulados por la

inicialización (tanto los de la tabla de variables como los del panel de

inicialización).

2. Se evalúan las ligaduras o restricciones, ya que el valor inicial de algunas

variables puede depender del valor inicial de otras.

3. Se crea la vista de la simulación y se muestra en la pantalla del ordenador.

Todas las asociaciones que hayamos realizado son empleadas para ordenar a

los elementos de la vista cómo visualizar apropiadamente el estado del modelo

y cómo responder adecuadamente a la interacción con el usuario.

En este momento, el modelo se encuentra en su estado inicial, la vista refleja su

estado, y la simulación espera a que un nuevo paso de simulación tenga lugar o

a que el usuario interactúe con ella.

4. En el primer caso, se evalúan las ecuaciones de evolución e, inmediatamente

después, las ligaduras. Alcanzamos así un nuevo estado del modelo en un

nuevo instante de tiempo. La vista se actualiza entonces a través de su conexión

con el modelo.

5. En el segundo caso, si el usuario cambia el valor de una variable asociada a

una variable del modelo, esta también es modificada en consecuencia, o, si el

usuario invoca una acción de control, se ejecutará el código pertinente. En

cualquiera de los dos casos, las ligaduras se evalúan inmediatamente después.

Se obtiene de este modo un nuevo estado del modelo en el mismo instante de

tiempo y la vista se actualiza mediante su conexión con el modelo.

2.4.5. Ejecutando una simulación

Easy Java Simulations puede ejecutar una simulación de tres formas diferentes. La

primera de ellas es usando el propio Ejs, de la manera que hemos explicado

anteriormente al final del apartado 2.4.3. La segunda consiste en ejecutar la simulación

en forma de applet usando un navegador web. La tercera forma es mediante una

aplicación Java independiente.

La primera opción presenta una gran ventaja pedagógica: el usuario puede ver cómo

se ha generado la simulación, aprendiendo del conocimiento usado para construir la

Page 25: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

25

misma. Esto presenta un gran valor añadido, pero también el inconveniente de que se

debe tener instalado Ejs en el ordenador y que el usuario debe saber cómo se usa

dicho programa, aunque sea de modo rudimentario. Afortunadamente, las

simulaciones creadas con Ejs son, una vez generadas, independientes del mismo. Así, si

el usuario sólo desea ejecutar una simulación sin necesidad de aprender a usar el

entorno de trabajo Ejs para averiguar cómo esta fue construida, se recomienda

ejecutar la simulación en forma de applet de Java.

Un applet de Java es un tipo especial de aplicación que ha sido diseñada para

ejecutarse en un navegador web. El navegador carga un fichero HTML que indica al

mismo que debe ejecutar el applet requerido dentro de su propia ventana. Este fichero

y el applet correspondiente pueden encontrarse en el disco local, o hasta en una

ubicación de internet si se proporcionan a través de la red por un servidor web, un

ordenador que ofrece este servicio especial. Una segunda razón para recomendar esta

opción de ejecución es que las páginas HTML generadas por Ejs para la applet pueden

modificarse para completar la descripción incluida en su momento en la introducción

de la simulación. Esto nos permite generar un conjunto de unidades pedagógicas que

pueden ser empleadas para fines didácticos. También es posible añadir en la

descripción controles de un simple lenguaje de comandos llamado JavaScript que

integran el texto con el control de la simulación de forma sencilla.

El tercer modo de ejecución, como aplicación Java independiente, tampoco requiere

tener instalado Ejs. El usuario sólo necesita tener instalada una máquina virtual de Java

en su ordenador. Las aplicaciones las podemos alojar en el disco duro o en un servidor

web que use la tecnología Java Web Start. Una razón de peso para decantarnos por

esta tercera opción es cuando queramos ejecutar una simulación que almacene los

datos en el disco duro.

2.4.6. Distribución de las simulaciones

Distribuir una simulación generada con Ejs para que otras personas puedan hacer uso

de ella es inmediato: sólo se necesita proveer al usuario del archivo de simulación (el

único con extensión .xml), junto con algunos archivos adicionales que hayamos podido

incluir (imágenes o datos que la simulación pueda necesitar). De esta forma, el usuario

sólo necesitará cargar el archivo de simulación con Ejs y ejecutarlo, aunque deberá

tener cierta idea acerca del funcionamiento del programa. En nuestro caso, este

archivo se llama Spring.xml.

Otros ficheros generados por Ejs al ejecutar una simulación son los de extensión .java.

Son los archivos que contienen el código Java para la simulación y su applet. Recuerda

que Ejs es, después de todo, un generador de código: recoge toda la información que

Page 26: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

26

le hemos suministrado a través de los distintos paneles y genera el código Java

necesario. Sin embargo, únicamente si eres un programador Java experto y tienes

cierta necesidad de modificar el código directamente estarás interesado en estos

archivos. Para el caso del resorte, se denominan Spring.java y SpringApplet.java.

Un tipo más de fichero generado es el de extensión .jar. Este es el archivo final

producido por el compilador de Java cuando procesa los archivos anteriores de

extensión .java. Aunque, matizando aún más, la compilación produce muchos ficheros

que Ejs agrupa en un único archivo comprimido con extensión .jar para facilitar su

distribución. En nuestro caso se llama spring.jar. Este es un archivo Java auto-

ejecutable, por lo que si el sistema tiene instalado el entorno de ejecución Java (Java

Runtime Environment), podemos ejecutar la simulación haciendo simplemente doble

click sobre él.

También son creados archivos con extensión .html. En el caso del muelle, se crea el

fichero Spring.html. Este es el archivo principal HTML generado por Ejs para ejecutar la

simulación en forma de applet de Java. Lo llamamos principal porque, según como

tengamos configurado Ejs y el número de páginas de introducción escritas para la

simulación, Ejs generará un conjunto de más o menos páginas HTML que empezarán

todas con el nombre de la simulación (Spring, en nuestro caso).

Un último archivo que se crea es el de extensión .bat. Este es un fichero auxiliar que

puede ser usado para ejecutar la simulación como aplicación si no podemos hacerlo

mediante un click doble sobre el archivo .jar.

Finalmente, también encontraremos en nuestro directorio de trabajo la sub-carpeta

_library, otros sub-directorios con ejemplos y, tal vez, algunos archivos generados de

la ejecución de otras simulaciones. La carpeta _library contiene las librerías o

bibliotecas Java que son necesarias para la ejecución de la simulación y deben ser

incluidas junto con los archivos de la simulación y otros archivos adicionales (como

imágenes que hayamos añadido, por ejemplo) a la hora de la distribución al usuario, ya

sea para que este las aloje directamente en su disco duro o haciéndolo mediante un

servidor web.

Page 27: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

27

CAPÍTULO 3: SISTEMA DE CONTROL DEL NIVEL

DE UN DEPÓSITO

Tras haber explicado a grandes rasgos el funcionamiento del entorno de simulación

Ejs, que será la aplicación en la que nos apoyaremos para abordar los diversos

capítulos del proyecto, pasamos ahora a profundizar más en las características de la

herramienta Ejs para adquirir mayor conocimiento sobre ella.

De este modo, procedemos al estudio de un tanque de agua sobre el cual

pretendemos regular el nivel de dicho líquido mediante una servóvalvula o válvula de

control que actúa sobre un caudal de entrada al depósito.

En las figuras 3.1 y 3.2 podemos observar el esquema bajo análisis en sus dos modos

de funcionamiento: realimentación simple usando un control de nivel (LC o Level

Control) o maestro-esclavo mediante control interno de flujo (FC o Flow Control) y

externo de nivel (LC o Level Control).

Page 28: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

28

Figura 3.1. Panel de control del nivel del tanque mediante un lazo cerrado simple de

realimentación (control de nivel).

Page 29: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

29

Figura 3.2. Panel de control del nivel del tanque mediante realimentación en cascada o

maestro-esclavo (control de lazo interno de flujo y externo de nivel).

Podemos apreciar en la parte superior de cualquiera de estas dos figuras la

representación gráfica del sistema físico. Tenemos una bomba (Pump) para suministrar

a la servoválvula (SV o Servo-Valve) el caudal necesario (según se considere o no el

efecto de la saturación en ambas), una consigna (SP o Set Point) que podemos mover

con el ratón para indicarnos el nivel de líquido deseado, un tanque inferior de recogida

de agua precipitada del tanque superior, una válvula manual (MV1 o Manual-Valve #1)

y una electroválvula (EV1 o Electro-Valve #1).

Por otro lado, en la parte inferior se encuentra el panel de mando de nuestro pequeño

laboratorio de control. Disponemos aquí de botones para actuar sobre el curso de la

simulación (Play, Pause, Step, Initialize, Reset), seleccionar el tipo de control

(realimentación simple o cascada), el modo de funcionamiento (manual o automático),

poner en marcha la bomba e indicar su eficiencia, escoger el grado de apertura, el

Page 30: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

30

radio y el coeficiente de descarga de las válvulas, modificar el radio (R) de los tanques,

cambiar el punto de referencia (SP), observar la evolución del tiempo (t) y la señal de

control de la servoválvula (u), alterar el valor del nivel superior del tanque (level, si la

simulación está pausada podremos hacerlo desde aquí, si no, tendremos que hacerlo

desde el gráfico pinchando sobre la superficie de líquido del tanque superior y

arrastrando hacia el valor deseado) y visualizarlo, mostrar un panel adicional para

poder inicializar los parámetros a distintas configuraciones con objeto de estudiar los

diversos fenómenos que cubre este capítulo, escoger el tipo de control a realizar en los

bucles (P o Proporcional, PI o Proporcional-Integral, PD o Proporcional-Derivativo, PID

o Proporcional-Integral-Derivativo), decidir si hay o no saturación en la servoválvula y

la bomba, si hay o no control anti-windup para corregir el error integral en caso de

saturación, seleccionar las gráficas que deseamos ver y si memorizamos la simulación

anterior o no.

3.1. Obtención del modelo y la vista de la simulación

Las ecuaciones que describen el modelo son consecuencia de aplicar la Ecuación de

Continuidad (3.1) y el Teorema de Bernouilli (3.2) de dinámica de fluidos a los

correspondientes puntos (1) y (2) de nuestro tanque superior situados en la superficie

libre del fluido (la que queda en contacto con el aire) y en el centro del orificio de las

válvulas de abajo. Esto es válido para un flujo estacionario, no viscoso e incompresible

y se cumple en dos puntos cualesquiera de una línea de corriente [7].

1 1 2 2v S v S⋅ = ⋅ (3.1)

2 2

1 1 1 2 2 2

1 1.

2 2p g y v p g y v cteρ ρ ρ ρ+ ⋅ ⋅ + ⋅ = + ⋅ ⋅ + ⋅ = (3.2)

Donde:

1v ,

2v : velocidad del fluido en las respectivas secciones

1S y

2S , en m/s.

1S ,

2S : sección o área en los respectivos puntos (1) y (2), en m2.

1p ,

2p : presión en los respectivos puntos (1) y (2), en Pa.

ρ : densidad del fluido, en Kg/m3.

g : aceleración de la gravedad, 9.8 m/s2.

Por otra parte, el elemento de fluido delimitado por las secciones 1S y

2S está en

contacto con el aire a la misma presión. Luego, 1 2 0p p p= = .

Page 31: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

31

La diferencia de alturas es 1 2y y h− = .

Si el diámetro del recipiente es grande respecto al diámetro del orificio, la velocidad 1v de descenso de la superficie del líquido se puede considerar nula.

Luego la velocidad teórica de salida del líquido será:

2 2v g h= ⋅ ⋅ (3.3)

El flujo o caudal volumétrico (en adelante flujo o caudal) en el punto (2) será el

volumen de líquido que sale por unidad de tiempo, [8] y [9]:

2 2eQ A v= ⋅ (3.4)

Donde eA es el área de la sección efectiva, expresada como el producto del área A de

la sección transversal del orificio por el llamado coeficiente de descarga de la válvula

dC , que engloba las características inherentes de la válvula y vale aproximadamente

0.62 para un orificio de borde afilado y la unidad para una boquilla de borde

redondeado. Para un tramo muy corto de tubería o una boquilla externa conectada a

un recipiente, este coeficiente es aproximadamente 0.81.

Por tanto, tenemos que para cualquiera de las dos válvulas que tenemos en la parte

inferior del tanque se cumple:

2 2dQ C A g h= ⋅ ⋅ ⋅ ⋅ (3.5)

Considerando ahora la variación de volumen de líquido en el depósito, esta debe ser

igual al caudal de entrada eQ menos el de salida sQ , luego:

e s

dhA Q Qdt

⋅ = − (3.6)

Si tomamos ya los datos específicos de nuestra simulación:

max

,

,100

dSV SV

e SV SVdSV SV

C A u auto

Q Q openVC A u manual

⋅ ⋅ = = ⋅ ⋅ ⋅

(3.7)

1 1s MV EVQ Q Q= + (3.8)

11 1 1 2

100

MVMV dMV MV

openVQ C A g h= ⋅ ⋅ ⋅ ⋅ ⋅ (3.9)

1 1 1 2EV dEV EVQ C A g h= ⋅ ⋅ ⋅ ⋅ (3.10)

Page 32: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

32

Donde:

SVQ , 1MVQ , 1EVQ : flujo o caudal en las respectivas válvulas (servoválvula, válvula

manual número uno, electroválvula número uno), en m3/s.

dSVC , 1dMVC , 1dEVC : coeficiente de descarga de las respectivas válvulas (servoválvula,

válvula manual número uno, electroválvula número uno), adimensional.

SVA , 1MVA , 1EVA : área de la sección transversal del orificio de las respectivas válvulas

(servoválvula, válvula manual número uno, electroválvula número uno), en m2.

Consideraremos circulares tanto a los orificios de las válvulas como a la sección

transversal del depósito, por lo que nos bastará conocer el radio para hallar el área.

u : señal de control de la servoválvula, cuyos límites de saturación estarán

comprendidos entre 0 (valor mínimo) y 8 (valor máximo, maxu ).

SVopenV , 1MVopenV : apertura de 0 a 100 de la servoválvula y válvula manual,

respectivamente, para el caso de trabajo en modo manual.

La ecuación 3.7 representa el flujo de la servoválvula (nuestro caudal de entrada al

sistema), que se comportará de forma diferente si el sistema está funcionando en

modo automático (Auto) o manual. En el primero, la señal de control variará en

función del tipo de actuador aplicado para generar el caudal adecuado de la

servoválvula. Respecto al segundo, seremos nosotros los que tendremos que “abrir la

llave de la servoválvula” indicándole su porcentaje de apertura hasta lograr el nivel de

líquido deseado. Cabe mencionar que esto será cierto si la bomba se encuentra

encendida, si no, el flujo de la servoválvula será cero, obviamente. Además, la bomba

puede ajustarse de manera de no trabaje al 100%, por lo que si su eficiencia se limita a

un valor menor el flujo máximo de la servoválvula estará supeditado a dicha cifra.

En (3.8) se expresa el caudal de salida como la suma de los dos distintos flujos que

podemos tener, ya que disponemos de dos válvulas (válvula manual y electroválvula).

Para la válvula manual (3.9), podemos regular la salida de líquido con el grado de

apertura de la misma.

En cuanto a la electroválvula (3.10), su caudal guarda una relación todo-nada: o se

encuentra completamente abierta o completamente cerrada.

Todas estas ecuaciones han sido incluidas en la evolución del modelo mediante la

creación de una página de ecuaciones diferenciales ordinarias (abreviado en inglés

como ODE) de nombre Dynamics, tal como se muestra en la figura 3.3.

Page 33: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

33

Figura 3.3. Página ODE para la variación del nivel de líquido en el tanque superior.

Se puede ver que hemos llamado level a la altura de líquido en el tanque (h en la

ecuación 3.3), y que le pasamos su valor a un método propio denominado ode, que

será el que gestione el comportamiento de nuestro modelo, aplicando el término

adecuado a la ecuación según los diversos casos disponibles (modo automático o

manual, bomba en funcionamiento, eficiencia de la misma, apertura de las válvulas,

etc.). Este se apoyará para sus cálculos en otro método propio, flowEquation, que

llevará debida cuenta de los flujos de cada una de las tres válvulas de nuestro

esquema. En la figura 3.4 aparece el sub-panel de métodos propios de nuestro

programa.

Page 34: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

34

Figura 3.4. Panel de implementación de métodos propios.

Distinguimos aquí dos páginas, una primera, de nombre Equations, que es la que

aparece en imagen y donde se desarrolla el método ode para la gestión de los caudales

de las válvulas. La segunda página, Flows, se usa para escribir el código del método

flowEquation, para que ode realice de forma óptima sus cálculos mediante llamadas a

dicho método.

Esquemas de control y realimentación

Como hemos citado anteriormente, emplearemos dos tipos de realimentación (simple

y cascada) para actuar sobre el nivel del depósito. En la figura 3.5 podemos apreciar

ambos.

Page 35: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

35

Figura 3.5. Esquema de control por realimentación simple (arriba) y en cascada (abajo).

En esta imagen se observa como tenemos en la parte superior el caso de un control

con un bucle de realimentación simple. Emplearemos una señal de referencia o

consigna (r), un error (e) que valdrá la diferencia entre la señal de salida (y) de nuestro

proceso G(s) y la referencia, y una señal de control (u) como salida del controlador C(s),

que será de tipo PID.

Por otro lado, en la parte inferior se distingue un control en cascada o maestro-esclavo

[10].

En el lazo interno o secundario (llamado esclavo o slave en inglés) se controlará con el

actuador CS(s) una variable interna (y2) de la planta G(s), que quedará descompuesta

como el producto de dos sub-plantas, G1(s) y G2(s).

El actuador CM(s) del lazo externo o primario (llamado maestro o master en inglés) será

el que fije la consigna del secundario.

Reseñamos en el control simple que emplearemos en nuestra simulación que el

actuador fija el flujo de la servoválvula deseado para alcanzar el punto de referencia en

el nivel del tanque (normalmente lo fija el operador del proceso).

En cuanto al control en cascada, se dispone de dos actuadores: el maestro y el esclavo.

El punto de referencia del maestro se fija externamente (por el operador del proceso,

habitualmente). Sin embargo, la consigna del esclavo es fijada por el controlador

maestro. Es decir, la salida o resultado que produce el controlador maestro es

simplemente el punto de referencia al que debe operar el controlador esclavo.

Tomaremos al flujo de la servoválvula ( SVQ ) como variable interna (y2) para el

esquema maestro-esclavo.

Este esquema es aconsejable usarlo cuando el bucle de control simple no da una

respuesta satisfactoria (proceso de dinámica lenta, tiempo muerto grande en relación

Page 36: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

36

a la constante de tiempo, sometido a perturbaciones significativas, etc.). Además,

debe existir una variable secundaria, medible a costo razonable, que satisfaga las

siguientes condiciones:

- Debe indicar la existencia de una perturbación importante.

- Debe existir una relación causal entre la variable manipulada y la secundaria.

- La dinámica de la variable secundaria debe ser más rápida que la de la variable

primaria. De esta forma, el bucle interno controla la variable secundaria antes

de que el efecto de la perturbación se propague a la variable primaria (variable

controlada) de forma significativa.

Así, para que el control en cascada presente ventajas sobre el simple precisamos que la

respuesta dinámica de la sub-planta G2(s) sea más rápida que la de G1(s). Si este

requisito se cumple entonces es muy probable mejorar el desempeño del esquema de

control a lazo cerrado usando el concepto de control en cascada. Por esta razón, se

acostumbra emplear un controlador puramente proporcional (P) para el control de la

sub-planta G2(s); este controlador se sintoniza de tal manera que la respuesta obtenida

de la sub-planta G2(s) sea lo más rápida posible, sujeta a las restricciones de estabilidad

sobre los valores de la ganancia del controlador. Para el control de la sub-planta G1(s)

podría emplearse un controlador PI o PID.

Mencionar también que si nos atenemos a minimizar los costos haciendo uso del

menor número de dispositivos, habrá ocasiones en las que bastará con un esquema de

control simple para actuar adecuadamente sobre el proceso, y, además, podría ser

suficiente un control simple tipo PI a uno PID. Si esto sucede, siempre optaremos por

el de menor costo.

A continuación, presentamos la formulación matemática de un actuador PID, que será

el elegido para ambos esquemas de control [11]:

0

( )( ) ( ) ( )

t

p i d

de tu t K e t K e d K

dtτ τ= ⋅ + ⋅ ⋅ + ⋅∫ (3.11)

Pasando esta ecuación al dominio de Laplace para hallar la función de transferencia del

controlador:

( ) 1( ) (1 )

( )

iPID p d p d

i

KU sC s K K s K T s

E s s T s= = + + ⋅ = ⋅ + + ⋅

⋅ (3.12)

Donde:

p

i

i

KT

K= (3.13)

Page 37: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

37

dd

p

KT

K= (3.14)

Las constantes empleadas en un controlador proporcional-integral-derivativo son,

respectivamente, pK , iK , dK ; aunque las dos últimas pueden ser renombradas, como

se muestra tanto en (3.13) como en (3.14), para expresar la acción de control

mediante el uso de las constantes denominadas tiempo integral y derivativo.

Todo esto se ha tenido en mente para la implementación del actuador en nuestro

sistema, considerando además la existencia de saturación en el mismo (configurable),

corrigiendo si queremos el efecto windup [12] mediante una sentencia condicional que

suma el término integral únicamente cuando la señal de control no ha rebasado los

límites establecidos, y según los diferentes modos de funcionamiento (manual y

automático) y control (simple o cascada). En la figura 3.6 podemos apreciar el código

Java inicial donde hemos desarrollado nuestra ley de control en la evolución del

modelo.

Figura 3.6. Página de código Java para la el controlador PID.

Vemos en dicha imagen como el nombre de la página para la implementación del

código Java del controlador PID es Control. Aquí tenemos las primeras líneas de código,

donde apreciamos como se empieza con un condicional para determinar si el modo de

trabajo es manual o automático. En caso de ser manual, no se aplicarán las leyes de

Page 38: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

38

control PID, sino que será el operador el que deba encargarse personalmente de

regular el nivel de líquido en el tanque mediante la graduación, apertura y cierre de las

distintas “llaves de paso de las válvulas”.

Vista de la simulación

El árbol de elementos de la vista de nuestro programa es el que podemos visualizar en

la figura 3.7.

Figura 3.7. Vista de la simulación de nuestro laboratorio de control.

Vemos como esta se compone de una ventana principal (llamada Window), donde

tendremos representado gráficamente nuestro laboratorio mediante el panel de

dibujo Plot. Además, el elemento PanelDown será el panel que contendrá los mandos

necesarios para el control de nuestro sistema.

Por otro lado, precisamos de una serie de ventanas de diálogo que procedemos ahora

a comentar:

- DialogLevelSP: ventana de diálogo para la gráfica que mide la evolución

temporal del nivel del tanque y la señal de referencia.

Page 39: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

39

- DialogControlError: ventana de diálogo para la gráfica que representa el

cambio a lo largo del tiempo de la variable de control y el error.

- DialogFlows: ventana de diálogo para la gráfica que evalúa el flujo o caudal de

las distintas válvulas (servoválvula, válvula manual y electroválvula) en el

tiempo.

- DialogFlowslh: ídem que el anterior, sólo que los caudales vienen expresados

en litros por hora (l/h).

- DialogPhaseSpace: ventana de diálogo para la gráfica que calcula el espacio de

fases del nivel y el flujo de la servoválvula.

- DialogPhaseSpacelh: ídem que el anterior, sólo que la servoválvula expresa su

caudal en litros por hora (l/h).

- DialogOption: ventana de diálogo a modo de panel de opciones adicional para

la inicialización de ciertos parámetros de la simulación, con el fin de estudiar las

diversas configuraciones que presenta la misma.

Ahora vamos a comentar algunos elementos de la vista. Concretamente, veremos

algunos de los que están contenidos en el panel de dibujo Plot, cuyos hijos se

muestran en la figura 3.8.

Figura 3.8. Árbol de elementos del panel de dibujo Plot en la vista.

Page 40: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

40

En la imagen aparecen los elementos iniciales que conforman el panel de dibujo Plot.

Se distinguen los elementos de dibujo de tipo Control, tales como tanques (TankDown,

TankUp), tuberías (PipeTankDownToPump, PipePumpToValve, PipeValveToTankUp,

PipeInputFlow, PipeTankUpToMV1), válvulas (Valve, ValveMV1) e incluso una bomba

(Pump).

Si abrimos las propiedades del elemento TankDown obtendremos lo que indica la

figura 3.9.

Figura 3.9. Propiedades del elemento TankDown en la vista.

Podemos observar en dichas propiedades que el nivel (Level) del depósito inferior está

asociado a la variable leveldown. Como nuestro proceso se compone de un circuito

cerrado formado por dos tanques y un sistema de tuberías, se debe cumplir

(despreciando el líquido que pueda quedar en las tuberías) que el nivel en el depósito

inferior debe ser la diferencia entre el nivel de líquido total (totalcapacity) y el nivel en

el depósito superior (level). Ya que esto debe cumplirse en todo momento, incluso si

modificamos en la ejecución de la simulación el valor del nivel del tanque superior

pinchando con el ratón sobre la superficie del líquido, incluiremos esta condición

dentro de una página de ligaduras en nuestro modelo (ver figura 3.10). El resto de

propiedades de este elemento son menos relevantes, limitándose a describir las

dimensiones del depósito, su ubicación en pantalla, si responde a la interacción con el

usuario, etc.

Page 41: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

41

Figura 3.10. Ligaduras del modelo de la simulación.

Observamos en las líneas de la página de ligaduras llamada Tank capacities como el

nivel en el tanque superior no puede rebasar la capacidad de líquido total ni tomar un

valor negativo (ya que no tendría sentido), y como el nivel en el tanque inferior queda

establecido por la restricción entre la capacidad de líquido total y el nivel en el tanque

superior.

Otro elemento que cabe reseñar es el elemento tubería (Pipe). Vamos a escoger para

ello el tramo de tubería que va desde la salida de la servoválvula hasta justo encima

del tanque superior, compuesto por dos tubos o brazos y un codo que los une,

denominado en la vista PipeValveToTankUp.

Las propiedades de esta sección de tubería pueden visualizarse a continuación en la

figura 3.11.

Page 42: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

42

Figura 3.11. Propiedades del elemento tubería de nombre PipeValveToTankUp.

Podemos apreciar como el número de vértices de la tubería es tres (número de tubos

o brazos más uno). Mediante llaves damos las coordenadas de dichos vértices tanto en

X como en Y. Implantamos en la tubería que el usuario no pueda interactuar con ella.

Consideramos un ancho fijo para todas las tuberías, asociado a la variable dInput. Por

último, establecemos la siguiente condición para que la tubería se muestre llena con

líquido o no, según sea el caso (en la figura 3.11 sólo aparece la parte inicial de código):

pumpActive&(leveldown>1.0e-4)&

(((u>0)&automaticMode)|((openSV>0)&(!automaticMode)))

Esta condición viene a decirnos que debemos tener en cuenta si el motor de la bomba

está en marcha (pumpActive), si hay suficiente nivel de líquido en el tanque inferior

(leveldown) para poder bombearlo al superior (consideramos que hay suficiente

cuando leveldown es mayor que cierta tolerancia de valor 0.0001), si la señal de

control (u) es positiva para un modo de trabajo automático, y si la apertura de la

servoválvula (openSV) es positiva para un modo de trabajo manual.

3.2. Diseño de controladores para el sistema

Procedemos a continuación a la sintonización de controladores para alcanzar de forma

óptima el nivel de líquido deseado en el tanque superior. Para ello estudiaremos los

dos esquemas de control propuestos (realimentación simple y cascada) y haremos una

comparativa de ambos al final.

Page 43: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

43

3.2.1. Diseño empleando control por realimentación simple

A partir de ahora y siempre que no digamos lo contrario los parámetros del sistema

serán los establecidos por defecto en la inicialización de la simulación.

Además, consideraremos como válvula de salida exclusivamente a la válvula manual

(mantendremos cerrada la electroválvula porque lo que hace únicamente es añadir

otra pérdida de líquido al tanque superior, por lo que a efectos pedagógicos no

presenta mayor interés).

Por otra parte, en esta simulación se pretende que el usuario se sienta como si

estuviera físicamente en un laboratorio real y tuviese que sintonizar manualmente un

controlador PID [13].

Dicho esto, arrancamos esta sección con el control más básico de todos: el

proporcional.

Estudio del controlador P

Para un ajuste manual del controlador proporcional empezaremos con una ganancia

baja e iremos aumentando su valor hasta conseguir las especificaciones deseadas.

Teniendo en cuenta que el controlador proporcional no es capaz de anular el error

estacionario o de régimen permanente, ajustaremos su valor de tal manera que la

respuesta sea lo más rápida posible y sin hacer inestable al sistema.

De este modo, aumentando la ganancia poco a poco, se obtiene el mejor resultado

para el valor máximo permitido de la constante proporcional ( 1000pK = ).

Los parámetros experimentales medidos en la gráfica son:

Tiempo de establecimiento ( et ): tiempo que tarda la curva de respuesta en alcanzar y

mantenerse dentro de determinado rango alrededor del valor final, especificado en

porcentaje absoluto del valor final (se usa generalmente el 5% o el 2%). En nuestro

caso, considerando un nivel inicial de líquido en el tanque superior 0.25level m= y una

consigna 0.20SP m= , y usando el criterio del 2%, obtenemos 41.060et s= . Mientras

que si usamos 0.15level m= nos resulta 13.002et s= .

Error en régimen permanente (rpe ): diferencia entre el valor final deseado y el valor

alcanzado, expresado en porcentaje absoluto. En nuestro caso vale lo mismo para

ambos valores iniciales de nivel de líquido en el tanque superior:

Page 44: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

44

0.2 0.198 0.1981 1 0.99 0.01 1%

0.2 0.2rpe

−= = − = − = =

En las figuras 3.12 y 3.13 vislumbramos la evolución de nuestro sistema frente a dos

condiciones iniciales diferentes.

Figura 3.12. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.25m usando un controlador P.

Page 45: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

45

Figura 3.13. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador P.

Comparando ambas figuras vemos que la respuesta frente a un nivel de 0.25m es más

lenta que la de 0.15m, ya que al estar por encima de la consigna hay que esperar a que

se descargue el tanque para que la señal de control actúe. Sin embargo, el error en

régimen permanente sigue siendo el mismo.

Estudio del controlador PI

Si añadimos ahora una acción integral, lograremos anular el error en estado

estacionario si ajustamos adecuadamente los parámetros.

Empezaremos con el tiempo integral ajustado a su máximo valor ( 100iT s= ) y una

ganancia baja, la cual iremos aumentando hasta conseguir las características de

respuesta deseadas. Haciendo esto, vemos que se consigue mayor velocidad de

respuesta con 1000pK = , sin que esto repercuta negativamente en la estabilidad del

Page 46: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

46

sistema. A continuación, disminuimos el tiempo integral hasta anular el error en

estado estacionario, aunque la oscilación sea excesiva. Entonces, disminuimos

ligeramente la ganancia. Repetimos esto hasta obtener las características de respuesta

deseadas. En nuestro caso, disminuimos el tiempo integral hasta lograr la respuesta

óptima, ya que si seguimos disminuyendo su valor comienza a haber sobreoscilación, y

aunque hagamos posteriormente más pequeña la ganancia y el tiempo integral, no se

consigue en este caso mejorar la respuesta sino que en principio se mantiene

aproximadamente igual y luego empeora.

Usamos idénticos criterios y valores iniciales (criterio del 2% para el tiempo de

establecimiento, mismos dos tipos de nivel inicial y consigna) que para el control

proporcional.

Para 0.25level m= , obtenemos la respuesta óptima con los valores de 1000pK =

(aunque se puede disminuir en cien unidades su valor sin que ello empeore la

respuesta) y 2.8iT s= , siendo 39.115et s= y 0%rpe = .

Mientras que para 0.15level m= necesitamos 1000pK = y 6.3iT s= , con una

respuesta de 13.566et s= y 0%rpe = .

En las figuras 3.14 y 3.15 podemos visualizar la evolución del sistema según sea el caso.

Page 47: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

47

Figura 3.14. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.25m usando un controlador PI.

Page 48: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

48

Figura 3.15. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PI.

Podemos ver que el sistema se comporta mejor con un control PI que sólo con la

acción proporcional, ya que, aunque el tiempo de establecimiento es prácticamente el

mismo, se consigue anular el error en régimen permanente.

Estudio del controlador PD

Veamos el caso de incluir una acción derivativa al control proporcional. Añadiendo la

acción derivativa, logramos que la respuesta mejore, pero no conseguimos eliminar el

error en régimen permanente.

Comenzamos con el tiempo derivativo a su mínimo valor ( 0.001dT s= ) y una ganancia

baja, la cual iremos aumentando hasta obtener los valores de respuesta deseados. A

continuación, aumentaremos el tiempo derivativo hasta obtener características

Page 49: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

49

similares pero con la respuesta más rápida. Luego, aumentaremos ligeramente la

ganancia si fuera necesario.

Con los mismas condiciones que para los controles P y PI, tenemos que para

0.25level m= , obtenemos la respuesta óptima con los valores de 1000pK = y un

tiempo derivativo entre el valor mínimo 0.001dT s= y 1.7dT s= , estando comprendido

el tiempo de establecimiento entre 40.531et s= y 41.382et s= , respectivamente, y

siempre con un error en estado estacionario 1%rpe = . Cabe resaltar que a partir de

1.7dT s= la señal de control comienza a comportarse como si fuera un control de tipo

on-off, cambiando su valor muy rápidamente y llegando a ofrecernos

aproximadamente 39.299et s= y 0%rpe = para 3.6dT s= . Pero este comportamiento

de cambios tan bruscos para conseguir nuestros objetivos sería el comportamiento

ideal, por lo que no lo tenemos en cuenta, aunque sí merecía la pena comentarlo. Las

figuras 3.16 y 3.17 muestran estos casos.

Por otro lado, para 0.15level m= requerimos 1000pK = y un tiempo derivativo entre

0.001dT s= y 1.7dT s= , con un tiempo de establecimiento entre 12.792et s= y

13.742et s= , respectivamente, y 1%rpe = en ambos casos. El comportamiento on-off

comienza a vislumbrarse también a partir de 1.7dT s= , con valores de respuesta

aproximados para 3.2dT s= de 18.831et s= y 0%rpe = . En las figuras 3.18 y 3.19

podemos ver todo esto.

Page 50: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

50

Figura 3.16. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.25m usando un controlador PD para Td = 1.7s.

Page 51: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

51

Figura 3.17. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.25m usando un controlador PD para Td = 3.6s.

Page 52: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

52

Figura 3.18. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PD para Td = 1.7s.

Page 53: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

53

Figura 3.19. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PD para Td = 3.2s.

Comparando resultados, se aprecia que el control derivativo añade cierta velocidad al

sistema frente al proporcional, pero tampoco consigue anular el error en régimen

permanente (consideramos irrealizable el drástico comportamiento on-off de la señal

de control en el actuador PD que es capaz de anular dicho error estacionario). Por

tanto, el control PI supera a ambos, ya que es capaz de anular este error manteniendo

una rápida respuesta si está adecuadamente ajustado.

Estudio del controlador PID

A continuación estudiaremos el asunto de aplicar la triple acción a un controlador

(proporcional-integral-derivativa).

Para realizar un correcto ajuste partiremos con el tiempo integral ajustado a su

máximo valor ( 100iT s= ) y el tiempo derivativo al mínimo ( 0.001dT s= ), e iremos

Page 54: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

54

aumentando la ganancia hasta obtener las características de respuesta deseadas.

Haciendo esto (consideramos primero el caso 0.25level m= ), vemos que obtenemos la

mejor respuesta con el valor máximo de la ganancia ( 1000pK = ). A continuación,

reducimos el tiempo integral hasta anular el error en estado estacionario, aunque la

oscilación sea excesiva; disminuimos ligeramente la ganancia; y repetimos esto hasta

obtener la respuesta deseada. Así, logramos la mejor respuesta reduciendo el tiempo

integral hasta justo antes de inestabilizar al sistema ( 0.009iT s= ). Además, vemos que

no es necesario disminuir la ganancia. Finalmente, aumentamos el tiempo derivativo

hasta obtener características similares pero con una respuesta más rápida, y

aumentamos ligeramente la ganancia si fuese necesario. Entonces, conseguimos la

mejor acción PID aumentando el tiempo derivativo hasta justo antes de hacer

inestable al proceso ( 0.004dT s= ), observando que no es necesario modificar la

ganancia. El tiempo de establecimiento calculado es 39.042et s= y el error en régimen

permanente 0%rpe = . El resultado se refleja en la figura 3.20.

Figura 3.20. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.25m usando un controlador PID.

Page 55: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

55

Para 0.15level m= procedemos de la misma manera, obteniéndose la mejor respuesta

para 1000pK = , 6.1iT s= y 0.008dT s= . Con estos ajustes logramos un tiempo de

establecimiento 13.437et s= y un error en régimen permanente 0%rpe = , tal como

muestra la figura 3.21.

Figura 3.21. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PID.

Con todos estos resultados, concluimos que el controlador que presenta mejor

respuesta es el controlador PID, seguido por el PI, PD y P, en este orden.

Sólo el PID y PI consiguen anular el error en régimen permanente. Si queremos reducir

el costo, bastaría con usar un control PI, ya que anula el error en estado estacionario y

el tiempo de establecimiento no presenta prácticamente mucha diferencia.

Page 56: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

56

3.2.2. Diseño empleando control en cascada

Abordamos ahora el estudio del esquema de control maestro-esclavo o cascada.

Para ello haremos una comparativa entre usar un PI con realimentación simple y el

empleo de un control en cascada con un controlador PI en el lazo primario que

presente los mismos parámetros que el de realimentación simple, mientras que para el

lazo secundario emplearemos únicamente una acción proporcional P.

Consideraremos un nivel inicial de líquido en el tanque superior 0.25level m= y una

consigna 0.20SP m= , y usaremos el criterio del 2% para el tiempo de establecimiento

(mismas condiciones de antes).

De este modo, para realimentación simple con 20pK = y 10.8iT s= , se obtiene un

sistema muy lento, con 337.179et s= y 0%rpe = , tal como refleja la figura 3.22, donde

mostramos además el espacio de fases resultante.

Figura 3.22. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un control simple con PI.

Respecto al control en cascada, empleando los mismos valores del control simple para

el lazo primario ( 20pK = y 10.8iT s= ), y con una ganancia proporcional para el lazo

secundario 25pK = , logramos un 39.931et s= y 0%rpe = (ver figura 3.23).

Page 57: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

57

Figura 3.23. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un control cascada con lazo primario PI y secundario P.

Podemos visualizar como el control en cascada presenta mejores prestaciones que el

simple en este caso, pero en general, al no contemplar nuestro sistema el efecto de los

retardos y las perturbaciones (ya que pretendemos ir complicando más la

programación y las conclusiones obtenidas a medida que avanza el proyecto), y

ateniéndonos también a las consideraciones de reducción de costos, nos bastaría para

este laboratorio de control con el empleo de realimentación simple usando un

actuador PID, incluso pudiendo prescindir si es preciso de la acción derivativa por el

mismo motivo.

3.3. Otras consideraciones

Antes de finalizar este capítulo, vamos a mostrar algunos casos particulares.

Efecto windup

Estudiando el controlador PI en la sección anterior resultó que para un nivel inicial de

líquido en el tanque superior 0.15level m= se conseguía la mejor respuesta con

1000pK = y 6.3iT s= , obteniéndose 13.566et s= y 0%rpe = (ver figura 3.15).

Page 58: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

58

Si consideramos ahora que sigue existiendo saturación en la señal de control, pero no

hay corrección del efecto windup en el término integral del PI, la figura 3.24 nos

muestra lo que ocurre en estas condiciones.

Figura 3.24. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PI sin corrección del efecto windup.

Vemos que la respuesta del sistema presenta un tiempo de establecimiento mucho

mayor ( 73.858et s= ) que hace demorar al mismo en anular el error en régimen

permanente ( 0%rpe = ).

Esto se debe a que al llegar la señal de control a su valor máximo de saturación

continuamos sumando el término integral del error, de ahí que el proceso tarde más

en evolucionar a su estado óptimo.

Page 59: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

59

Variable de control ilimitada

Si para el mismo caso del PI que estamos abordando en esta sección ( 1000pK = y

6.3iT s= ) consideramos ahora que la señal de control puede alcanzar cualquier valor

(lo que implica un flujo ilimitado, o limitado sólo a la cantidad de líquido total

disponible en el tanque inferior, y la no existencia de saturación en la bomba),

obtenemos una respuesta de 10.845et s= y 0%rpe = . La figura 3.25 refleja esto.

Figura 3.25. Evolución del sistema frente a un nivel inicial de líquido en el tanque

superior de 0.15m usando un controlador PI sin saturación en la señal de control.

De esta manera, al no existir saturación es posible mejorar la respuesta suministrando

un mayor caudal del que nos limitaría dicha situación.

Page 60: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

60

Valoración final

Hemos abordado los principios fundamentales que rigen el control del nivel de líquido

de un depósito en sus diversas facetas, detallando de este modo los aspectos más

significativos de la simulación, los que verdaderamente merecen ser estudiados con

más profundidad y detenimiento.

Todas estas simulaciones más relevantes quedan recogidas en la ventana de diálogo

DialogOption, que emerge si pinchamos sobre el selector Options, en el panel de

mando de nuestro laboratorio de control, tal como muestra la figura 3.26.

Figura 3.26. Panel de opciones para configurar los casos más significativos de control.

De este modo, sólo con pulsar cualquier botón de este panel de opciones quedarán

cargados los parámetros del esquema de control deseado, presentando así tanto

situaciones óptimas de control como casos de especial interés. Todas estas

configuraciones son las que hemos ido mostrando a lo largo de esta sección.

Por otro lado, ni que decir tiene que si nos fijamos un poco en las ecuaciones del

modelo podríamos preguntarnos por lo que sucedería con la modificación de los

parámetros del sistema. Resultará lo que dicte el comportamiento del modelo.

Así, por ejemplo, un mayor coeficiente de descarga en la válvula manual o un mayor

radio desembocará en un mayor caudal de salida, por lo que el sistema tardará más

tiempo en alcanzar el estado de equilibrio. Lo mismo sucederá si la bomba trabaja con

una eficiencia menor al 100%, ya que la servoválvula suministrará al depósito superior

un caudal más bajo.

Por tanto, invitamos al lector a modificar los parámetros del sistema a su gusto si

desea “curiosear” sobre el comportamiento del mismo, que obviamente será el

esperado si tiene en mente las ecuaciones que gobiernan el modelo.

Concluimos este capítulo diciendo que la aplicación Ejs aquí realizada para simular el

control del nivel de líquido de un par de tanques (superior e inferior) podría servirnos

para actuar verdaderamente sobre un hipotético proceso físico real de idénticas

características situado en un laboratorio remoto, accediendo a él mediante el empleo

Page 61: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

61

de una conexión a internet. Para más información sobre esto, os remitimos a la

solución adoptada por la UNED (Universidad Nacional de Educación a Distancia) para la

creación de un laboratorio virtual y remoto con la finalidad de ser objeto de estudio en

determinadas asignaturas [14].

Page 62: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

62

CAPÍTULO 4: OPTIMIZACIÓN DE ENJAMBRES

DE PARTÍCULAS

Tras abordar el estudio del comportamiento de un laboratorio de control, hemos

adquirido la destreza suficiente para realizar empresas que requieran una mayor

complejidad en cuanto a programación del modelo y la vista de una simulación, por lo

que ya nos encontramos en condiciones de afrontar el análisis de sistemas dinámicos

formados por múltiples individuos interactuando.

Por tanto, procedemos ahora a investigar la conducta como manada de conjuntos de

partículas de distinta especie, considerando diversas formas de actuación según se

trate de especies carnívoras (depredadoras) o herbívoras (presas).

El comportamiento en bandada (flock en inglés) es el exhibido por un conjunto de

pájaros en vuelo [15]. Hay paralelismos con el comportamiento de los bancos de

peces, enjambres de insectos y rebaños o manadas de animales terrestres. Por tanto, a

partir de ahora llamaremos indistintamente a una agrupación de individuos por

cualquiera de estos nombres.

Las simulaciones por ordenador y los modelos matemáticos que se han desarrollado

para emular el comportamiento en bandada de los pájaros pueden aplicarse también a

la conducta en “bandada” de otras especies. Como resultado de esto, el término

“bandada” se aplica algunas veces en la informática a especies diferentes de las aves.

Desde el punto de vista del diseño matemático, una “bandada” es el movimiento

colectivo de un gran número de entidades auto-propulsadas y un comportamiento

animal colectivo que se manifiesta en seres vivos como pájaros, peces, bacterias e

insectos. Se considera un comportamiento emergente que surge a partir de reglas

simples seguidas por los individuos y que no implica ningún tipo de coordinación

central.

Los modelos básicos de conducta en bandada son controlados por tres reglas simples,

las cuales se aplican localmente a cada individuo dentro de una pequeña vecindad

circular establecida por su radio de alcance o detección:

- Alineación: cada elemento de la misma especie intentará llevar la misma

velocidad (ángulo y módulo) que todos los que estén en su área de detección.

- Cohesión: asimismo, tratará de dirigirse al centro percibido de la bandada, es

decir, al centroide de todos los individuos que es capaz de detectar en su radio.

Page 63: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

63

- Separación: evitará sitios donde haya mucha conglomeración de congéneres.

Para ello se usará un radio de separación (obviamente, de menor valor que el

de detección), indicando así la distancia a la que deseamos permanezcan

separadas las partículas.

Siguiendo estas tres normas, junto con otras como las de evitar predadores y

obstáculos o perseguir a sus presas para obtener alimento, ya sea este de origen

animal o vegetal, analizaremos con detenimiento la conducta de todas las especies

animales implicadas.

En la figura 4.1 podemos visualizar cómo se aplica la primera regla: alineación. En ella

se aprecia como el elemento de la parte superior-izquierda se acaba de encontrar con

una bandada de cuatro congéneres, por lo que tratará de llevar la dirección general de

la misma, señalada en la imagen con una flecha grande de color azul. Los círculos rojos

representan el área de detección de cada ejemplar, mientras que los de color naranja

indican la región de separación.

Figura 4.1. Aplicación de la ley de alineación en manadas.

Para la regla de cohesión, vemos en la figura 4.2 que el elemento de la parte superior-

izquierda se ha topado con cuatro individuos de su misma especie, por lo que intentará

ir hacia el centro de la bandada, indicado con un punto azul, siguiendo la dirección

marcada por la flecha de color negro.

Page 64: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

64

Figura 4.2. Aplicación de la ley de cohesión en manadas.

Para explicar la regla de separación, fijémonos en la imagen de la figura 4.3. Aquí se

distingue como el individuo verde se acaba de encontrar con otro de distinta especie

(color rojo) y un obstáculo (círculo relleno en marrón). Por tanto, se aplicará una fuerza

opuesta a la posición media de la partícula roja y el obstáculo, indicada con un punto

de color azul. Dicha fuerza tratará de llevar al ejemplar verde en la dirección indicada

por la flecha negra, alejándolo de esta forma del “inminente peligro”. Cabe mencionar

que esta fuerza también tiene lugar con los elementos de una misma especie, con la

salvedad de que sólo aparecerá cuando se encuentren muy juntos unos de otros, a una

distancia menor que el radio de separación (circunferencia de color naranja en la

imagen).

Figura 4.3. Aplicación de la ley de separación en manadas.

Page 65: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

65

Una vez expuestas estas tres normas esenciales para la generación de una bandada,

pasamos a visualizar la pantalla de simulación de la aplicación (figura 4.4).

Figura 4.4. Panel de control de la simulación.

En la parte superior aparece el mapa por donde se mueven los especímenes de cada

tipo, mientras que en la inferior se encuentra el panel de mando del programa, que

procedemos a comentar en este instante de izquierda a derecha.

En la primera columna tenemos los botones que controlan la simulación (Play, Pause,

Step, Reset, Init), un indicador del tiempo transcurrido (t), y cinco selectores para

mostrarnos las distintas gráficas y modificar los pesos empleados a la hora de

configurar las interacciones ejercidas entre los individuos.

Las cuatro siguientes nos indican, para cada especie (herbívoros: H1 y H2, carnívoros:

C1 y C2), el número de elementos que quedan con vida en el mapa, la posibilidad de

añadir o quitar ejemplares, el valor de su velocidad y aceleraciones medias, y si

queremos que dichos parámetros se muestren en las gráficas pertinentes.

La sexta columna nos da la opción de que aparezcan en pantalla los radios de

detección (DR) y separación (SR) de cada especie.

La columna siguiente se usa para ver los identificadores de los elementos (Ver Ids),

mostrar el espacio de fases (Ver Caminos), si pueden comer los carnívoros un número

ilimitado de piezas (Sinfín Piezas), el número de piezas a ingerir si la cifra es limitada

Page 66: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

66

(piezas), modificar el número de vegetales (VEG) u obstáculos (OBST), indicar si los

herbívoros y carnívoros pueden consumir o no vegetales, si los individuos evitan los

obstáculos o no (Ev Obst), y el número máximo de puntos de cada traza en las gráficas

(TRAZA).

La octava columna se emplea para la establecer la manera en la que interactúan las

diversas especies existentes entre sí. De este modo, podemos decidir si deseamos que

los dos tipos de herbívoros se agrupen en una gran manada o no (situación que

también se produce para las dos clases de carnívoros), si los herbívoros huyen de los

carnívoros o no, y qué animales forman parte de la dieta de cada predador.

Las dos próximas columnas sirven para configurar, para cada especie, el rango de

velocidad, el máximo ángulo de giro, y las áreas de detección y separación.

Finalmente, la última columna hace acopio del tipo y la cantidad de comida ingerida

por cada especie.

4.1. Obtención del modelo y la vista de la simulación

Luego de haber presentado la simulación, es el turno de exponer las ecuaciones y los

procedimientos de programación empleados.

Las ecuaciones responden a la aplicación de la definición de posición, velocidad y

aceleración de una partícula a lo largo del tiempo.

Así, si definimos la posición, velocidad y aceleración de un elemento, respectivamente,

en un plano de coordenadas ( , )x y como:

( , )r x y=� (4.1)

( , )x yv v v=� (4.2)

( , )x ya a a=� (4.3)

Entonces, podemos expresar la evolución del mismo en el transcurso de un instante de

tiempo (dt) como:

antr r v dt= + ⋅� � � (4.4)

antv v a dt= + ⋅� � � (4.5)

Donde:

Page 67: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

67

( , )ant ant antr x y=� (4.6)

, ,( , )ant x ant y antv v v=� (4.7)

Siendo antr�

y antv�

la posición y velocidad de la partícula en el instante de tiempo

anterior.

De esta forma, si el individuo se encuentra aislado no actuará ninguna fuerza sobre él,

por lo que 0a = y .v cte= , resultando un movimiento rectilíneo uniforme.

Pero si, por el contrario, este localiza algo dentro de su área de detección o separación

(siempre que hayamos configurado en el panel de mando si responde o ignora este

evento) podrán producirse fuerzas que hagan que el cuerpo se acelere.

A continuación, comentamos las diversas fuerzas que pueden generarse cuando una

partícula interactúa con su entorno. Para ello, las hemos separado creando una

aceleración para cada tipo de acción, con sus respectivas componentes en x e y :

al coh sep ev seg aproa a a a a a a= + + + + +� � � � � � � (4.8)

Expliquémoslas una a una, pues:

ala�

, aceleración de alineación: empleada para hacer cumplir la primera regla para la

formación de una manada (ver figura 4.1).

Se expresa de la forma:

,( )al al al fact al anta w w v v= ⋅ ⋅ −� � � (4.9)

Donde alw y ,al factw son dos pesos (un par de valores numéricos) que se ajustarán

convenientemente para que la fuerza de alineación actúe en su correcta medida.

Mientras que alv�

representa la velocidad media del número total de partículas, N , (las

de la misma especie, e incluso añadiendo también las de otra especie si así hemos

configurado la opción de agrupar manadas de clase diferente) que encuentra nuestro

individuo dentro de su área de detección:

1

1 N

al i

i

v vN =

= ⋅∑� �

(4.10)

De este modo, nuestro ejemplar tenderá poco a poco, con los valores de los pesos

correctamente establecidos, a la velocidad media del grupo gracias a esta aceleración

que mide la diferencia entre la celeridad promedio de la manada y la de la partícula en

cuestión, tomando dicha fuerza valor nulo cuando se igualen ambos guarismos.

Page 68: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

68

coha�

, aceleración de cohesión: usada en la segunda norma de generación de una

bandada (figura 4.2).

Su ecuación es:

( )coh coh centr centr anta w w r r= ⋅ ⋅ −� � � (4.11)

Donde cohw y centrw son dos pesos (un par de valores numéricos) que se ajustarán

convenientemente para que la fuerza de cohesión actúe en su correcta medida.

Mientras que centrr�

representa la posición media o centroide del número total de

partículas, N , (las de la misma especie, e incluso añadiendo también las de otra

especie si así hemos configurado la opción de agrupar manadas de clase diferente) que

encuentra nuestro individuo dentro de su área de detección:

1

1 N

centr i

i

r rN =

= ⋅∑� �

(4.12)

De esta guisa, nuestro espécimen tenderá poco a poco, con los valores de los pesos

correctamente establecidos, a la posición media del grupo gracias a esta aceleración

que mide la diferencia entre el centroide del enjambre y la ubicación de la partícula en

cuestión, tomando dicha fuerza valor nulo cuando se igualen ambas cifras.

sepa�

, aceleración de separación: tiene su función para la tercera regla de creación de

una manada. Se sigue lo indicado en la figura 4.3, con la salvedad de que esta

aceleración es aplicable únicamente a los elementos de la misma especie (e incluso

distintas si se selecciona la opción agrupar manadas en el panel de control), además de

que la región para la cual existe dicha fuerza es la de separación y no la de detección.

Se rige por la ley:

( )sep sep alej sep anta w w r r= ⋅ ⋅ −� � � (4.13)

Donde sepw y

alejw son dos pesos (un par de cantidades numéricas) que se sintonizarán

adecuadamente para que la fuerza de separación actúe en su justa medida. Mientras

que sepr�

representa la posición espejo, imagen, reflejada o de separación media del

número total de partículas, N , (las de la misma especie, e incluso añadiendo también

las de otra especie si así hemos configurado la opción de agrupar manadas de distinta

clase) que encuentra nuestro individuo dentro de su área de separación, ya que sólo

aplicaremos esta acción cuando los ejemplares se hallen muy pegados unos de otros:

2sep ant centrr r r= ⋅ −� � � (4.14)

Page 69: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

69

Así, siendo centrr�

el mismo centroide de (4.12), la posición imagen o de separación

media corresponderá a aquella diametralmente opuesta al centroide respecto a la

ubicación de nuestra partícula.

En definitiva, nuestro elemento tenderá poco a poco, con los valores de los pesos

convenientemente configurados, a la posición imagen o de separación media del grupo

gracias a esta aceleración que mide la diferencia entre la posición reflejada de la

bandada y la ubicación de la partícula en cuestión (pero considerando ahora sólo los

congéneres que se encuentren dentro del radio de separación), tomando dicha fuerza

valor nulo cuando se igualen ambas cifras.

eva�

, aceleración de evasión: se aplica como regla adicional a las de mantenimiento de

una bandada, para el caso en el que un individuo del grupo se encuentre con otros de

distinta especie o con obstáculos dentro de su rango de detección e intente evitarlos.

En este caso, se sigue exactamente lo que muestra la figura 4.3.

Se basa en la ley:

,( )ev ev ev fact sep anta w w r r= ⋅ ⋅ −� � � (4.15)

Donde evw y ,ev factw son dos pesos (un par de valores numéricos) que se ajustarán

convenientemente para que la fuerza de evasión actúe en su correcta medida.

Mientras que sepr�

tiene el mismo significado que para la aceleración de separación

(4.14), por lo que de ahí se deriva que (4.12) también funciona aquí de igual forma,

siempre teniendo en cuenta ahora que estamos refiriéndonos al radio de detección y

para cuando se tope nuestro ejemplar con un “grupo conflictivo”, formado por

partículas de clase diferente y obstáculos.

De este modo, nuestro elemento tenderá poco a poco, con los valores de los pesos

correctamente establecidos, a la posición reflejada o de separación media del “grupo

conflictivo” gracias a esta aceleración que mide la diferencia entre la posición reflejada

de la “bandada conflictiva” y la ubicación de la partícula en cuestión, tomando dicha

fuerza valor nulo cuando se igualen ambas cifras.

sega�

, aceleración de seguimiento: se aplica como regla complementaria a las de

gestión de una manada, para el caso en el que un individuo del grupo se encuentre con

otros de distinta especie o con alimentos de origen vegetal dentro de su rango de

detección y pretenda atraparlos. Así, nuestro ejemplar tomará como objetivo la presa

que tenga a una menor distancia, si dispone de varias donde elegir, tal como se aprecia

en la figura 4.5.

Page 70: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

70

Figura 4.5. Aplicación de la fuerza de seguimiento en manadas.

Podemos ver como el espécimen verde tiene dentro de su radio de detección a una

potencial presa de color azul y una planta (círculo rosado), y que se decanta a la postre

por esta última al encontrarse a una distancia menor (segmento azul de la imagen más

pequeño), por lo que se ejerce sobre nuestro elemento una acción de seguimiento

hacia el vegetal (flecha negra).

La ecuación que gobierna esta fuerza es:

,( )seg seg seg fact seg anta w w r r= ⋅ ⋅ −� � � (4.16)

Donde segw y

,seg factw son dos pesos (un par de cantidades numéricas) que se

configurarán adecuadamente para que la fuerza de seguimiento actúe en su justa

medida. Mientras que segr�

representa la posición objetivo o de seguimiento, es decir,

las coordenadas de la presa (de origen animal o vegetal) más cercana a nuestra

partícula:

( , )seg seg segr x y=� (4.17)

Por tanto, nuestro ejemplar tenderá poco a poco, con los valores de los pesos

correctamente establecidos, a la posición objetivo gracias a esta aceleración que mide

la diferencia entre la posición de seguimiento y la ubicación de la partícula en cuestión,

tomando dicha fuerza valor nulo cuando se igualen ambas cifras.

aproa�

, aceleración de aproximación: se aplica como norma complementaria a las de

control de una bandada, para el caso en el que un elemento del grupo se tope con

otros de distinta clase o con viandas de origen vegetal dentro de su área de detección

y pretenda capturarlos. De esta manera, nuestro individuo tomará como objetivo la

Page 71: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

71

presa que tenga a una menor distancia, si dispone de varias donde elegir, tal como

ilustra la figura 4.5.

La expresión de esta fuerza es:

,( )apro apro apro fact apro anta w w v v= ⋅ ⋅ −� � � (4.18)

Donde aprow y

,apro factw son dos pesos (un par de valores numéricos) que se

sintonizarán convenientemente para que la acción de aproximación se ejerza en su

correcta medida. Mientras que aprov�

representa la velocidad de aproximación al

objetivo, siendo igual a la diferencia entre la posición del objetivo (4.17) y la de nuestro

elemento (4.6):

apro seg antv r r= −� � � (4.19)

Entonces, nuestro individuo tenderá poco a poco, con los valores de los pesos

correctamente fijados, a la velocidad de aproximación gracias a esta aceleración que

mide la diferencia entre la celeridad de aproximación y la velocidad de la partícula en

cuestión, tomando dicha fuerza valor nulo cuando se igualen ambos guarismos.

Finalmente, mencionar que para las ecuaciones de este capítulo hemos tenido en

cuenta que los individuos pueden salirse del mapa y aparecer por la zona opuesta,

aplicando las líneas de código necesarias para que un elemento pueda detectar a otro

que se halla dentro de su radio de acción pero por el extremo contrario, como refleja

la figura 4.6.

Page 72: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

72

Figura 4.6. Desborde de mapa en manadas.

Vemos como los dos ejemplares de la parte superior de la imagen, que aún no han

desbordado el mapa, continúan siguiendo a sus congéneres de la parte inferior, que sí

lo han hecho.

Este es el comportamiento básico seguido en el modelo de la simulación, cuya página

de evolución mostramos ahora:

Page 73: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

73

Figura 4.7. Panel de evolución de la simulación.

Precisamos de una única página de evolución (nombrada Evolucion), la cual contiene

exclusivamente código Java y está compuesta por diversas llamadas a métodos propios

con el fin de conseguir el comportamiento deseado. Básicamente, esta página consta

de cuatro bucles (uno para cada especie animal), donde se van actualizando mediante

los métodos pertinentes todas las interacciones que se producen a lo largo de la

simulación, tanto entre ellos como con los obstáculos y plantas, para poder luego

emplearlas con el propósito de estudiar la conducta y estadísticas de cada elemento,

ya sea gráficamente o viendo cómo cambian ciertos parámetros con el curso del

tiempo.

Vamos a mostrar en este momento la distribución de variables de nuestra aplicación

(figura 4.8).

Page 74: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

74

Figura 4.8. Panel de variables de la simulación.

Las variables se encuentran estructuradas en nueve páginas, con nombres que indican

claramente su contenido:

VariablesGenericasYDeMenus: tabla de variables de ámbito general, empleadas en el

modelo en los diversos cálculos o en la vista para actualizar su contenido.

IndicesMatrices: tabla de variables con los índices de las matrices donde irán

almacenados los datos de las cuatro especies animales, los vegetales y los obstáculos.

VariablesHerb1, VariablesHerb2, VariablesCarn1, VariablesCarn2,

VariablesObstaculos, VariablesVegetales: estas tablas contienen, respectivamente, las

variables empleadas para hacer acopio del estado en el que se encuentran las

poblaciones de herbívoros números uno y dos, carnívoros números uno y dos,

obstáculos y vegetales.

VectorDeParametros: tabla de variables con los índices de los vectores de parámetros

empleados en los cálculos de las diversas aceleraciones.

A continuación pasamos a enseñar el panel de métodos propios (figura 4.9).

Page 75: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

75

Figura 4.9. Panel de métodos propios de la simulación.

Se observa como requerimos siete páginas, con nombres también concluyentes acerca

de su contenido, que pasamos a detallar de inmediato página a página.

Calculos: página que contiene métodos básicos de cálculo que son empleados por

otros métodos y en distintas partes de la simulación, tanto en el modelo como en la

vista. Dichos métodos son los siguientes:

- coseno: devuelve el coseno de un ángulo en grados pasado como parámetro.

- seno: devuelve el seno de un ángulo en grados pasado como parámetro.

- modulovector: devuelve la norma o módulo de un vector cuyas componentes

se pasan como parámetros.

- angulovector: devuelve el ángulo (entre 0 y 360 grados) de un vector cuyas

componentes se pasan como parámetros.

- limitarmodulo: acota la velocidad de los individuos de cada especie entre un

valor mínimo y otro máximo, especificados ambos como parámetros.

- calculanewvectdouble: crea (reserva memoria para) un vector de tipo double.

Page 76: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

76

- calculanewvectint: crea (reserva memoria para) un vector de tipo int. En

desuso, por el momento.

- corregirangulo: para determinar si a un individuo, al ejercerse cierta acción

sobre él, le viene mejor girar a la derecha o a la izquierda para alcanzar el

ángulo deseado, que podrá verse limitado si supera el máximo ángulo de giro,

especificado como parámetro.

Inicializa: página que contiene métodos que son empleados por otros métodos y en

distintas partes de la simulación para establecer el estado inicial de los elementos (en

el panel de inicialización del modelo, ver figura 4.10) y modificar interactivamente su

población con los botones pertinentes (en la vista). Estos métodos son los siguientes:

- creanuevoelementomatriz: genera nuevos individuos en la matriz donde se

almacena toda la población de su especie, aplicable también para obstáculos y

vegetales.

- actualizamatrizindividuos: genera la matriz de elementos, teniendo presente

los correspondientes descensos o aumentos de población, siendo aplicable

también a obstáculos y plantas.

- inicializaindividuos: genera y da a la matriz de elementos un estado inicial,

apoyándose para ello de los dos métodos anteriores, siendo aplicable también

a obstáculos y plantas.

Page 77: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

77

Figura 4.10. Panel de inicialización de la simulación.

Podemos observar en la imagen como dicho panel se compone de una única página,

de nombre Inicializacion, donde empleamos el método inicializaindividuos, entre

otros, para establecer el estado inicial de las cuatros especies animales, los obstáculos

y los vegetales.

Actualizar: página que incluye métodos para preparar al sistema para su siguiente

paso de simulación, que a su vez son empleados por otros métodos y en distintas

partes del programa, tanto en el modelo como en la vista. Estos métodos son los

siguientes:

- actualizaestadoindividuos: asigna a la posición, velocidad y ángulo de las

partículas en el instante anterior su valor en el instante actual, de cara a

preparar al sistema para el siguiente paso de simulación.

- actualizanuevoestadoindividuos: asigna un valor a la posición, velocidad,

ángulo y aceleración de las partículas en el instante actual a partir de los datos

en el instante anterior y las interacciones (aceleraciones o fuerzas) producidas

en el instante actual.

- actualizavectoresvista: modifica si procede los vectores de la vista a partir de

la matriz del elemento correspondiente (animal, obstáculo o vegetal), ya que

Page 78: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

78

los parámetros que hacemos uso en la vista deben ser especificados como

vectores y no como matrices.

DibujaRangos: página con un único método (calcularangos), implementado para hallar

los cuatro posibles centros de los círculos de detección y separación, ya que puede

haber desbordamiento en los lados del mapa. Se emplea tanto en el modelo como en

la vista.

CalculosAceleraciones: página que incluye métodos con el fin de hallar las fuerzas o

aceleraciones que se producen en los diversos animales, ya sea entre ellos o frente a

obstáculos y plantas. Se utilizan exclusivamente en los bucles de las cuatro especies

animales dentro del panel de evolución del modelo. Los métodos son:

- inicializaacerovectdouble: establece a valor cero todas las componentes de un

vector. Se emplea con los vectores de parámetros del tipo agrupar manadas

(denominado vectparamagr) y separar manadas y obstáculos (vectparamsep)

para reutilizarlos en los cuatro bucles.

- inicializaacerosalvounovectdouble: asigna valor cero todas las componentes

de un vector, a excepción de la del índice especificado como parámetro, cuyo

valor también se pasa por ahí. Se emplea con el vector de parámetros del tipo

seguir individuos y vegetales (vectparamseg) para reutilizarlos en los cuatro

bucles. El índice que no se inicializa a cero (sino a un valor correspondiente a

tres veces su radio de detección, esto es, un valor fuera del alcance de visión de

nuestro animal) es el que indica la distancia de nuestro espécimen con el

elemento objetivo, ya que así podremos llevar debida cuenta de si es necesario

aplicar la fuerza de seguimiento y a quién perseguir (si hay más de un elemento

implicado).

- preparaacel: evalúa las posibles aceleraciones a aplicar en los ejemplares de

las cuatro especies animales existentes. Hace uso para ello de los vectores de

parámetros.

- calculaacel: determina, apoyándose en el método anterior y en los vectores

de parámetros, las posibles aceleraciones surgidas en los individuos, ya sea

para agruparse en manada, perseguir presas, o evitar obstáculos y partículas de

otra especie.

LimpiarRestos: página que incluye tres métodos, uno de los cuales da nombre a la

misma. Estos son:

- limpiezarestos: borra del mapa y de la matriz correspondiente a los animales y

vegetales fallecidos.

Page 79: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

79

- cambiarpiezas: modifica el número de víctimas (tanto animales como

vegetales, si procede) que un predador puede cazar antes de ser retirado del

mapa y de su matriz de congéneres. Únicamente los carnívoros podrán ser

apartados de esta forma.

- cambiarnumpiezas: efectúa la variación de la cantidad de seres vivos que

puede atrapar un carnívoro antes de ser depuesto del mapa y de su matriz de

congéneres, haciendo uso para ello del método anterior.

RetoquesFinales: última página del panel Propio compuesta por cuatro métodos con

diversos fines, que procedemos ahora de explicar:

- ponenovivoyceroindis: coloca en estado de reposo perpetuo al herbívoro o

carnívoro fallecido, manteniéndose su posición y ángulo mientras no sea

eliminado de la matriz y, por consiguiente, del mapa.

- numerovivos: hace recuento de la cantidad de animales de cada tipo que

siguen aún con vida.

- recuentanovivos: hace acopio del número de presas devoradas por los

animales de cada especie.

- asignaids: para identificar a los animales en el mapa con un número.

Tras haber explicado los distintos paneles del modelo (no se ha requerido panel de

ligaduras), procedemos ahora con la parte gráfica de la simulación.

Vista de la simulación

El árbol de elementos de la vista de nuestra aplicación es el que se visualiza en la figura

4.11.

Page 80: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

80

Figura 4.11. Vista de la simulación de nuestro programa.

Vemos como se compone de una ventana principal (llamada Main), donde

representaremos gráficamente los seis tipos de elementos (cuatro especies animales,

obstáculos y plantas) que pueden poblar el mapa mediante el panel de dibujo con el

recurrente nombre PanelDibujo. Además, el elemento Panel será el que contendrá los

mandos necesarios para controlar la simulación.

Por otro lado, precisamos de un conjunto de ventanas de diálogo que comentamos a

continuación:

- DialogPoblacion: ventana de diálogo para la gráfica que mide la evolución

temporal del número de elementos de cada tipo en el mapa.

- DialogVelAcel: ventana de diálogo para la gráfica que representa para cada

ejemplar animal el cambio a lo largo del tiempo de la velocidad y aceleraciones

de menor peso o valor.

- DialogAcel: ventana de diálogo para la gráfica que evalúa para cada animal las

aceleraciones de mayor peso o valor en el tiempo.

- DialogRecorrido: ventana de diálogo para la gráfica que calcula el espacio de

fases de la posición en x y la posición en y para cada elemento.

Page 81: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

81

- DialogPesosH1H2: ventana de diálogo a modo de panel de opciones adicional

para modificar si se desea los pesos empleados para calcular las aceleraciones

de los herbívoros.

- DialogPesosC1C2: ventana de diálogo cuyo propósito es el de alterar los pesos

utilizados para determinar las aceleraciones de los carnívoros.

Ahora vamos a detallar algunos elementos de la vista. En concreto, veremos algunos

de los que están incluidos en el panel de dibujo, cuyos hijos se muestran en la figura

4.12.

Figura 4.12. Árbol de elementos del panel de dibujo en la vista.

En la imagen aparecen los elementos iniciales que conforman el panel de dibujo. Se

distinguen los elementos de dibujo de tipo Básico, tales como conjuntos de vectores o

flechas (FlechasHerb1, FlechasHerb2, etc.), conjuntos de partículas (DetRangHerb1,

SepRangHerb1, etc.), y conjuntos de textos (TextHerb1Id, TextHerb2Id, etc.).

Si abrimos las propiedades del elemento FlechasHerb1 (el cual se emplea para ubicar a

los herbívoros de tipo uno en el mapa) resultará lo que muestra la figura 4.13.

Page 82: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

82

Figura 4.13. Propiedades del elemento FlechasHerb1 en la vista.

Podemos observar en las propiedades como el número de elementos del conjunto está

asociado a NHERB1, que es una variable disponible en el panel de mando de la

simulación con objeto de ser modificada a nuestro gusto. Además, para indicar la

posición de los ejemplares en el mapa se utilizan los vectores herb1x y herb1y, los

cuales obtienen las coordenadas en x y en y , respectivamente, de la matriz de

herbívoros de este primer tipo, ya que este elemento no acepta que se le pase

directamente una parte de la matriz como parámetro. Asimismo, para el tamaño de los

individuos (de sus flechas) se usan los vectores tamherb1x y tamherb1y, indicando el

tamaño en x y en y de estos según su orientación en el mapa, manteniendo siempre

dichos vectores igual módulo. También indicamos la visibilidad de los elementos

mediante la variable VISIBLEHERB1, e impedimos que puedan ser movidos

interactivamente por el usuario. Por último, establecemos el color azul para las flechas

de los elementos.

Otro elemento que merece la pena mencionar es el conjunto de textos. Para ello,

escogemos el elemento TextHerb1Id, cuyas propiedades se visualizan a continuación

en la figura 4.14.

Page 83: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

83

Figura 4.14. Propiedades del elemento TextHerb1Id en la vista.

Se observa aquí como no hay cambios con respecto a las propiedades de la imagen

anterior en cuanto al número de elementos, la posición de los mismos, la interacción

con el usuario y el color.

Sin embargo, para la visibilidad tenemos la siguiente línea de código (función lógica

AND de dos valores booleanos):

VISIBLEHERB1&&verids

Esta sentencia nos da la opción de poder mostrar y ocultar interactivamente los

identificadores de los individuos, ya que la variable verids sí es accesible desde el panel

de la simulación, mientras que la primera actúa de manera automática, tomando valor

false cuando el número de herbívoros tipo uno sea cero (ya que por defecto se creará

en esta situación un individuo que no será usado, con el propósito de no dejar vacía la

matriz).

En cuanto al aspecto gráfico, resaltar que el texto a mostrar será el que contenga la

variable de tipo String denominada Herb1Id, que aparece entre % para indicar que se

trata de una variable y no del texto en sí. Esta variable contendrá el identificador de

cada ejemplar del grupo, resultando en pantalla sobre cada partícula un texto de la

forma H1.X, donde X será el número del herbívoro de tipo uno dentro de la matriz de

congéneres, que irá desde cero hasta el número total de individuos de esa especie

menos uno. También se especifica la fuente del texto, es decir, el tipo de letra, su

estilo (si es normal, como es el caso, o si es negrita, cursiva, negrita-cursiva) y su

tamaño.

Page 84: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

84

4.2. Análisis del fenómeno bajo estudio

Después de presentar los aspectos más significativos del modelo y la vista del control

de una manada y las interacciones con su entorno, proseguimos ahora cotejando las

diversas posibilidades que el programa nos ofrece.

Decir primero que se ha optado por hablar de unidades de tiempo (udt) y cuadros (□ )

para expresar las magnitudes del tiempo y la distancia, respectivamente. Por lo tanto,

la velocidad estará expresada en /udt□ y la aceleración en 2/ udt□ . También hemos

limitado a diez el número máximo de elementos de cada tipo para evitar que la

simulación se ralentice si incluimos una cifra mucho mayor (esto dependerá

obviamente de la memoria del ordenador de cada usuario). Además, todas las gráficas

de este capítulo han sido elaboradas empleando el máximo valor de la variable TRAZA,

esto es, doscientos, con objeto de mostrar en pantalla y en la memoria del proyecto el

comportamiento del sistema durante un mayor intervalo de simulación. Es por ello que

en ocasiones algunas figuras de este capítulo podrían parecer difíciles de interpretar al

haber muchas trazas en tan poco espacio de pantalla. Pero ello no supone ningún

problema si sabemos que para una visualización con mayor detalle de las gráficas (una

especie de zoom) únicamente hay que disminuir el valor de dicha variable TRAZA en el

panel de mando. Incluso nos podría bastar con activar solamente el selector que hace

que se muestren o no las trazas de los individuos de cada especie (Ver H1, Ver H2, Ver

C1, Ver C2, según el caso), ya que en las figuras de este capítulo se han mostrado a la

vez los parámetros de todas las especies implicadas en lugar de visualizar sólo las de

una especie en concreto, ofreciendo así una mayor visión de conjunto. También

podríamos estirar las ventanas de diálogo de las gráficas correspondientes para ver

mejor la evolución. O, finalmente, efectuar cualquier combinación de todas estas

técnicas mencionadas. Por último, señalar que todos los valores límites de los

guarismos anteriores pueden ser alterados si el usuario dispone de la herramienta Ejs y

del archivo .xml de esta aplicación.

Caso 1. Comparativa de las diversas aceleraciones

Para analizar las fuerzas ejercidas entre los distintos elementos vamos a partir del

sencillo caso de la figura 4.15.

Page 85: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

85

Figura 4.15. Mapa actual del sistema.

En la imagen podemos ver la configuración de los diferentes parámetros, donde se

aprecia como el individuo rojo puede alimentarse de los verdes y por ello se dispone a

seguir al que tiene más cerca (etiquetado como C1.1). Mientras que los ejemplares

verdes, que se encuentran persiguiendo a uno negro con el fin de capturarlo, se hallan

ahora con el dilema de continuar con la captura o comenzar la evasión para evitar

convertirse en “cazadores cazados”. Se aprecia también en el panel de mando el valor

promedio de las velocidades y aceleraciones de cada especie.

A continuación mostramos estos valores para los carnívoros de tipo dos (figura 4.16).

Page 86: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

86

Figura 4.16. Gráficas del sistema.

Se observa en la gráfica de población que no ha habido ninguna baja. Por otro lado, en

el espacio de fases vemos que los ejemplares verdes comenzaron a acercarse con

objeto de formar una pequeña manada de dos, pero que el individuo C1.1 ha

empezado a desvincularse de la bandada debido a que el carnívoro rojo C2.0 pretende

darle caza. Además, en las gráficas de velocidades y aceleraciones se distingue como la

celeridad de ambas partículas (en color azul) tiende a emparejarse permaneciendo en

manada, al igual que las aceleraciones de alineación (negro), cohesión (verde) y

separación (rojo). Se aprecia como en torno a las 2.3udt el elemento verde C1.0 avista

al negro H2.0, por lo que se producen las aceleraciones de seguimiento (marrón) y

aproximación (naranja). Sobre las 2.5udt , C2.0 pone su objetivo en C1.1, por lo que

este último inicia una acción evasiva (rosa), cosa que también realiza C1.0 cuando se

percata de la situación a las 3.0udt .

Vemos también que el orden de magnitud de las velocidades y aceleraciones de

cohesión y separación gira en torno a las decenas, mientras que para las aceleraciones

de alineación, evasión, seguimiento y aproximación está rondando las centenas. Esto

indica varias cosas.

Primero, que de las tres reglas de agrupación de una manada, la predominante es la de

alineación, debiendo estar las otras dos en el mismo orden de magnitud para

mantener a los individuos del grupo a la distancia adecuada, ni demasiado juntos ni

tan dispersos.

Page 87: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

87

Por otra parte, para las otras tres fuerzas complementarias a las de formación de una

manada, vemos que la de mayor valor es la que rige el comportamiento animal, al grito

de “sálvese quien pueda”, esto es, la aceleración de evasión. Las otras dos

(seguimiento y aproximación), inferiores a la de alineación pero con actuación

conjunta a la hora de capturar presas, tienen el valor justo para que, en la medida de

lo posible, hagan compatible la cacería con el mantenimiento unido de la manada, sin

que se disgregue tan fácilmente la misma. Es por ello que hemos escogido los pesos

que vienen por defecto en los paneles adicionales que emergen si pinchamos sobre

Pesos H y Pesos C en la simulación.

Caso 2. Equilibrio velocidad-ángulo de giro en poblaciones

Haremos ahora otro estudio donde pondremos en liza al máximo número de

ejemplares de las cuatro especies animales, viendo su evolución a lo largo del tiempo.

Consideraremos, para balancear las tornas, que si una especie tiene la facultad de

adquirir mayor velocidad punta, su capacidad de giro se verá reducida en

consecuencia.

En la figura 4.17 se aprecia el estado de la simulación 0.5udt después de haber

arrasado los carnívoros toda la población herbívora.

Page 88: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

88

Figura 4.17. Mapa actual del sistema.

En la zona derecha de la imagen se ve que los carnívoros del primer tipo (C1) han

capturado cuatro presas de herbívoros tipo uno (H1) y cinco de la clase H2. Mientras

que los carnívoros tipo dos (C2) han hecho lo propio con seis H1 y cinco H2. Debido al

carácter aleatorio de la simulación, cada vez que realicemos una ejecución de la misma

con diez ejemplares de cada especie animal siempre habrá alguna variación. Pero se

puede sacar como resultado que, por lo general, el número de presas H1 y H2 de cada

carnívoro será en principio parecido, debido a que hemos considerado que el carnívoro

C2 tendrá la ventaja de adquirir una velocidad punta ligeramente mayor que C1,

aunque ello implicará una capacidad de maniobra algo menor (menor ángulo de giro),

tal como se aprecia en el panel de mando de la figura. Esta situación también se ha

tenido en mente para configurar la velocidad y el ángulo de giro de los herbívoros,

teniendo H1 menor velocidad pero mayor capacidad de giro que H2, ligeramente, por

lo que tampoco debería haber, en principio, mucha diferencia en el estudio

demográfico de ambos a lo largo de varias ejecuciones. No obstante, habrá que tener

en cuenta siempre el azar en estos casos.

A continuación, se muestra la evolución de la población de individuos en el tiempo

(figura 4.18).

Page 89: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

89

Figura 4.18. Gráficas del sistema.

Como se puede ver en la parte superior izquierda, las capturas afloran rápidamente al

haber de inicio tantos elementos en el mapa, haciendo disminuir el número de

herbívoros tipo uno y dos en el intervalo 4.0 6.0udt− de manera calcada. Tras un

parón de 2.0udt la población H1 empiezan a descender en picado a las 8.0udt hasta

tomar valor cero alrededor de las 13.0udt . En cuanto a H2, las defunciones vuelven a

aparecer a las 13.0udt , dejando únicamente un superviviente, que será devorado a las

21.0udt , aproximadamente. En las dos gráficas de la parte derecha de la figura se

observa como aparecen picos de aceleración para C1 y C2 (seguimiento y

aproximación, sobre todo) cuando se producen las capturas. Mientras que en la parte

inferior izquierda tenemos las trayectorias seguidas por C1 y C2 a lo largo de la

simulación, distinguiéndose cómo se han ido formando las manadas y los saltos

debidos a desbordamientos en los lados del mapa (líneas horizontales y verticales).

Caso 3. Desequilibrio velocidad-ángulo de giro en poblaciones

En esta ocasión, modificaremos la regla que tenemos configurada por defecto en

nuestro programa, haciendo que se incumpla la ley de “a mayor velocidad, menor

ángulo de giro” para ver qué resulta.

Page 90: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

90

La figura 4.19 ilustra el aspecto de la simulación tras haber quedado únicamente las

especies carnívoras sobre la superficie.

Figura 4.19. Mapa actual del sistema.

Podemos observar en el panel de mando que H2 tiene mayor velocidad y ángulo de

giro que H1, y que lo mismo sucede para C2 y C1. Esto dará como resultado en

términos generales (no olvidemos la aleatoriedad de la simulación) que la especie C2

capturará mayor número de presas que C1, mientras que la especie H2 será más difícil

de capturar que H1.

A continuación, se muestra la evolución temporal de los elementos implicados (figura

4.20).

Page 91: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

91

Figura 4.20. Gráficas del sistema.

Podemos ver nuevamente los picos producidos por las aceleraciones cuando se

producen las capturas, pero lo más interesante es que la traza de población de H2

aparece desplazada más a la derecha que la de H1, lo que indica que es más difícil

atrapar a un ejemplar herbívoro tipo dos.

De igual modo, la parte derecha del panel de control de la figura 4.19 nos confirma que

los carnívoros del segundo tipo han cazado un total de quince presas (siete H1 y ocho

H2), por las cinco del primer tipo (tres H1 y dos H2), demostrando así que la especie C2

es la mejor cazadora.

4.3. Otras consideraciones

Antes de concluir el estudio del comportamiento de las manadas, nos disponemos a

mostrar algunos casos singulares.

Page 92: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

92

Efecto de la variación de los pesos en las aceleraciones

Procedemos a valorar lo que sucede si alteramos la configuración por defecto de los

parámetros que gobiernan las distintas fuerzas que se ejercen en nuestra simulación.

De este modo, un aumento excesivo en los pesos de cohesión hará que los individuos

se congreguen en torno al centro del grupo, ya que la acción de separación no será lo

suficientemente grande para contrarrestar este efecto (figura 4.21).

Figura 4.21. Aumento de la fuerza de cohesión en la bandada.

Vemos que al subir el parámetro cohw de 0.5 a 8.0412 los diez ejemplares verdes

tienden hacia el centro del enjambre.

Por el contrario, si incrementamos los pesos de separación, esto hará que el sistema se

vuelva más “oscilante”, al alejarse bruscamente las partículas que se encuentran más

juntas.

Mientras que si disminuimos la aceleración de alineación, los elementos del sistema

irán “a la deriva”, moviéndose de un lado a otro, manteniendo unida la bandada

únicamente por la actuación de la fuerza de cohesión.

Page 93: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

93

En cuanto a las acciones conjuntas de seguimiento y aproximación, y también a la

acción de evasión, un aumento en ellas provocará una mejor respuesta a la

persecución de presas y evitación de obstáculos y predadores, respectivamente.

Agrupación de manadas de distinta especie en una única

Hay veces en la naturaleza en las que dos clases animales conviven en armonía,

pudiéndose desplazar conjuntamente a lo largo del terreno. Para tener en cuenta este

asunto, precisamos en el panel de mando de la simulación de los selectores Agr H1/H2

y Agr C1/C2, si lo que deseamos es reunir a los herbívoros o a los carnívoros,

correspondientemente. Para que esto pueda llevarse a cabo adecuadamente, ambas

especies deben tener intervalos de velocidades y capacidades de giro similares, ya que

si no habría complicaciones para reflejar el comportamiento de las mismas como “gran

manada”. Las dos figuras siguientes ilustran esta conducta para unas velocidades

dispares, primero, y para celeridades semejantes, después.

Figura 4.22. Única gran manada irrealizable debido al desajuste de velocidades en

ambas especies.

Page 94: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

94

Figura 4.23. Formación de la gran manada gracias a la adecuada sintonización de las

velocidades de ambas especies.

Se aprecia en la parte derecha del panel de mando de ambas imágenes que una

correcta elección de velocidades y ángulos de giro en los carnívoros C1 y C2 hace

posible que se origine la manada conjunta.

Rangos de detección y separación diferentes según la especie

Analizaremos ahora la cuestión de que una clase animal tenga distinta área de visión

que otra. Veremos en concreto el caso de que los herbívoros dupliquen el rango de

detección de los carnívoros, es decir, que adquiera dicho rango el valor 200 , por 100

de sus predadores.

Ejecutando la simulación con el resto de parámetros por defecto y con el máximo

número de elementos de las cuatro especies animales implicadas (10 ), pudo verse que

al principio los herbívoros seguían cayendo rápidamente debido a la que la dispersión

inicial de los carnívoros en el mapa y la gran cantidad de individuos sobre este hacían

que la ventaja de visión de los vegetarianos se viera contrarrestada por el

acorralamiento al que se veían sometidos. Pero a medida que iban quedando menos

ejemplares de H1 y H2, junto con que C1 y C2 iban constituyéndose en manadas, los

Page 95: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

95

primeros eran capaces de anticiparse a los movimientos de sus predadores, evitando

con gran éxito ser detectados por los mismos y aumentando así considerablemente el

tiempo transcurrido hasta que la población de herbívoros se hiciera cero.

Las figuras 4.24 y 4.25 muestran este estudio particular.

Figura 4.24. Mapa actual del sistema.

Page 96: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

96

Figura 4.25. Gráficas del sistema.

Como se aprecia en la primera figura, los dos ejemplares negros gozan de mayor radio

de observación que los carnívoros verdes y rojos, haciendo esto que esquiven

eficazmente a los predadores sin ser detectados por los mismos, como indica la

segunda figura, donde distinguimos los picos de aceleración de evasión (en rosa) y los

cambios de trayectorias en el espacio de fases al toparse con C1 y C2, manteniéndose a

la vez unidos merced a las fuerzas de alineación (negro), cohesión (verde) y separación

(rojo).

Por último, comentar que, aunque no se ha considerado en la ejecución de esta

simulación, un aumento del radio de separación conllevaría a una mayor facilidad de

segregación de la manada en sí, lo que sería bueno o no en función del apetito

(número de piezas finito o infinito) y el número de carnívoros implicados. En definitiva,

el poder de la manada en la naturaleza es indispensable para muchas especies. No

obstante, siempre encontramos otras que han evolucionado para adaptarse a la vida

en solitario.

Page 97: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

97

Piezas finitas en depredadores

A continuación vamos a investigar lo que sucede cuando el número de presas que

puede capturar un carnívoro es limitado. Veremos particularmente esta situación para

un número de piezas igual a la unidad, lo que implica que un predador será retirado

del mapa al atrapar un elemento.

Las figuras 4.26 y 4.27 representan este caso.

Figura 4.26. Mapa actual del sistema.

Page 98: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

98

Figura 4.27. Gráficas del sistema.

Se aprecia que al limitar el apetito de los carnívoros puede simularse el hecho de la

protección que conlleva convivir en manada, ya que así algunos individuos del rebaño

se “sacrificarán” por la subsistencia de este, dando lugar a que sobrevivan más

congéneres ante los ataques predadores. Todo esto se traduce en un aumento del

tiempo transcurrido hasta que las poblaciones de los herbívoros desaparezcan, como

se distingue en ambas imágenes, acrecentado también por la reducción paulatina de la

población de carnívoros a medida que van retirándose del mapa.

Incluyendo obstáculos y plantas

Otra cuestión a citar es el análisis del comportamiento de la manada en presencia de

obstáculos y vegetales en la simulación.

Veremos la influencia de la velocidad y el ángulo de giro en cuanto a la destreza para

esquivar obstáculos. Para ello nos apoyaremos en los vegetales, haciendo que el

enjambre se dirija en dirección perpendicular a una línea o hilera de obstáculos para

ver su reacción, siendo retirados dichos alimentos antes de llegar a la hilera para que

no influyan en los resultados obtenidos.

Page 99: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

99

De esta guisa, las figuras 4.28 y 4.29 muestran la pericia de los individuos rojos

sorteando obstáculos o baches para un ángulo de giro máximo de 30º .

Figura 4.28. Mapa actual del sistema para un ángulo máximo de giro de 30º .

Page 100: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

100

Figura 4.29. Gráficas del sistema para un ángulo máximo de giro de 30º .

Se distingue que la bandada ha conseguido salvar la columna de baches cambiando la

dirección del grupo. En la parte inferior derecha de la segunda imagen se visualizan las

aceleraciones iniciales debidas al seguimiento y aproximación hacia un vegetal usado a

modo de guía, siendo este retirado unas 2udt antes de llegar a los obstáculos para no

intervenir en los resultados.

Si ahora disminuimos el ángulo de giro a un valor de 5º , vemos que se presenta la

situación de las figuras 4.30 y 4.31.

Page 101: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

101

Figura 4.30. Mapa del sistema en el instante de colisión con obstáculos para un ángulo

máximo de giro de 5º .

Figura 4.31. Gráficas del sistema para un ángulo máximo de giro de 5º .

Page 102: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

102

Vemos que al ser la capacidad de giro tan pequeña (aparte de tener ya una velocidad

grande), a la manada no le da tiempo de reaccionar de la forma vista anteriormente e

incluso algunos ejemplares “atraviesan” literalmente los obstáculos.

Por tanto, el ángulo de giro y la velocidad, junto con el valor de los pesos en la

aceleración de evasión, como vimos previamente, serán determinantes a la hora de

salvar los posibles baches que puedan encontrarse las partículas por el camino.

Únicamente mencionar que ocurrirá lo mismo (cambiando, obviamente, la aceleración

de evasión por la actuación conjunta de las aceleraciones de seguimiento y

aproximación) si en lugar de una fila de obstáculos consideramos una disposición de

plantas en zigzag preparadas para ser ingeridas por los individuos: la persecución será

tanto mejor cuanto mayor sea el ángulo de giro y menor sea la velocidad de las

partículas, además de que los pesos de ambas aceleraciones sean lo suficientemente

significativos.

Valoración final

Hemos estudiado las principales normas que gobiernan la formación de una bandada y

las interacciones con su entorno, abordando con más profundidad las situaciones más

relevantes que pueden darse y haciéndolo del modo más fiel posible a la realidad

(considerando que una mayor velocidad implica un menor ángulo de giro), aunque, al

tratarse de una simulación, también se ha podido analizar el caso extremo de máxima

ventaja, obteniéndose resultados satisfactorios.

Por otra parte, al disponer de tantos parámetros esperando ser modificados se pueden

realizar infinidad de simulaciones, dejando al usuario que pueda investigar lo que

pasaría con la variación de cualquiera de ellos, que obviamente será lo que dictaminen

las ecuaciones del modelo.

De este modo, podríamos hacer uso de vegetales u obstáculos para guiar o impedir el

paso a los elementos de una especie, agrupar las dos clases de herbívoros en una única

manada (ídem para los carnívoros), que cada carnívoro se alimentase de sólo un tipo

de herbívoro en lugar de dos (configuración por defecto), ampliar el rango de

detección de los carnívoros con el fin de localizar a sus presas antes de que estas

emprendan la huida (o hacer lo propio con los herbívoros para que huyan antes de ser

descubiertos por sus predadores), limitar el número de piezas que puede ingerir un

predador (por defecto infinito), hacer que las cuatro especies animales se ignoren

entre ellas con el fin de estudiar el comportamiento de cada tipo por separado, etc.

Page 103: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

103

Por consiguiente, finalizamos la sección ratificando los datos obtenidos en las distintas

simulaciones de este capítulo, invitando al lector a que se familiarice con el uso del

programa e indague por su cuenta las diversas posibilidades que este ofrece.

Page 104: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

104

CAPÍTULO 5: MOVIMIENTO MIGRATORIO DE

HERBÍVOROS

Luego de estudiar en profundidad el comportamiento de un enjambre o manada de

partículas, desde su formación hasta las interacciones con su entorno, pasamos ahora,

apoyándonos en lo que ya sabemos sobre este tema, a analizar una situación que los

que son amantes de la naturaleza habrán podido ver alguna vez en algún documental

de la vida salvaje: la migración anual de herbívoros entre las reservas del Serengeti (en

Tanzania) y Masai Mara (Kenia) en busca de mejores pastos.

Este fenómeno comprende los trayectos de ida y vuelta a cada reserva, por lo que

también tendremos esto en mente a la hora de obtener datos estadísticos de las

poblaciones herbívoras involucradas.

Consideraremos que los herbívoros implicados en la migración son las cebras y los ñus.

Estos deberán atravesar regiones donde moran diversos tipos de predadores, de los

cuales sólo dos serán incluidos en nuestra aplicación: leones y cocodrilos. Los primeros

estarán esperando a sus potenciales víctimas en las llanuras del Serengeti (Serengueti

en castellano), mientras que los segundos harán lo propio en el curso del río Mara, que

sirve de frontera entre ambos países y reservas.

En la figura 5.1 se muestra el recorrido de la gran migración [16], indicando en qué

lugar se encuentran los herbívoros a lo largo de las diversas fases que lo conforman.

Page 105: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

105

Figura 5.1. Movimiento migratorio anual de los herbívoros.

En nuestro caso, intentaremos reproducir lo más fielmente posible la conducta

migratoria de los herbívoros, teniendo en cuenta el movimiento aleatorio de estos en

manada.

El aspecto gráfico de nuestro programa será el que indica la figura 5.2.

Page 106: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

106

Figura 5.2. Panel de control de la simulación.

Se observa que el mapa ha sido dividido en varias partes:

Reserva Serengeti: zona donde se hallan inicialmente los herbívoros (cebras y ñus). Se

ha considerado que en esta región los individuos vegetarianos se encuentran a salvo

de los ataques predadores, con el fin de hacer un estudio estadístico de las distancias

recorridas en los trayectos de ida y vuelta de la migración.

Llanuras Serengeti: parte del mapa donde habitan los leones. Tales carnívoros no

podrán salir de este recinto, debiendo realizar sus capturas en dicha planicie.

Río Mara: morada de los cocodrilos. Al igual que sucede con los leones en las sabanas,

estos reptiles tampoco abandonarán nunca el río, debiendo atrapar aquí a sus presas.

Reserva Masai Mara: primer destino de los herbívoros (cebras y ñus). En este territorio

tampoco podrán ser atacados por los carnívoros, como en la otra reserva.

Línea Destino de la Reserva: trazo dentro de las respectivas reservas a modo de “línea

de meta” para analizar los resultados de los distintos viajes de la migración.

Por otra parte, también podemos distinguir en la figura 5.2 el enorme parecido del

panel de mando con el de la aplicación de control de manadas (figura 4.4). Únicamente

se han suprimido los botones que no son necesarios ahora debido a que los carnívoros

se encuentran cada uno en zonas diferentes del mapa y sin poder salir de ahí. Sin

Page 107: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

107

embargo, se ha añadido un botón (el selector Ver Migr) que mostrará una ventana de

diálogo adicional con los datos estadísticos de los herbívoros (figura 5.3).

Figura 5.3. Ventana de diálogo de la migración.

En este panel complementario veremos los resultados de los herbívoros tipo uno

(azules, ñus) y tipo dos (negros, cebras) en los caminos de marcha y regreso de su

éxodo, mostrando los mejores y peores tiempos, velocidades y distancias, tanto

parciales como totales, así como el número de los que han llegado a su destino según

su especie.

Incluso dispondremos de botones adicionales para el control de la migración:

Sere>Mara: usado para cambiar el trayecto de ida a vuelta y viceversa. Sólo podrá

activarse cuando no haya ningún ejemplar vegetariano en camino, esto es, todos se

encuentren en su lugar de destino o no haya ninguno en el mapa.

Haz Activo: si queremos que los herbívoros partan con un ángulo dentro de un haz

determinado orientado hacia la reserva destino.

Ver Mapas: para indicar el nombre de cada territorio del plano.

Igual Salida: si deseamos que todos los herbívoros emprendan su marcha hacia la línea

destino de la reserva opuesta desde la línea destino de la reserva donde se hallan, o si

por el contrario queremos que lo hagan desde cualquier parte de la misma.

Init Estad: para inicializar a cero los datos de los tiempos, velocidades y distancias de

los herbívoros. Habrá que esperar a que estos se encuentren todos en su destino o no

haya ninguno en el mapa para hacerlo.

5.1. Obtención del modelo y la vista de la simulación

Las ecuaciones que gobiernan el modelo de la simulación son las empleadas en el

capítulo anterior para la optimización de enjambres de partículas, con ciertas

salvedades que procedemos a detallar a continuación. La misma situación ocurre para

la vista del programa.

Page 108: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

108

De este modo, hemos impedido los desbordamientos a los lados del mapa,

estableciendo así un recinto cerrado, para imitar el comportamiento que pudiera darse

en la realidad, ya que los parques nacionales están por lo general cercados. Al hacer

esto, un individuo que esté en un lado del mapa no podrá ya influir en las

aceleraciones de otro que se encuentre en el lado opuesto, por lo que se hemos tenido

que modificar esto en el modelo, concretamente, en el método preparaacel de la

página CalculosAceleraciones. Por el mismo motivo, prescindiremos del método

calcularangos de la página DibujaRangos, puesto que al no haber desbordamiento no

necesitamos pintar las cuatro posibles circunferencias de detección y separación.

Además, hemos añadido a las matrices de individuos cuatro nuevos registros (que

serán usados en principio exclusivamente por los herbívoros): dos para llevar el tiempo

empleado por los vegetarianos en sus respectivos trayectos de ida y vuelta, y otros

tantos para almacenar la distancia recorrida en esos tramos.

Por otro lado, para realizar el resto de cambios a la aplicación anterior con objeto de

desembocar en la que ahora se trata, hemos añadido una nueva página de variables

llamada VariablesMigracion (figura 5.4).

Figura 5.4. Página adicional de variables usada en la migración.

Estas variables serán usadas tanto en el modelo como en la vista para poder simular

convenientemente el fenómeno de éxodo de los herbívoros.

Page 109: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

109

De la misma forma, incluimos otra página de métodos propios, de nombre

MetodosMigracion, cuya imagen se muestra en la figura 5.5.

Figura 5.5. Página adicional de métodos propios usada en la migración.

Los métodos que incluye esta página son:

- acotarmapa: para mantener a los animales dentro de las diferentes regiones

del mapa sin que se produzca desbordamiento. Tendrá en cuenta que los

carnívoros (leones y cocodrilos) no podrán salir bajo ningún concepto de sus

respectivos territorios, y que los herbívoros irán pasando por las diversas zonas

del mapa a lo largo de ambas etapas migratorias sin permitírseles dar marcha

atrás.

- controlfronterasmapas: para decidir si un individuo puede o no atravesar el

límite de una zona del mapa con otra, en función de si este es herbívoro o

carnívoro, y de si se trata del trayecto de ida o vuelta (sólo en caso herbívoro).

- numerodestino: hace acopio de la cantidad de herbívoros de cada especie que

han llegado a su destino.

- anguloentrehaz: devuelve un ángulo entre un conjunto de valores y según el

tipo de destino. Usado por los herbívoros para emprender la partida migratoria

orientados hacia la meta.

Page 110: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

110

- activarindividuo: para alentar a los herbívoros cuando se hallen todos en

destino a que pongan rumbo hacia su nueva etapa migratoria.

- reactivarmigracion: para dar comienzo a un nuevo curso de la migración.

- estadisticasmigracion: lleva la cuenta de las distancias, tiempos y velocidades

de los herbívoros en los caminos de ida, vuelta y total.

- inicializaestadmigr: evalúa a valor cero las distancias y tiempos (ida y vuelta)

únicamente de los herbívoros que ya están en destino.

Luego de haber comentado las modificaciones e inclusiones realizadas en los distintos

paneles del modelo (no se ha requerido panel de ligaduras), procedemos ahora con la

parte gráfica de la simulación.

Vista de la simulación

El árbol de elementos de la vista del programa es el que se visualiza en la figura 5.6.

Figura 5.6. Vista de la simulación de nuestra aplicación.

Vemos que la diferencia que presenta con respecto al árbol de elementos de la

aplicación anterior (figura 4.11) es que se ha incluido una nueva ventana de diálogo de

Page 111: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

111

nombre DialogMigracion, cuyo contenido explicamos en la introducción de esta

sección (ver figura 5.3). Como mencionamos antes, se han deshabilitado los botones

del panel de control de manadas que no tienen uso ahora en la migración. Como no

hay ningún elemento novedoso que mostrar en la vista, pasamos directamente a

analizar la conducta de los herbívoros en el siguiente apartado, invitando como

siempre al lector “curioso” a que investigue cómo ha sido construida la simulación.

5.2. Análisis del fenómeno bajo estudio

Tras presentar los aspectos más relevantes del modelo y la vista de la gran migración y

las alteraciones realizadas con respecto a la aplicación del capítulo anterior, nos

disponemos a continuación a cotejar las diversas situaciones que este programa nos

brinda, sabiendo además que los análisis cosechados en el estudio de las interacciones

entre individuos de diversas bandadas del episodio previo siguen siendo igualmente

válidos ahora.

Antes de comenzar con las distintas pruebas, comentar que, exactamente de la misma

forma que para el caso de la optimización de enjambres de partículas, se ha optado

por hablar de unidades de tiempo (udt) y cuadros (□ ) para expresar las magnitudes del

tiempo y la distancia, correspondientemente. Así, la velocidad estará expresada en

/udt□ y la aceleración en 2/ udt□ . También hemos limitado a diez la cifra máxima de

elementos de cada clase para impedir que la simulación se ralentice si incluimos un

número mucho mayor (esto dependerá obviamente de la memoria del ordenador de

cada usuario). Además, todas las gráficas de este capítulo han sido elaboradas (de igual

modo que para el capítulo anterior) empleando el máximo valor de la variable TRAZA,

esto es, doscientos, con objeto de mostrar en pantalla y en la memoria del proyecto el

comportamiento del sistema durante un mayor intervalo de simulación. Es por ello que

en ocasiones algunas figuras de este capítulo podrían parecer difíciles de interpretar al

haber muchas trazas en tan poco espacio de pantalla. Pero ello no supone ningún

problema si sabemos que para una visualización con mayor detalle de las gráficas (una

especie de zoom) únicamente hay que disminuir el valor de dicha variable TRAZA en el

panel de mando. Incluso nos podría bastar con activar solamente el selector que hace

que se muestren o no las trazas de los individuos de cada especie (Ver H1, Ver H2, Ver

C1, Ver C2, según el caso), ya que en las figuras de este capítulo se han mostrado a la

vez los parámetros de todas las especies implicadas en lugar de visualizar sólo las de

una especie en concreto, ofreciendo así una mayor visión de conjunto. También

podríamos estirar las ventanas de diálogo de las gráficas correspondientes para ver

mejor la evolución. O, finalmente, efectuar cualquier combinación de todas estas

técnicas mencionadas. Por último, señalar que todos los valores límites de los

Page 112: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

112

guarismos anteriores pueden ser alterados si el usuario dispone de la herramienta Ejs y

del archivo .xml de esta aplicación.

Caso 1. Estudio inicial con Haz Activo e Igual Salida habilitados

Poniendo en liza al máximo número de ejemplares de las cuatro especies animales,

veremos su evolución a lo largo del tiempo para analizar los resultados obtenidos. Con

los parámetros establecidos por defecto (salvo Igual Salida, el cual lo activamos para

que los herbívoros partan de la misma línea), tenemos en cuenta que si una especie

tiene la facultad de adquirir mayor velocidad punta, su capacidad de giro se verá

reducida en consecuencia. Además, hemos reducido a la mitad el rango de detección

de los carnívoros para dar mayor opción a sus presas de escapar (en el capítulo

anterior dejábamos por defecto igual todos los rangos, pero al estar el mapa acotado

ahora queremos compensar esta desventaja).

En las figuras 5.7 y 5.8 apreciamos el estado de la simulación después de haber llegado

los herbívoros a su primer destino.

Figura 5.7. Mapa actual del sistema tras el trayecto de ida de la migración.

Page 113: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

113

Figura 5.8. Gráficas del sistema tras el trayecto de ida de la migración.

Vemos como de los diez ñus (H1) que partieron del Serengeti sólo cuatro han llegado

al Masai Mara, mientras que han hecho lo propio tres de las diez cebras iniciales (H2).

Este número tan bajo se debe a que al encontrarse los carnívoros tan dispersos al

principio, tienen más opciones de capturar a sus presas rodeándolas. Esto explica

también el incremento de la distancia recorrida por ambas especies, triplicando casi el

valor óptimo entre las líneas de destino de ambas reservas (900□ ).

Para comenzar recorrido de vuelta pinchamos sobre el selector Sere>Mara,

obteniendo a la postre lo reflejado por las figuras 5.9 y 5.10.

Page 114: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

114

Figura 5.9. Mapa actual del sistema tras el trayecto de vuelta de la migración.

Figura 5.10. Gráficas del sistema tras el trayecto de vuelta de la migración.

Page 115: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

115

Observamos como de los cuatro ñus (H1) que partieron del Masai Mara sólo dos han

llegado al Serengeti, mientras que las tres cebras (H2) que marcharon del Masai Mara

consiguieron llegar ilesas hasta su nuevo objetivo. Debemos el rotundo éxito de los

herbívoros en esta segunda etapa migratoria principalmente a que los carnívoros se

encuentran ya agrupados en manada, por lo que son más fácilmente detectables por

sus potenciales presas. De este modo, observamos que gracias a este hecho la

distancia recorrida por ambas clases vegetarianas se ha visto drásticamente reducida

(aumentando por ende la velocidad y disminuyendo el tiempo empleado respecto al

tramo de ida).

Caso 2. Aumentando el rango de detección en carnívoros

Nos disponemos a estudiar a continuación lo que sucede si aumentamos el radio de

alcance de los predadores. Concretamente, veremos el caso de que los carnívoros

posean el mismo rango de detección, el cual estaba en el primer caso reducido a la

mitad (como dicta la configuración por defecto).

En las figuras 5.11 y 5.12 apreciamos el estado de la simulación después de haber

llegado los herbívoros a su primer objetivo: el Masai Mara.

Figura 5.11. Mapa actual del sistema tras el trayecto de ida de la migración.

Page 116: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

116

Figura 5.12. Gráficas del sistema tras el trayecto de ida de la migración.

En la ejecución de la simulación pudimos observar como las cebras (H2) fueron

detectadas por los leones (C2) antes de salir de la reserva del Serengeti, debido al

aumento del rango de detección en los carnívoros, por lo que no abandonaron la

reserva hasta estar fuera de peligro, habiéndose ya constituido las mismas en rebaño.

Vimos también como los leones acabaron con la práctica totalidad de ñus al entrar en

las sabanas del Serengeti, hecho que sirvió a las cebras para emprender exitosamente

la marcha hacia su destino.

Para el trayecto de regreso, obtuvimos lo que muestran las figuras 5.13 y 5.14.

Page 117: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

117

Figura 5.13. Mapa actual del sistema tras el trayecto de vuelta de la migración.

Figura 5.14. Gráficas del sistema tras el trayecto de vuelta de la migración.

Page 118: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

118

Distinguimos como el único ñu (H1) que partió del Masai Mara ha perecido en el

camino, mientras que de las nueve cebras (H2) que salieron del Masai Mara sólo dos

lograron llegar hasta el Serengeti. Esto se debe principalmente al aumento del radio de

alcance de los carnívoros, consiguiendo así detectar a sus presas con más facilidad que

en el caso anterior. Otra consecuencia de ello es el empeoramiento de las estadísticas

de los herbívoros en la trayectoria de vuelta con respecto al primer caso, viéndose

incrementados los tiempos y las distancias, con la consiguiente disminución de la

velocidad en este tramo.

Caso 3. Desequilibrio velocidad-ángulo de giro en poblaciones

Tras haber estudiados los dos primeros casos en los que las poblaciones cumplían la

ley de “a mayor velocidad, menor ángulo de giro”, establecida por defecto en la

simulación, vamos a analizar lo que sucede si hacemos caso omiso a esta norma.

De esta manera, con el panel de mando configurado de la misma forma que se

procedió en la sección previa de control de manadas (ver figura 4.19), salvo el rango de

detección para carnívoros que se ve reducido ahora como se comentó para compensar

la desventaja de recinto cerrado, vemos que H2 tiene mayor velocidad y ángulo de giro

que H1, y que lo mismo sucede para C2 y C1. Esto dará como resultado en términos

generales (sin olvidar la aleatoriedad de la simulación) que la especie C2 atrapará

mayor número de presas que C1, mientras que la especie H2 será más difícil de cazar

que H1.

Las figuras 5.15 y 5.16 ilustran el aspecto del sistema después de haber alcanzado los

herbívoros su destino.

Page 119: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

119

Figura 5.15. Mapa actual del sistema tras el trayecto de ida de la migración.

Figura 5.16. Gráficas del sistema tras el trayecto de ida de la migración.

Page 120: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

120

Luego de simularse la primera etapa migratoria, vimos que los carnívoros C2

capturaron a todos los H1 (diez) y a tres H2, mientras que los C1 atraparon otros tres

H2.

Para el recorrido de vuelta se obtuvo lo que indican las figuras 5.17 y 5.18.

Figura 5.17. Mapa actual del sistema tras el trayecto de vuelta de la migración.

Page 121: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

121

Figura 5.18. Gráficas del sistema tras el trayecto de vuelta de la migración.

Se aprecia como los cuatro H2 que iniciaron su viaje hacia la reserva del Serengeti han

alcanzado su destino, y en tiempo récord, además.

Por tanto, concluimos que los carnívoros C2 resultaron ser, como anticipábamos,

mejores predadores que los C1, y que los herbívoros H2 son más difíciles de atrapar

que los H1.

5.3. Otras consideraciones

Antes de finalizar el estudio de la conducta migratoria en los herbívoros africanos, nos

disponemos a mostrar algunos casos particulares de la simulación.

Efecto de la variación en el ancho de haz de salida en herbívoros

Procedemos a valorar lo que sucede si alteramos el valor del ancho del haz de partida

de los herbívoros en la migración. Para que esto se aprecie y nada influya en los

resultados obtenidos, consideraremos que la población herbívora no es la máxima sino

la mitad, y no incluiremos predadores en la simulación.

Page 122: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

122

Las figuras 5.19, 5.20, 5.21 y 5.22 muestran el comportamiento de los herbívoros

mediante un ancho de haz de salida de 180º , mientras que las figuras 5.23, 5.24, 5.25 y

5.26 hacen lo propio para un haz de salida ideal de 0º .

Figura 5.19. Mapa actual del sistema tras el trayecto de ida de la migración.

Page 123: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

123

Figura 5.20. Gráficas del sistema tras el trayecto de ida de la migración.

Figura 5.21. Mapa actual del sistema tras el trayecto de vuelta de la migración.

Page 124: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

124

Figura 5.22. Gráficas del sistema tras el trayecto de vuelta de la migración.

Figura 5.23. Mapa actual del sistema tras el trayecto de ida de la migración.

Page 125: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

125

Figura 5.24. Gráficas del sistema tras el trayecto de ida de la migración.

Figura 5.25. Mapa actual del sistema tras el trayecto de vuelta de la migración.

Page 126: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

126

Figura 5.26. Gráficas del sistema tras el trayecto de vuelta de la migración.

Comparando ambas ejecuciones del programa resulta que en principio un ancho de

haz menor implicará una orientación inicial más adecuada hacia el objetivo, por lo que

las distancias totales disminuirán. Aunque, debido al comportamiento altamente

aleatorio de la simulación (ya que siguen influyendo las aceleraciones debidas a la

agrupación de la propia manada y las de separación con la manada vecina), vemos que

es difícil predecir a priori lo que sucederá en sucesivas pruebas. Así, por ejemplo, se

observa que la distancia total (ida y vuelta) es inferior para el caso ideal de 0º , pero

también podemos apreciar que en algunos tramos de la migración la distancia en una

etapa ha sido menor para el caso de ancho de 180º , debido algunas veces a las

aceleraciones de agrupación de la manada, y en otras ocasiones al encuentro por el

camino con la manada vecina.

Valoración final

Mencionar primero que todo lo visto para la formación de un enjambre en el capítulo

anterior sigue siendo igualmente válido ahora, siendo siempre conscientes de las

modificaciones e inclusiones realizadas en el fenómeno migratorio.

Page 127: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

127

Hemos analizado con detenimiento las situaciones más significativas de este episodio,

considerando los diversos casos que pueden darse (o dicho de otro modo, alterando

los parámetros de una especie como si de un salto evolutivo se tratase), obteniéndose

resultados satisfactorios.

Por otro lado, al disponer de tantas variables en el panel de mando se pueden realizar

infinidad de simulaciones, dejando al lector que pueda indagar lo que pasaría con el

cambio de cualquiera de ellas, que obviamente será lo que dictaminen las ecuaciones

que gobiernan el modelo.

Así, podríamos hacer uso de vegetales u obstáculos para guiar o impedir el paso a los

elementos de una especie, agrupar las dos clases de herbívoros en una única manada

para realizar a la par la migración (como ocurre en realidad), que cada carnívoro se

alimentase de sólo un tipo de herbívoro en lugar de dos (configuración por defecto),

limitar el número de piezas que puede ingerir un predador (por defecto infinito), hacer

que las cuatro clases animales se ignoren entre sí con el objetivo de examinar la

conducta de cada una por separado, etc.

Finalmente, acabamos este capítulo corroborando los resultados alcanzados en las

diversas simulaciones de la misma, invitando al usuario a que se familiarice con el uso

de la aplicación e investigue por su cuenta las diferentes alternativas que esta ofrece.

Page 128: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

128

CAPÍTULO 6: CONCLUSIONES

Luego de trabajar durante largo tiempo con la herramienta Easy Java Simulations y

haber buscado diversos sistemas a implementar, hemos llegado a la conclusión de que

puede desarrollarse casi cualquier proceso físico que se nos ocurra, dentro de la

complejidad admisible para un entorno de programación, claro está.

Una vez que nos habituamos a la aplicación realizando primero simulaciones sencillas

para probar los distintos aspectos de la misma, sentimos que estábamos capacitados

para desarrollar sistemas más complejos. De este modo, fuimos aumentando poco a

poco la dificultad en la programación para hacer sistemas más elaborados,

apoyándonos para ello en el empleo de métodos propios a fin de evitar la redundancia

de código y estructurar mejor las tareas. Asimismo, se organizó debidamente el

programa agrupando variables y métodos en páginas según su uso, comentando

además las líneas de código más significativas para que el lector e incluso el propio

autor de la aplicación comprendieran su función más fácilmente.

Quizás Ejs no sea tan versátil como otros entornos de programación que incluyen

muchas funciones optimizadas, pero la cuestión es que la herramienta Easy Java

Simulations no ha sido desarrollada en principio para programadores expertos, sino

para usuarios con nociones básicas de programación que pretendan simular cualquier

sistema físico y estudiar su comportamiento, sin detenerse a analizar la eficiencia del

mismo en cuanto a tiempo de ejecución se refiere. A pesar de todo, dispone de la

opción de importar librerías Java para aquel analista que desee emplear sus propias

clases Java sin tener que implementarlas nuevamente en Ejs.

Además, presenta la ventaja de ahorrarnos en gran medida el diseño de la parte

gráfica de la simulación, hecho que es de agradecer para los programadores poco

duchos en estas lides.

Por otro lado, el gestor de ecuaciones diferenciales es bastante potente,

ofreciéndonos la posibilidad de poder configurarlo de distinta forma si se requieren

soluciones más precisas, según la complejidad del proceso.

Igualmente resulta muy útil que la propia herramienta genere, si así lo indicamos,

ejecutables de nuestra simulación, bien sea en modo applet de Java para cargarla

desde el navegador o mediante una aplicación Java independiente. De este modo, será

muy factible utilizar estos ejecutables con fines didácticos, dando a conocer nuestras

simulaciones colgándolas por internet o distribuyéndolas por sí mismas, sin la

necesidad de que el usuario final necesite conocer el funcionamiento de Ejs para poder

lanzar una simulación y observar sus resultados.

Page 129: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

129

Otra característica ventajosa que presenta Ejs es que puede usarse conjuntamente con

Matlab y Simulink mediante una serie de interconexiones con el fin de beneficiarse de

lo mejor de cada una de estas herramientas. De esta manera, aprovechamos la

potencia de Matlab con la facilidad de uso de Ejs y su intuitiva forma de interacción

con el usuario. Para más información sobre ello, sólo tenemos que visitar la página

web del profesor Francisco Esquembre, autor del programa, mencionada en la

bibliografía en las últimas páginas de la memoria.

Decir también que lo que hemos visto en este proyecto acerca de Easy Java

Simulations no es el techo del programa, ya que incorpora por ejemplo la opción de

generar simulaciones en 3D, por lo que una inmediata mejora del proyecto sería la de

añadir un eje a nuestro plano y convertirlo en espacio, con objeto de visualizar

nuestros tres programas (laboratorio de control, gestión de manadas, migración de

herbívoros) en tres dimensiones.

Señalar que otras posibles incorporaciones adicionales al proyecto serían las de añadir

retardos y perturbaciones al sistema de depósitos del primer capítulo para que el

control en cascada sea rentable frente al simple; “implantar” una cámara 3D a cada

ejemplar en las últimas dos aplicaciones con el fin de estudiar su comportamiento

individual al verse reducida su área de visión de círculo a sector circular; poder hacer

un “zoom” sobre una determinada zona del mapa para contemplar con más detalle las

interacciones de las bandadas; animar con imágenes (aves, peces, insectos, cebras,

ñus, leones, cocodrilos, etc.) los individuos de los enjambres de partículas; considerar

que para la agrupación de dos especies en una única gran manada una tiende a

situarse en los extremos mientras que la otra lo hace en la zona central de la misma,

como sucede en la gran migración de cebras y ñus, donde las primeras son las que

dirigen el movimiento migratorio desde el exterior de la manada, aprovechando

además esta situación para huir rápidamente ante cualquier eventualidad, dejando a

los segundos -los cuales son mucho más numerosos- solos ante el inminente peligro;

incluir un tiempo de reposo en los carnívoros tras realizar una captura, ya que estos

necesitan un lapso para recuperarse de la persecución e ingerir su alimento; o

implementar la típica formación en V de las bandadas de pájaros.

Finalmente, reseñar que este proyecto podría resultar de especial interés como ayuda

en la docencia de asignaturas que impliquen sistemas de control de depósitos (capítulo

del sistema de control del nivel de un depósito) o múltiples sistemas interactuando

(capítulos de la optimización de enjambres de partículas y del movimiento migratorio

de herbívoros).

Page 130: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

130

CAPÍTULO 7: BIBLIOGRAFÍA

7.1. Apuntes

[1] Gordillo Álvarez, F. y Gil Ortega Linares, M. (2001-2002). Teoría del control

automático. Tercer Curso Ingeniero de Telecomunicación. Sevilla: Escuela

Superior de Ingenieros. Universidad de Sevilla.

[2] Gordillo Álvarez, F. y López Martínez, M. (2003-2004). Control por

computador. Cuarto Curso Ingeniero de Telecomunicación. Sevilla: Escuela

Superior de Ingenieros. Universidad de Sevilla.

7.2. Manuales

[3] Esquembre, F. (2004). Creación de simulaciones interactivas en Java.

Madrid: Pearson Educación.

[4] Naughton, P. y Schildt, H. (1997). Java: manual de referencia. Madrid:

McGraw-Hill.

7.3. Páginas webs

[5] Esquembre, F. Easy Java Simulations. (www.um.es/fem/Ejs/).

[6] Oracle Corporation. Java. (www.java.com/es/).

[7] Franco, A. Física con ordenador. (www.sc.ehu.es/sbweb/fisica/default.htm).

[8] Pérez Cisneros, M.A. y Laubwald, E. Depósitos acoplados. México: Área de

Electrónica y Computación. Universidad de Guadalajara. (www.control-

systems-principles.co.uk/whitepapers/spanishwp/03CoupledTanksSP.pdf).

[9] Mejía, L.A., Monroy, M., Díaz, A., y Henao, E. Modelado y simulación del

control de velocidad de un motor hidráulico. Colombia: Universidad Tecnológica

de Pereira. (www.scribd.com/doc/6374356/hidraulica-simulacion).

[10] Marcos, M., Artaza, F., e Iriondo, N. Control cascada. Bilbao: Dpto. de

Ingeniería de Sistemas y Automática. ESI. Universidad del País Vasco.

Page 131: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

131

(www.disa.bi.ehu.es/spanish/asignaturas/17212/T7%20Estructuras%20Avanza

das%20Cascada.pdf).

[11] Wikipedia. Control proporcional integral derivativo por realimentación.

(http://es.wikipedia.org/wiki/Proporcional_integral_derivativo).

[12] Wikipedia. Windup effect. (http://en.wikipedia.org/wiki/Integral_windup).

[13] Morilla García, F. Fundamentos de los controladores PID. Madrid:

Departamento de Informática y Automática. ETSI de Informática, UNED.

(http://www.dia.uned.es/~fmorilla/MaterialDidactico/El%20controlador%20PI

D.pdf).

[14] UNED. Laboratorio remoto. (http://lab.dia.uned.es/rlab/index.html).

[15] Wikipedia. Flocking. (http://en.wikipedia.org/wiki/Flocking_(behavior)).

[16] Wikipedia. The Great Migration. (www.wildwatch.com/great_migration).

Page 132: PFC Modelado Dinámico Y Simulación En Java De Interacciones …bibing.us.es/proyectos/abreproy/11975/fichero/PFC... · 4 CAPÍTULO 1: INTRODUCCIÓN La finalidad de este proyecto

132