domingo, 18 de noviembre de 2012

Proyecto Final


 Descripción del Proyecto


Se elijió este proyecto ya que en el se puedo implementar algunas de las técnicas vistas en clase,
el sistema se describe como un espacio de elementos los cuales tienen que convivir en el mismo ambiente, estarán diferentes componentes dentro del acuario, estos serán los peces como primer elemento en el acuario, dependiendo de la cantidad de peces que se elijan sera la cantidad asignada de pirañas(peces malos), así como de otros elementos.
En el juego se contempla que se pueda reproducir una especie de cadena alimenticia de tal forma que los peces serán comida de los peces malos y los peces malos serán comida de el máximo depredador del juego (este sera un monstruo, o dos), así como a los peces se les dará cierto alimento distribuido por el jugador este tendrá la tarea de mantener su acuario “vivo” que le quede al menos un pez de cualquier especie dentro del acuario pero debe de contemplar que el solo puede alimentar al pez para que este sea devorado por la piraña y esta a su vez por el monstruo, en este caso se colocara un hilo en el cual se definirá que cada cierto tiempo a la criatura le dará hambre, de este modo el elemento tendrá que detectar que otro elemento (presa) esta cerca de el para así poder alimentarse.

Se contemplan las siguientes especies:

  • Elemento: la comida del pez
  • Pez: este sera el componente principal del acuario ya que si no esta ningún elemento de esta especie el juego terminara muy probable mente en cuanto a los siguientes elementos les de hambre y estos no tendrán alimento alguno y morirán
  • Pez malo: sera el depredador del pez así como presa del monstruo.
  • Pez mama: se encargara de proveer de peces al acuario, no tendrá la necesidad de comer y solo sera presa del monstruo
  • Monster: depredador principal de esta pequeña cadena alimenticia, aparecerá en el juego desde que inicie la partida pero su necesidad de habré sera mas extendida que la de los demás elementos
  • Recolector: aun no se define bien la función de este elemento, aun así se contempla que sea el encargado de las ganancias del acuario... cada elemento dará una ganancia al jugador el cual tendrá que recojer con este componente se espera que sean monedas y así se definrá la mejor puntuación el jugador que haya recolectado la mayor cantidad de monedas.

El juego esta basado en un juego llamado Insaquarium de hp games de mi computador es realmente adictivo y lo decidí replicar para un proyecto inconcluso, por el corto tiempo que se tuvo para este proyecto decidí continuarlo y realizar las partes adaptativas del mismo, las cuales eran que pudiese detectar cual es su alimento mas cercano y que una vez que se alimentara se eliminara el elemento que había sido la víctima de este modo desapareciera de la lista de elementos en la que los otros depredadores se basaban para poder comer y también hacer la estrategia de cual seria la dinámica de juego cual hiba a ser la ganancia o ganador en el juego.


Bosquejo de  solución

Se estableció que la forma en la que se desarrollara el ecosistema sera mediante multiagentes ya que los peces tendrán que detectar cual es su comida mas cercana también sus depredadores y por ultimo el enemigo principal tendrán que establecerse mediante el método interactúa() al ser todos elementos se facilitara la búsqueda al enemigo principal y para las demás criaturas se establecerá que solo puedan detectar un elemento inferior osea su comida para poder utilizar el método comer(), al ser un agente inteligente cumplira con las siguientes capacidades:
 Reacción
▪ Percibe el ambiente y responde a los cambios.
-El elemento estará en constante movimiento y detectara los elementos presas que tenga cerca y su actual posición le ayudara a percibir la cercanía de otro elemento
 Pro actividad
▪ Toma la iniciativa.
-Cuando tenga un elemento cerca este se acercara a el para poder comer y eliminarlo de la lista.
 Habilidad social
▪ Interactúa con otros agentes.
-Este detectara tanto a sus presas como sus depredadores

Utilidad
Valor numérico que indica qué tan bueno es : Esto se definirá mediante su tamaño las monedas que proveerá al jugador
 Entre más, mejor: entre mas grande sea este mayor sera el valor de su moneda
 El agente buscará maximizarla.: de otro modo tendrá consecuencias(setVida= false;)
 Parecido al dinero: sera el ganador cuando mas monedas sean recolectadas antes de el jugador se quede sin elementos en su acuario.


Estos agentes serán puramente reactivos ya que solamente Reaccionan ante percepciones

Se asume que los agentes son egoístas. Buscarán incrementar su propia utilidad.
Existe un conjunto de estados o resultados. Algunos de éstos son preferidos por el agente.
Las funciones de utilidad de los agentes determinan sus preferencias.
La preferencia de los agentes es comer lo mas cercano que se encuentre si por alguna razón alguien elimino el elemento de la lista (se lo comió primero) este tendrá que buscar otro y su utilidad tendrá una disminución que al fin y al cabo su tamaño aumentara pero con mayor esfuerzo o de lo contrario si no llegase a encontrar otra presa este morirá.


Diagrama  UML


 Diagrama de Gant  


  • Qué se ha hecho?
Se establecieron los elementos del acuario su ganancia (comida) que se convertirá en un aumento de tamaño después de ciertos bocados... también se estableció la ganancia que se dará al jugador y a otros elementos como a los depredadores del mismo, por ejemplo no sera lo mismo que un monstruo se coma un pez de tamaño uno a un pez de tamaño 3, también se modificó el método interactúa el cual percibe a todos los elementos dentro del acuario y de acuerdo a la información que recibe sera la comida del depredador
También se ha definido como se interactúa con el jugador, este solo dará clic dentro de la pantalla y se creara un elemento nuevo se define como la comida para peces.
  • ¿Qué falta?
Mejorar la interfaz, el hilo para que puedan sentir hambre y otro para que dejen la ganancia (están en proceso).
  • ¿Qué problemas se han presentado y cómo los has resuelto / piensas resolverlos?
Problemas se presentaron muchos por lo cual decidí tratar de expresarlo graficamente para poder mejorar el entendimiento de la estrategia de juego, hasta el momento esto es lo que se tiene de la interfaz y estrategia.
El tener el mismo tipo de elemento presa dificulta la interacción con los depredadores:
Identificar el elemento sobrescribiendo el método padre de comer ya que no todos podrán comer el mismo tipo de alimento/elemento debido a esto también se tendrá que modificar el método interactúa.
Se definieron cuantos elementos se utilizarían de acuerdo a la cantidad de peces que se elegirían: 




Lista actualizada de Recursos y Herramientas

Herramientas de Programación
Se utilizo el Lenguaje de Programación Java 
Editor de textos Emacs

Recursos vistos en clase e Investigaciones de casos

De nici on de agente en IA

Un agente es un sistema computacional capaz de actuar de manera autónoma para satisfacer sus objetivos y metas, mientras se encuentra situado persistente mente en su medio ambiente.
Wooldridge y Jennings (1995); Russell y Norvig (2003)



Reactividad: Capacidad de percibir el medio ambiente y responder a tiempo a los cambios en el, a trav es de acciones.
Iniciativa: Capacidad de exhibir un comporta miento orientado por sus metas, tomando la iniciativa para satisfacer sus objetivos de diseño (pro-activeness).
Sociabilidad: Capacidad de interaccionar con otros agentes, posible mente tan complejos como los seres humanos, con miras a la satisfacci on de sus objetivos.
Comportamiento orientado por sus metas y capacidad de seleccionar que meta va a procesar a cada instante.
Activo en un per odo relativa mente mayor al necesario para satisfacer sus metas.
Es lo suficiente mente robusto como para seguir siendo viable a pesar de los cambios en el ambiente.
Interacción  con su ambiente en la modalidad de procesamiento de informaci on.
Variedad de respuestas, incluyendo movimientos de adaptaci on  fluidos; y su atenci on a los est mulos es selectiva.
Ninguna de sus funciones, acciones o decisiones, est a totalmente gobernada por un agente externo.
No necesita ser programado nuevamente por un agente externo.
Ser autónomo depende no s olo de la habilidad para seleccionar metas u objetivos de entre un conjunto de ellos, ni de la habilidad de formularse nuevas metas, sino de tener el tipo adecuado de metas.
Los agentes arti ciales son usualmente diseñados para llevar a cabo tareas por nosotros, de forma que debemos comunicarles que es lo que esperamos que hagan.
Las metas y las funciones de utilidad son dos maneras de indicarle a un agente lo que hacer, sin decirle c omo hacerlo

Por ambiente, entendemos el espacio donde un agente, o un grupo de ellos, se encuentra situado.


Si el ambiente no cambia con el paso del tiempo, pero la evaluaci on de las acciones del agente si lo hace, se dice que el ambiente es semi-din amico.

Los ambientes din amicos tienen dos consecuencias:

Un agente debe percibir continuamente, porque a un si no ha ejecutado ninguna acci on entre los tiempos t0 y t1, el agente no puede asumir que el estado del ambiente sea el mismo en t0 que en t1;

Otros procesos en el ambiente pueden interferir con las acciones del agente, incluyendo otros agentes.
Los agentes reactivos, o reflex, seleccionan sus acciones basados en su percepci on actual del ambiente, ignorando el resto de su historia perceptual.

 Un agente con estado interno interactúa con su ambiente como se muestra

Una utilidad es un valor num erico que denota la bondad de un estado del ambiente.
Impl citamente, un agente tiene la \intenci on" de alcanzar aquellos estados que maximizan su utilidad a largo termino.
La especi caci on de una tarea en este enfoque corresponde simplemente a una función utilidad 
u : E-> |R  la cual asocia valores reales a cada estado del ambiente.

Acción Social
Una acci on social [Castelfranchi, 1998] es aquella ejecutada por un agente al asumir, en el marco de una situación de interacción, que los otros participantes en la interacción también son agentes.

Una acción dirigida hac a otro agente, no es necesaria mente una social. Una acción que no est a dirigida hacia ningún agente, puede ser social. 

Son las metas, y no las diferencias de comporta miento, las que determinan si una acción es social o no.

Interferencias
Las interferencias son situaciones donde el efecto de una acción de un agente es relevante para las metas de otro agente.

Las negativas se dan cuando una acci on amenaza o compromete el cumplimiento de las metas de otros agentes.

Las positivas se dan cuando la acci on favorece el cumplimiento de las metas de otros agentes.

Dependencia
La dependencia se de ne como un caso de interferencia fuerte, donde un agente no puede satisfacer sus metas porque necesita una acci ón o recurso controlados por otro agente.

Se de ne en t erminos de habilidades y recursos.

Es evidente que las situaciones de interacci on cooperativas pueden verse como interferencias positivas, mientras que las situaciones antagónicas pueden verse como interferencias negativas.

Utilidades

Juegos de Suma Cero
Son aquellos en los cuales para cualquier estado alcanzado, las utilidades de los dos agentes suman cero. Formalmente: 



Todo encuentro de suma cero es estrictamente competitivo.
Son el caso m as viciado de interacci on, donde no hay posibilidad de comporta miento cooperativo.
Si un agente permite que el otro agente tenga utilidad positiva, el tendrá utilidad negativa y estar a peor que antes de llevar a cabo la interacción.

Versión del sistema AdaptAcuario



/**
     *Metodo interactua compara distancias entre objetos distantes e identifica la cercania el uno al otro
     *@param C objeto de tipo elemento 
     *@return C regresa el elemento para poder compararlo en el metodo comer
     *@see comer
     */
    public elemento interactua(elemento C)//comida
    {                      
 if(C.equals (this))
     {
     }
 if (this.distancia(C) < C.getCerca())
     {
  System.out.println(this + " y " + C  + " estamos cerca :v .");
     }                      
 // estoy cerca de comida *-*                              
 return C;                         
    }
    /**
     *Metodo distancia asigna un valor double para identificar la distancia de un objeto con respecto a otro 
     *@param amigo objeto de  tipo elemento
     *@return regresa un valor matematico para identificar coordenadas
     */

    public double distancia(elemento amigo)
    {       
 return Math.sqrt(Math.pow((amigo.getx()- this.x), 2.0) + Math.pow((amigo.gety()- this.y), 2.0));
    }       
    /**
     *Metodo caer asigna coordenadas a objetos de tipo elemento que no tienen un metodo de movimiento propio
     */    
    public void caer()
    //time                                                                                                                      
    {
 this.y += 0.05;
    }


Para interactuar con el usuario mediante un clic en este fragmento del codigo:


public void mousePressed(MouseEvent e) //Invoked when a mouse button has been pressed on a component.
    {
 JOptionPane.showMessageDialog(null,"Presed");
 this.elementos.add(new elemento());
    }

Al momento de llevarlo a la interfaz gráfica se utilizo un hilo para que pudiese mostrar a los agentes en movimiento semi -dinámicos ya que el ambiente no cambia (aun son bolitas)
/**
     *Metodo run maneja el hilo del juego para los metodos de dibujar y mover
     */
    public void run()
    {
 while (true) 
     {
     Iterator<elemento> i = this.elementos.iterator();
     //if(ihastnext.getvida().equals(true))
     //{
     while (i.hasNext()) 
  {

      i.next().mueve();
  }
     this.repaint();
     // }
     try 
  {
      Thread.sleep(250);
  } catch (Exception e) { }
     }
    }


Video





Referencias:
Dr. Alejandro Guerra-Hernández
Sistemas Multi-Agentes
 Marzo-Julio  2011.
Herramientas para la publicacion: 

No hay comentarios:

Publicar un comentario