INHOUDSOPGAWE:
- Stap 1: materiaal
- Stap 2: Búsqueda Al Azar
- Stap 3: Evolusie en definisies
- Stap 4: El Algoritmo
- Stap 5: El Código
- Stap 6: Funcionando Y Retos
Video: Kit Ciencia Y Art: Algoritmo Genético (Vida Artificial): 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (en my opinión). Die basiese idee van die evolusie van die biologie en 'n algoritme vir 'n oplossing vir 'n probleem.
Die algoritmo genetico es parte de lo que se conoce como algoritmos evolutivos en el mundo de las ciencias de la computación. Ons kan ook 'n uitstekende eienskap hê, met 'n algemene funksie. Usamos el Circuit Playground (CP) van Adafruit vir die eienaar van die woonstel.
Stel u voor dat die CP 'n diens kan wees, en u kan dit ook aanpas by die toestand van die kamer. Die CP, die bus kan die belangrikste moontlike voordele vir die burgemeester hê, en die burgemeester kan dit moontlik maak om die sensor op te los. Para lograrlo además debe hacerlo encendiendo la menor cantidad de leds posibles. Entons maximize la luz, al mismo tiempo que minimaliza la cantidad de leds. Ons kan ook 'n algoritme genetika gebruik.
ADVERTENCIA: Este es un tema para estudiantes AVANZADOS
Stap 1: materiaal
Eenvoudig:
- Kringloopbaan (o cualquier Arduino con leds y sensor de luz)
- Baterías
- Kabel USB
- Algo para generar luz y sombra para pruebas
Stap 2: Búsqueda Al Azar
Voorbeelde van mono, lettertipe en tegnologie van een rekenaar, ensovoorts. Ons kan 50 losse eenhede in ons huis hê, met 'n kans van 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
Daar is ongeveer 1 6 15 000 000 000, dit is waarskynlik dat ons 'banano' kan beskryf, dit is 1 en 15 miljoen … waarskynlik 'n kans! 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". begin poco waarskynlik, maar nie onmoontlik nie.
Formalisemos esta idee un poco. SI (1/50)^6 es la probabilidad de escribir "banano", entonces, 1- (1/50)^6 es la probabilidad de NO escribirlo. Ons het 'n enkele intese n ontlasting, entonces, die waarskynlikheid dat ons nie 'n 'banano' kan skryf nie;
P = [1- (1/50)^ 6]^ n
As ons eenvoudig kan bedoel, P = 1, as bedoeling van 'n millon de veces, P = 0.999936, maar 10 miljoen, P = 0.53, met 'n aantal infinito de intentionos, kan u 'n 'banano' beskryf.
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 fora efectiva de buscar una solución
Dit is 'n natuurlike konstruksie, maar ook 'n konstruksie, 'n besluit, 'n formele aleatoria, 'n unieke oplossing en 'n haciendo modificaciones of veces fuertes a veces pequeñas de ellas. Ons kan ook 'n algoritmo -genetiese funksie gebruik, sowel as 'n verskeidenheid idees vir verskillende veranderings en 'n algoritme vir 'n rekenaar en 'n probleemoplossing. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intento de buscar la solución, no sea Independiente del intentiono anterior.
OPMERKING: Inligtingsinformasie vir eenmalige inligting
Stap 3: Evolusie en definisies
La evolución
'N Algoritmo genético (AG) is 'n algoritme wat 'n oplossing vir 'n probleem kan oplos. El AG, se basa en tres principios principales of herencia Darwiniana:
- Voorbeeld: Los hijo reciben las características de sus padres. En el AG significa que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
- Variasie: Ons het 'n ander manier om dit te verander. en el AG, significa que se debe agregar variabilidad de alguna manera para encontrar nuevas soluciones
- Keuse: Ons kan 'n groot keuse kies. En el AG, die funksie van 'fiksheid' kan 'n deurslaggewende oplossing bied
Ek kan nie meer as 'n meter die funksies van die evolusie van ons lewens verander nie.
Definisies
Vir die maklikste ontleding van die algoritme, kan ons 'n volledige definisie van al die antwoorde gee. Estas definiciones son comunes and cualquier explicación de algoritmo genético que encuentren, and les facilitará entender la literatura and las redes.
- Een van die 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. Ons kan ook 'n foto, met 10 LED's, bevat "1" of "0", met 10 elemente en 1 elemente wat ingeskryf kan word. apagados. y 0010011010, que los leds 2, 5, 6 y 8 están encendidos
- Una Población is un conjunto of possibles combinaciones of leds encendidos (ver la imagen de población). Kyk na 'n element van 'n element in die poblasie. Entonces for 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 and encendido
- La rekombinasie, bestaande uit tomas van kromosome, e -pos en die kruisverwysings, en onder meer die gegewens (in die diagram)
- U kan ook 'n geskikte evaluering van fiksheid evalueer. En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos
Stap 4: El Algoritmo
paso a paso
- Dit is 'n unieke bron van kromosome wat in die amptelike gebied gebruik kan word
- Evaluar cual es el mejor con la función de "fitness"
- Kopiëring van die grootste rekombinasie met die belangrikste resensies
- Lees meer oor mutasie
- Herhaal deel 2
Voorbeeld
Ons het 'n uiteensetting van een of meer definisies (cromosoma) 1000101010, wat 'n 1 "en 'n" 0 "speelveld op die baan speel. Ons het 'n definitiewe nuutste funksie van "fiksheid":
fiksheid = (lesing van die lus) x 0.5 - (nommer van die leds) x 0.5
Ons kan ook 'n aantal nuwe loods vir die eerste keer gebruik, maar ook 'n lys met meervoudige bedrywighede, ens.
Ahora begin met encendemos los leds correspondentses a cada cromosoma y evaluamos su fitness, como se muestra en la figura. Opmerkings oor hoe om te werk:
0011100000 fiksheid = 98,5
1011100001 fiksheid = 102,5
1010101011 fiksheid = 102
Die fiksheid kan ook altesaam 102,5 en 102 jaar oud, seleksie, en rekombinasie en mutasie in die vorm van 'n prentjie gebruik word.
1011100001
0011101011
1010100011
Esta nueva población nuevamente evaluamos su fitness and así continuamos. Ons kan nie eers 'n oplossing soek nie, maar ook 'n goeie idee om 'n kamer te hê.
Stap 5: El Código
Ek kan dit op GitHub aflaai. U kan nie meer die besonderhede van die biblioteek "cromosome.h" beskryf nie, maar dit kan ook 'n algemene algoritme gebruik word, sowel as die gebruik van 'n hoofhoof.
Skoolhoof
Die volgende creadigo crea una población de 20 kromosome:
#definieer N 20
bevolkingspop (N);
Die populasie en die populasie van 'n pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. Een opstelling, 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);
Ons kan ook 'n mutasie met 'n waarskynlikheid hê (0,05), 'n inisieer van 'n cromosoma 1 vir 'n groot aantal hemos obtenido en la población (cromosoma 0 es el mejor)
pop.mutateChromosomes (0.05, 1);
U kan die funksies van die beoordelaars evalueer
evalueer ();
Luego ordenamos los cromosomas de mayor a menor fitness (usando bubble sort), esto facilita el proceso de recombinación, pop.sort ();
Allí está todo. Dit is ook 'n belangrike funksie om te evalueer
Evalueringsfunksie
Evaluering (e):
leegte evalueer () {
vir (int i = 0; i <pop.n; i ++) {setPixels (i); // gee LED tyd om vertraging aan te skakel (100); fiksheid (i); }}
Vean que simplemente prendemos los leds correspondentses al cromosoma (eso es lo que hace setPixels ()), and evaluamos su fitness, con la función, leegte fiksheid (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
Stap 6: Funcionando Y Retos
Funcionando
Die video kan 'n ander aanpassing van die toestand moontlik maak. Siempre encuentra una buena solución. Dit is 'n goeie idee om te leer, maar ons kan ook 'n algemene algoritme vir 'n tema en 'n berekening gebruik, maar dit is ook belangrik om dit te doen.
Die alguna marea al dejar funcionando el CP with 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
die cierto modo el algoritmo sirve para encontrar la mejor solución, dadas ciertas condiciones. Ons kan die algoritme vir 'n spesifieke situasie bepaal, sowel as die definisie van 'n CP, maar ons kan ook nie die algoritme vir ons ondersoek nie.
As ons baie van die mutasies kan verwag, kan ons ook 'n onaangename situasie of 'n optimale situasie hê.
Komentariefinaal
Ons kan die illustrasies gebruik, maar dit is ook vir ons makliker om te gebruik. Ons kan meer as drie LED's gebruik, maar dit is eenvoudig en maklik om op te los. As ons 'n embargo kan gebruik, kan ons ook die evolusie van die organisasies gebruik, sowel as 'n algoritme genetico para búsquedas no lineales, entonces, of optimisar la luz, as 'n probleem wat ek natuurlik kan verander (me disculpan ek wil dit graag doen!)
Retos
- Bus kan 'n probleem met die optimalisering van die funksie van die "fiksheid" kompliseer
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos vertragings por allí metidos)
- Aplicar a robot, para que resuelva diferentes situaciones
- Estudiar meiose, para aprender sobre mecanismos de evolución
- Studie van 'n liefdesalgoritmos genetika
Aanbeveel:
Kit Ciencia Y Art: Cómo Cargar Código Al Playground: 4 stappe
Kit Ciencia Y Art: Cómo Cargar Código Al Speelplek: Ac á verduidelik hoe " sube " el c ó digo. EL c ó digo de cada proyecto est á en cada instructable, sin embargo puede download todo el c ó digo en el GitHub
LED Pixel Art Frame met Retro Arcade Art, App Controlled: 7 stappe (met foto's)
LED Pixel Art Frame Met Retro Arcade Art, App Controlled: MAAK 'N APP CONTROLLED LED ART FRAME MET 1024 LEDs THAT DISPLAYS RETRO 80s ARCADE GAME ART PartsPIXEL Makers Kit - $ 59Adafruit 32x32 P4 LED Matrix - $ 49.9512x20 Inch Acrylic Sheet, 1/8 " duim dik - Deursigtige ligte rook van kraanplastiek
Kit Ciencia Y Art: Ordenando Listas (Bubble Sort): 4 stappe
Kit Ciencia Y Art: Ordenando Listas (Bubble Sort): En el mundo de las ciencias de la computaci ó n, saber ordenar listas es como saber escribir. Ons kan die algoritme vir een van die belangrikste aspekte van 'n rekenaar gebruik, maar ek kan ook nie 'n rekenaar gebruik nie
Kit Ciencia Y Art: Máquinas Que Aprenden Sonido: 4 stappe
Kit Ciencia Y Art: Máquinas Que Aprenden Sonido: Aprender de inteligencia artificial es mucho m á s f á cil de lo que parece. Die 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 Art: Un Makey Makey a Otro Nivel: 4 stappe (met foto's)
Kit Ciencia Y Art: Un Makey Makey a Otro Nivel: El Makey Makey is un dispositivo electro ó nico muy popular en educaci ó n, pues con el se pload hacer r á pidamente ejercicios de computaci ó met computadoras.El Makey Makey, no es m