Përmbajtje:
- Hapi 1: Materialet
- Hapi 2: Búsqueda Al Azar
- Hapi 3: Evolucioni Y Përkufizimet
- Hapi 4: El Algoritmo
- Hapi 5: El Código
- Hapi 6: Funksionet dhe Retos
Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:26
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
E thjeshte:
- Circuit Playground (o cualquier Arduino con leds y sensor de luz)
- Bateria
- Kabllo USB
- Algo para generar luz y sombra para pruebas
Hapi 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 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
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.
- 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
- 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
- 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
- Rekombinimi, konsiston në tomas dos cromosomas, escoger un punto de cruzamiento, dhe intercambiar la información entre ambos (ver el diagrama)
- 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
paso a paso
- Crear una población de muchos cromosomas inicializados al azar
- Evaluar cual es el mejor con la función de "fitness"
- Copiar el mejor recombinando con el segundo mejor al resto de la población
- Aplikimi mutación a toda la población
- 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 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:
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: 11 hapa
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: En este Instructable aprenderemos como hacer un dispensador de alimento para suscotas, por përgjithësisht, ose të gjithë njerëzit në një rast siempre he querido hacer un dispensador tengo auto, aacute; un perro y un gato. Por ende no tengo una
Kit Ciencia Y Arte: Cómo Cargar Código Al Shesh lojërash: 4 hapa
Kit Ciencia Y Arte: Cómo Cargar Código Al Shesh lojërash: Ac á sqaroj se si " sube " el c ó digo. EL c ó digo de cada proyecto est á en cada instructable, sin embargo puede descargar todo el c ó digo en el GitHub
Kit Ciencia Y Arte: Ordenando Listas (Renditje në flluska): 4 hapa
Kit Ciencia Y Arte: Ordenando Listas (Renditja e flluskave): Për më tepër, mund të lexoni lista të rregullta të të dhënave, si një përshkrim saber. Es una buena manera de ver como los algoritmos son una manera de hacer las cosas en una computadora, y que la forma directa de hacer algo no es la me
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: 4 Hapa
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 Simple in programaci ó n, que por analog í a con el cerebro humano, es l
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: 4 hapa (me fotografi)
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: El Makey Makey is un dispositivo electr ó nico muy popular en educationaci ó n, pues con el se pueden hacer r á pidamente ejercicios de computaci ó n tangible e interacci ó con computadoras.El Makey Makey, nuk ka m