miércoles, 16 de abril de 2008

/ ** comentario de peti: OPINEN ALGO!! **/

chicos creo este archivo asi vamos agragando algunos avances del proyecto..
Cuando se agregan datos los pongamos en rojo asi los encontramos de toke :p
Dale ;)


Proyecto de IA:
Objetivo: Encontrar el mejor camino (con respecto a tiempo) en una ciudad real desde un origen y destino brindado por el usuario haciendo distintas combinaciones te recorridos en colectivos o a pie.

Alcances:
Desde que el usuario ingresa una interseccion de calles origen y otra destino hasta que el sistema devuelve la mejor forma de llegar hasta alli.

A tener en cuenta:
* Realizar recorridos de colectivos

* Generador de baches al azar (?) /** Comentario de Nico: me parece medio al pedo **/ /** Comentario de peti: lo lei en el libro de IA, pero posta q es al pedo **/
* Detectar densidad del trafico en distintas calles
* Detectar Espera en Paradas de colectivos y cantidad de gente
* REAS (Rendimiento, Entorno. Actuadores, Sensores)
* Velocidad media a pie, y velocidad media de los colectivos. Se puede hacer algo simple, o aplicar leyes de fisica (aceleracion, velocidad inicial, velocidad final, etc.)

Cosas que hay q hacer:
* Agregar sentidos a las calles (ya esta)
* Agregar recorridos de colectivos (ya esta)

* Agregar paradas de colectivos en mapa (ya esta)

* Agregar costos de calles en mapa
* Estaría bueno ir haciendo un Diagrama de Clases ( se hace ? )
* Programar :p (En proceso despues publico el source, si alguien conoce alguna pagina para hacerlo avisar!)

Estructura de datos:

La posta sería crear un objeto que se llame calle, donde ahí se represente la velocidad (tiempo) que tardaría un bondi en cruzarla y esto se calcularía segun varios factores, como trafico, si la calle es de tierra o asfalto, longuitud de la cuadra, etc.

Por ejemplo:
Para ir de la interseccion de la calle 0 y de la calle 3, hasta la calle 0 y 5, primero se buscarían todas las alternativas de los caminos posibles, uno sería el recorrido de la calle 03-04 y 04-05.
Entonces la suma de las 2 calles seria el costo de tiempo total.

como medimos la densidad del trafico?
Algo asi seria? o sea suponte que pasa por esa parte de la calle, que tomamos como costo ? el promedio (4) o por la parte que pasa (1), porque se supone que, mientras el tiempo pasa, la densidad cambia, es dinamica.

No se si conviene tener en cuenta una variable "densidad de trafico", estaria bueno hacer como este applet y que la tardanza de los colectivos dependa de la cantidad de autos que hay. Y eso ayudaria a medir tambien
el tiempo que se tarda en cruzar una calle si es muy transitada..

Tambien tendriamos que utilizar semaforos, si no va a ser imposible cruzar una calle si hay mucho trafico..

1) El link del applet no anda
2) Necesitamos sabes con anticipacion que bondi va a tomar, si tenemos 2 bondis que recorren 3 calles y llegan al mismo lugar necesitamos elegir el más rápido dependiendo del tráfico de las calles que recorren. Pienso yo, otra cosa, los numeros q puse pueden representar la cantidad de vehiculos en cierto momento

Con respecto a la 2) Despues lo pensé bien y tenes razon.

TIREN IDEAS PLSSSSSSS!!


prototipo de interfaz muy prmitivo, pero aporta. Para ir adelantando...








































¿Que hay hasta el momento?

Por ahora tenemos una lista enlazada donde se encuentran los grafos de los caminos de un mapa con sus respectivos costos y demas.

Para acceder a cada lista se hace a través de una tabla Hash que directamente con el nombre accedemos a la lista enlazada en tiempo constante (es el mejor tiempo).

En este momento estoy haciendo una función de búsqueda por anchura para encontrar el camino más corto, despues a esa misma función le podemos agragar heurística para hacer otro algoritmo más optimizado.

Luciano.



luciano:


Acabo de cambiar la estructura de datos porque me parecía que con listas enlazadas era muy sofisticado, difícil de modificar y recorrer los caminos, asique la estructura que hice es la siguiente:


Tenemos un Objeto que se llama Calle con las variables:


public String ID; // nombre de interseccion

public double distanciaMinima = Double.POSITIVE_INFINITY; //sirve para calcular el camino mas corto

public Calle anterior; // sirve para calcular el camino mas corto

public Conecciones[] adyacencias; // colección de intersecciones que llega la actual


otro objeto es Conecciones con las variables:


public final Calle vertice; // otra intersección donde llega la actual.

public final double costo; // el costo (tiempo) en llegar a la siguiente



Tenemos un arrego Calle[] donde agregamos todos los vértices pero en realidad lo más óptimo sería hacerlo con una tabla Hasha así aseguramos un tiempo constante.


Ya tengo un algoritmo de Dijkstra que recorre los camino y obtine el más óptimo.

Cuando tenga el código y funcione se los comparto, me esta tirando un error raro que ya lo solucionaré




Fotos del proyecto:

http://picasaweb.google.com/LucianoDiGiuseppe/ProyectoIA

Libro de IA (ingles):
http://rapidshare.com/files/102481823/26h8ak

Paginas interesantes de prgramacion:
http://www-cs-students.stanford.edu/~amitp/gameprog.html#paths
http://theory.stanford.edu/~amitp/GameProgramming/References.html

probando 1 2 3


No hay comentarios: