İçindekiler:

Kit Ciencia Y Arte: Algoritmo Genético (Vida Yapay): 6 Adım
Kit Ciencia Y Arte: Algoritmo Genético (Vida Yapay): 6 Adım

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Yapay): 6 Adım

Video: Kit Ciencia Y Arte: Algoritmo Genético (Vida Yapay): 6 Adım
Video: Joscha Bach Λ Karl Friston: Ai, Death, Self, God, Consciousness 2024, Kasım
Anonim
Kit Ciencia Y Arte: Algoritmo Genetico (Vida Yapay)
Kit Ciencia Y Arte: Algoritmo Genetico (Vida Yapay)

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

Malzemeler
Malzemeler
Malzemeler
Malzemeler

Basit:

  1. Devre Oyun Alanı (Arduino con leds ve sensör de luz daha uygun)
  2. Baterías
  3. Kablo USB
  4. Algo para generar luz y sombra para pruebas

2. Adım: Busqueda Al Azar

Busqueda Al Azar
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ı

Evolución Y Tanımları
Evolución Y Tanımları
Evolución Y Tanımları
Evolución Y Tanımları
Evolución Y Tanımları
Evolución Y 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.

  1. 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
  2. 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
  3. 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
  4. La rekombinación, en tomas dos cromosomas, escoger un punto de cruzamiento, e intercambiar la información entre ambos (ver el diagrama) içerir
  5. 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

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

paso bir paso

  1. Crear una población de Muchos cromosomas inicializados al azar
  2. "Fitness" ile ilgili değerlendirmeler
  3. Copiar el mejor rekombinando con el segundo mejor al resto de la población
  4. Aplicar mutación ve toda la población
  5. 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

El Codigo
El Codigo
El Codigo
El Codigo
El Codigo
El Codigo

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: