İçindekiler:
- Adım 1: Malzemeler
- 2. Adım: Busqueda Al Azar
- 3. Adım: Evrim Tanımları
- 4. Adım: El Algoritmo
- Adım 5: El Código
- Adım 6: Funcionando Y Retos
Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Yapay): 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Los algoritmos genéticos son olasılığa bağlı olarak, mümkün değildir. Biologia'nın temel fikirlerinin evrimi, problemlerin çözümlenmesi için tek bir algoritma ve çözümleme değildir.
El algoritmo genético es parte de loque se conoce como algoritmos evolutivos en el mundo de las ciencias de la computación. Acá hacemos ve ejemplo sencillo, con el fin de aprender sobre el algoritmo. Usamos el Circuit Playground (CP) de Adafruit para hacer el ejercicio.
Imaginen el CP que es un ser vivo, yque se debe adaptar a las condiciones cambiantes de luz. El CP, buscar la forma la forma más más e más l d e r m e s e n e n e n e n e n e n e n e n e n e n e n e n e n e n e l e n d e l z l z led'leri, para alıcı la belediye başkanı aday olabilir. LED'ler için olasılıkları göz önünde bulundurun. Entonces maximiza la luz, al mismo tiempo que en aza la cantidad de led'ler. Acá trataremos de hacerlo con un algoritmo genético.
REKLAM: Este es un tema para estudiantes AVANZADOS
Adım 1: Malzemeler
Basit:
- Devre Oyun Alanı (Arduino con leds ve sensör de luz daha uygun)
- Baterías
- Kablo USB
- Algo para generar luz y sombra para pruebas
2. Adım: Busqueda Al Azar
Imaginemos un mono, apretando letras en el teclado de una computadora, el mono simplemente presiona las letras al azar. El teclado'da 50 letra, cada letra (si el mono presiona de manera bağımsız cada vez), tiene una olasılıklı de 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? Acil servis!!!
Sorunları çözmenin en iyi yolu, en iyi çözümleyiciler. Vamos esto estadísticamente. La olasılıklı de que el mono escriba "muz" es entonces la olasılıklı 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 ve 1 ciddi 15 625 000 000, es decir la olasılıklı de que el mono escriba "banano", es 1 ve 15 milyon… muy poco olası! Dicho de otro modo, olası bir mono escriba la palabra "banano" escribiendo teclas al azar, ah, pero si tuviéramos 15 milyon monos escribiendo, en olası que uno de ellos escriba la palabra "banano". entonces poco olası, pero imkansız değil.
Formalicemos esta fikir ve poco. SI (1/50)^6, "banano", entonces, 1-(1/50)^6, olasılık dışı bir olasılıktır. Si un mono ıntentan veces, entonces, la olasılıklı P de no escribir la palabra "banano" en n ıntentos sería:
P =[1-(1/50)^6]^ n
Así por ejemplo si nito un vez, P = 1, si n millón de veces, P = 0.999936, pero para 10 milyon millones, P = 0.53, y mientras más grande se n, más me acerco a P = 0, es decir, sonsuz sayıda, sonsuz sayıda, puedo estar seguro de que el mono va bir escribir la palabra "banano".
Lo que sí, hiçbir tenemos tiempo infinito, es karar se puede buscar una çözüm al azar, pero, el azar solo tardaría Mucho tiempo. En pocas palabras, la fuerza bruta no es una forma efectiva de buscar un çözümü
Bu, doğal yollardan bağımsız olarak, yapısal düzenlemelerle, düzenlemelerle, yeni düzenlemelerle ve çözümlerle ilgili değişikliklerden ve değişikliklerden kaynaklanmaktadır. En basit algoritmalar, temel algoritmalar, yeni nesil fikirler, yeni nesil fikirler, tüm canlılar, icatlar ve algoritmalar, hesaplamalar, problemler için çözüm bulma. Entonces aunque contiene elementos de azar, también tiene memoria ve hace que acad niyetto de buscar la çözüm, ön deniz yok.
NOTA: Busquen información sobre el teorema del mono sonsuz
3. Adım: Evrim Tanımları
evrim
Unalgoritmo genético (AG) es un algoritmo que izin veren encontrar una çözüm bir problemas difíciles desolver. El AG, se basa en tres principios Principales de herencia Darwiniana:
- Herencia: Los hijo reciben las características de sus padres. En el AG, en yeni çözümlerin en önemlileri.
- Variación: Debe haber un mecanismo para introducir değişikad. en el AG, önemli debe agregar değişken değişkenler de alguna manera para encontrar nuevas çözümleri
- Selección: En la cual se seleccionan los mejores. En el AG, "fitness" için en önemli işlevlere izin ver, belirleyici çözümlere izin ver
Bir metre boyunca hiçbir seyahate çıkma, tüm ayrıntılarıyla evolución de seres vivos, sino que quiero entraar de una ve Algoritmo Genetico'nun açıklanışına girdi.
Tanımlar
Para poder facilitar explicar el algoritmo, debemos definir algunas cosas antes. Algoritmanın genético que encuentren'inin en son tanımları, en basit açıklamaları, en basit ve en iyi şekilde yazın.
- CP'yi tanımlamadan önce, "kodlayıcı" sorunları, sorunları çözmeyi ve sorunları çözmeyi unutmayın. Acá lo hacemos de manera sencilla. En iyi fotoğraflar, 10 LED'li sıralı LED'ler "1" veya apagados "0", entonces tenemos un arreglo con 10 elemento 0 y 1. Asi entons 101000000 önemli ışık los led'leri 0 y 2 están encendidos, y el resto apagadolar. y 0010011010, que los led'leri 2, 5, 6 y 8 están encendidos
- Olasılıkların bir araya gelmesiyle oluşan olası kombinasyonlar, led'lerin encendidos'unun (ver la imagen de población), estas pueden seri iguales ve diferentes. Se le lama un Cromosoma a un elemento en la población. Entonces un cromosoma, CP'nin en iyi temsili yok LED'ler encendidos ve apagados del CP
- Una mutación, es cambiar al azar uno o varios LED'ler, como se muestra en la foto, donde keyfiyete la pozión 5 cambia de apagado ve encendido
- La rekombinación, en tomas dos cromosomas, escoger un punto de cruzamiento, e intercambiar la información entre ambos (ver el diagrama) içerir
- Zindelik için bir işlev de ğerlendirme, es un criterio que izin değerlendirme que tan buenos son cada uno de los cromosomas de la población para seleccionar el mejor. En este caso, voy a trabajar con la intensidad de de luz y la cantidad de leds encendidos
4. Adım: El Algoritmo
paso bir paso
- Crear una población de Muchos cromosomas inicializados al azar
- "Fitness" ile ilgili değerlendirmeler
- Copiar el mejor rekombinando con el segundo mejor al resto de la población
- Aplicar mutación ve toda la población
- Repertir bir partir de 2
ejemplo
En las tanimlamalar için Como expliqué en las tanimlamalar, una tira (kromosoma) 1000101010, temsili los ledler "1" ve apagados "0", en el devre oyun alaninda. Vamos, "fitness" commo'nun tanımlı bir nuestra función de:
uygunluk = (lectura de luz) x 0,5 - (led sayısı) x 0,5
En sık kullanılan led'ler ve sayısız led'ler, en önemli led'ler, entonanslar ve benzeri çözümler, benzer led'ler, seleccionaremos esa.
Ahora entonces encendemos los leds muhabirleri bir cada cromosoma y evaluamos su fitness, como se muestra en la figura. Noten como en el ejemplo tenemos:
0011100000 uygunluk = 98.5
1011100001 uygunluk = 102,5
1010101011 uygunluk = 102
Los de fitness más alto son 102.5 y 102, seleccionamos esos, y hacemos rekombinación ve mutación como se muestra en la imagen, lo que nos izin terminar con una nueva población, 1011100001
0011101011
1010100011
En yeni ve en yeni değerlendirmeler, sürekli olarak fitness ve fitness. Bir medida que llega bir una solución óptima, aunque sigue probando, se mantiene hasta que haya cambios en el Environmente.
Adım 5: El Código
GitHub'da El código lo pueden indir. "cromosome.h", sino nada más el algoritmo genético, como es utilizado en el código Principal için açıklayıcı bir seyahat yok.
Código müdürü
El siguente código crea una población de 20 cromosomas:
#define N 20
nüfus pop(N);
El nesneleri popülasyonu ve hemos lamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos ceros. En el kurulum, agregamos la línea:
pop.mutateKromozomlar(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);
Luego aplicamos mutación con una olasabilidad baja (0.05), e iniciando del cromosoma 1 para mantener el mejor que hemos obtenido en la población (el cromosoma 0 es el mejor)
pop.mutateKromozomlar(0.05, 1);
En iyi değerlendirmeler
değerlendirmek();
Luego ordenamos los cromosomas de belediye başkanı bir menor fitness (usando bubble sort), esto facilita el proceso de rekombinación, pop.sort();
Tüm yapılacaklar. Ahora veamos la función de değerlendirme que es önemli
Değerlendirmenin işlevi
Değerlendirmek için () es:
geçersiz değerlendirmek() {
for (int i = 0; i < pop.n; i++) { setPixels(i); // LED'in gecikmeyi açması için süre verir(100); uygunluk(i); } }
Vean que simplemente prendemos los leds muhabirleri al cromosoma (eso es lo que hace setPixels()), y fitness, con la función, void uygunluk(int a) {
pop.fitness[a] = 0,5 * kayan nokta(CircuitPlayground.lightSensor()) - 0,5 * kayan nokta(pop.countBits(a)); }
Almacenamos el valor de fitness de cada cromosoma en pop.fitness
Adım 6: Funcionando Y Retos
Funcionando
En el video se ve como va adaptando de apoco ve las diferentes condiciones de luz. Siempre encuentra una buena çözümü. Si lograste enender este ınstructable, te felicito, 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 keşifler ve evolucionando para mejorar. En este caso están ocurriendo ocurriendo çok fazla iteraciones de eovlución en poco tiempo, para unorganizmao vivo son çok büyük lentas
de cierto modo el algoritmo sirve para encontrar la önemli çözüm, dadas ciertas condiciones. En iyi çözümlemeler için para belirleyici, en önemli durumların değerlendirilmesi, en iyi koşulların değerlendirilmesi, en iyi analizlerin değerlendirilmesi.
Mutaciones'i değiştirme, en uygun algoritmo es algo inistable y le va a costar llegar a un situación optima.
Yorum Finali
El ejemplo utilizado es ilustrativo, y es para facilitar el uso de la librería. LED'lerin en basit ve en basit olanını, en basit ve en basit, en basit ve en kolay çözüm yolları. Günah ambargosu, en iyi ve en iyi manzaraların olduğu manzaralar, la evolución organiza, uiliza algo como un algoritmo genético para busquedas hiçbir lineales, entonces, algo como optimizar la luz, es un problema diskpane ul laido (doğal) si me puseso espeso!)
Retolar
- Buscar, "fitness" için karmaşık olmayan bir sorun değil, karmaşık bir işlevdir.
- Mejorara el desempeño, cambiando olasılıkları da değiştir, yeniden birleştirme, aumentando la población, cambiando tiempos (esos gecikmeleri por allí metidos)
- Aplikar bir robot değil, para que resuelva diferentes situaciones
- Estudiar mayoz, para aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (hay libros completos en el tema)
Önerilen:
HuskyLens Kullanarak Yapay Zeka ve Görüntü Tanıma: 6 Adım (Resimlerle)
HuskyLens Kullanarak Yapay Zeka ve Görüntü Tanıma: Hey, naber beyler! Akarsh burada CETech'ten. Bu projede, DFRobot'tan HuskyLens'e bir göz atacağız. Yüz Tanıma gibi çeşitli Yapay Zeka işlemlerini yapabilen, AI destekli bir kamera modülüdür
Kit Ciencia Y Arte: Cómo Cargar Código Al Oyun Alanı: 4 Adım
Kit Ciencia Y Arte: Cómo Cargar Código Al Oyun Alanı: Acá açıklayıcı como se "alt"; el código. EL código de cada proyecto está en cada öğretilebilir, sin ambargo puede descargar todo el código en el GitHub
Kit Ciencia Y Arte: Ordenando Listas (Kabarcık Sıralama): 4 Adım
Kit Ciencia Y Arte: Ordenando Listas (Kabarcık Sıralaması): En el mundo de las ciencias de la computación, saber ordenar listas es como saber escribir. Gerçek şu ki, hiçbir şey kabul edilemez bir gerçek değil
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: 4 Adım
Kit Ciencia Y Arte: Máquinas Que Aprenden Sonido: Aprender de inteligencia suni es Mucho m's f's f'cil de lo que parece. Programacı'n, que por analog'a con el cerebro humano, es l
Kit Ciencia Y Arte: Un Makey Makey a Otro Nivel: 4 Adım (Resimlerle)
Kit Ciencia Y Arte: Un Makey Makey ve Otro Nivel: El Makey Makey, elektrikli ve oacute;nico muy popüler ve educación, pues con el se pueden hacer rápidamente ejercicios de computación interaccicios; con computadoras.El Makey Makey, hayır e