Indholdsfortegnelse:
- Trin 1: Materialer
- Trin 2: Búsqueda Al Azar
- Trin 3: Evolución Y Definiciones
- Trin 4: El Algoritmo
- Trin 5: El Código
- Trin 6: Funcionando Y Retos
Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (en mi opinionión). Grundlæggende om en idé til udviklingen af biologien, og vi kan bruge en algoritme til en computer, der løser et problem.
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 Playground (CP) de Adafruit para hacer el ejercicio.
Forestil dig, at CP er en ser vivo, og du kan se, at den kan tilpasses til en anden betingelse. 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
Trin 1: Materialer
Enkel:
- Circuit Legeplads (o cualquier Arduino con leds y sensor de luz)
- Baterías
- Kabel USB
- Algo para generar luz y sombra para pruebas
Trin 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
Esto es igual a 1 sobre 15 625 000 000, es decir la probabilidad de que el mono escriba "banano", es 1 en 15 millones… muy poco sandsynlig! Dicho de otro modo, es muy poco sandsynlig 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 sandsynlig, men ingen umulig.
Formalicemos esta idé 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 intentionos sería:
P = [1- (1/50)^ 6]^ n
Así por ejemplo si intentiono una vez, P = 1, si intentiono un millón de veces, P = 0.999936, men som 10 millioner kroner, P = 0.53, og du kan også se en større mængde end P = 0, con un numero infinito de intentionos, 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 constructiva, es decir, busca de forma aleatoria pero manteniendo una buena solución and haciendo modificaciones a veces fuertes a veces pequeñas de ellas. Esa es la manera en que el algoritmo genético funciona, tomando ideas del como se genera la variabilidad genética en los seres vivos, e inventando un algoritmo para hacerlo and computadora, con el fin de solucionar un problema. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intentiono de buscar la solución, no sea Independiente del intentiono anterior.
BEMÆRK: Oplysninger om oplysninger om teorema del mono infinito
Trin 3: Evolución Y Definiciones
La evolución
Un algoritmo genético (AG) er en algoritme, der giver mulighed for at løse et problem med opløsningen. 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
- Variation: Debe haber un mecanismo para introducir variadad. en el AG, significa que se debe agregar variabilidad de alguna manera para encontrar nuevas soluciones
- Valgmuligheder: Der kan vælges mere end én gang. 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 evolución de seres vivos, sino que quiero entrar de una vez a la explicación del Algoritmo Genético.
Definitioner
Til poder til at forklare el algoritmo, debemos definir algunas cosas antes. Estas definiciones son comunes and cualquier explicación de algoritmo genético que encuentren, and les facilitará entender la literatura and 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. Som et billede og et billede, kan der tages 10 lysdioder, der kan indeholde "1" eller "0", og der kan indlæses 10 elementer 0 år 1. Indgangene 101000000 betyder, at der kan tabes 0 år og 2 kan endres 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 and 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, consiste en tomas dos cromosomas, escoger un punto de cruzamiento, and intercambiar la información entre ambos (ver el diagrama)
- Evaluering af fitness eller fitness er et kriterium, der tillader bedømmelse, da vi kan bruge en son til en cromosomas de la población til valg af flere. En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos
Trin 4: El Algoritmo
paso a paso
- Crear una población de muchos cromosomas inicializados al azar
- Evaluar cual es el mejor con la función de "fitness"
- Kopiar el mejor recombinando con el segundo mejor al resto de la población
- Anbefal mutación a toda la población
- Repertir a partir de 2
Eksempel
Como expliqué en las definiciones, una tira (cromosoma) 1000101010, representa los leds encendidos "1" y apagados "0", en el -legeplads. 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. Noter como en el ejemplo tenemos:
0011100000 fitness = 98,5
1011100001 fitness = 102,5
1010101011 fitness = 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 evaluamos su fitness y así continuamos. A medida que llega a una solución óptima, aunque sigue probando, se mantiene hasta que haya cambios en el ambiente.
Trin 5: El Código
El código lo pueden download af mi GitHub. No 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.
Código rektor
El siguiente código crea una población de 20 cromosomas:
#definer N 20
populationspop (N);
El objeto es population y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. En el setup, agregamos la línea:
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);
Du kan evaluere funktionen til evaluering, som jeg kan forklare mere
vurdere();
Luego ordenamos los cromosomas de mayor a menor fitness (usando bubble sort), esto facilita el proceso de recombinación, pop.sort ();
Allí está todo. Ahora veamos la función de evaluación que es importante
Evalueringsfunktion
El codigo de evalu () es:
void evaluere () {
for (int i = 0; i <pop.n; i ++) {setPixels (i); // giver LED tid til at tænde forsinkelse (100); fitness (i); }}
Vean que simplemente prendemos los leds correspondientes al cromosoma (eso es lo que hace setPixels ()), and evaluamos su fitness, con la función, ugyldig 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
Trin 6: Funcionando Y Retos
Funcionando
En video kan bruges til at tilpasse apokoen til forskellige betingelser. Siempre encuentra una buena solución. Det er en god idé at lære, at vi kan bruge algoritme til at genstande et tema i computing, men det er også vigtigt, at jeg kan bruge det til at blive emokioneret.
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. Du kan finde en algoritme, der kan bestemme mere eller mere i en situation, hvor du kan definere en CP, men det kan også bruges til at oprette en algoritme.
Da de kan ændres meget, kan vi også bruge en algoritme til at blive ustabil og kan betale sig for en optimal situation.
Comentario Final
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 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 evolutionució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 si me puse espeso!)
Retoer
- Bus er et problem med optimering af komplikationer med en "fitness" -kompleks
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos forsinkelser por allí metidos)
- Ligner en robot, for at resuelva diferentes situaciones
- Estudiar meiosis, para aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (hay libros completos en el theme)
Anbefalede:
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: 11 trin
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: En este Instructable aprenderemos como hacer un dispensador de alimento para sus mascotas, por lo general, o al menos en mi caso siempre he querido hacer un dispensador autom &aacgo; tico, sinco un perro y un gato. For ende no tengo una
Kit Ciencia Y Arte: Cómo Cargar Código Al Legeplads: 4 trin
Kit Ciencia Y Art: Cómo Cargar Código Al Legeplads: Ac á eksplicamos como se " sube " el c ó digo. EL c ó digo de cada proyecto est á da cada instructable, sin embargo puede download todo el c ó digo en el GitHub
Kit Ciencia Y Arte: Ordenando Listas (Boblesortering): 4 trin
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. Der er en måde, hvorpå algoritmen kan bruges, og en computer kan ikke bruges til computere, men jeg kan også forvente direkte
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: 4 trin
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
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: 4 trin (med billeder)
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: El Makey Makey er un dispositivo electr ó nico muy popular en educaci ó n, pues con el se pload hacer r á pidamente ejercicios de computaci ó con computadoras.El Makey Makey, no es m