INHOUDSOPGAWE:

Kit Ciencia Y Art: Algoritmo Genético (Vida Artificial): 6 stappe
Kit Ciencia Y Art: Algoritmo Genético (Vida Artificial): 6 stappe

Video: Kit Ciencia Y Art: Algoritmo Genético (Vida Artificial): 6 stappe

Video: Kit Ciencia Y Art: Algoritmo Genético (Vida Artificial): 6 stappe
Video: Daniel Schmachtenberger: ¿Nos destruirá la tecnología? 2024, November
Anonim
Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial)
Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial)

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

Materiale
Materiale
Materiale
Materiale

Eenvoudig:

  1. Kringloopbaan (o cualquier Arduino con leds y sensor de luz)
  2. Baterías
  3. Kabel USB
  4. Algo para generar luz y sombra para pruebas

Stap 2: Búsqueda Al Azar

Búsqueda Al Azar
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

Evolusie en definisies
Evolusie en definisies
Evolusie en definisies
Evolusie en definisies
Evolusie en definisies
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.

  1. 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
  2. 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
  3. 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
  4. La rekombinasie, bestaande uit tomas van kromosome, e -pos en die kruisverwysings, en onder meer die gegewens (in die diagram)
  5. 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

El Algoritmo
El Algoritmo
El Algoritmo
El Algoritmo
El Algoritmo
El Algoritmo

paso a paso

  1. Dit is 'n unieke bron van kromosome wat in die amptelike gebied gebruik kan word
  2. Evaluar cual es el mejor con la función de "fitness"
  3. Kopiëring van die grootste rekombinasie met die belangrikste resensies
  4. Lees meer oor mutasie
  5. 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

El Código
El Código
El Código
El Código
El Código
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: