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
domingo, 25 de noviembre de 2012
jueves, 22 de noviembre de 2012
Entrega Final Ajedrez.
Presentacion Final del proyecto "Juego de Ajedrez"
Adaptativo: Pastebin | Dropbox
Video: http://youtu.be/ym5RzrLJXTA
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
Reporte 2 Redes Complejas
Código: Pastebin | Dropbox
Resultados: distribucion.dat
Gráfica generada en gnuplot.
Video: http://youtu.be/GvXEh5g4zBQ
También logramos el siguiente grafo
Saludos.
Resultados: distribucion.dat
Gráfica generada en gnuplot.
Video: http://youtu.be/GvXEh5g4zBQ
También logramos el siguiente grafo
Saludos.
domingo, 4 de noviembre de 2012
Reporte 1 Simulación del Ventilador
Herramientas:
Python 2.7
PyGame
Codigo: Pastebin | Dropbox
Imagen de fondo: http://conglom-osoft.net/download/lol.png
Video: http://youtu.be/n3xCXAGM-oo
Saludos.
Python 2.7
PyGame
¿Que es un algoritmo adaptativo?
Los algoritmos adaptativos son aquellos que modifican su conducta durante su ejecución atendiendo a los cambios que se producen en su entorno o en el propio programa.
¿Que debemos considerar?
Que parámetros se deben de monitorear, los posibles cambios en nuestro ambiente, las restricciones tengo y que ajustes deben de realizarse.
Los algoritmos adaptativos son aquellos que modifican su conducta durante su ejecución atendiendo a los cambios que se producen en su entorno o en el propio programa.
¿Que debemos considerar?
Que parámetros se deben de monitorear, los posibles cambios en nuestro ambiente, las restricciones tengo y que ajustes deben de realizarse.
Realizar una réplica
del programa ventilador.
Primera
captura: muestra la cuarta hora con una temperatura de 22°, los cuales no
fueron suficientes para “prender el ventilador” y permanecerá en su estado de espera o "apagado".
Segunda
captura: se muestra la quinta hora en la cual el generador aleatorio mostró una
temperatura de 21°, como muestra la imagen aun no fue suficiente para que el ventilador se "encendiera", y por lo tanto permanecera en su estado de espera.
Tercera
captura: se presenta la condición necesaria para que se efectué el cambio de estado de "apagado" a “encendido” del ventilador ya que el generador marco una
temperatura mayor o igual a 24°, el programa permanecerá en este estado siempre y cuando cumpla con la condición de tener una temperatura mayor o igual a 24°.
Cuarta
captura: el ventilador regresa a su estado de “apagado” ya que el generador
muestra una temperatura menor a 24°, el programa continuara hasta que cumpla su horario (24 horas), o se le indique que pare.
A continuación se muestran los segmentos de código mas importantes de este programa:

A continuación se muestran los segmentos de código mas importantes de este programa:

La imagen
anterior muestra la parte del código que se encarga de capturar las
temperaturas del medio ambiente, el usuario se encargara de proporcionar los
valores de la temperatura máxima, temperatura mínima y la que temperatura a la que se desea encender el ventilador.
Ademas prepara el entorno de la interfaz gráfica, definiendo la fuente de el texto y el fondo de la ventana.
Esta parte se encarga de generar los valores entre cierto rango asignado previamente, por el usuario, siguiendo las diferentes condiciones para que no existan incongruencias con la realidad (si es de noche o es de día) o con lo que se pide.
Ademas prepara el entorno de la interfaz gráfica, definiendo la fuente de el texto y el fondo de la ventana.
Esta parte se encarga de generar los valores entre cierto rango asignado previamente, por el usuario, siguiendo las diferentes condiciones para que no existan incongruencias con la realidad (si es de noche o es de día) o con lo que se pide.
En esta parte
se muestran las condiciones iniciales para que el programa funcione
correctamente y no muestre valores surrealistas. Le da un margen al usuario para tener un ambiente controlado y para que las condiciones de encendido y apagado ocurran como debe de ser.
Codigo: Pastebin | Dropbox
Imagen de fondo: http://conglom-osoft.net/download/lol.png
Video: http://youtu.be/n3xCXAGM-oo
Saludos.
lunes, 29 de octubre de 2012
Tercer Avance
Resumen del proyecto
Como hemos hablado desde la primera entrega, nuestro proyecto es hacer un Juego de Ajedrez, la verdad todo con el proyecto sigue como planeo al principio, tanto así como la matriz de gantt va como esperamos.
Podemos resumir que ahora en esta entrega estamos entrando en lo que es la codificación del juego para poder realizarlo, claro que aun nos faltan algunos puntos que serán marcados.
Avance del proyecto
En cuanto al avance podemos decir que ya tenemos lo que la parte de la lógica del proyecto, lo cual es un gran avance, podemos comentar que aun nos faltan algunas cosas como son la Inteligencia Artificial del proyecto, esta se tiene contemplada realizar en el transcurso de los días del 29- 7 de Noviembre, según el Diagrama de Gantt que mostraremos.
Tenemos también problemas con la Interfaz Gráfica esta tambien tenemos una fecha plasmada en el Diagrama de Gantt la cual es del 7 al 13 de Noviembre, estos días pensamos que estaremos enfocados a lo que la Interfaz Gráfica del proyecto, esperamos sacarlo lo antes posible para que nos quedan más días para terminar el proyecto, aun así pusimos 6 dia en la interfaz, esto para que no esté tan apretado el ciclo y podamos realizarlo con calma.
Cambiamos un poco lo que es el Diagrama de gantt porque le agregamos otras actividades que no teníamos contempladas como son la de Inteligencia Artificial y Interfaz gráfica, las teníamos como programación, pero ahora vemos que serán diferentes y con su margen de tiempo estimado a cada una para poder realizarlas.
Lista de actividades
Esta es la lista de actividades ya actualizada de lo que hemos hecho y lo que aun nos falta por hacer o lo que se esta ejecutando.
Diagrama de Gantt
Ya aquí presentamos el diagrama de Gantt actualizado con las actividades integradas, aquí se pueden ver los tiempos para cada actividad, esperamos poder realizarlo a tiempo, aun la verdad es lo mas seguro que si salga con los tiempos previstos, pues llevamos las actividades a como va el diagrama sin alguna contratiempo hasta ahorita.
¿Qué se ha hecho?
Llevamos un gran avance de la lógica.
¿Qué falta?
Nos falta dos cosas importantes:
¿Qué problemas se han presentado y cómo los has resuelto / piensas resolverlos?
Bueno pues aun no sabemos muy bien como vamos a implementar la inteligenacia artificial pero con ayuda de tutoriales y de compañeros esperamos poder aprender a tiempo implementar la inteligencia artifial.
Lista actualizada de recursos y herramientas:
Recursos:
Herramientas:
SVN del proyecto http://richi.conglom-osoft.net/websvn/listing.php?repname=juego
Como hemos hablado desde la primera entrega, nuestro proyecto es hacer un Juego de Ajedrez, la verdad todo con el proyecto sigue como planeo al principio, tanto así como la matriz de gantt va como esperamos.
Podemos resumir que ahora en esta entrega estamos entrando en lo que es la codificación del juego para poder realizarlo, claro que aun nos faltan algunos puntos que serán marcados.
Avance del proyecto
En cuanto al avance podemos decir que ya tenemos lo que la parte de la lógica del proyecto, lo cual es un gran avance, podemos comentar que aun nos faltan algunas cosas como son la Inteligencia Artificial del proyecto, esta se tiene contemplada realizar en el transcurso de los días del 29- 7 de Noviembre, según el Diagrama de Gantt que mostraremos.
Tenemos también problemas con la Interfaz Gráfica esta tambien tenemos una fecha plasmada en el Diagrama de Gantt la cual es del 7 al 13 de Noviembre, estos días pensamos que estaremos enfocados a lo que la Interfaz Gráfica del proyecto, esperamos sacarlo lo antes posible para que nos quedan más días para terminar el proyecto, aun así pusimos 6 dia en la interfaz, esto para que no esté tan apretado el ciclo y podamos realizarlo con calma.
Cambiamos un poco lo que es el Diagrama de gantt porque le agregamos otras actividades que no teníamos contempladas como son la de Inteligencia Artificial y Interfaz gráfica, las teníamos como programación, pero ahora vemos que serán diferentes y con su margen de tiempo estimado a cada una para poder realizarlas.
Lista de actividades
Esta es la lista de actividades ya actualizada de lo que hemos hecho y lo que aun nos falta por hacer o lo que se esta ejecutando.
Diagrama de Gantt
Ya aquí presentamos el diagrama de Gantt actualizado con las actividades integradas, aquí se pueden ver los tiempos para cada actividad, esperamos poder realizarlo a tiempo, aun la verdad es lo mas seguro que si salga con los tiempos previstos, pues llevamos las actividades a como va el diagrama sin alguna contratiempo hasta ahorita.
¿Qué se ha hecho?
Llevamos un gran avance de la lógica.
¿Qué falta?
Nos falta dos cosas importantes:
- La inteligencia Artificial
- Interfaz grafica
¿Qué problemas se han presentado y cómo los has resuelto / piensas resolverlos?
Bueno pues aun no sabemos muy bien como vamos a implementar la inteligenacia artificial pero con ayuda de tutoriales y de compañeros esperamos poder aprender a tiempo implementar la inteligencia artifial.
Lista actualizada de recursos y herramientas:
Recursos:
- Tópicos selectos de optimizaciónhttp://elisa.dyndns-web.com/~elisa/teaching/opt/heur/
- Algoritmos Heurísticos deterministas y Aleatorios en secuenciación de proyectos con recursos limitados www.idescat.cat/sort/questiio/questiiopdf/13.1,2,3.11.alvarez.pdf
- Complejidad computacional de problemas y el análisis y diseño de algoritmos http://elisa.dyndns-web.com/~elisa/teaching/aa/pdf/aa.pdf
Herramientas:
- Java (lenguaje)
- Hashtable (libreria de java)
- LinkedList (libreria de java)
- Emacs (editor de texto)
- WebSVN (Repositorio)
SVN del proyecto http://richi.conglom-osoft.net/websvn/listing.php?repname=juego
Suscribirse a:
Entradas (Atom)














