Cov txheej txheem:
- Kauj Ruam 1: Cov ntaub ntawv
- Kauj ruam 2: Búsqueda Al Azar
- Kauj Ruam 3: Evolución Y Definiciones
- Kauj Ruam 4: El Algoritmo
- Kauj ruam 5: El Código
- Kauj Ruam 6: Funcionando Y Retos
Video: Cov Khoom Siv Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Los algoritmos genéticos tus tub muaj qhov tshwm sim una de las cosas más interesantes de la computación (en mi opinión). Básicamente se toma la lub tswv yim de evolución de la biología, y se aplica a un algoritmo en una computadora para resolver un problema.
El algoritmo genético es parte de lo que se conoce como algoritmos evolutivos en el mundo de las ciencias de la computación. Acá hacemos un ejemplo sencillo, con el fin de aprender sobre el algoritmo. Usamos el Circuit Chaw Ua Si (CP) de Adafruit rau hacer el ejercicio.
Imaginen el CP que es un ser vivo, y que se debe adaptar a las condiciones cambiantes de luz. El CP, debe buscar la forma más eficiente de prender sus leds, para obtener la mayor cantidad de luz posible según su sensor de luz. Para lograrlo además debe hacerlo encendiendo la menor cantidad de leds posibles. Entonces maximiza la luz, al mismo tiempo que minimiza la cantidad de leds. Acá trataremos de hacerlo con un algoritmo genético.
ADVERTENCIA: Este es un tema para estudiantes AVANZADOS
Kauj Ruam 1: Cov ntaub ntawv
Yooj yim:
- Chaw Ua Si Hauv Cheeb Tsam (o cualquier Arduino con leds y sensor de luz)
- Baterías
- USB kab
- Algo para generar luz y sombra para pruebas
Kauj ruam 2: Búsqueda Al Azar
Imaginemos un mono, apretando letras en el teclado de una computadora, el mono simplemente presiona las letras al azar. Si hay unas 50 letras en el teclado, cada letra (si el mono presiona de manera independentiente cada vez), tiene una probabilidad de 1/50 = 0.02 de ser presionada.
Ahora bien, digamos que queremos que el mono escriba la palabra "banano", ¿Podrá el mono escribir la palabra? La respuesta corta es SI !!!
La respuesta larga es que si lo puede hacer pero tomará un tiempo largo para resolverlo. Vamos yog qhov tseem ceeb tshaj plaws. La probabilidad de que el mono escriba "banano" es entonces la probabilidad conjunta, esto yog:
(1/50) x (1/50) x (1/50) x (1/50) x (1/50) x (1/50) = (1/50)^6
Esto es igual a 1 sobre 15 625 000 000, es decir la probabilidad de que el mono escriba "banano", es 1 thiab 15 millones … muy poco probable! Dicho de otro modo, es muy poco qhov yuav tshwm sim que un mono escriba la palabra "banano" escribiendo teclas al azar, ah, pero si tuviéramos 15 millones de monos escribiendo, es posible que uno de ellos escriba la palabra "banano". entonces poco tej zaum, pero tsis muaj peev xwm ua tau.
Formalicemos esta idea un poco. SI (1/50)^6 es la probabilidad de escribir "banano", entonces, 1- (1/50)^6 es la probabilidad de NO escribirlo. Si un mono intenta n veces, entonces, la probabilidad P de no escribir la palabra "banano" en n intentos sería:
P = [1- (1/50)^ 6]^ n
Así por ejemplo si intento una vez, P = 1, si intento un millón de veces, P = 0.999936, pero para 10 mil millones, P = 0.53, y mientras más grande se n, m mes me acerco a P = 0, es decir, con un numero infinito de intentos, puedo estar seguro de que el mono va escribir la palabra "banano".
Lo que sí, tsis muaj tenemos tiempo infinito, es decir se puede buscar una solución al azar, pero, el azar solo tardaría mucho tiempo. En pocas palabras, la fuerza bruta no es una forma efectiva de buscar una solución
Lo maravilloso es que la naturaleza busca al azar, pero de manera constructiva, es decir, busca de forma aleatoria pero manteniendo una buena solución y haciendo modificaciones a veces fuertes a veces pequeñas de ellas. Esa es la manera en que el algoritmo genético funciona, tomando cov tswv yim del como se genera la variabilidad genética en los seres vivos, e inventando un algoritmo para hacerlo en computadora, con el fin de solucionar un problema. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intento de buscar la solución, tsis muaj hiav txwv ywj pheej ntawm kev xav ua ntej.
NOTA: Busquen información sobre el teorema del mono infinito
Kauj Ruam 3: Evolución Y Definiciones
Kev hloov pauv
Un algoritmo genético (AG) es un algoritmo que permite encontrar una solución a problemas difíciles de resolver. El AG, se basa en tres principios principales de herencia Darwiniana:
- Herencia: Los hijo reciben las características de sus padres. En el AG significa que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
- Variación: Debe haber un mecanismo para introducir variedad. en el AG, qhov tseem ceeb que se debe pom zoo variabilidad de alguna manera para encontrar nuevas soluciones
- Selección: Hay un mecanismo en la cual se seleccionan los mejores. En el AG, hay una función de "fitness" que permite determinar cual solución es mejor
Acá no me voy a meter en los detalles de como funciona la evolucución de seres vivos, sino que quiero entrar de una vez a la explicación del Algoritmo Genético.
Cov lus txhais
Para poder facilitar explicar el algoritmo, debemos definir algunas cosas antes. Estas definiciones tus tub comunes en cualquier explicación de algoritmo genético que encuentren, y les facilitará entender la literatura en las redes.
- Uno de los primeros pasos es "codificar" el problema, esto quiere decir que debemos tener una representación de el problema para poder trabajarlo en el CP. Acá lo hacemos de manera sencilla. Como se muestra en a foto, tenemos 10 LEDS que pueden estar encendidos "1" o apagados "0", entemces tenemos un arreglo con 10 elementos 0 y 1. Así entonces 101000000 significa que los leds 0 y 2 están encendidos, y el resto apagados. y 0010011010, que los leds 2, 5, 6 y 8 están encendidos
- Una Población es un conjunto de posibles combinaciones de leds encendidos (ver la imagen de población), estas pueden ser iguales o diferentes. Se le llama un Cromosoma a un elemento en la población. Entonces un cromosoma, no es más que una representación de los LEDS encendidos y apagados del CP
- Una mutación, es cambiar al azar uno o varios LEDS, como se muestra en la foto, donde arbitrariamente la posición 5 cambia de apagado a encendido
- La recombinación, suav nrog tomas dos cromosomas, escoger un punto de cruzamiento, e intercambiar la información entre ambos (ver el diagrama)
- Una función de kev ntsuas kev noj qab haus huv, es tsis yog tus qauv ntsuas kev tso cai ntsuas tus lej buenos tus tub cada uno de los cromosomas de la población para seleccionar el mejor. En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos
Kauj Ruam 4: El Algoritmo
paso thiab paso
- Crear una población de muchos cromosomas inicializados al azar
- Kev tshuaj xyuas cual es el mejor con la función de "qoj ib ce"
- Copiar el mejor recombinando con el segundo mejor al resto de la población
- Aplicar mutación thiab toda la población
- Rov ua dua ib feem ntawm 2
Ejemplo
Como expliqué en las definiciones, una tira (cromosoma) 1000101010, sawv cev los ntawm leds encendidos "1" y apagados "0", en el Circuit chaw ua si. Vamos a definir nuestra función de "qoj ib ce" como:
fitness = (lectura de luz) x 0.5 - (número de leds) x 0.5
Noten como restamos el numero de leds en la fórmula, pues queremos la mejor luz con la cantidad menor de leds, entonces si una solución es zoo sib xws en luz pero con menos leds, seleccionaremos esa.
Ahora entonces encendemos los leds correspondientes a cada cromosoma y evaluamos su muaj zog, como se muestra en la figura. Ua raws li cov lus qhia hauv qab no:
0011100000 muaj zog = 98.5
1011100001 TZS = 102.5
1010101011 TZS = 102
Los de fitness más alto son 102.5 y 102, seleccionamos esos, y hacemos recombinación y mutación como se muestra en la imagen, lo que nos permite terminar con una nueva población, 1011100001
0011101011
1010100011
Esta nueva población nuevamente Evaluamuamos su fitness y así continuamos. Qhov nruab nrab ntawm qhov loj me nyob rau hauv ib qho solución imaptima, aunque sigue probando, se mantiene hasta que haya cambios en el ambiente.
Kauj ruam 5: El Código
El código lo pueden descargar en mi GitHub. Tsis muaj lus ceeb toom los ntawm detalles de la librería "cromosome.h", sino nada más el algoritmo genético, como es utilizado en el código tus thawj xibfwb.
Tus thawj xibfwb Código
El siguiente código crea una población de 20 cromosomas:
#def N20
pejxeem pop (N);
El objeto es pejxeem y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. Hauv kev teeb tsa, pom zoo hauv qab no:
pop.mutateChromosomes (0.5, 0);
Para cambiar aleatoriamente cada cromosoma con una probabilidad de 0.5, iniciando desde el cromosoma 0. En el loop tenemos el algortimo, primero hacemos crossover:
pop.copyCrossover (2);
Luego aplicamos mutación con una probabilidad baja (0.05), e iniciando del cromosoma 1 para mantener el mejor que hemos obtenido en la población (el cromosoma 0 es el mejor)
pop.mutateChromosomes (0.05, 1);
Y Evuluamosos la la la función de Evaluación, que explico más abajo
ntsuam xyuas ();
Luego ordenamos los cromosomas de tus kav nroog lub cev qoj ib ce (usando npuas sort), esto facilita el proceso de recombinación, pop.sort (); cov.
Txhua yam yog todo. Ahora veamos la función de Evaluación que es tseem ceeb
Función de tshuaj ntsuam xyuas
El codigo de ntsuam xyuas () es:
void ntsuam xyuas () {
rau (int kuv = 0; kuv <pop.n; kuv ++) {setPixels (kuv); // muab sijhawm LED los tig qeeb (100); qoj ib ce (i); }}
Vean que simplemente prendemos los leds correspondientes al cromosoma (eso es lo que hace setPixels ()), y Evuluamos su fitness, con la función, tsis muaj zog (int a) {
pop.fitness [a] = 0.5 * ntab (CircuitPlayground.lightSensor ()) - 0.5 * ntab (pop.countBits (a)); }
Almacenamos el valor de fitness de cada cromosoma en pop.fitness
Kauj Ruam 6: Funcionando Y Retos
Funcionando
En el video se ve como va adaptando de apoco a las diferentes condiciones de luz. Siempre encuentra una buena solución. Si lograste entender este instructable, te felicito, los algoritmos genéticos son un tema difícil en computación, pero eso es lo lo que lo hace más emocionante.
De alguna marea al dejar funcionando el CP con el algoritmo, parece casi como un ser vivo explorando las condiciones y evolucionando para mejorar. En este caso están ocurriendo muchas iteraciones de eovlución en poco tiempo, para un organismo vivo son mucho más lentas
de cierto modo el algoritmo sirve para encontrar la mejor solución, dadas ciertas condiciones. Se puede correr el algoritmos para determinar lo mejor en cada situación, y luego dejar estas definidas en el CP, pero en este ejemplo dejamos que el algoritmo siempre esté explorando.
Si se dejan muchas mutaciones, verán como el algoritmo es algo inestable y le va a costar llegar a una situación optima.
Comentario Kawg
El ejemplo utilizado es ilustrativo, y es para facilitar el uso de la librería. El reto planteado de mejorar la luz con el menor número de LEDS, es yooj yim y hasta tsis tseem ceeb, que probablemente se puede solucionar de manera más rápida con otros métodos. Tsis txhob ua txhaum, si lo vemos desde el punto de vista de seres vivos, la evolución organiza, utiliza algo como un algoritmo genético para búsquedas no lineales, entonces, algo como optimizar la luz, es un problema que en la naturaliza tiene sentido (me disculpan yog tias kuv paub qhov tseeb!)
Retos
- Buscar un problema de optimización más complicado con una función de "qoj" más compleja
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos qeeb rau tag nrho cov metidos)
- Aplicar a un robot, para que resuelva diferentes situaciones
- Estudiar meiosis, rau aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (quav nyab libros ua tiav en el tema)
Pom zoo:
Hloov-Hloov Cov Khoom Ua Si: Cov Khoom Ua Si Cov Khoom Ua Si Ua Tau Zoo!: 7 Cov Kauj Ruam (nrog Duab)
Hloov-Hloov Cov Khoom Ua Si: Cov Khoom Siv Hluav Taws Xob Ua Tau Zoo!: Qho khoom ua si hloov pauv qhib txoj hauv kev tshiab thiab kev daws teeb meem kom tso cai rau menyuam yaus uas muaj lub cev muaj peev xwm txwv lossis kev xiam oos qhab kev loj hlob los cuam tshuam nrog cov khoom ua si ntawm nws tus kheej. Hauv ntau qhov xwm txheej, cov menyuam yaus uas xav tau cov khoom ua si hloov pauv tsis tuaj yeem nkag mus
Tuchless Hloov rau Cov Khoom Siv Hauv Tsev -- Tswj Koj Cov Khoom Siv Hauv Tsev Tsis Muaj Tuch Ib qho Hloov: 4 Cov Kauj Ruam
Tuchless Hloov rau Cov Khoom Siv Hauv Tsev || Tswj Koj Cov Khoom Siv Hauv Tsev Tsis Muaj Tuch Ib qho Hloov: Nov Yog Qhov Tuchless Hloov Rau Cov Khoom Siv Hauv Tsev. Koj Siv Tau Qhov No Mus Rau Txhua Qhov Chaw Hauv Pej Xeem Kom Pab Tau Tawm Tsam Ib Yam Kab Mob. Lub Circuit Court Raws Li Tsaus Sensor Circuit Ua Los Ntawm Op-Amp Thiab LDR. Qhov Tseem Ceeb Thib Ob Ntawm Qhov Circuit Court SR Flip-Flop Nrog Sequencell
Kev teeb tsa Matrix LED hauv Cov Khoom Siv Hluav Taws Xob qub - Yuav Tsum Tau Cov Khoom Siv: 3 Cov Kauj Ruam (nrog Duab)
Kev teeb tsa Matrix LED hauv Cov Khoom Siv Hluav Taws Xob qub - Yuav Tsum Tau Siv Cov Khoom Siv: Lub teeb pom kev zoo los ntawm lub Windows PC dhau Bluetooth thiab LED cov txheej txheem nthuav tawm Ib co piv txwv ntawm pixel kos duab thiab cov duab ua haujlwm khiav ntawm LED Cov Ntsiab Lus ntawm PIXEL Guts Kit Hauv Cov Lus Qhia no, peb ' yuav
Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Npuas Hom): 4 Cov Kauj Ruam
Cov Khoom Siv Ciencia Y Arte: Ordenando Listas (Cov Npuas Sib Tw): En el mundo de las ciencias de la computaci ń n, saber ordenar listas es como saber escribir. Es una buena manera de ver como los algoritmos tus tub una manera de hacer las cosas en una computadora, y que la forma directa de hacer algo no es la kuv
Rov Siv Cov Khoom Siv Yas Zib Zib Zib Zib Hnab Rau Hauv Cov Chaw Muag Khoom Chaw Muag Khoom: 6 Kauj Ruam
Reuse Recycle Plastic Chewing Gum Cannister Into Solder Station Dispenser: Cov lus qhia no yuav qhia koj yuav ua li cas siv cov yas zom zom tuaj yeem ua kom khaws cov kab laug sab zoo thiab huv. Qhov no yuav ua haujlwm ntawm lwm yam khoom siv spooled thiab; Txoj hlua, Hlau, Cables