Talaan ng mga Nilalaman:
- Hakbang 1: Mga Materyales
- Hakbang 2: Búsqueda Al Azar
- Hakbang 3: Mga Kahulugan ng Evolución Y
- Hakbang 4: El Algoritmo
- Hakbang 5: El Código
- Hakbang 6: Funcionando Y Retos
Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artipisyal): 6 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (en mi opinión). Básicamente se toma la idea 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 algorithitmos evolutivos en el mundo de las ciencias de la computación. Ang mga hacemos un ejemplo sencillo, ay dapat na mag-aprender sobre el algoritmo. Usamos el Circuit Playground (CP) de Adafruit para 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 ef sapate de prender sus leds, para obtener la mayor cantidad de luz posible según su sensor de luz. Para sa 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
Hakbang 1: Mga Materyales
Simple:
- Circuit Playground (o cualquier Arduino con leds y sensor de luz)
- Baterías
- Cable USB
- Algo para generar luz y sombra para pruebas
Hakbang 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 independiente 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 esto estadísticamente. La probabilidad de que el mono escriba "banano" es entonces la probabilidad conjunta, esto es:
(1/50) x (1/50) x (1/50) x (1/50) x (1/50) x (1/50) = (1/50) ^ 6
Ito ay isang 1 taon 15 625 000 000, upang malaman ang probabilidad de que el mono escriba "banano", sa 1 mil 15 millones… muy poco probable! Dicho de otro modo, es muy poco probable 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 probable, pero walang imposible.
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 purpos sería:
P = [1- (1/50) ^ 6] ^ n
Kung nais mong malaman ang una, P = 1, para sa un millón de veces, P = 0.999936, ngunit para sa 10 milyong millones, P = 0.53, at pagkatapos ay mag-isa ang mga ito, maaari akong magkaroon ng isang P = 0, upang matukoy, con un numero infinito de intentos, puedo estar seguro de que el mono va a escribir la palabra "banano".
Lo que sí, no 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 konstriva, 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 algorithitmo genético funciona, tomando ideas 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 problem. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intento de buscar la solución, walang dagat independiente del intento anterior.
TANDAAN: Busquen información sobre el teorema del mono infinito
Hakbang 3: Mga Kahulugan ng Evolución Y
La evolución
Un algoritmo genético (AG) na hindi dapat magdagdag ng isang problema sa isang resolusyon ng resolusyon. El AG, se basa en tres principios principales de herencia Darwiniana:
- Herencia: Los hijo reciben las características de sus padres. En el AGaluea que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
- Variación: Debe haber un mecanismo para sa introducir variedad. en el AG, mahalaga kung ano ang debe agregar 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" upang pahintulutan ang pagtitiyak na mag-isa sa akin
Hindi ako mag-iilaw ng isang metro sa los detalles de como funciona la evolución de seres vivos, sino quiero entrar de una vez a la explicación del Algoritmo Genético.
Mga kahulugan
Para poder facilitar explicar el algoritmo, debemos definir algunas cosas antes. Estas definiciones son comunes en cualquier explicación de algorithitmo genético que encuentren, y les facilitará entender la literatura en las redes.
- Hindi maiiwasan ang mga pasiya ng "codificar" sa mga problema, upang maipalabas ang mga debemos na tener ng isang representasyon ng el problema para sa poder trabajarlo en el CP. Acá lo hacemos de manera sencilla. Magagawa mo ang isang larawan, Tenemos 10 LEDS na nakatayo sa mga encendido na "1" o apagados "0", pinagsasama ang 10 na elemento ng 10 elemento 0 y 1. Ang mga entonces na 101000000 kahulugan ng mga 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, walang es más que una representación de los LEDS encendidos at 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, binubuo ng tomos dos cromosomas, escoger un punto de cruzamiento, at intercambiar la información entre ambos (ver el diagrama)
- Una función de evaluación o fitness, es un criterio que permite evaluar que tan buenos son 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
Hakbang 4: El Algoritmo
paso isang paso
- Crear una población de muchos cromosomas inicializados al azar
- Makita ang bawat daan para makapunta mula sa A hanggang sa "fitness"
- Copiar el mejor recombinando con el segundo mejor al resto de la población
- Aplicar mutación a toda la población
- Repertir a partir de 2
Ejemplo
Como expliqué en las definiciones, una tira (cromosoma) 1000101010, representa los leds encendidos "1" y apagados "0", en el circuit playground. Vamos a definir nuestra función de "fitness" 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 similar en luz pero con menos leds, seleccionaremos esa.
Ahora entonces encendemos los leds correspondientes a cada cromosoma y evaluamos su fitness, como se muestra en la figura. Noten como en el ejemplo tenemos:
0011100000 fitness = 98.5
1011100001 fitness = 102.5
1010101011 fitness = 102
Ang ilan sa mga anak na lalaki ng 102.5 y 102, ay nai-imbak, at ang mga ito ay nagtaguyod sa iyong larawan, kung saan pinapayagan ang terminar para sa isang unang población, 1011100001
0011101011
1010100011
Esta nueva población nuevamente evaluamos su fitness y así patuloyamos. A medida que llega a una solución óptima, aunque sigue probando, se mantiene hasta que haya cambios en el ambiente.
Hakbang 5: El Código
El código lo pueden descargar en mi GitHub. Walang voy a explicar los detalles de la librería "cromosome.h", sino nada más el algoritmo genético, como es utilizado en el código principal.
Punong-guro ng Código
El siguiente código crea una población de 20 cromosomas:
# tukuyin ang N 20
populasyon pop (N);
El objeto es populasyon y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. Sa pag-setup, i-install ang mga ito:
pop.mutateChromosome (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.mutateChromosome (0.05, 1);
Y evaluamos con la función de evaluación, que explico más abajo
suriin ();
Luego ordenamos los cromosomas de mayor a menor fitness (usando bubble sort), upang magawa ang mga ito sa pamamagitan ng recombinación, pop.sort ();
Allí está todo. Ahora veamos la función de evaluación que es importante
Función de evaluación
El codigo de suriin () ang:
walang bisa na suriin () {
para sa (int i = 0; i <pop.n; i ++) {setPixels (i); // nagbibigay sa oras ng LED upang i-on ang pagkaantala (100); fitness (i); }}
Vean que simplemente prendemos los leds correspondientes al cromosoma (tulad ng mga ito ay itinakdaPixels ()), upang suriin ang fitness, con la función, walang bisa fitness (int a) {
pop.fitness [a] = 0.5 * float (CircuitPlayground.lightSensor ()) - 0.5 * float (pop.countBits (a)); }
Almacenamos el valor de fitness de cada cromosoma en pop.fitness
Hakbang 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. Ang lograste entender na ito ay maaaring turuan, upang magawa ang mga ito, ang mga algorithm ng geneticos son un tema difícil en computación, ngunit maaari ding magawa ang emocionante.
De alguna marea al dejar funcionando el CP con el algorithitmo, parece casi como un ser vivo explorando las condiciones y evolucionando para mejorar. En este caso están ocurfriendo muchas iteraciones de eovlución en poco tiempo, para sa organismo vivo son mucho más lentas
de cierto modo el algorithitmo sirve para encontrar la mejor solución, dadas ciertas condiciones. Maayos ang iyong algorithm para sa pagtitiyak sa aking kalagayan, 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.
Final ng Comentario
El ejemplo utilizado es ilustrativo, y es para sa facilitar el uso de la librería. El reto planteado de mejorar la luz con el menor número de LEDS, es simple y hasta trivial, que probablemente se puede solucionar de manera más rápida con otros métodos. Sin embargo, si lo vemos desde el punto de vista de seres vivos, la evolución organisador, utiliza algo como un algoritmo genético para búsquedas no lineales, entonces, algo como optimizar la luz, es un problem que en la naturaliza tiene sentido (me disculpan si me puse espeso!)
Mga Reto
- Buscar un problem de optimización más komplicado con una función de "fitness" más compleja
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (mga pagkaantala ng esos por allí metidos)
- Maglagay ng un robot, para sa resuelva diferentes situaciones
- Estudiar meiosis, para aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (hay libros completeos en el tema)
Inirerekumendang:
Kit Ciencia Y Arte: Cómo Cargar Código Al Palaruan: 4 Mga Hakbang
Kit Ciencia Y Arte: Cómo Cargar Código Al Palaruan: Ac á explicamos como se " sube " el c ó digo. EL c ó digo de cada proyecto est á en cada itinuturo, sin embargo puede descargar todo el c ó digo en el GitHub
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 4 na Hakbang
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): En el mundo de las ciencias de la computaci ó n, saber ordenar listas es como saber escribir. Ito ay una sa pamamagitan ng pagpapatotoo ng isang anak na lalaki para sa isang regular na computadora, kung saan maaari kang magturo ng mga ito sa akin
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: 4 Hakbang
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: Aprender de inteligencia artificial es mucho m á s f á cil de lo que parece. El primer paso es entender el funcionamiento de una de las unidades m á s simples en programaci ó n, que por analog í a con el cerebro humano, es l
Makipag-usap sa Pumili at Artipisyal na Chat sa Intelligence Gamit ang Cleverbot: 14 Mga Hakbang (na may Mga Larawan)
Makipag-usap sa Pumili at Artipisyal na Pakikipag-chat sa Paggamit ng Cleverbot: Dito sinusubukan ko hindi lamang ang utos ng boses kundi pati na rin ang Artipisyal na Pakikipag-chat sa Artipisyal gamit ang Cleverbot. Sa totoo lang ang ideya ay dumating nang matagpuan ang mga bata ay naghalo ng mga kulay sa kahon ng pangkulay kapag kumuha ng kulay mula sa isang kulay hanggang sa pinakamalapit. Ngunit sa wakas ay nagpapahiwatig
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: 4 Hakbang (na may Mga Larawan)
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: El Makey Makey es un dispositivo electr ó nico muy popular en educaci ó n, pues con el se pueden hacer r á pidamente ejercicios de computaci ó n tangible e interacci ó n f í sica con computadoras.El Makey Makey, walang es m