Ir al contenido



Foto

Nuevo algoritmo de inteligencia artificial increible


  • Por favor identifícate para responder
65 respuestas en este tema

#1 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 08 mayo 2013 - 06:21

Hace una semana me tope con un artículo sobre un nuevo enfoque de inteligencia artificial basado en la entropía ("Causal Entropic forces" por si quereis buscar), suena raro al principio y las fórmulas del "paper" asustan un poco, pero luego lo entiendes y resulta que es super sencillo y muy, muy genérico.

El caso es que me llamo tanto la atención que me puse con mi delphi y ya tengo un simulador de coche tipo kart que lo maneja esta "inteligencia" (el acelerador lo tengo siempre al 100% para ponérselo dificil), y la verdad, es increible verlo tomar las curvas como Raikonen en un rally (el exe permite cambiar todos los parámetros en tiempo real, puedes quitarle rozamiento en plena curva y ver como se las arregla).

He hecho unos vídeos para que lo podáis "visualizar", en los comentarios de cada vídeo explica algo de la idea (en ingles), este es el link al canal de youtube:

https://www.youtube....OznPQC0pieccAle

Si alguien está interesado, en el primer vídeo van los links a los artículos y papers que leí, y cualquier duda -por si queréis probar a ver- ya sabéis donde estoy!

Video 1: (muy soso comparado con el 4 en adelante, aviso)
SEZoDMsjwpo

Añadido: Adjunto captura del simulador para que os hagáis una idea, si alguien quiere jugar con el, se lo envió, admite leer la pista de un bmp (800x600, negro = fuera de pista) y guardar las imágenes en una carpeta para luego hacer una película).

Archivos adjuntos


  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.135 mensajes

Escrito 08 mayo 2013 - 06:50

Sergio, gracias por el enlace, el asunto es muy interesante, en cuanto disponga de un tiempo también me pondré a "jugar".

Un abrazo.
  • 0

#3 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 08 mayo 2013 - 10:44

Wow, super interesante Sergio  :|, felicitaciones.

Gracias por compartir  :)

Saludos
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 08 mayo 2013 - 11:49

Hola,
Se ve intereante el tema. Aunque algo me dice que esto no es de cosa reciente... vamos, que desde hace ya muchos años se han propuesto formas de medir la entropía del universo y en como aprovecharla. Es más, la teoría de que la propia entropía sugiere que vivimos en un multiverso (como lo apunta el artículo en español que pusiste en el 1er video) está en estudio desde al menos hace 40 años y por la física/mecácina cuántica (que ya lleva en sus inicios históricos la nada de 100 años).

No sería de extrañar que alguien ya lograra relacionar o rescatar ese concepto y lograse exponerlo con otro. En cierto modo ya sabemos que de alguna forma todo está relacionado (véase Principio de causalidad). Por tanto si con el determinismo se puede saber y llegar a la entropía final es que de algún modo tenemos el conocimiento para llegar a ello sin conocer en realidad cualquier proceso intermedio, de forma independiente. Es decir se sugiere que de alguna forma todo el conocimiento y el orden se puede conocer de antemano y se ha de mantenerse.
El punto y lo difícil está en averiguar en cómo y porqué se da esto y expresarlo en forma abstracta y medible capaz de recrearlo.

Hace no mucho en un documental de Discovery unos físicos teóricos estaban diciendo que ven con mucho optimismo que no falta demasiado para lograr comprender la física cuántica en su totalidad y por fin lograr reunir a todas las físicas en una. ¿Quien apuesta a que en menos de 20 años?

Saludos,
  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.937 mensajes
  • LocationMéxico

Escrito 08 mayo 2013 - 12:48

Qué tema tan interesante. He seguido los enlaces y vaya que hay mucho sobre el tema. Por cierto amigo, si esto haces por jugar,  que tremendos códigos debes hacer cuando lo haces en plan serio?

:o :o
  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 08 mayo 2013 - 01:03

Sería muy esclarecedor si nos pudieras compartir algunos detalles técnicos que has considero para el desarrollo de tu simulador.
Yo le dí una lectura medio veloz al paper y me quedé en "Ummm. creo que voy a tener que repasar Análisis Matemático, que no me acuerdo en como resolver una integral"  :

Y mejor no me apures que hasta me quedé pensando en lo que era Nabla... Hizo falta que busque que era para acordarme.  : Es lo malo de que mi temario para la carrera no llegara a integrales dobles y triples. Seguramente con más contenido de esto lo tendría más aceitado.

Para alguien entendido sobre el área del Cálculo/Análisis Matemático le resultará más o menos trivial entender las cosas (o al menos parcialmente). Para otros... la tienen difícil enterarse.

Saludos,
  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 09 mayo 2013 - 07:36

Pues es muy, muy simple, y no tiene nada que ver con entropias del universo y esas cosas -que me interesan mucho pero no tienen mucho que ver, por cierto, el principio de causalidad no es cierto en cuántica, aunque a Einstein le puso los pelos de punta, y si en 20 años hemos conseguido unificar relatividad y cuantíca, me sorprendería muchisimo, yo apuesto mas por 50-100 años siendo optimista.

Aquí tienes el esquema del algoritmo:

Tienes una simulación de un sistema físico, el que sea (el coche con su pista), que se puede "conducir" modificando solo ciertos parámetros que le permites (grados de libertad, en este caso solo un parámetro, es decir, puedo girar el volante un poco cada vez, con positivo a la derecha y negativo a la izquierda).

En cada décima de segundo, mi coche ha de decidir ese parámetro: cuanto suma al giro del volante.

La idea es que se numeran todas las posibles acciones (en mi caso uso dos, que serían dos valores numericos, giro +0.5 o giro -0.5, pero en general serían N vectores con tantas componentes como grados de libertad tengas) y luego se "puntuan" y se hace una media ponderada (de los N vectores, pero en nuestro caso son 0.5 y -0.5 simplemente).

Para puntuar una opción, por ejemplo girar un poco a la derecha, te imaginas que haces ese giro y usas la simulación para ver donde estarías (un poco mas a la derecha, no mucho), y ahora, desde ese punto inicial "un poco a la derecha", simulas 1000 veces como se moverá el coche en los próximos 5 o 6 segundos, usando intervalos de 0.1s como en la simulación "de verdad", pero esta vez moviendo el volante "al azar", con lo que obtienes 1000 "puntos finales", es decir, mil posibles futuros o posiciones del coche dentro de 5s.

Ahora, de esas 1000 futuras posiciones, eliminas las "malas" (te estrellas con el borde de la pista) (nota: no había que eliminar las malas, funcionan igual de bien que las buenas aunque suene raro y son necesarias, en los videos a partir del 4 se ve que los choques se contabilizan como puntos, y el kart va mucho mejor  :|) y de las que te quedan, eliminas también las que sean "casi idénticas" a otra de la lista. En mi caso elimino las que están a menos de 5 pixeles de otra. Con eso, obtienes un "número de posibles futuros distintos" para la decisión "gira un poco a la derecha".

Repites para la izquierda, y ya tienes todo para tomar tu decisión: Si para la derecha encontraste 78 "finales felices diferentes" y para la izquierda 15, tienes que la decisión "+0.5" va ponderada por 78/(78+15) mientras que la decisión "-0.5" pondera por 15/(78+15), y ya esta, el resultado es el giro que has de darle al coche.

Giro inteligente:= +0.5 * 78/(78+15) -0.5 * 15/(78+15)

Ya lo tienes, haces ese giro, avanzas en la simulación 0.1s, y repites... y fijate que en un caso más complejo, "+0.5" sería un vector (array of float) y listo, sacas la media componente a componente y listo.

Si ahora veis el vídeo lo visualizareis perfectamente: El coche lanza miles de rayos "al futuro", unos son rojos (parten de "un poco a la derecha") y otro azules (izquierda), de estos, solo algunos terminan bien y son diferentes a los otros: esos son los puntos rojos y azules que forman una nube delante del coche. En cada momento, la cantidad de puntos rojos y de azules te dice para donde debes girar el volante: misma cantidad, deja el volante como lo tienes, mas rojos, gíralo un poco a la derecha, etc.

Realmente simple, si alguien se ha peleado con redes neuronales sabrá que son muchiiiismo más complejas y que no dan estos resultados, mucho menos "en tiempo real" como casi consigue este sistema.

Yo personalmente lo imagino como un caracol de carreras con muchos "cuernos": el caracol también puede ir a la derecha o la izquierda, y para decidirlo, alarga todos sus cuernos para adelante, y cuanta cuantos no han chocado con nada, como tiene la mitad saliendo de una parte de su cabeza y la otra mitad de la otra, imaginatelos pintados de rojo y azul. Ya esta, si mas cuernos rojos no chocan, va a la derecha, y si ganan los azules, va a la izquierda.

Espero que se me haya entendido!

Las integrales que conste que me dejaron helado a mi también, al final pase de ellas y probé a entenderlo sin formulas, y luego volví a las integrales y entonces si que tenían todo el sentido (y si las lees ahora veras el sentido): La primera integral es sobre todas las posibles decisiones (en mi caso sería el intervalo +5,-5 porque solo tengo un grado de libertad), y la segunda integral es sobre los posibles futuros después de tomar la decisión de la primera integral.

La verdad es que vi la luz cuando comenta que usando "montecarlo" se podía convertir a un algoritmo usable... vamos, que puedes pasar mucho de las integrales, elegir a mano o aleatoriamente N posibles acciones (2 en mi caso), y probar 10.000 veces a ver el futuro que te depara, quedarte con futuros "distintos" según tu criterio, y usar la cuenta de la vieja para obtener los coeficientes a usar en cada posible acción.
  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 09 mayo 2013 - 12:13

Lo del coche y los rayos azules y rojos lo había entendido. Sabía que de algún modo, en términos abstractos, se estimaba la posición a futuro y se decidía el movimiento. En cierto modo algo parecido a esto se utiliza en algunos videos juegos para predecir el movimiento final de un objeto; algo útil para reducir el lag. 
Mi curiosidad estaba en como habías logrado bajar a tierra ese formulerio.
Por mi lectura entendía, a medias, justamente lo que dices: la primera integral de se trata del evento actual y la segunda a futuro. Lo que me marea es la unión teórica con alguna implementación práctica viable y simple sin llegar a un uso explícito de tales ecuaciones.

Cuando vi tus videos me dije que posiblemente estuvieras almacenando los vectores rayos pero el proceso por el cual lo sometías no lo apreciaba.

La lectura me hizo acordar de las Cadenas de Markov, concepto que sólo vi muy de pasada en Investigación Operativa. Es más si no recuerdo mal de la lectura, en una parte dice que tales fórmulas llega a un proceso Markoviano.

Yo también si me puedo evitar usar integrales (y/o derivadas) lo hago. A tal punto llegué que prefiero directamente el Álgebra ante que el Análisis Matemático o Cálculo. Se me rompe los esquemas cuando veo diferenciales en las matrices... allí me dan ganas de transformarme en el meme "Flip a Table". Y lo dice alguien que estudió Ingeniería  8o|

Yo redes neuronales no las puse en práctica (hasta el momento), aunque algo básico de su teoría y funcionamiento tengo. El defecto es que requieren de un "entrenamiento" previo.
Monte ¿que? Jaja. Na... a mi déjame con mis matrices.  :D

Lo cierto es que si necesito un repaso sobre varios temas relacionados con el cálculo (tanto numérico como matemático)... que ya los tengo muy oxidados. Para que te imagines... llegué al absurdo de que para encarar a implementar algoritmicamente tales integrales ya me estaba haciendo la idea de que tendría que estar implementando la Ragla de Trapecio, Simpson, o Newton-Cotes. Tanta ensalada matemática no es buena  :

Saludos,
  • 0

#9 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 10 mayo 2013 - 07:48

Acabo de añadir el video 4, es mucho mas espectacular que los otros, ahora el coche sabe frenar y acelerar, y corre mucho mas, está hecho un loco al volante!

Lo del Montecarlo es hacer integrales a lo bestia y super sencillo, sin saber matematicas: Si tienes una función que quieres integrar, digamos entre X=0 y X=1, y sabes que sus valores Y van desde Y=0 a Y=1 (por decir algo, en cada caso lo que sepas), pues haces esto:

-Tiras un dardo en (x=random, y=random) y miras a ver si esta dentro de la superficie de la función, es decir: miras si y<f(x). Si es menor, el dardo dio dentro, y si no, dio fuera.

Repites mil veces, y la superficie (es decir, la integral de f) es aproximadamente: numero de dardos correctos/numero de dardos.

Antiguamente, cuando los ordenadores no existían, se hacia algo muy parecido con cartón: Coges un cartón de 1x1, o de lo que necesites, y lo pesas, ahora recortas la forma de tu ecuación en el cartón, tiras lo que sobra, y pesas de nuevo: Peso recortado / peso sin recortar * superficie del cartón original = integral de f.

Este truco resuelve la integral mas larga que le pongas sin tener ni idea de integrales, por eso cuando en el paper dicen que si le aplicas un algoritmo de Montecarlo blah blah, te dicen: pasa de esta integral incomestible y hazlo a lo bruto, que al final da igual.
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 10 mayo 2013 - 08:15

Sergio creo que no lograste entender mi expresión sobre lo de MonteCarlo.
Si se lo que es, nomás lo decía a modo de broma para mostrar que yo soy más del álgebra lineal y que ya habiendo expuesto variadas opciones de como saltarse a la temida integral nos vamos a hacer demasiadas bolas (líos) con tanto que usar X, Y o Z cosa.

A ver, ¿Cual otra técnica más nos falta por mencionar para con las integrales?  :D
Yo hasta ahorita no recuerdo más, y que se me haya enseñado, que las ya se han comentado.

Por loco que suene, y aún sabiendo que las odio y que el paper diga: "Mira, mejor te le vas por MonteCarlo" si me pones una ecuación, mi cabeza de una u otra forma dice "Ha no... de aquí no te vas hasta implementar tal cual la teoría". Maldita adicción al análisis y el apego a la teoría. O como diría Sheldon Cooper... "quiero calcularlo"  :D
Menos mal que tengo otras fórmulas en que pensar primero sino ya me estaría pasando lo mismo que a Homero Simpson con los carteles de publicidad y el gusto de ir a la escuela de payasos.  :D

Saludos,
  • 0

#11 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 10 mayo 2013 - 11:42

A ver si puedo incrustar el video...

XE8raxj07gA

...ya, era sencillo!

Fijaos como cambia el verde del coche a blanco según desacelerar en las curvas (verde=acelera, blanco=deja de acelerar, amarillo=frena), incluso al empezar la segunda vuelta lo asusto subiendo un parámetro (pasa de simular 4 segundos en el futuro a 12) y pisa el freno a tope!

Despues de esa subida de segundos se vuelve muy conservador... y conforme le quitas segundos se vuelve todo un loco del volante, y llega a salirse incluso (culpa mía supongo).
  • 0

#12 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 10 mayo 2013 - 12:10

A ver, ¿Cual otra técnica más nos falta por mencionar para con las integrales?  :D


A ver esta:

Ploteas la ecuación entre los dos valores de X que quieras calcular la integral, pero sobre papel de un gramage conocido, tipo "80 g/m2", a una cierta escala, digamos 10:1. Recortas la función y los ejes quedándote con la "parte de dentro", haces una bola con el papel, lo pesas, digamos 20g, y divides por 80g, obteniendo 1/4=0.25 m2 de papel.

Si ahora multiplicas por la escala (10/1) al cuadrado, es decir, 0.25x10^2, y ya tienes la integral de esa función entre tus dos valores de X, que en este caso sería 25.

Esta se usaba mucho según me contaban cuando era pequeño, yo nunca lo vi hacer, pero es bueno conocer estas cosas, son como navajas suizas.
  • 0

#13 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 10 mayo 2013 - 08:50

La verdad es que está todo un loquillo tu simulador  :D

Me hizo acordar de cierto competidor que rebasó a su compañero de escudería para quedar primero en una vuelta muy arriesgada que le podría haber costado la carrera a ambos.  *-)

Esa última técnica está que flipo, que ingeniosa. Me puso a pensar en como se las abrán ingeniado Leibniz, Newton y otros en ese entonces. Hoy en día es tan fácil agarrar Mathematica y pedirle que te haga el trabajito... en ese entonces deben haber sudado sangre. Unos capos estos tipos.

Ya me imagino a los vagos de la facultad entregando hojas arrugadas  :D A menos que les toque integrales dobles y triples.  :p
Saludos,
  • 0

#14 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 13 mayo 2013 - 01:41

La verdad es que está todo un loquillo tu simulador  :D

Me hizo acordar de cierto competidor que rebasó a su compañero de escudería para quedar primero en una vuelta muy arriesgada que le podría haber costado la carrera a ambos.  *-)

Esa última técnica está que flipo, que ingeniosa. Me puso a pensar en como se las abrán ingeniado Leibniz, Newton y otros en ese entonces. Hoy en día es tan fácil agarrar Mathematica y pedirle que te haga el trabajito... en ese entonces deben haber sudado sangre. Unos capos estos tipos.

Ya me imagino a los vagos de la facultad entregando hojas arrugadas  :D A menos que les toque integrales dobles y triples.  :p
Saludos,


Si agarras mathematica y le pides que te haga el trabajo sucio SIN ENTENDER lo que se está haciendo y sin saber hacerlo tú a mano (aunque sea aproximado), obtendrás soluciones disparatas, imposibles, falsas, increíbles, irrisorias... pero que al final son un numeríto y tú no sabras que te has equivocado. Ah! bueno, y alguna que otra vez darás en el clavo.

Como leí alguna vez: errar es humano, pero para montar un buen lio, se necesita un ordenador.
  • 0

#15 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 13 mayo 2013 - 07:35

Si agarras mathematica y le pides que te haga el trabajo sucio SIN ENTENDER lo que se está haciendo y sin saber hacerlo tú a mano (aunque sea aproximado), obtendrás soluciones disparatas, imposibles, falsas, increíbles, irrisorias... pero que al final son un numeríto y tú no sabras que te has equivocado. Ah! bueno, y alguna que otra vez darás en el clavo.

Como leí alguna vez: errar es humano, pero para montar un buen lio, se necesita un ordenador.

Por supuesto que se necesita de preparación para entender, y saber si efectivamente está bien, lo que hace. Bien usada, puede ser una herramienta muy útil... y si en verdad fuera como pretendes dejar entender (o yo estoy entendiendo mal) de que por lo general hace las cosas muy mal no tendría la fama que se ha bien ganado.

Una vez tuve que recurrir a su ayuda para comprobar si mis desarrollos para unas ecuaciones iba más o menos encaminado ya que había llegado a un punto en que me había trabado y no encontraba la forma. Viendo paso a paso supe donde tenía mi falla y ya de allí pude continuar.
De haber conocido a esta herramienta mientras cursaba la cátedra quizá se me hubiera hecho más llevadera (hay que aguantar tener que resolver 50 ejercicios de integrales y derivadas para una semana... durante un año). Mi punto no iba a decir si en verdad lo hace bien o mal sino en lo fácil que hoy en día resulta usar (bien o mal ya depende de uno) alguna "calculadora" y esperar el resultado. No se suda tanto como antes... donde había más ejercicio craneano.

Saludos,
  • 0

#16 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 14 mayo 2013 - 09:01

Claro delphius, me refería a que la potencia, sin control no sirve de nada y se sigue necesitando una visión de lo que se anda haciendo, solo eso.

Y bueno, os dejo el video 8 donde varios karts compiten entre sí. El kart que sale el último es mejor que los otros en pensamiento y en prestaciones, así que me dedique a jugar con los otros tres y ver como se pasaban entre sí.

7fztcBUZBa8

Personalmente veo alucinante que de un algoritmo tan tan simple y donde NO se le dice ni que corra, ni que gane ni que adelante a nadie (ni que no se estrelle) salen estos comportamientos tan reales de los karts.

Por cierto delphius, en su momento solo leí el paper muy por encima, cuando tuve una visión de como probar con los karts -al leer la palabra "Montecarlo" como te comenté- lo dejé a un lado y me puse a programar. Tras dos semanas he releido el artículo y... buf! si que es duro la verdad, entiendo la mitad de la mitad, y lo increíble es que mi modelo, tan simplificado como está, sea capaz de hacer lo que hace!  :|

Creo que no voy a hacer el esfuerzo de entender todo lo que me falta del paper  *-), aunque un par de detalles me han dado pistas de como mejorar los karts, al menos en la parte de evitar colisiones con otros karts, que es algo mediocre aún.
  • 0

#17 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.677 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 10:33

Ya me dieron ganas de ver el video, pero aqui no puedo, tenemos restricción :(

Lo veré en casa :)

Saludos
  • 0

#18 Delphius

Delphius

    Advanced Member

  • Administrador
  • 5.999 mensajes
  • LocationArgentina

Escrito 14 mayo 2013 - 11:07

Hola Sergio,
En ti video se recrea la escena peligrosa  ;) que se vio en la F1 que comentaba  *-)

Coincido contigo, es muy curioso que con unas pocas instrucciones en donde no hay un código explícito que les indique que sobrepase, ni se estrelle, etc. sea capaz de comportarse ordenadamente.
Creo, tal vez, que se trate de una particularidad similar a la de los Sistemas Inteligentes que imitan el comportamiento de las hormigas o abejas... se programa con un conjunto muy básico de reglas y se las deja para ver que sale.
Se que tiene un nombre propio y formal este tipo de Sistemas que imitan el comportamiento de los animales que forman grupos sociales pero no les recuerdo el nombre.

La explicación racional que le encuentro es que a como está planteado el algoritmo cada vehículo intenta maximizar su nueva posición respecto a su posición inicial relativa. Como cada vehículo está en una diferente posición cada uno encuentra un nuevo lugar en donde moverse (habría que probar en como se comporta si se los pusiera a todos en una fila, detrás del otro a la distancia máxima del rayo... a ver si todos hacen lo mismo).
Como el algoritmo de por si busca mejorar su posición todos intentarán en primer lugar ponerse allí. Quien tenga el mejor "angulo" llegará primero y por tanto el resto se ve forzado a adoptar la siguiente mejor estrategia.
Pero lo que me rompe este esquema es que un vehículo puede rebasar al otro. Si el primero logra maximizar su lugar, el resto debiera verse obligado a 2das, 3ras y 4tas posiciones siguientes favorables por tanto su maximización no debiera ser capaz de llevar a superar al primero. Salvo que se diera la pecularidad de que por condición inicial y del ángulo detectado hacia el rayo futuro le lleve a encontrar una posición más favorable en un tiempo relativo más corto que al que se encontraba en 1er lugar.

¿Todo esto lo estás haciendo de ocio, o es que forma parte de algún proyecto que tienes en puerta? Si es por simple ocio ¿puedo preguntar si estás en condiciones de compartir el código?

Saludos,
  • 0

#19 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 16 mayo 2013 - 07:58

Es ocio y trabajo, lo hago en horas de trabajo (y de ocio) siempre que nuestra aplicación "principal" no me de trabajo y tenga los emails respondidos y esas cosas, algunos días le dedico toda la mañana a los karts, y otros, como hoy, no puedo ni acercarme porque hay 2 o 3 fuegos que apagar.

La idea es entender el algoritmo completamente, aprender a aplicarlo a cualquier cosa, y crear algún departamento en la empresa que se dedique a "optimización inteligente" o como le quieras llamar. Por eso ando probando todo lo que se me ocurre para mejorarlo, y para ver de que maneras se le puede dar utilidad... es un juego pero con vistas al futuro.

Respecto del código, hasta no saber realmente cual será el futuro de todo esto, lo voy a guardar para mi, no así la idea, que se la explico a quien quiera escucharme y de hecho la voy relatando conforme la defino en los comentarios de cada video (y aquí).

Ayer precisamente di por terminado la AI al añadirle una cosa importante que le faltaba del paper (aunque ya no estoy tan seguro de no poder mejorar el estado actual): Antes cada punto rojo/azul lo contaba como 1, y los sumaba, eso me daba poca tendencia a correr, por decirlo de alguna forma, pero el paper usa para esto "integrales por caminos", que básicamente te dice que cada posibilidad debería puntuarse usando la distancia recorrida (una traza roja larga que te lleva a un punto rojo significa que ese punto cuenta según la longitud de la traza) ya que la integral por caminos de solo "dx" es la longitud de dicho camino.

No es que me leyera el paper y dijes "eh! mira integrales de camino", es que mirando el kart correr, pensé que no era justo que un puñado de caminos cortos que terminan con el kart en la cuneta contasen igual que otros caminos que terminan en puntos más lejanos y que llevan al kart 20 metros más adelante de donde está. Intuitivamente decidi probar a puntuar con la distancia recorrida, y luego, al ver como mejoraba la cosa tanto, caí en que las integrales por caminos me lo estaban diciendo desde el principio.

Con este cambio, los vídeos anteriores quedan como prehistóricos, y si enfrento al kart que suma puntos contra el que suma longitudes recorridas, pues no hay color, es más rápido, adelanta con más "valentía"... inmejorable según estoy viendo (aunque aun me queda un as en la manga para intentar superarlo, no sé si me funcionará, mi primer intento fue fallido).

El vídeo 9 muestra una carrera de persecución: 4 coches idénticos excepto en como contabilizan puntos rojos y azules intentan adelantar a dos karts negros (los "malos", con un motor 10% menos pontente que los perseguidores). Los 4 perseguidores no se ven entre sí, por lo que se puede apreciar como cada uno elige su camino, ojito al rojo:

un0tK7fDfiA

El rojo es el "listo", el que usa longitudes de caminos, y el blanco es el "tonto", el que usa número de puntos simplemente, el verde y el amarillo son experimentos fallidos y los eliminaré del código (hay mas explicación en la explicación del vídeo).

Lo mejor es que el rojo lo veo insuperable, no creo que su forma de conducir sea mejorable, las trazadas son perfectas, y el momento y la forma de adelantar a los dos negros solo creo poder mejorarla aumentando el tiempo que le doy para calcular (intento que funcione en tiempo real y eso le resta algo de inteligencia del potencial que podría obtenerse, me falta por hacer esa prueba). Sobre todo fijaos en el rojo adelantando al segundo negro, es simplemente genial como decide tirarse al hueco que le deja y pasarle rozando los límites de la pista (y eso que la pista era muy deslizante, con más "grip" espero que se note aún más la superioridad roja).

Mi siguiente prueba: Unir la inteligencia de los karts en pista de forma que una solo "mente" decida que ha de hacer cada uno. Dejarán de estorbarse, se dejarán adelantar... como Webber y Vetel, vamos  :D

Con esto puedo simular digamos "enjambres de coches" y tratar de ponerles un objetivo común a ver como se lo toman, igual serviría para comandar un escuadrón de drones que han de revisar un edificio entero en el mínimo tiempo posible, cooperando entre si... por ejemplo.

Luego tenga más ideas, claro, cuando termino una me surgen 10, así que bueno, ya veremos donde termina esto!
  • 0

#20 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.677 mensajes
  • LocationMéxico

Escrito 16 mayo 2013 - 09:38

Caray amigo, el otro día vi uno de los videos y me resulto muy interesante, pero con lo que has comentado en éste último, vaya que vas por las joyas de la corona. (y)

Felicidades, hoy llegando a casa veré éste último video :)

Saludos
  • 0