viernes, 23 de noviembre de 2012

Subasta VickRey


Introduccion

En esta practica se introduce a la implementación de sistemas multi-agente, buscare programar una subasta VickRey.

-Es un sistema compuesto por una múltiple interacción de agentes inteligentes dentro de un entorno.

- Agente de múltiples sistemas se pueden utilizar para resolver problemas que son difíciles o imposible para un agente individual.

Quizás no entendemos de una manera muy clara este termino , pero dentro de esta practica conoceremos su comportamiento aplicado con uno de los ejemplos vistos en clase , el cual fue la subasta Vickrey .

Definición de subasta Vickrey : Se realiza a sobre cerrado y al segundo precio. A sobre cerrado significa que cada licitador escribe una sola oferta y la deposita en un sobre cerrado , ganando la subasta el individuo que realice la oferta más alta , pagando la segunda oferta más alta .

Objetivo

Conocer la implementación de un sistema multiagente en un método de subastas, asi como probar diversas librerias y ver sus pros y contras en cuanto a rendimiento e implementación.

Justificacion

Implementar un sistema multiagente, y poder ver beneficios de los diferentes librerias.

Desarrollo


Desarrollo de una subasta VivkRey:

Codigo:

Imagenes:










Concluiones


Durante la practica aprendí lo que es un sistema multiagente, y los tipos y metodos de subastas, asi como los pros y contras de algunas librerias para usar multiagentes en python y en java.

martes, 16 de octubre de 2012

Practica 3

- -


Introducción

Utilizando el reconocimiento de patrones, se planea poder dar seguimiento a objetos definidos y de esta manera poder mover el puntero del mouse, así como dar acciones de click en caso de realizar cierta acción con el objeto al cual se le esta dando seguimiento.

Objetivo

Intentar dar una mayor accesibilidad a la forma de utilizar una computadora, utilizando librerías de reconocimiento de imágenes como opencv.

Justificacion

Dar accesibilidad en momentos que no se pueda utilizar el mouse, y dar una manera mas fluida de utilizar un escritorio.


Codigo



Demo

viernes, 21 de septiembre de 2012

Practica 2 - Autómatas Celulares

Historia 

La historia de los autómatas celulares se puede dividir en 3 etapas, cada una correspondientes al nombre de cada científico que marcó la evolución de estos autómatas:
Etapa de Von Neumann
Esta etapa está marcada por estos dos científicos. En la decada de los 40, Von Neumann quería construir un autómata que se autoreplicase, tomando como diseño inicial un robot construyendo a otro robot (modelo actualmente conocido como modelo kinemático). Este diseño conllevaba multitud de problemas, como puede ser el que el robot que construya tenga siempre a su disposición todas las piezas necesarias para contruir su réplica.
Mientras Von Neumann se debatía con estos temas, su compañero Stanislaw Ulam se encargaba de investigar como crecían los cristales mediante una red de rejilla. Este fue el que le propuso a Von Neumann que usase un módelo matemático abstracto similar al suyo para la creación de sus autómatas autoreplicantes. De esta forma Von Neumann ideó el primer autómata celular, basado en una rejilla de dos dimensiones, en la que cada celda podía tener 29 estados y estos estados iban cambiando según un algoritmo que tenía como parámetros los cuatro vecinos colindantes de la casilla a procesar.
Este autómata se llamó el Constructor Universal de Von Neumman, de el cuál se pudo demostrar, que dado ciertos patrones, estos se podían reproducir de manera infinita.
Etapa de Martin Gardner
En la década de los 70 Martin Gardner popularizó masivamente mediante un artículo en Scientific American un autómata creado por John Conway conocido como el Juego de la vida. Este autómata celular está ampliamente explicado en su propio artículo.
Etapa de Stephen Wolfram
En 1983 Stephen Wolfram publicó una serie de artículos mostrando una gran cantidad de autómatas celulares desconocidos hasta el momento, conocidos como Autómatas celulares elementales. A raíz de estas investigaciones, y al ver que reglas muy sencillas podían dar resultados muy complejos, el propio Wolfram pensó que quizás la Naturaleza funcionase de manera muy similar.
Tanto le fascinó el tema, que Wolfram se dedicó a estudiar estos temas de manera concienzuda, lo que dio como resultado el libro A New Kind Of Science, dónde muestra los descubrimientos que ha hecho sobre los autómatas celulares, y dónde defiende su utilidad en cualquier campo de la ciencia. El libro causó bastante revuelo entre la comunidad científica, pero no consiguió demostrar que, mediante autómatas celulares se pudiese crear un modelo físico fundamental.

Objetivo y Justificación

Generar las reglas para la representación gráfica de los autómatas, basándome en las reglas originales de los autómatas celulares unidimensionales, ver la evolución y analizar la evolución que se da en este tipo de sistema, ya que los autómatas celulares son utilizados en varias áreas de la ciencia, y según lo que pensaba Stephen Wolfram es que estos autómatas pueden ser de utilidad en cualquier campo de la ciencia.

Desarrollo

Al revisar la forma en que se calculan los autómatas celulares, resulta fácil identificar los patrones repetitivos, a continuación una breve descripción de como programe estos autómatas:


  • El numero de la regla se pasa a su valor binario
  • El valor binario se completa con ceros a su izq. hasta completar 8 dígitos
  • El se crea un diccionario con etiquetas enumerando de 0 a 7 (en binario) y se invierte la cadena correspondiente al numero de la regla en binario de 8 dígitos
  • Se genera una reglón base con solo un "1" al centro
  • Se recorre el arreglo del primer reglón, tomando tres valores del arreglo, concatenandolos e introduciendolos como la etiqueta para recobrar el valor desde el diccionario y se agrega a una lista
  • Cada lista nueva representa un reglón y cada reglón se agrega a una lista de reglones, esta sera procesada por la interfaz gráfica y representara en gráfico el autómata celular
  • El numero de iteraciones es finito, las iteraciones son las mismas que la longitud de primer reglón














Las imagenes mostradas en la parte superior, muestran una serie de reglas ejecutadas.


Conclusiones

Lo interesante de los autómatas celulares es que su ejecución evoluciona de forma caótica y aun así generan un orden, estos sistemas son motivo de estudio ya que no solo por su aplicaciones si no por el hecho de que un algoritmo simple puede evolucionar a algo mas complejo.

Lo interesante de estos sistemas (y no realice en esta practica) es dejarlos evolucionar de forma indefinida (preferentemente), ya que estos sistemas hoy en día tiene mucha aplicaciones en el campo de investigación científica como:

  • Criptografía.
  • Generación de números aleatorios.
  • Modelos de comportamiento de tráfico.
  • Modelos de comportamiento a la hora de evacuar gente de un lugar.
  • Modelos de comportamiento de fluidos y partículas.
  • Composición de música.
  • Modelos de evolución de virus y bacterias (VIH).
  • Modelos para la creación de inteligencia artificial.
  • Modelos de la erosión de los huesos.
  • Hipertexturas

Como recomendación, si se piensa efectuar un programa que genere autómatas celulares, es preferible que este corra de forma indefinida, para que se pueda ver mejor su evolución.

martes, 4 de septiembre de 2012

Practica 1 - Semáforo

Objetivo:

Realizar una simulación de un crucero y dar la mejor solución para controlar el flujo vehicular, controlando  "grandes" cantidades de automóviles y adaptando los tiempos para cada semáforo.

Detalle del funcionamiento:

El cruce contiene dos carriles por sentido del flujo vehicular de esta forma manejare 8 carriles para un solo cruce, es decir carril "A" y "B" serian del sentido 1, carril "C" y "D" serian del sentido 2, carril "E" y "F" serian del sentido 3 y los carriles "G" y "H" serian del sentido 4, de esta manera los carriles podrán integrarse a otros carriles para cambiar de sentido (dar vuelta en la intersección).

Los tiempos son adaptados según la afluencia vehicular, de manera que tendremos un mínimo de carros  pasando si esta es sobrepasada se agregara 1/4 del tiempo base, en caso de no tener el mínimo sera reducido en 1/10 del tiempo actual, en caso de no presentar ningún vehículo este tiempo sera de 0, una vez alcanzando 0 como tiempo del semáforo iniciara cuando haya obtenido el mínimo de carros para avanzar o tener mas de un ciclo en rojo.

Como tiempo base se les otorga 30s a cada sentido, la suma de vehículos por cada sentido para mantener los 30s debe ser mayor o igual a 10 vehículos de la misma manera tienen que superar este numero para ser acreedores a un incremento en sus tiempos.


Aplicación iniciando:



Aplicación después de la primera ronda:





Semáforo de Sistemas Adaptativos

Se agregaran dos colas por sentido, estas colas son medidas y en base a si sobrepasan el mínimo de carros establecidos en la inicializacion de la clase esta aumentara el tiempo en 1/4 de el tiempo base en caso, en caso contrario lo reducirá en 1/4 o 1/10 si es que se mantiene por debajo de el mínimo de carros pero por encima de 0.

Código




Monitor:


Trafico:


Cola:


Main: