5. Algoritmos genéticos
Вставка
- Опубліковано 3 гру 2024
- Los algoritmos genéticos se basan en el concepto de la evolución. El Prof. Castillo introduce de forma sencilla el concepto y aplicación de los algoritmos genéricos.
======
Contacto: jmcastillo@softcast.es
Muy buena explicación. ¡Muchas gracias!
Me alegro que le haya gustado. Ojalá le sea útil en sus proyectos.
Un tema complejo muy bien explicado. Muchas gracias
Me alegra saber que ha sido de utilidad.
Profesor muchas gracias, en la Universidad Catolica de Santo Domingo (UCSD) tengo que exponer el tema de algoritmos genéticos y su video me ha parecido la explicación más sencilla de digerir, aun así debo continuar investigando pero muchisimas gracias de verdad que he comprendido mejor el tema.
Una vez entendido el proceso general es más fácil profundizar. Tenga cuidado al elegir la literatura científica de este tema, hay mucha pero a veces es demasiado específica y enfocada a la resolución de un problema concreto.
Mucha suerte y gracias por su mensaje.
Muy buena clase José Miguel. Espero que sigas con este genial canal que tiene su valor en oro para el conocimiento, explicado de manera muy visual a través de los ejemplos y que vas directo a lo importante.
Muchas gracias por el mensaje, sin duda me anima a seguir con el objetivo del canal.
muchas gracias, muy bien explicado
Gracias por su interés.
profesor José Miguel Castillo como puedo aplicar este método en la asignación de horarios para evitar la colisión de cruces de horarios
Supongo que lo que usted pretende es desarrollar un planificador de horarios posiblemente para docencia. La aplicación de algortimos genéticos se recomienda en caso de optimización, es decir la búsqueda de la mejor solución entre un posible conjunto de soluciones (generaciones). En el caso que usted propone yo le recomendaría que utilizara una búsqueda en el espacio de estados que se desarrolla en la sesión 4. Búsquedas inteligentes. Se lo digo desde la experiencia de haberlo aplicado con éxito en varios planificadores con ese propósito.
A la hora de aplicar los operadores de asignación tendrá que tener en cuenta el problema que plantea de los cruces de horarios, de forma que de manera automática se evita la asignación de un mismo profesor a la misma hora en aulas o asignaturas diferentes (hasta que no se resuelva el problema de la ubicuidad del ser humano, que sólo Dios tiene capacidad para ello...)
Un saludo y gracias por su pregunta.
Gracias profe. Saludos desde Colombia.
Gracias a usted. Le avisaré si la UNIR en Colombia me invita a dar alguna conferencia o seminario. Tengo ganas de conocer su país.
excelente video , de que libros puedo aprender acerca de algoritmos geneticos estare muy agradecido por su respuesta
Gracias por su mensaje Carlos. Hay muchos libros que profundizan en los fundamentos y utilización de los algoritmos genéticos. Lo primero que tiene que plantearse es para qué los quiere usar, en qué tipo de aplicaciones los necesita como solución. Una vez determinado el objetivo busque la bibliografía que mejor se adapte a sus necesidades. Hay libros con mucha carga y justificación matemática y otros con un enfoque muy específico de aplicación. No obstante, le recomiendo un libro orientado a la aplicación de algoritmos genéticos en ingeniería:
- Man, K.F. et al. (2000). Genetic Algorithms. Springer
Muchas gracias por la explicación profesor. He llegado a este vídeo por casualidad en mi preparación para el Trading Algoritmico, en donde se busca optimizar sistemas automáticos. ¿Se le ocurre alguna información más que me pudiera ayudar en este sentido? Muchas gracias.
Su pregunta es muy interesante y señala directamente al problema de la optimización. Desde mi punto de vista, optimizar consiste en buscar la solución que más se aproxime a un objetivo determinado. La dificultad radica en que aunque usamos el mismo concepto, cada problema precisa de métodos diferentes de optimización. Bien sabe usted que 6 sigma como metodología nos ayuda a reducir errores y mejorar la optimización de los sistemas de producción, pero no es aplicable para la optimización de algoritmos, por ejemplo.
Dentro del campo de la Inteligencia Artificial hay tres tecnologías básicas que nos permiten optimizar: la primera consiste en la realización de búsquedas inteligentes, la segunda la aplicación de algoritmos heurísticos (normalmente usados como poda en las búsquedas inteligentes) y la tercera los algoritmos genéticos.
Así que, primero hay que analizar el problema y después buscar el mejor método de optimización a partir de la definición de los parámetros que nos permitan definir el "óptimo" que buscamos.
Un coridial saludo
@@JMCASTILLOmuchas gracias por su clarificadora respuesta. De las tres tecnologías que propone, por lo que sé hasta ahora, el trading algorítmico utiliza el algoritmo genético, que minimiza la cantidad de combinaciones a analizar en un backtest a la hora de optimizar los parámetros.
Saludos Profesor, ¿puede usarse el algoritmo genético en un videojuego? o ¿cual es el método mas eficiente para integrar IA en un videojuego?
Por supuesto que se puede usar, de hecho es uno de los métodos más eficientes. Recuerde que lo que intentamos es hallar una solución óptima o pseudoóptima dentro de un conjunto de soluciones posibles.
Dentro de un videojuego se busca una respuesta automática de la máquina dentro de una gama de posibles soluciones, y esa respuesta ha de ser lógica y acorde con el escenario. Esa respuesta "inteligente" se puede programar tomando como base alguna de las herramientas que describo en el canal: búsquedas inteligentes, redes neuronales, lógica borrosa...
Dependerá del problema en cuestión el utilizar una u otra herramienta.
Estupenda explicación.
Veo que este sistema sirve para optimizar la solución a un problema. Me pregunto: ¿sería posible utilizar este sistema para resolver un problema en un "ambiente" variable?
Me explico: ¿Cómo se podría hacer si, en vez de buscar el número que más se acerque a 10 buscásemos el que más se acerca a un número aleatorio que conocemos pero que puede variar en cada iteración?
¿Habría que crear y optimizar un cromosoma diferente por cada posibilidad del entorno o se podría crear un "indiviuo" único que sea capaz de entender su entorno y adaptarse?
Espero haberme explicado bien. Un saludo.
¡Una pregunta genial, Manuel!
El ejemplo en el vídeo está planteado para poder entender el concepto de generación y del funcionamieto del algoritmo. Evidentemente, habría que ir un paso más allá y programar el algoritmo en un ordenador de manera que dada una entrada por el usuario o generada aleatoriamente, entre una familia o conjunto de soluciones buscara el más cercano u óptimo.
Su última pregunta es de muy alto nivel y tiene justo las dos soluciones que usted plantea. Por un lado pordíamos entender que cada dominio de problemas podrían ser agrupados en torno a las soluciones que se generen por un individuo único. Pero por otro, y hacia ahí va la respuesta de la intelitencia artificial, lo que se pretende es que ese individuo se adapte al entorno y genere soluciones dependiendo del dominio que se le plantee.
Un cordial saludo
Gracias!
Gracias por su interés-
Muy buena info, me gustaria saber si hay funciones de varias variables para sacarles el máximo
Raúl su pregunta es muy interesante.
En el vídeo explico el fundamento en el que se basan los algoritmos genéticos, pero ese fundamento lo podemos complicar todo lo que queramos en función del problema de búsqueda. Es decir, la función "fitness" podemos desarrollarla de forma lógica para que ajuste a un óptimo de varias variables. Pero como le digo, dependerá del problema y de su habilidad para plantear este tipo de función.
La mayoría de la bibliografía actual se centra en eso, en áreas concretas de aplicación (especialmente ingeniería) en la que se demuestra para un ejemplo concreto la aplicación de una función "fitness" específica que el autor ha desarrollado. El investigador novel que de primeras se lanza a unos de estos libros termina por no enterarse de nada porque el fundamento de los algoritmos genéticos se da por sabido y la aplicación práctica suele ser tan específica que posiblemente se salga de su campo de conocimiento. Concretamente eso me pasó a mí, cuando ya unos cuantos años me lancé a entender al detalle un libro científico de un autor americano sobre optimización del rendimiento de máquinas propulsoras en ferrocarriles... terminé frustrado y convencido de que era un auténtico inútil y que nunca entendería esto de los algoritmo genéticos.
Gracias, me ha alegrado recibir su mensaje.
Muchas gracias por su respuesta, pude adaptar la función fitnes de acuerdo al problema que buscaba, me ha servido de mucho su vídeo aunque para ser sincero tarde unos cuantos días para poder encontrar la función de varias variables y así poder encontrar máximos y mínimos. ahora comprendo como es que un robot puede aprender por si solo. Espero y siga subiendo mas vídeos. Muchísimas gracias la verdad.
No sabe usted la alegría que me da ver que haya conseguido su objetivo principalmente por su esfuerzo y tenacidad, y en una pequeña parte por mi vídeo. Un cordial saludo y siga investigando, sin duda conseguirá lo que se proponga.
Buenas, una pregunta, podría usar esto para optimizar problemas de corte?.. Es decir de acuerdo a una superficie (tela, madera, etc), hacer cortes de distintas formas, de tal manera que pueda aprovechar al máximo la tela, madera, etc?
Puede usarlo para cualquier problema de optimización. Le aconsejo que le eche un vistazo al vídeo de Búsquedas inteligentes, también le ayudará a buscar soluciones y optimizarlas.
Si una solucion a un problema puede ser expresada como una cadena de 20 numeros entre 1 y 100, como se calcula la eficiencia del AG respecto a hacerlo simplemente por fuerza bruta?
Su pregunta es muy interesante.
Con respecto a la búsqueda de un óptimo, es decir a la mejor solución entre un conjunto de soluciones, la mejor herramienta es una búsqueda exhaustiva o por fuerza bruta (más información en el video "Busquedas inteligentes"). No obstante, cuando el número de operadores y combinaciones de los mismos es elevado la búsqueda de la solución excede del tiempo disponible (hay problemas que el tiempo de búsqueda de la solución óptima puede rondar varios siglos...). Ante este tipo de problemas no cabe más remedio que usar un algoritmo heurístico que pode la búsqueda aún con el riesgo de eliminar el camino al óptimo o usar un algoritmo genético.
En el caso que usted plantea habria que saber si la posición de los números también es determinante para la solución y si podría haber números repetidos. Si es así el problema se complica en cuanto a la búsqueda de la solución. Lo primero que habría que estimar es el número de combinaciones posibles de 100 elementos tomados de 20 en 20, con repetición y en un orden establecido. El número que obtenga multiplicarlo por 10 o 100ms dependiendo del tipo de ordenador que vaya a utilizar. Así obtendría el tiempo estimado para una búsqueda exhaustiva. Si excede de un tiempo prudencial de cálculo, habría que pensar en un genético o en un heurístico.
Con el genético, como ha visto en el video, se van a ir generando familias de soluciones que deberemos probar. El problema será calcular la función de fitness, es decir, cómo de buenas están siendo las soluciones generadas con respecto a la solución óptima. Aquí subyace el problema fundamental de la aplicación del genético si su intención por ejemplo es romper un clave de seguridad, pues no sabe cómo de cerca se encuentra del óptimo. En estos casos se usan estas técnicas junto con análisis de inteligencia que nos pueda dar alguna pista de cuales pueden ser los números preferidos que hayan formado la cadena de 20 números.
Espero haberle ayudado. ¡Adelante con su ingenio, buena suerte y gracias por su pregunta!
Dr. ¿ Cómo los aplico a la reducción de tiempos de ciclo?
Gracias Diego por su pregunta. Como siempre lo que buscamos es un óptimo partiendo de una combinación de posibilidades. El objetivo es la reducción de tiempo de ciclo. La primera cuestión es conocer las variables que interviene en la determinación del tiempo de ciclo. Segundo habría que plantear las generaciones como combinación de las variables y de los valores que puedan tomar las mismas y tercero comparar cada solución con el tiempo de ciclo mínimo inicial o calculado en generaciones anteriores. Por último habría que repetir la generación de soluciones hasta alcanzar un óptimo, o lo que es lo mismo en este caso un "mínimo".
Espero que le valga esta idea de aplicar los algortimos genéticos al caso que propone.
Le deseo mucha suerte en su proyecto.
Profesor Castillo,tengo interes en hacer un algoritmo genetico para un videojuego.Que me recomienda y donde debo estudiar? tiene idea aproximada entre cuanto y cuanto tiempo puedo tardar en estar listo para desarrollae mi propio algoritmo genetico? algo estimativo se que es imposible decir con exactitud solo para tener una idea.Gracias y disculpe por tantas preguntas buen video
Como le decía a Manuel Moreno en su mensaje:
"Dentro de un videojuego se busca una respuesta automática de la máquina
dentro de una gama de posibles soluciones, y esa respuesta ha de ser
lógica y acorde con el escenario. Esa respuesta "inteligente" se puede
programar tomando como base alguna de las herramientas que describo en
el canal: búsquedas inteligentes, redes neuronales, lógica borrosa...
Dependerá del problema en cuestión el utilizar una u otra herramienta."
Así que lo primero es saber qué puedo hacer con cada uno de las herramientas que comento en la lista de reproducción "Tecnologías para el apoyo a la toma de decisiones".
Una vez que conozca las herramientas, plantéese a modo de ejemplo un videojuego con un escenario determinado. Ese escenario tendrá un problema al que la máquina tendrá que responder (selección de un camino, selección de un tipo de armamento, intensidad del ataque o respuesta... si es un videojuego educativo se va a encontrar también con los mismos problemas de decisión por parte de la máquina). Una vez planteado el problema intente aplicar la solución, si con lo que ha aprendido es suficiente, láncese a implementarlo. Si se encuentra con dificultades es el momento de consultar más información.
Si ya ha decidido que para su videojuego lo mejor es un algoritmo genético, intente implementarlo. A lo mejor descubre que necesita completarlo con alguna otra herramienta.
Mucha suerte.
Gracias por la respuesta y por tomarse el tiempo.Voy a ver que herramientas tengo para actuar en consecuencia.Por otro lado queria saber si podia contratarlo a usted para trabajar en mi proyecto.Le pagare lo que merece.Un saludo!
No tengo inconveniente en colabora con usted. Si lo precisa puede usar el correo de contacto que aparece en el canal.
Un cordial saludo
¿Como lo relacionaría al decifrado de telegramas con codigos secretos
?
Muchas gracias Joel por su pregunta, es tan interesante como compleja. Como principio general utilizamos los algoritmos genéticos para buscar un óptimo entre una familia de opciones que vamos generando. En el caso concreto que usted plantea el óptimo es desconocido ya que no sabemos el contenido del telegrama.
Para solucionar este problema nos plantearemos dos objetivos parciales, el primero sintáctico (formación de palabra) el segundo semántico (significado del conjunto de palabras).
Partimos de la base de que podemos conocer los caracteres cuya combinación pueden dar lugar al descifrado, si no fuera así aplicaríamos otras técnicas para intentar conocerlos.
Conociendo los caracteres deberíamos programar el algoritmo para establecer combinaciones de esos caracteres dando lugar a una generación de soluciones. En primer lugar comprobaríamos si cumplen con el objetivo sintáctico (creación de palabra con sentido) en segundo lugar sustituiríamos la palabra en el texto para ir completando el objetivo semántico. Aquellas soluciones que cumplan con ambos objetivos o al menos el primero formarán parte de la siguiente generación del algortimo.
Todo este proceso deberá ser iterativo de manera que podamos sustituir los caracteres iniciales en la primera generación dando lugar a un nuevo proceso de búsqueda en el caso de que en la primera selección no hayamos encontrado solución alguna.
Es el mismo proceso que realiza nuestra mente en cualquiera de los tres ejemplos siguientes:
Les agardzeco su atneción y epsero que etse canla etsé seindo de su inetrés
If yuo are albe to raed this as accarutley and fsat as yuo have dnoe in the avobe pagrarahp yuo are bilignaul or yuor fleuncy sklils are very godo. Cognartluations!!!
NUNK" V4MOS 4 EST4R SEGUROS D3 S! 3STAMOS H4C!3NDO LO CORR3CTO Y4 QU3 N! S!QU!3R4 NOSOTROS M!SMOS LO S4B3MOS. ES CI3RTO QU3 NUNK" 4PR3ND3MOS D3 LOS 3RROR3S PORQU3 D3 4LGUN4 M4NER4 U OTR4, 3N 4LGUN MOM3NTO VOLV3MOS 4 COM3T3RLOS OBVI4M3NT3 NO TODOS Y NO SI3MPR3 P3RO P4SA......
Espero que esta idea le abra camino en el proyecto que se propone. ¡Ánimo y Mucha suerte!
Excelente video , aunque fallo en la resta , repitio dos veces 10-3 . saludos
Gracias por avisarme. Me alegra que le haya gustado.
una pregunta disculpe porque lo restas con puro dieces?
Porque es el objetivo del problema. Buscamos el número más cercano al díez. Comparamos cuál es el más cercano a través de las diferencias con el número objetivo.
Perdone que haya tardado en su contestarle pero no encontraba su mensaje.
Un saludo
Buen video!
Me alegra que le haya gustado.
hola profesor, me puede indicar donde conseguir información en español
Gracias Klarysa por su mensaje. La verdad es que no hay muchos libros publicados en Español, la mayoría están en Inglés y son bastante específicos en cuanto a su aplicación. Échele un vistazo a los siguientes enlaces, por si le fueran de utilidad:
www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/temageneticos.pdf
www.it.uc3m.es/jvillena/irc/practicas/06-07/05.pdf
@@JMCASTILLO Gracias por el enlace. Justo estoy revisando una aplicacion de algoritmos geneticos aplicados a buscar la mejor solucion para una red de distribucion de puntos de monitoreo de calidad de aire.
7:10
Un 7 sobre 10, no está mal. Me apunto el notable. Gracias
@@JMCASTILLO jajaja en realidad sólo anote el minuto donde daba el ejemplo para poder volver a verlo cuando lo necesitaba la puntuación en realidad para mi sería 10/10
Tengo fuertes dudas sobre si esos son los "mecanismos" de la "evolución". Se ha creado toda una ciencia ficción neodarvinista.
Más bien son soluciones que la ciencia aplica por analogía. A veces funcionan como en este caso y otras hay que abandonar la idea...