สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: บุสเกดา อัล อาซาร์
- ขั้นตอนที่ 3: Evolución Y Definiciones
- ขั้นตอนที่ 4: El Algoritmo
- ขั้นตอนที่ 5: El Código
- ขั้นตอนที่ 6: Funcionando Y Retos
วีดีโอ: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (ความคิดเห็น) พื้นฐาน se toma la idea de evolución de la biología, y se aplica a un algoritmo en una computadora para dissolver un problems.
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) ของ Adafruit สำหรับ hacer el ejercicio
Imaginen el CP que es un serv vivo, y que se debe adaptar a las condiciones cambiantes de luz El CP, debe buscar la forma más eficiente de pender sus leds, para obtener la mayor cantidad de luz posible Según su เซ็นเซอร์เดอลูซ Para lograrlo además debe hacerlo encendiendo la menor cantidad de leds posibles. เป็นไปได้ Entonces maximiza la luz, อัล 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. โฆษณา
ขั้นตอนที่ 1: วัสดุ
เรียบง่าย:
- Circuit Playground (หรือ Arduino con leds y sensor de luz)
- Baterías
- สาย USB
- Algo para ทั่วไป luz y sombra para pruebas
ขั้นตอนที่ 2: บุสเกดา อัล อาซาร์
Imaginemos un mono, apretando letras en el teclado de una computadora, el mono simplemente presiona las letras al azar Si hay unas 50 letras en el teclado, cada letra (si el mono presiona de manera independiente cada vez), tiene una probabilidad de 1/50 = 0.02 เดอเซอร์ 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 แก้ไข Vamos esto estadísticamente. ลา probabilidad de que el mono escriba "banano" es entances 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
Esto es igual a 1 sobre 15 625 000 000, es decir la probabilidad de que el mono escriba "banano", es 1 en 15 millones… เป็นไปได้! 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 ล้านเดอโมโน escribiendo, es posible que uno de ellos esbanano la palabra " entences poco น่าจะเป็น pero ไม่เป็นไปไม่ได้
แนวคิดของ Formalicemos esta un poco SI (1/50)^6 es la probabilidad de escribir "banano", entences, 1- (1/50)^6 es la probabilidad de NO escribirlo. Si un mono Intenta n veces, entences, la probabilidad P de no escribir la palabra "banano" en n Intentos sería:
P =[1-(1/50)^6]^ n
เช่น por ejemplo si Intto una vez, P = 1, si 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, con un numero infinito de Inttos, puedo estar seguro de que el mono va a escribir la palabra "banano".
Lo que sí, no tenemos tiempo infinito, es decir se puede buscar una solución al azar, เปโร, el azar solo tardaría mucho tiempo เกี่ยวกับ 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 del como se genera la variabilidad genética en los seres vivos, e inventando un algoritmo para hacerlo en computadora, con el fin ปัญหาการแก้ปัญหา Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad Intento de Buscar la solución, ไม่มีทะเลอิสระเดลเจตนาล่วงหน้า
หมายเหตุ: ข้อมูล Busquen sobre el teorema del mono infinito
ขั้นตอนที่ 3: Evolución Y Definiciones
La evolución
Un algoritmo genético (AG) es un algoritmo que permite encontrar una solución a problemas difíciles de Resolver. การแก้ปัญหา El AG, se basa en tres principios principales de herencia Darwiniana:
- Herencia: Los hijo reciben las características de sus padres. En el AG significa que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
- รูปแบบต่างๆ: Debe haber un mecanismo para introducir varietyad. en el AG, significa que se debe agregar variabilidad de alguna manera para encontrar นูวาส โซลูซิโอเนส
- ตัวเลือก: 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, sino que quiero entrar de una vez a la explicación del Algoritmo Genético.
คำจำกัดความ
Para poder facilitar explicar el algoritmo, debemos definir algunas cosas ante คำนิยาม ลูกชาย comunes en cualquier คำอธิบาย de algoritmo genético que encuentren, y les facilitará entender la literatura en las redes.
- Uno de los primeros pasos es "codificar" el problema, esto quiere decir que debemos tener unaเป็นตัวแทนของปัญหาสำหรับ poder trabajarlo en el CP Acá lo hacemos de manera sencilla Como se muestra en a foto, tenemos 10 LEDS que pueden estar encendidos "1" o apagados "0", entences tenemos un arreglo con 10 elementos 0 y 1. Así entences 101000000 significa que los leds 0 y 2 ส่วนที่เหลืออยู่ อะปากาโดส y 0010011010, que los leds 2, 5, 6 y 8 están encendidos
- Una Población es un conjunto de posibles combinaciones de leds encendidos (ver la imagen de población), estas pueden ser iguales o diferentes. Se le llama un Cromosoma a un elemento en la población. Entonces un cromosoma, no es más que una displayación de los LEDS ขยายและปิด 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 และ encendido
- La recombinación, ประกอบด้วย en tomas dos cromosomas, escoger un punto de cruzamiento, e intercambiar la información entre ambos (ver el Diagrama)
- Una función de evaluación o fitness, es un criterio que permite evaluar que tan buenos son cada uno de los cromosomas de la población สำหรับการเลือก el mejor En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos
ขั้นตอนที่ 4: El Algoritmo
พาโซ อา พาโซ
- Crear una población de muchos cromosomas inicializados al azar
- ประเมินผล es el mejor con la función de "fitness"
- เครื่องถ่ายเอกสาร el mejor recombinando con el segundo mejor al resto de la población
- Aplicar mutación a toda la población
- Repertir a partir de 2
ตัวอย่าง
Como expliqué en las definiciones, una tira (cromosoma) 1000101010, ตัวแทนของ los leds encendidos "1" y apagados "0", en el circuit สนามเด็กเล่น Vamos a definir nuestra función de "ฟิตเนส" como:
ฟิตเนส = (lectura de luz) x 0.5 - (ตัวเลข LED) x 0.5
หมายเหตุ como restamos el numero de leds en la fórmula, pues queremos la mejor luz con la cantidad menor de leds, entences si una solución es similar en luz pero con menos leds, seleccionaremos esa
Ahora entences encendemos los leds สอดคล้อง a cada cromosoma และ evaluamos su fitness, como se muestra en la figura หมายเหตุ como en el ejemplo tenemos:
0011100000 ความฟิต = 98.5
1011100001 ความฟิต = 102.5
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 ปลายทาง con una nueva población, 1011100001
0011101011
1010100011
Esta nueva población nuevamente evaluamos su ฟิตเนสและแอสซิคอนติอามอส A medida que llega a una solución óptima, aunque sigue probando, se mantiene hasta que haya cambios en el Ambiente
ขั้นตอนที่ 5: El Código
El código lo pueden descargar บน GitHub. ไม่มีคำอธิบาย los detalles de la librería "cromosome.h", sino nada más el algoritmo genético, como es utilizado en el código principal
Código อาจารย์ใหญ่
El siguiente código crea una población de 20 โครโมโซม:
#define N 20
ป๊อปประชากร(N);
El objeto es ประชากร y lo hemos llamado pop Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados กับ สิ่งที่ต้องทำ ceros. En el setup, agregamos la línea:
pop.mutateโครโมโซม(0.5, 0);
สำหรับ 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);
แอปที่คล้ายคลึงกันกับความเป็นไปได้ของความน่าจะเป็น (0.05), และใน เดล โครโมโซมา 1 สำหรับ mantener el mejor que hemos obtenido en la población (el cromosoma 0 es el mejor)
ป๊อป.กลายพันธุ์โครโมโซม(0.05, 1);
Y evaluamos con la función de evaluación, que explico มากกว่า abajo
ประเมิน();
Luego ordenamos los cromosomas de นายกเทศมนตรี a menor fitness (usando bubble sort), esto facilita el proceso de recombinacion, pop.sort();
Allí está สิ่งที่ต้องทำ Ahora veamos la función de evaluación que es majore
Función de การประเมิน
El codigo de ประเมิน () es:
โมฆะประเมิน () {
สำหรับ (int i = 0; i < pop.n; i++) { setPixels(i); // ให้เวลา LED เพื่อเปิดการหน่วงเวลา (100); ฟิตเนส(i); } }
Vean que simplemente prendemos los leds ที่สอดคล้องกัน al cromosoma (eso es lo que hace setPixels()), และ evaluamos su fitness, con la función, โมฆะฟิตเนส (int a) {
pop.fitness[a] = 0.5 * float(CircuitPlayground.lightSensor()) - 0.5 * float(pop.countBits(a)); }
Almacenamos el valor de ฟิตเนส de cada cromosoma en pop.fitness
ขั้นตอนที่ 6: Funcionando Y Retos
ฟุนชินานโด
วิดีโอเกี่ยวกับ como va adaptando de apoco a las diferentes condiciones de luz Siempre encuentra una buena solución. Si lograste entender este Instrucable, te felicito, los algoritmos genéticos son un tema difícil en computación, pero eso es lo que lo hace más emocionante.
สถานการณ์ที่ 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, สำหรับชีวิตร่างกาย ลูกชาย mucho más lentas
de cierto modo el algoritmo sirve para encontrar la mejor solución, ดาดาส เซียร์ตา คอนดิซิโอเนส อ้างอิงจาก algoritmos para determinar lo mejor en cada situación, y luego dejar estas definidas en el CP, pero en este ejemplo dejamos que el algoritmo siempre esté explorando.
Si se dejan muchas mutaciones, verán como el algoritmo es algo inestable y le va a costar llegar a una situación optima.
รอบชิงชนะเลิศ
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 จำนวน LEDS, es simple y hasta trivial, que probablemente se puede solucionar de manera más rápida con otros métodos. การคว่ำบาตรบาป, 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, entences, algo como optimizar la problema luz, es en ไม่ส่ง si me puse เอสเปโซ!)
Retos
- Buscar un problema de optimización más complicado con una función de "fitness" เต็ม
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (การล่าช้าของทุกคน)
- Aplicar a un robot, para que resuelva แตกต่างกัน situaciones
- ไมโอซิส Estudiar สำหรับ aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (hay libros ทั้งหมด en el tema)
แนะนำ:
Dispensador De Alimento Para Multipleles Mascotas Usando Inteligencia Artificial Con Watson: 11 ขั้นตอน
เครื่องจ่ายยาสำหรับหลายรายการ Mascotas Usando Inteligencia Artificial Con Watson: En este คำสั่งที่สอนได้ como hacer un dispensador de alimento para sus mascotas, por lo general, o al menos en mi caso siempre he querido hacer un dispensador autom&a un perro y un gato. พอ สิ้นสุด ไม่ tengo อู
Kit Ciencia Y Arte: Cómo Cargar Código Al สนามเด็กเล่น: 4 ขั้นตอน
Kit Ciencia Y Arte: Cómo Cargar Código Al สนามเด็กเล่น: Ac' คำอธิบาย como se "sube" เอลซีโก EL código de cada proyecto está en cada Instrucable, sin embargo puede descargar todo el código en el GitHub
Kit Ciencia Y Arte: Ordenando Listas (เรียงลำดับฟอง): 4 ขั้นตอน
Kit Ciencia Y Arte: Ordenando Listas (เรียงลำดับแบบฟอง): En el mundo de las ciencias de la computación, saber ordenar listas es como saber escribir. 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 ขั้นตอน
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: Aprender de inteligencia ประดิษฐ์ es mucho m's fácil de lo que parece. El 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 Arte: Un Makey Makey a Otro Nivel: 4 ขั้นตอน (พร้อมรูปภาพ)
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: El Makey Makey es un dispositivo electrónico muy popular en educación, pues con el se pueden hacer pidamente ejercicios de computació กับ computadoras.El Makey Makey ไม่มี es m