miércoles, 22 de mayo de 2013

Evidencia 10: Caos

Introducción

Los sistemas caóticos modifican en gran medida su salida variando minimamente sus datos de entrada. Se les llama caóticos porque sus resultados aparentar ser aleatorios.

Sistema caótico: El Mar


El movimiento de los mares es aparentemente aleatorio. Las olas de mar siempre lucen distintas y a pesar de que las corrientes marítimas siguen un curso determinado estas no son totalmente definidas. El mar reacciona a distintos factores como lo son la temperatura, la presión atmosférica, las tormentas, la rotación de la tierra. Unos pequeños cambios en alguno de estos factores puede afectar al comportamiento final del mar en alguna zona específica .

Justificación

Presenta esta conducta debido a los muchas variables que controlan el comportamiento de los mares. Una pequeña modificación conlleva a un gran cambio, Es un sistema inmenso y es muy difícil predecir su comportamiento al 100%. Los sistemas tan grandes y con muchas variables de por medio pueden presentar comportamientos caóticos.

Conclusión

Los sistemas caóticos no presentan conductas necesariamente aleatorias como muchas veces se piensa. Son mas bien sistemas demasiado sensibles a los cambios de sus variables iniciales. Nos demuestra la gran gama de posibilidades que se pueden alcanzar con unas pequeñas modificaciones. Son difíciles de comprender y por eso mismo hay un gran campo de estudio sobre ellos.

jueves, 16 de mayo de 2013

Evidencia 12: Sistemas Multiagente | JADE

1. ¿Que significa "JADE"?

Un agente JADE consiste en: - Definir una clase Java que representa al agente (la cual debe heredar de la clase jade.core.Agent). - Implementar los comportamientos que va a manifestar. Un agente JADE cumple las siguientes características:
  • Tiene un nombre único en el entorno de ejecución. 
  • Se implementa como un único hilo de ejecución (single-threaded). 
  • Tiene un metodo de inicio (setup) y otro de fin (takeDown). 
  • El método protegido setup() sirve para inicializar el agente incluyendo instrucciones que especificarán la ontología a utilizar y los comportamientos asociados al agente. Se invoca al comenzar la ejecución del agente. 
  • El método protegido takeDown() sirve para liberar recursos antes de la eliminación del agente. Este método es invocado cuando se realiza una llamada al método doDelete(), que es el que realmente da por finalizada la ejecución del agente. 
  • Ambos métodos deben ser sobreescritos.
  • En su implementación se define una clase interna por cada uno de los comportamientos asociados al agente. Estos comportamientos se utilizan básicamente para el envío y recepción de mensajes, aunque también se pueden utilizar para realizar otras tareas.
2. ¿Para que sirve "JADE"?

Proporciona un conjunto de agentes que realmente actúan a modo de plataforma, de manera que a partir de ellos podemos ver como nuestros programas agentes escritos en Java interactúan, se mandan mensajes, facilitando también la funcionalidad de mandar mensajes entre dichos programas a través de uno de estos agentes especiales. Los agentes de los que hablamos son el agente RMA, el agente Dummy, el agente Sniffer y la DF GUI.

La idea que tiene que quedar clara es que para ejecutar un programa agente en JADE basta con hacerlo desde la línea de comandos sin tener que utilizar los agentes que acabamos de mencionar (RMA, Dummy y Sniffer). Estos agentes auxiliares son una funcionalidad que JADE nos facilita de manera que podamos controlar todos los mensajes que los distintos agentes se mandan entre sí y componer y mandar a su vez mensajes nuevos.



3. ¿De donde se puede descargar?

El software de JADE se debe descargar del sitio web http://jade.tilab.com . Para poder acceder a la zona de descargas debe registrarse.

4. ¿Que otras plataformas existen?

Existen también: 

LALO: Una herramienta bastante conocida para el desarrollo de agentes en C++, este es un lenguaje de programación orientado a objetos para agentes, todo el código desarrollado en este lenguaje es convertido a C++. Esta herramienta ofrece características para desarrollo de agentes que puedan comunicarse entre sí, aceptar o rechazar tareas o colaborarse entre sí. En este lenguaje la comunicación entre agentes es desarrollada con un lenguaje llamada KQML (Knowledge Query Manipulation Language).

IBM Agent Building Environment: Es una herramienta que facilita el desarrollo de agentes, en esta herramienta los agentes se toman sus decisiones basados en reglas de implicación, posee una interfaz que le permite interactuar con la web para hacer desarrollo de agentes para Internet.

Aglets: Es una herramienta para desarrollo de agentes basada en JAVA, que implementa facilidades para desarrollo de agentes móviles independientes de la plataforma para Internet y sistemas distribuidos, debido a esto se dará una mayor profundidad a la presentación de esta herramienta.

Autores:

Miguel Angel Coronado Alonso       Mat: 1484644
Alejandro Cabriales Escareño         Mat:  1479221

jueves, 9 de mayo de 2013

Introducción al proyecto final

Nombre: Jugador autómata

Objetivo

Elegimos este proyecto porque es un área de oportunidad en nuestra carrera, el desarrollo de videojuegos es cada vez más aceptable en el mundo, y podemos usar esta herramienta para analizar, estructurar y crear un juego con los conocimientos aprendidos en esta materia de sistemas adaptativos.

El juego que desarrollaremos podrá aportar funciones que hemos aprendido en clase, y así demostrar cómo funciona un sistema que se adapta a su entorno y con un comportamiento autónomo.

Descripción

El juego en el que se colocará el sistema es un videojuego sencillo de scroll lateral en 2D. Los obstáculos aparecen en la pantalla por la derecha moviéndose hacia al jugador que está del lado derecho de la pantalla, el jugador solo tiene que esquivar dicho obstáculo.

El sistema debe de jugar el nivel sin ayuda alguna, detectando los obstáculos que vayan apareciendo y esquivando cada uno hasta el final del nivel.

Bosquejo

Captura preliminar del juego sin el sistema aplicado.



1. La bola: Debe de esquivar todos los obstáculos que vayan apareciendo en la pantalla. De lo contrario se pierde el juego. En nuestro caso para el proyecto este jugador debe de ser autónomo y tomar la decisión de cuando hará saltar la bola.

2. Obstáculo: aparece en pantalla moviéndose de izquierda a derecha hasta salir por el lado derecho de la pantalla.

Herramientas a utilizar

IDEs: Eclipse y Notepad++
Lenguaje de programación: JAVA

Equipo:

1479221 Alejandro Cabriales Escareño
1477355 Hector Miguel Cortes Ramos
_______ Katia Giselle López Sanmiguel
1484644 Miguel Angel Coronado Alonso

miércoles, 27 de febrero de 2013

Evidencia 2: Programa con auto-ajuste

La simulación que se eligió para aplicar un sistema con auto-ajuste es el de un sistema de seguridad. Los sistemas de seguridad para la casa o el negocio tienen distintas funciones, para mi sistema me enfoqué en el sistema que detecta la apertura y cerrado de puertas o ventanas.

El sistema de alarma posee sensores en cada puerta del edificio, si una puerta es abierta el sistema de seguridad avisará ya sea con un pequeño sonido y/o una señal en el tablero de configuración. En el caso de que el sistema de seguridad sea activado ya sea automáticamente o manualmente, si este detecta una apertura de una puerta debe de avisar por medio de una sirena, indicando que alguien ha entrado o salido cuando el sistema estaba activado.

Lo que se esta percibiendo es la apertura de las puertas y el ajuste que se hace es avisar si esta ha sido abierta y (en el caso de que le alarma esté activada) hacer sonar la alarma.

Generación de percepciones

Para simular la apertura de las puertas se declara un número aleatorio que se modifica cada determinado tiempo. La variable control se reinicia en 0 al cumplir cada ciclo, por lo que es un indicador para volver a generar el número aleatorio:


control++;
 
if (control == 400)
{
  control = 0;
  control_alarma++;
 
  if (control_alarma > 3){
  control_alarma = 0;
  }
 
  if (control_alarma == 3)
  alarma = true;
  else alarma = false;

}

if (control > control_presencia && control < retraso_alarma){
señalamiento = true;
}
else señalamiento = false;

if (control > control_presencia && control < retraso){

presencia = true;


}
else presencia = false;

System.out.print("\n" +control);
if (control == 1)
{

control_presencia = (int) (Math.random()*300+1);
retraso = control_presencia + 100;
retraso_alarma = retraso + 100;

}

repaint();
 
}

Monitoreo

El monitoreo viene representado por el cambio de algunas variables las cuales son parte de las condiciones para que los "leds" se impriman en la pantalla indicando que la puerta fue abierta.

Ajuste automático

El ajuste viene al momento de que la seguridad se active. Cuando está activa debe de indicar una señal de alarma además de que la apertura de la puerta. Se acciona cada cierto tiempo, y a pesar de que el tiempo en el que se acciona no es el mismo, debe de reaccionar a los valores aleatorios que tienen las condiciones de la señal de alarma.


 if (presencia == true){
g2d.drawImage(puerta.getImage(), 423, 374, this); 
g2d.drawImage(abierto.getImage(), 0, 70, this); 
 
}
if (alarma == true && señalamiento == true){
g2d.drawImage(img_alerta.getImage(), 114, 118, this); 
}
 
if (alarma == true) {
g2d.drawImage(abierto.getImage(), 530, 70, this);

}

 

Toolkit.getDefaultToolkit().sync();
g.dispose();
}



A continuación se muestra un vídeo del funcionamiento del sistema explicado:


viernes, 25 de enero de 2013

Evidencia 1: Presentación

1

Mi nombre es Miguel Angel Coronado Alonso

La verdad es que no me considero muy fotogenico pero debía incluir una foto mía. Aquí esta una de las pocas que me agrada.


2

¿Que es un sistema adaptativo?

El concepto que tengo de un sistema adaptativo (por ahora) es el de un procedimiento o conjunto de procedimientos que fueron pensados con la habilidad de poder modificarse y adecuar sus funciones a una tarea o inclusive varias. Esto es útil cuando la tarea es cambiante. La mayoría de los programas se reducen a condiciones simples, variables de entrada y salida. Cuando se trabaja con un sistema adaptativo se tiene la ventaja de modificar la forma en que el programa interactúa con esas variables que se le facilitan e inclusive llegar a automatizar procesos y adaptarse a los cambios que puedan surgir en su ambiente. 

3

Expectativas sobre la materia

Espero que al final del curso cambie la manera en la que trabajan los programan que haga. Hasta este momento solamente he desarrollado programas simples con un propósito fijo que no cambiaran no importa cuantas veces sean ejecutados. Es útil en ocasiones que esto sea así, no varía, no cambia, siempre hará el mismo proceso.

Hay que tener en cuenta todas las formas en que se puede desarrollar una aplicación. Con la materia de sistemas adaptativos espero poder aprender formas para que los programas que desarrolle sean mas automatizados, puedan adaptarse a cierta tarea optimizandola cada vez mas y modifiquen la acción que ejecutan sin tener que cambiar trozos de código.

4

Compromisos para el semestre

Me comprometo a cumplir con cada una de las actividades programadas a lo largo del semestre. A investigar por mi cuenta para complementar aun mas lo visto en clase y a trabajar en el proyecto final lo mas tempranamente posible para crear un sistema con calidad, que sea innovador y poder presentarlo a tiempo. De esta forma tendré un conocimiento solido, lo habré aplicado y cumpliré con mis expectativas sobre la materia.

5

Elemento del ambiente

Sinceramente se me dificultó encontrar algún elemento natural de mi alrededor que pudiera pudiera estar ligado a un sistema adaptativo. La mayoría de las cosas que nos rodean por lo general son las mismas: un arbol, el sol, pájaros.

Al caminar de regreso a mi casa, miré un poco desde arriba de la estación Eloy Cavazos. Vi a las nubes moverse lentamente con el viento.

Las nubes


6

Su relación con un sistema adaptativo

Las nubes siempre cambian, nunca veras a alguna igual que una vez anterior. Cambian su forma, su color, su tamaño y densidad en función de la temperatura, presión, viento, entre otros factores. En contante cambio, en constante movimiento, esto resultaría útil en un sistema adaptativo, alguna aplicación que (al igual que las nubes que siempre están compuestas de vapor de agua) pueda cambiar la forma en que funciona al mas mínimo cambio que haya en su entorno sin modificar su esencia.

7

Programa automatizado a realizar

Sistema de alarma para el hogar o negocio

La función principal de la aplicación que se desarrollará es la de reproducir un sonido que indique que una puerta se ha abierto. En el caso de estar la alarma encendida, el programa deberá avisar en modo de alarma que una puerta ha sido abierta sin autorización.