جدول المحتويات:

Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 خطوات
Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 خطوات

فيديو: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 خطوات

فيديو: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 خطوات
فيديو: Joscha Bach Λ Karl Friston: Ai, Death, Self, God, Consciousness 2024, يوليو
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 mi opinión). Básicamente se toma la idea de evolución de la biología، y se aplica a un algoritmo en una computadora para relver un problema.

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. ملعب أساموس الحلبة (CP) de Adafruit para hacer el ejercicio.

يمكنك تخيل أن تكون الحياة في الجسم الحي ، هي نفسها التي يمكن أن تتكيف معها. El CP، debe buscar la forma más eficient de prender sus leds، para obtener la mayor cantidad de luz posible según su sensor de luz. مصابيح لوغرارلو أديماس ديبي هاسيندو لا مينور كانتيداد دي. 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

الخطوة 1: المواد

المواد
المواد
المواد
المواد

بسيط:

  1. ملعب الدائرة (o cualquier Arduino con leds y sensor de luz)
  2. باتيرياس
  3. كابل يو اس بي
  4. Algo para generar luz y sombra para pruebas

الخطوة الثانية: Búsqueda Al Azar

بوسكيدا العازار
بوسكيدا العازار

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 de ser 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 Resolverlo. Vamos esto estadísticamente. La probabilidad de que el mono escriba "banano" es entonces la probabilidad conjunta، esto es:

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

Esto es igual a 1 sobre 156250000000، es decir la probabilidad de que el mono escriba "banano"، es 1 en 15 millones… muy poco probable! 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 millones de monos escribiendo، es posible uno de ellos escriba la palabra "banano". مداخل بوكو محتمل ، بيرو لا مستحيل.

FORALICEMOS esta idea un poco. SI (1/50) ^ 6 es la probabilidad de escribir "banano"، entonces، 1- (1/50) ^ 6 es la probabilidad de NO escribirlo. Si un mono intenta n veces، entonces، la probabilidad P de no escribir la palabra "banano" en n intentos sería:

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

Así por ejemplo si intento una vez، P = 1، si intento un millón de veces، P = 0.999936، pero para 10 milón، P = 0.53، y mientras más grande se n، más me acerco a P = 0، es decir ، con un numero infinito de intentos، 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، pero، 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 buildiva، 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 ideas del como se genera la variabilidad genética en los seres vivos، e 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 hace que acad intento de buscar la solución، no sea Independentiente del intento anterior.

ملاحظة: Busquen información sobre el teorema del mono infinito

الخطوة 3: Evolución Y Definiciones

Evolución Y Definiciones
Evolución Y Definiciones
Evolución Y Definiciones
Evolución Y Definiciones
Evolución Y Definiciones
Evolución Y Definiciones

لا تطور

Un algoritmo genético (AG) es un algoritmo que permite encontrar una solución a problemas disíciles de culver. El AG، se basa en tres Principios Principales de herencia Darwiniana:

  • Herencia: Los hijo reciben las características de sus padres. En el AG المعنى من حل nuevas heredan lo alcanzado por soluciones anteriores
  • Variación: Debe haber un mecanismo para introducir variedad. en el AG ، المعنى نفسه ديبي ريجار فارابابيليداد دي ألغونا Manera para encontrar nuevas soluciones
  • Selección: Hay un mecanismo en la cual se seleccionan los mejores. En el AG، hay una función de "fitness" que permite selectinar 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 يسهل شرح الجوريتمو ، debemos تحديد algunas cosas antes. Estas Definiciones son comunes en cualquier explicación de algoritmo genético que encuentren، y les Facilitará entender la Literatura en las redes.

  1. Uno de los primeros pasos es "codificar" el problema، esto quiere decir que debemos tener una Representative de el problema para 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"، entonces tenemos un arreglo con 10 elementos 0 y 1. Así entonces 101000000 reasona que los leds 0 y 2 están encendidos، y el resto أباغادوس. y 0010011010، que los leds 2، 5، 6 y 8 están encendidos
  2. 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 que una actación de los LEDS encendidos y apagados del CP
  3. Una mutación ، es cambiar al azar uno o varios LEDS ، como se muestra en la foto ، donde التحكيمية la posición 5 cambia de apagado a encendido
  4. La recombinación، CONSTE en tomas dos cromosomas، escoger un punto de cruzamiento، e intercambiar la información entre ambos (ver el diagrama)
  5. una función de ratingación o fitness، es un standard que permite Evaluation 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 gentidad de luz y la cantidad de leds encendidos

الخطوة 4: El Algoritmo

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

باسو باسو

  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. Aplicar mutación a toda la población
  5. Repertir a partir de 2

إيجيمبلو

Como expliqué en las Definiciones، una tira (cromosoma) 1000101010، تمثل los leds encendidos "1" y apagados "0"، en el circular playground. Vamos a Definir nuestra función de "fitness" como:

اللياقة = (لكتورا دي لوز) × 0.5 - (نو ميرو دي) × 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 like luz pero con menos leds، seleccionaremos esa.

Ahora entonces encendemos los leds مراسلين a cada cromosoma y Evaluation su fitness، como se muestra en la figura. Noten 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 terminar con una nueva población،

1011100001

0011101011

1010100011

تقييم Esta nueva للحالات الجديدة للياقة البدنية والاستمرارية. 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 en mi GitHub. No voy a explicar los detalles de la librería "cromosome.h"، sino nada más el algoritmo genético، como es utilizado en el código teacher.

مدير كوديجو

El siguiente código crea una población de 20 cromosomas:

# تعريف N 20

السكان البوب (N) ؛

El objeto es Population y lo hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas، inicializados con todos ceros. En el setup، Apprgamos la línea:

pop.mutateChromosomes (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) ،

Luego aplicamos mutación con una probabilidad 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.mutateChromosomes (0.05 ، 1) ؛

Y التقييمات con la función de ratingación، que explico más abajo

تقييم()؛

Luego ordenamos،

pop.sort () ،

Allí está todo. Ahora veamos la función de ratingación que es importante

مكتب التقييم

El codigo de التقييم () es:

تقييم باطل () {

لـ (int i = 0 ؛ i <pop.n ؛ i ++) {setPixels (i) ؛ // يعطي وقت LED لتشغيل التأخير (100) ؛ اللياقة البدنية (ط) ؛ }}

Vean que simplemente prendemos los leds المراسلين al cromosoma (eso es lo que hace setPixels ()) ، تقييم اللياقة البدنية ، con la función ،

الملاءمة الباطلة (int أ) {

pop.fitness [أ] = 0.5 * تعويم (CircuitPlayground.lightSensor ()) - 0.5 * عائم (pop.countBits (a)) ؛ }

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

الخطوة 6: Funcionando Y Retos

فونسيوناندو

En el video se ve como va adaptando de apoco a las diferentes condiciones de luz. Siempre encuentra una buena solución. Si lograste entender este التعليمي ، 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 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 selectinar lo mejor en cada Sitación، y luego dejar estas definitionidas 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 statusación optima.

نهائي كومينتاريو

El ejemplo utilizado es ilustrativo، y es para appropriatear el uso de la librería. El reto planteado de mejorar la luz con el menor número de LEDS ، هو بسيط وتافه ، كواحد من الاحتمالات في حل المشكلات. حظر الخطيئة ، si lo vemos desde el punto de vista de seres vivos، la evolución organisa، utiliza algo como un algoritmo genético para búsquedas no lineales، entonces، algo como optimizar la luz، es un problema que en la naturaliza tiene sentido (me disculpan si me puse espeso!)

ريتوس

  • Buscar un problema de optimización más complexado con una función de "fitness" más compleja
  • Mejorara el desempeño، cambiando probabilidad de mutación، re-combinación، aumentando la población، cambiando tiempos (esos delays por allí metidos)
  • Aplicar هو روبوت للأمم المتحدة ، يمكن استخدامه بشكل مختلف
  • Estudiar meiosis ، الفقرة aprender sobre mecanismos de evolución
  • Estudiar a fondo los algoritmos genéticos (hay libros completeos en el tema)

موصى به: