lunes, 26 de noviembre de 2012

Indice

Integrantes del Equipo:

1381097 Yessica Alely Castañeda Torres
1423807 Virgilio Ángel de la Garza Quijano
1441938 Alfonso Manuel Aguilar Leyva
1447717 Ricardo Joan Garza Reyna

Reportes:

Proyecto:
  1. Ajedrez
  2. Avance de proyecto
  3. Tercer Avance
  4. Entrega Final (Demo)

Cosas para puntos extras:

Repasos:
  • Swarm Intelligence (Se envió por correo electrónico)
  • Examen de Medio Curso (Se envió por correo electrónico)
  • Examen Ordinario

domingo, 25 de noviembre de 2012

Respuestas visuales, auditivos y táctiles

En esta tarea se busca combinar el software con hardware, por ejemplo el control de play station que produce vibraciones al momento de recibir daño.


Subí dos distintos programas en esta entrada uno con el que puedes encender leds y un motor vibrador con un menú (con botones) en python con tkinter y el segundo es el programa del puddi que encienda un led al rebotar en la ventana.



Control remoto

Herramientas:
  • Arduino (usaremos a Leonardo)
  • Led (en este ejemplo son 4)
  • Motor (extra para el ejemplo)
  • Protoboard y cables

Software:
  • Python 2.7
  • Tkinter
  • python-serial
  • sketch (programar el arduino)
Se programa una interfaz con Tkinter en Python: http://pastebin.com/zjhNUy4e






Y para encender los leds sera con puros if: http://pastebin.com/bUxfj84j




Como debe quedar armado el proto:




Pines utilizados:
  • 4 Led
  • 5 Led
  • 6 Led
  • 7 Led
  • 12 Motor
  • GND (tierra)

Ahora con el programa del Puddi

Bueno en este programa lo que ocurre es que cada que rebota el puddi encenderá un led, cada led representa una pared.

Materiales.
  • Arduino Leonardo
  • 4 leds
  • Motor vibrador
  • Protoboard
A diferencia del código anterior aquí tenemos que importar la librería serial que es la que permite contactar al arduino.

Cada que toque una pared encenderá un led.

Código del puddi: http://pastebin.com/kai7W323

Codigo del arduino: http://pastebin.com/gfZRLfNP


Fotos del protoboard armado.




Video: http://youtu.be/HXNgoVcUHXQ




En mi experiencia personal esta tarea me gusto mucho el poder mezclar software con hardware y si me da oportunidad para el miércoles a medio día podría conseguir un censor de temperatura y combinarlo con el reporte 1 (El Ventilador).


Saludos.

Interacción entre objetos artificiales

Bueno esta fue una de las tareas que me encargaron en la materia de Temas Selectos de IA, la idea del programa era hacer que un objeto interactuara con el entorno, el programa que hice rebota con los limites de la ventana

Aquí pongo una foto del programa corriendo el puddi es el objeto que rebota.


La interfaz fue hecha con ayuda de pygame.

En si el programa con un if obtiene las coordenadas de la ventana, al momento de llegar al borde invierte la dirección por el sentido contrario.

Aquí esta el código hecho en Python. link






Saludos



miércoles, 21 de noviembre de 2012

Reporte 4. Investigacion JADE, SPACE, Madkit y RobotCup


JADE (Java Agente de Desarrollo Framework)

Es un marco de software aplicado plenamente en el lenguaje Java. Simplifica la implementación de sistemas multi-agente a través de un middleware que cumple con las especificaciones FIPA ya través de un conjunto de herramientas gráficas que soportan la depuración y fases de despliegue.

La plataforma de agentes pueden ser distribuidos a través de máquinas (que ni siquiera necesitan compartir el mismo sistema operativo) y la configuración se puede controlar a través de una interfaz gráfica de usuario remoto . La configuración se puede cambiar incluso en tiempo de ejecución moviendo agentes de una máquina a otra, como y cuando sea necesario. 

JADE está completamente implementada en lenguaje Java y la exigencia mínima del sistema es la versión 1.4 de Java (el entorno de tiempo de ejecución o el JDK).
La sinergia entre la plataforma JADE y las bibliotecas LEAP permite obtener una plataforma de agentes FIPA compatible con dimensiones reducidas y compatibilidad con entornos Java móviles hasta J2ME CLDC MIDP 1.0. Las bibliotecas LEAP se han desarrollado con la colaboración del proyecto LEAP y se puede descargar como un add-on de JADE de este mismo sitio Web.



MadKit

Es una plataforma para la implementación de Sistemas Multi-Agentes. Esta basada sobre el modelo AGR de Ferber y Gutknecht. AGR en un modelo organizacional basado sobre los principios de Agente, Grupo y Rol.

Estructura General de la Plataforma:

El componente principal es el Kernel (o micro-kernel). El kernel provee soporte para:

  • Control de grupos y roles locales
  • Manejo del ciclo de vida de los Agentes
  • Despacho de Mensajes locales
Madkit es una plataforma para implementa modelos Organizacionales. Y por ello el medio de contacto de los agentes son los roles que juegan en los grupos a los que pertenecen.
La comunicación en madkit se hace atreves de mensajes. La clase de base para todos los mensajes en Madkit es la clase Message. Esta clase contiene únicamente el emisor, el receptor y el momento de creación del mensaje. Estos valores son accesible con los metodos getSender(), getReceiver() y getCreationDate(), respectivamente.
Los diferentes tipos de mensajes existentes en Madkit heritan de esta clase.
Las clases de mesajes más utilizadas en madkit son:

  • STRINGMESSAGE: permite enviar como contenido del mesaje una cadena de caracteres (String de java).
  • OBJECTMESSAGE: permite encapsular un objeto serializable.
  • XMLMESSAGE: el contenido es un documento XML
Para implementar un nuevo tipo de mensaje, solo debe heritar de la clase MESSAGE.

SPADE (Del inglés "Smart Python multi-Agent Development Environment")

Es una plataforma libre de sistemas multi-agentedesarrollada en Python y basada en la tecnología de mensajería instantánea XMPP. Algunas de las características más notables de la plataforma SPADE son: soporte de organizaciones virtuales, notificación de presencia, compatible con FIPA e independencia del lenguaje y la plataforma.
Las principales características de la plataforma SPADE son:
  • Soporte del estándar FIPA mediante el protocolo de mensajería instantánea XMPP (Agentes AMS y DF incluídos)
  • Notificación de presencia entre agentes.
  • Organizaciones Virtuales basadas en el protocolo de multi-conferencia MUC.
  • Comunicación P2P entre agentes.
  • Invocación remota de servicios entre agentes usando el estándar XML-RPC.
  • Procesadores de lenguajes de contenido en SL0 y RDF.
  • Modelo de agente BDI basado en Conocimiento, Deseos e Intenciones.
  • Modelo de comportamientos: Cíclicos, Periódicos, Timeout, una ejecución, máquina de estados finita y basado en eventos.
  • Soporte de comunicación con otras plataformas mediante diversos protocolos de transporte: JADE (via HTTP o XMPP) ySIMBA.
  • Publicación y subscripción de eventos mediante el estándar PubSub.
  • Interfaz gráfica basada en web.

SPADE es una plataforma de agentes interoperable y multiplataforma, dado que el protocolo de comunicación está basado en XML y el lenguaje de implementación es Python. Del mismo modo la interfaz gráfica está basada en HTTP, siendo accesible desde multitud de dispositivos. Las características de la interfaz son las siguientes:
  • La plataforma y los agentes exportan su propia interfaz web.
  • La interfaz es configurable a través de plantillas.
  • Cada agente exporta su identificador como un código QR.
  •  Instrospector de agente.
  •  Visor de mensajes enviados.
  •  Búsqueda de agentes y servicios.


Robocup Simulation League

RoboCup es el juego de fútbol, ​​donde los objetivos de la investigación se refieren a los sistemas cooperativos multi-robot y multi-agente en entornos dinámicos contradictorio. Todos los robots en esta liga son totalmente autónomos. Los juegos también sirven como una gran oportunidad para educar y entretener al público en torno a temas de ciencia y tecnología.

Se divide en cuatro subligas :
1.     Fútbol 2D Simulación
2.     Simulación 3D Soccer
3.     3D Desarrollo
4.     Realidad Mixta Simulación Fútbol (antes llamado Visualización)



miércoles, 14 de noviembre de 2012

Reporte 3. Perceptron que reconoce un "and"

Perceptron que reconoce un "AND"

Aquí en este reporte, lo que hicimos fue modificar el codigo del Perceptron presentado en Wikipedia. Este código lo que hacia era poder realizar un binario pero en forma de NAND, lo que nosotros realizamos fue modificarlo a que ejecutara pero ahora en forma AND.

Lo que principalmente hicimos fue cambiar el entreno de la red, a partir de como serian los resultados de las entradas (1,0,0) (1,0,1) (1,1,0) (1,1,1) como sabemos, el AND es una puerta logica, que necesita tener todas las casillas llenas de 1, para poder que esta como salida tenga como resultado 1, si en las casillas anteriores presenta un 0, la salida te da como resultado un 0.

Ejemplo la siguiente tabla:

Aqui lo que hicimos fue modificar la salida de los resultados por que eran diferente(Entreno de la Red), cambiamos el umbral, la tasa de aprendizaje y los pesos iniciales. Como se muestra en el siguiente Codigo:



Despues de correr el codigo anterior, tuvimos los resultados siguientes:



Estos fueron los resultados

Referencias:

http://en.wikipedia.org/wiki/Perceptron

lunes, 5 de noviembre de 2012