8 respuestas

  1. carlos
    19/09/2010

    Bueno, ¿que os parece?

  2. adrigm
    19/09/2010

    Muy bueno, quedo a la espera de esos ejemplos y usos para ver como aplicar algoritmo genéticos a videojuegos.

  3. carlos
    19/09/2010

    Me alegro de que te guste. Esta semana empezaré a escribir algo, pero sera algo largo, así que serán algunas entregas. Y no solo se pueden usar por si mismos (sin ningún otra técnica), sino que se pueden combinar con las redes neuronales de una manera muy chula para que aprendan sin supervisión (normalmente suelen tener el aprendizaje supervisado por un humano).

  4. Grzegorz Adam Hankiewicz
    20/09/2010

    No veo la relación entre determinismo y algoritmo planteada en el artículo. El determinismo es la simple característica de que con los mismos datos de entrada se genera siempre la misma salida. La diferencia que veo entre los algoritmos explicados entre la primera y segunda categoría es que los primeros no suelen usar una función de número aleatorio, mientras que en la segunda categoría este número aleatorio no sólo sirve de entrada sino que habitualmente también se retroalimenta en el algoritmo para una siguiente iteración.

    A nivel de programación ninguno de los dos tipos de algoritmos son indeterministas. Lo que pasa es que es más cómodo “amar la bomba y no preocuparse”. Es decir, todas las funciones de números aleatorios son “pseudo-aleatorias”. Como tal, reciben un valor de semilla para su inicialización. Si coges un algoritmo de redes neuronales que usa estas funciones y lo inicializas con la semilla, tras n iteraciones el estado al que llega la red neuronal tiene que ser el mismo que en la ejecución anterior. Si no es así, ante lo que estamos no es ante el indeterminismo sino ante un fallo de implementación. Precisamente en juegos de red donde se optimiza al máximo la transferencia de información entre nodos cliente, una de las cosas habituales es transmitir la semilla del generador aleatorio (o varios) para que los clientes puedan realizar cálculo de predicciones de movimiento de manera determinista en diferentes máquinas y diferentes plataformas. O bien se usa el generador pseudo-aleatorio para generar contenido y que éste tenga el mismo “aspecto” en ambas máquinas.

    Cabe destacar el hecho de que para la mayoría de los juegos ni si quiera se busca la aleatoriedad completa, sino una aleatoriedad que parezca aleatoria (valga la redundancia): http://blogs.msdn.com/b/shawnhar/archive/2010/09/10/links-5-charles-bloom-on-randomness.aspx.

    Por último, la aleatoriedad verdadera es enemiga de cualquier proceso posible de depuración, enemigo principal de todo programador.

  5. Carlos
    20/09/2010

    Lo digo desde el respeto, pero no creo que hayas hecho nunca ningún AG, dado que si lo hubieras hecho sabrías que los números aleatorios solo se usan en 3 ocasiones: 1º-para generar una nueva población, 2º-para seleccionar que parte de cada padre pasa a hijo, 3º-para una mutación al azar. La entrada no es aleatoria, la introduces tu, y de ahí pueden salir varios resultados. por ejemplo, si tengo un AG para encontrar cono se puede llegar a un nº (para 4 la salida podría ser 2+2, o 3+1, o 5*2-6, etc.) para un mismo numero tengo muchísimas posibilidades.

  6. adrigm
    20/09/2010

    Pienso que lo que quiere decir Grzegorz Adam Hankiewicz es que en computación realmente no existe la aletoriedad debido a que los números aleatorios que se generan siempre depender de algún parámetro que genere la semilla.

    Pero si tenemos en cuenta de que hoy en día los algoritmos que generan números aleatorios se basan en la temeratura, los milisegundos, etc. Para casos prácticos se pueden considerar aleatorios, aunque realmente no lo sean.

    Yo no se nada de Algoritmos Genéticos, pero la lógica me lleva a pensar que sin esos tres casos en los que se usan los números aleatorios el resultado sería totalmente predecible. Por tanto la indeterminación del sistema depende de esos tres números. Que a su vez no son aleatorios del todo, pero como ya digo creo que para estos casos se pueden considerar como tal.

    El día que alguien consiga generar un número totalmente aleatorio gana el nobel seguro.

  7. Carlos
    20/09/2010

    Ahí esta la cosa, en asegurarse que la semilla si que sea diferente siempre, y esto se hace tomando como semilla la hora del ordenador, un nº que no se va a volver a repetir. Y claro, para que sea indeterminista debes dejarle la libertad de que haya decisiones que se tomen “aleatoriamente”, al azar pero siguiendo una serie de criterios. en los AG estos criterios son la supervivencia del más fuerte, del mismo modo que la naturaleza actúa, tratare de dejar esto más claro en el 1º articulo sobre los AG.

  8. morcejo
    21/09/2010

    Creo que el enfoque que le ha dado Carlos a la explicación es muy correcto. Claro que en computación al final todo es predecible si llegamos a la última instancia pero se trata de ir explicando conceptos poco a poco y dejando de lado los purismos extremos, para lograr un fin didáctico en estos textos. En redes neuronales el determinismo roza la nulidad por el simple hecho de que no se programa el comportamiento del sistema si no que sufre un aprendizaje. Durante ese aprendizaje entran en juego múltiples variables, no se reduce simplemente a una semilla.

Responder

 

 

 

Volver arriba
móvil escritorio