Orodha ya maudhui:

Kit Ciencia Y Arte: Algoritmo Genético (Vida bandia): 6 Hatua
Kit Ciencia Y Arte: Algoritmo Genético (Vida bandia): 6 Hatua

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida bandia): 6 Hatua

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida bandia): 6 Hatua
Video: Mr. Increible Perturbado por las Matemáticas #mathematics #matematika #humor #memes 2024, Novemba
Anonim
Kit Ciencia Y Arte: Algoritmo Genético (Vida Bandia)
Kit Ciencia Y Arte: Algoritmo Genético (Vida Bandia)

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 of evolución de la biología, y se aplica a un algoritmo en una computadora para resolutionver 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. Acac hosemos un ejemplo sencillo, con el fin de aprender sobre el algoritmo. Usamos el Circuit Uwanja wa michezo (CP) de Adafruit para hacer el ejercicio.

Imaginen el CP que es un ser vivo, y que sebe adaptar a las condiciones cambiantes de luz. El CP, debe buscar la forma más eficiente de prender sus leds, para obtener la meya 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: Haya ni mada kwa wasikilizaji wa AVANZADOS

Hatua ya 1: Materiales

Materiales
Materiales
Materiales
Materiales

Rahisi:

  1. Uwanja wa michezo wa Mzunguko (o cualquier Arduino con leds y sensor de luz)
  2. Bateria
  3. Cable USB
  4. Algo para genar luz y sombra kwa pruebas

Hatua ya 2: Búsqueda Al Azar

Búsqueda Al Azar
Búsqueda Al Azar

Imaginemos un mono, apretando letras en el teclado de una computadora, el mono simplemente presiona las letras al azar. Ni nyongeza ya barua 50 kwa el teclado, cada letra (si el mono presiona de manera independiente cada vez), unaweza kupata uwezekano wa 1/50 = 0.02 ya 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 resolutionverlo. Vamos esto estadísticamente. La probabilidad de que el mono escriba "banano" es entonces la probabilidad conjunta, inahusu:

(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, ni kwa sababu ya uwezekano wa kufanya hivyo kwa mono mono escriba "banano", es 1 en 15 millones… muy poco probable! Dicho de otro modo, es muy poco probe 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 ikiwezekana, pero haiwezekani.

Formalicemos esta wazo un poco. SI (1/50) ^ 6 es la probabilidad de escribir "banano", entonces, 1- (1/50) ^ 6 es la probabilidad de NO escriptirlo. Si un mono intenta n veces, entonces, la probabilidad P de no estrollir la palabra "banano" en n dhamira ya huduma:

P = [1- (1/50) ^ 6] ^ n

Así por ejemplo si intento una vez, P = 1, is 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ás me acerco a P = 0, es decir, ikiwa ni pamoja na infinito de nia, puedo estar seguro de que el mono va a escribir la palabra "banano".

Hakika, hakuna maoni ya watu, ambayo inataja hali ya 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

Hakika 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 fureses a veces pequeñas de ellas. Esa es manera en que el algoritmo genético funciona, tomando ideas del como se genera la variabilidad genética en los seres vivos, na kuunda njia mpya kwa sababu ya hesabu, kwa njia ya mwisho ya suluhisho. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intento de buscar la solución, no sea independiente del intento anterior.

VIDOKEZO: Maelezo ya habari juu ya habari zaidi juu ya mada ya mono infinito

Hatua ya 3: Evolución Y Definiciones

Evolución Y Ufafanuzi
Evolución Y Ufafanuzi
Evolución Y Ufafanuzi
Evolución Y Ufafanuzi
Evolución Y Ufafanuzi
Evolución Y Ufafanuzi

La evolución

Njia mpya za uundaji (AG) ni njia mpya ya idhini ya kukubali suluhisho la shida kama suluhisho la suluhisho. El AG, se basa en tres principios principales de herencia Darwiniana:

  • Herencia: Los hijo reciben las características de sus padres. Kwa maana ya AG ni nini maana ya suluhisho la maoni na maoni ya watu wanaosababishwa na mambo mengine
  • Variación: Debe haber un mecanismo para introducir variedad. en el AG, maana yake ni kwamba kuna uwezekano wa kujumlika kwa kila aina ya hali ya juu kwa kila kitu kwa soluciones ya nuevas
  • Chagua: Hay un mecanismo en la cual se seleccionan los mejores. Katika EL AG, hay una función de "fitness" kwa ruhusa ya kuamua uamuzi wa kawaida zaidi.

Hakuna mtu anayeweza kupata mita moja kwa moja kwa sababu ya kufurahisha kwa mafundisho ya kila siku, ambayo inaweza kuwafikia watu wengine kwa ufafanuzi wa Algoritmo Genético.

Ufafanuzi

Para poder facilitar explicar el algoritmo, debemos definir algunas cosas antes. Maana ya ufafanuzi wa watoto wanaosoma kwa njia ya ufafanuzi wa maelezo ya maabara ya msingi, ambayo inawezeshwa kwa kutekelezwa kwa kusoma na kuandika tena.

  1. Una 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 photo, tenemos 10 LEDS que pueden estar encendidos "1" o apagados "0", entonces tenemos un arreglo con 10 elementos 0 y 1 apagado. y 0010011010, que los leds 2, 5, 6 na 8 están encendidos
  2. Una Población un un conjunto de posibles combinaciones de leds encendidos (ver la imagen de población), maeneo mengine yanatofautiana. Se le llama un Cromosoma a un elemento en la población. Entonces un cromosoma, hakuna mtu anayeweza kuwakilisha vizuizi vya LEDS na programu za CP
  3. Una mutación, es cambiar al azar uno o varios LEDS, como se muestra en la foto, picha ya arbitrariamente ya posición 5 cambia de apagado a encendido
  4. La recombinación, linajumuisha tomos dos cromosomas, ambayo inaweza kutumika kwa njia ya cruzamiento, na kuingiliana kati ya habari kwa kila kitu (ver el diagrama)
  5. Una ujuzi wa kufanya mazoezi ya mwili, unastahili uhakiki wa hali ya juu ya utaftaji wa huduma ya mtoto wako kwa sababu hii itatolewa kwa watu wengine kwa sababu ya uchaguzi. Kwa sababu hii, tafadhali tumia huduma kwa siku ya uzinduzi wa visiwa vya leds

Hatua ya 4: El Algoritmo

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

paso paso

  1. Crear una población de muchos cromosomas inicializados al azar
  2. Tathmini ya kila siku kuhusu mpango wa kufurahisha wa "usawa wa mwili"
  3. Copiar el mejor recombinando con el segundo mejor al resto de la población
  4. Aplicar mutación a toda la población
  5. Rudisha sehemu ya 2

Ejemplo

Como expliqué en las definiciones, una tira (cromosoma) 1000101010, inawakilisha vidokezo vya "1" y apagados "0", en el uwanja wa uwanja wa michezo. Vamos a definir nuestra función de "usawa" como:

usawa = (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 inahusu majadiliano ya watu wanaosimamia hali ya afya na utaftaji wa mwili, ikiwa ni pamoja na kupata maoni. Noten como en el ejemplo tenemos:

Usawa wa 0011100000 = 98.5

Usawa wa 1011100001 = 102.5

Usawa wa 1010101011 = 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 Assessamos su fitness na así continamos. Njia moja ya kujulikana kuwa una solución óptima, aunque sigue probando, se mantiene haste que haya cambios en el ambiente.

Hatua ya 5: El Código

El Código
El Código
El Código
El Código
El Código
El Código

El código lo pueden descargar en mi GitHub. Hakuna mtu anayepata maelezo juu ya "libomosome" ya "," sino nada más el algoritmo genético, como es utilizado en el código kuu.

Código mkuu

El siguiente código crea una población de 20 cromosomas:

#fafanua N 20

idadi ya watu (N);

El objeto es idadi ya watu y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. Kuweka mipangilio, 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:

nakalacopy Krismasi (2);

Luego aplicamos mutación con una probabilidad baja (0.05), na iniciando del cromosoma 1 kwa mantener el mejor que hemos obtenido en la población (el cromosoma 0 es el mejor)

pop.mutateChromosomes (0.05, 1);

Utathmini ni maoni ya wataalam, ambayo hufafanua zaidi

tathmini ();

Luego ordenamos los cromosomas de meya a fitness menor (usando bubble sort), esto facilita el proceso de recombinación, aina ();

Allí está todo. Ahora veamos la función de tathmini ya umuhimu

Función de tathmini

El codigo ya kutathmini () es:

tathmini tupu () {

kwa (int i = 0; i <pop.n; i ++) {setPixels (i); // inatoa wakati wa LED kuwasha kuchelewesha (100); usawa (i); }}

Je! Unafikiri nini kuhusu kazi hii?

utupu wa usawa (int a) {

pop.fitness [a] = kuelea 0.5 * (CircuitPlayground.lightSensor ()) - 0.5 * kuelea (pop.countBits (a)); }

Almacenamos el valor de fitness de cada cromosoma en pop.fitness

Hatua ya 6: Funcionando Y Retos

Funcionando

Katika video hii unaweza kujizoea kufanya mabadiliko kwa njia tofauti za uzinduzi. Siempre encuentra una buena solución. Maandiko haya ni ya kufundishwa, kwa sababu ya masomo, maumbile ya watoto na maoni ya watoto, kila kitu kinatokana na maoni yao.

De alguna marea al dejar funcionando el CP con el algoritmo, parece casi como un ser vivo explorando las condiciones y evolucionando para mejorar. Hili ni jambo linalowezekana kwa sababu ya mambo mengi ambayo itafanywa kwa siku moja kwa kila siku, kwa ajili ya chombo cha watoto.

de cierto modo el algoritmo sirve for encontrar la mejor solución, dadas ciertas condiciones. Je! Unatafuta njia mpya ya kufanya uamuzi kwa sababu ya hali hii, na utafute maelezo zaidi juu ya CP, kwa sababu hiyo utapata maoni yako juu ya mpango huo wa uchunguzi.

Ili kuona kama utaftaji wa kazi, unaweza kupata njia mpya za kupimia na kufanya gharama kubwa uweze kupata nafasi.

Fainali ya Comentario

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 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 si mimi puse espeso!)

Retos

  • Buscar un probema de optimización más complicado con una función de "fitness" zaidi
  • Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos ucheleweshaji wa mambo yote)
  • Aplicar a un robot, kwa sababu ni resuelva diferentes situaciones
  • Estudiar meiosis, para aprender sobre mecanismos de evolución
  • Estudiar a fondo los algoritmos genéticos (hay libros completos en el mandhari)

Ilipendekeza: