Përmbajtje:

Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 hapa
Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 hapa

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 hapa

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 hapa
Video: Palestra: Inteligência artificial na identificação de distintas trajetórias dos transtornos mentais 2024, Nëntor
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 opinión mi). Básicamente se toma la idea de evolución de la biología, ju mund të aplikoni një algoritmo un una compatadora për zgjidhjen e një problemi.

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) nga Adafruit para hacer el ejercicio.

Imaginen el CP që nuk është në shërbim, ju duhet të përshtateni me kushtet e dëshiruara të luzit. Për shembull, për të përcaktuar efektivitetin e përdorimit të tyre, mund të përdorni një kryetar të bashkisë në mënyrë që të mund të zgjidhni një sensor të luzit. 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

Hapi 1: Materialet

Materialet
Materialet
Materialet
Materialet

E thjeshte:

  1. Circuit Playground (o cualquier Arduino con leds y sensor de luz)
  2. Bateria
  3. Kabllo USB
  4. Algo para generar luz y sombra para pruebas

Hapi 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. Si të thuash 50 letra të tjera në përvojën tuaj, ju mund të lexoni (si një mono presiona nga manera e pavarur në çdo rast), ju ndoshta nuk do të keni mundësinë e 1/50 = 0.02 nga 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. Ka të ngjarë që të përshkruhet "banano" që lidhet me një probabilidad lidhje, kjo është:

(1/50) x (1/50) x (1/50) x (1/50) x (1/50) x (1/50) = (1/50)^6

Për më tepër, 1 1 15 625 000 000, ka të ngjarë të jetë e mundur të përshkruani një mono që përshkruan "banane", është 1 dhe 15 milione… shumë e mundshme! Dicho de otro modo, është shumë e mundshme që ju mund të përdorni vetëm një përshkrim të palabra "banano" që përshkruan përvojën në azar, ah, por si ju mund të shihni 15 milione de monos escribiendo, është e mundur që të mos përdorni një përshkrim la palabra "banano". entonces poco e mundshme, por jo e pamundur.

Formalicemos esta ide un poco. SI (1/50)^6 es probabilidad de escribir "banano", entonces, 1- (1/50)^6 es la probabilidad de NO escribirlo. Si un mono synim n veces, entonces, la probabilidad P de no escribir la palabra "banano" en n qëllimos sería:

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

Así por ejemplo si qëllimo una vez, P = 1, si qëllim në milon de veces, P = 0.999936, për para 10 mil millones, P = 0.53, y mientras más grande se n, más me acerco a P = 0, es decir, con un numero infinito de purposeos, puedo estar seguro de que el mono va a escribir la palabra "banano".

Lo que sí, no tenemos tiempo infinito, është e mundur të vendoset për një udhëtim në një azar, por, 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 y haciendo modificaciones a veces fuertes a veces pequeñas de ellas. Esa es la manera en que el algoritmo genético funciona, tomando ides del como se genera la variabilidad genética en los seres vivos, dhe inventando un algoritmo para hacerlo en computadora, con el fin de solucionar un problema. Entonces aunque contiene elementos de azar, también tiene memoria y ace que synon të drejtohesh për të zgjidhur zgjidhjen, pa det të pavarur nga qëllimi i mëparshëm.

SHANIM: Informacioni i shpejtë i teorema del mono infinito

Hapi 3: Evolucioni Y Përkufizimet

Evolucion Y Përkufizimet
Evolucion Y Përkufizimet
Evolucion Y Përkufizimet
Evolucion Y Përkufizimet
Evolucion Y Përkufizimet
Evolucion Y Përkufizimet

La evolucionar

Un algoritmo genético (AG) është un algoritmo që të lejojë të zgjidhë një problem të difíciles të zgjidhësit. El AG, se basa en tres principios principales de herencia Darwiniana:

  • Herencia: Los hijo reciben las características de sus padres. En el AG signa que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
  • Variacioni: Debe haber un mecanismo para introducir variedad. en el AG, signa que se debe agregar variabilidad de alguna manera para encontrar nuevas soluciones
  • Përzgjedhja: Hay un mecanismo en la cual se seleccionan los mejores. 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, si dhe quiero entrar nga una vez a la splicación del Algoritmo Genético.

Përkufizimet

Për të lehtësuar sqarimin e algoritmo, debemos definir algunas cosas antes. Asshtë e mundur që të kuptohet se si shpjegohen algoritmo gjenetike që janë të mundshme, si lehtësime të literaturës dhe redesimeve.

  1. Uno de los primeros pasos është një "kodifikim" i problemit, kjo është një çështje që mund të përcaktohet nga përfaqësuesit e një problemi për poder trabajarlo në el CP. Acá lo hacemos de manera sencilla. Për të parë një foto, vetëm 10 LEDS që do të vlerësohen me një rritje "1" ose apagados "0", entonces tenemos un arreglo con 10 elementos 0 y 1. Así entonces 101000000 signa que los leds 0 y 2 están encendidos, y el resto apagados. y 0010011010, në los leds 2, 5, 6 dhe 8 están encendidos
  2. Una Población es un conjunto de posibles combinaciones de leds encendidos (ver la imagen de población), është e mundur të shërbejë në iguales ose diferentes. Se le llama un Cromosoma a un elemento en la población. Zgjidhet nga një kromozomë, nuk ka asnjë përfaqësim të vetëm të LEDs që rriten dhe apagados del CP
  3. Una mutación, es cambiar al azar uno o varios LEDS, ju mund të gjeni një fotografi në foto, të vendosni arbitrazhin në pozicionin 5 cambia de apagado a encendido
  4. Rekombinimi, konsiston në tomas dos cromosomas, escoger un punto de cruzamiento, dhe intercambiar la información entre ambos (ver el diagrama)
  5. Funksionimi i vlerësimit të fitnesit, është një kriter për të lejuar vlerësimin e tan tan buenos i cili mund të përdoret për të zgjedhur një sëmundje të veçantë për një përzgjedhje të madhe. En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos

Hapi 4: El Algoritmo

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

paso a paso

  1. Crear una población de muchos cromosomas inicializados al azar
  2. Evaluar cual es el mejor con la función de "fitness"
  3. Copiar el mejor recombinando con el segundo mejor al resto de la población
  4. Aplikimi mutación a toda la población
  5. Repertironi një pjesë 2

Ejemplo

Como expliqué en las definiciones, una tira (cromosoma) 1000101010, përfaqëson los leds encendidos "1" dhe apagados "0", në shesh lojërash në qark. Vamos a definit nuestra función de "fitness" como:

palestër = (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 ledsrespondentes a cada cromosoma y vlerëson si në palestër, si në muestra en la figura. Ju lutemi vini re se si të përdorni të dhënat tuaja:

0011100000 palestër = 98.5

1011100001 palestër = 102.5

1010101011 palestër = 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 terminal con una nueva población, 1011100001

0011101011

1010100011

Vlerësimi i vazhdueshëm i vlerësimit të fitnesit tuaj si vazhdimësi. Një medida që kërkon një zgjidhje una solución, aunque sigue probando, se mantiene hasta que haya cambios en el ambiente.

Hapi 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 në mi GitHub. Asnjë udhëtim i qartë në detalles de la librería "cromosome.h", në gjuhën e mëparshme, mund të përdoret nga drejtori kryesor.

Código principal

El siguiente código crea una población në 20 kromozoma:

#përcakto N 20

pop popullata (N);

El objeto es popullsia y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosoma, inicializados con todos ceros. En el setup, agregamos la línea:

pop.mutateKromozomet (0.5, 0);

Para cambiar aleatoriamente cada cromosoma con una probabilidad në 0.5, mund të përdorni një cromosoma 0. Në el loop tenemos el algortimo, primero hacemos crossover:

pop.copyCrossover (2);

Luego aplicamos mutación con una probabilidad baja (0,05), dhe në fillim të kromës 1 para mantener el mejor que hemos obtenido en la población (el cromosoma 0 es el mejor)

pop.mutateKromozomet (0.05, 1);

Y vlerësimet në funksionimin e vlerësimit, që shpjegojnë më shumë abajo

vlerësoni ();

Luego ordenamos los cromosomas de kryetar i një palestre menor (përdorimi i llojit të flluskave), lehtësimi i procesit të rekombinimit, pop.sort ();

Allí está todo. Ahora veamos la función de vlerësimi që është e rëndësishme

Funksioni i vlerësimit

El codigo de vlerësoni () es:

void vlerëso () {

për (int i = 0; i <pop.n; i ++) {setPixels (i); // i jep LED kohë për të ndezur vonesën (100); palestër (i); }}

Vean que simplemente prendemos los leds korrespondentes al cromosoma (kjo është ajo që ka vendosurPixels ()), y vlerësuar në palestër, con la función, palestër e pavlefshme (int a) {

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

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

Hapi 6: Funksionet dhe Retos

Funcionando

Për një video që ju përshtateni me përshtatjen e një ndryshimi të kushteve të luzit. Siempre encuentra una buena solución. Si një entender i arsyeshëm, ju jeni të lumtur, los algoritmos genéticos son un tema difícil en computación, pero eso es lo que lo hace más emocionante.

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. Se puede correr el algoritmos para përcaktimit që do të përcaktohet në vendndodhjen tuaj, do të thotë që do të përcaktoni të dhënat tuaja në CP, por kjo do të thotë që ju do të arrini të kuptoni se si të arrini një eksplorim.

Siç është thënë për mutaciones, kjo është ajo që mund të them se është e pangrënshme dhe mund të zgjedhë një mundësi më të mirë.

Komentari Final

Përdorimi i tij është ilustrativo, ju jeni lehtësues i përdorimit të librería. El reto planteado de mejorar la luz con el menor número de LEDS, është e thjeshtë dhe e parëndësishme, që ka të ngjarë të ketë zgjidhje solucionar nga manera më së shumti me metoda të tjera. Sin embargo, si një vemos desde el punto de vista de seres vivos, la evolucion organizatë, duke përdorur algo como un algoritmo genético para búsquedas no lineales, entonces, algo como optimizar la luz, is un problema que en la naturaliza tiene sendido (me disculpan si me puse espeso!)

Retos

  • Buscar un problema de optimización más complexado un una función de "fitness" más complete
  • Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (kjo vonon për të gjitha metidos)
  • Aplikoni një robot un, para que resuelva diferentes situaciones
  • Meioza Estudiare, para aprender sobre mecanismos de evolución
  • Estudiar a fondo los algoritmos genéticos (hay libros completos en el tema)

Recommended: