ዝርዝር ሁኔታ:

Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል) 6 ደረጃዎች
Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል) 6 ደረጃዎች

ቪዲዮ: Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል) 6 ደረጃዎች

ቪዲዮ: Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል) 6 ደረጃዎች
ቪዲዮ: Algoritmos Genéticos en 5 minutos 2024, ሀምሌ
Anonim
Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል)
Kit Ciencia Y Arte: Algoritmo Genético (ቪዳ አርቲፊሻል)

Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (en mi opinión)። ባስicሜኔሴ ቱ ቶማ ላ ሃሳቡ ዴ evolución de la biología, y se aplica a un algoritmo en una computadora para resolver un problem.

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) de Adafruit para hacer el ejercicio.

Imaginen el CP que es un ser vivo, y que se debe adaptar a las condiciones cambiantes de luz. ኤል ሲፒ ፣ ዴቤ አውቶቡስ ላ ፎርማ más ውጤታማነት የቅድመ -አቅርቦት ሱሰ -ሊድ ፣ ፓራ obtener ላ ከንቲባ cantidad de luz posible según su sensor de luz። 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.

አድቬንቴኒያ: Este es un tema para estudiantes AVANZADOS

ደረጃ 1: Materiales

ማቴሪያሎች
ማቴሪያሎች
ማቴሪያሎች
ማቴሪያሎች

ቀላል

  1. የወረዳ መጫወቻ ስፍራ (አዋቂ አርዱinoኖ ሊድስ አነፍናፊ ዴ ሉዝ)
  2. ባቴሪያስ
  3. የኬብል ዩኤስቢ
  4. Algo para generar 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. ሲ 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? ላ respuesta corta es SI !!!

ላ respuesta larga es que si lo puede hacer pero tomará un tiempo largo para resolverlo. ቫሞስ ኢስቶ ኢስታስታስቲክሜቴ። ላ ፕሮባቢሊዳድ ዴ ኬ ኤል ሞኖ እስክሪባ “ባኖኖ” ወደ ላ ፕሮባቢሊዳድ conjunta ፣ ኢስቶ 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… muy poco የሚቻል! ዲቾ ዴ ኦትሮ ሞዶ ፣ es muy poco probable que un mon escriba la palabra “banano” escribiendo teclas al azar, ah, pero si tuviéramos 15 millones de monos escribiendo, esible que uno de ellos escriba la palabra “banano”. ፖኮ ሊሆን ይችላል ፣ ግን ምንም የማይቻል።

Formalicemos esta idea un poco. SI (1/50)^6 es la probabilidad de escribir “banano” ፣ መግቢያዎች ፣ 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 intentionos seria:

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

Así por ejemplo si intentiono una vez, P = 1, si intentiono 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 intentionos, 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 tardaria 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 focetes 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 problemma. Entonces aunque contiene elementos de azar, también tiene memoria y hace que acad intentiono de buscar la solución, no sea independiente del intentiono anterior.

ኖታ ፦ ቡስኩዌን ኢንፎርሜሽን 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

ላ evolución

Un algoritmo genético (AG) es un algoritmo que permite encontrar una solución a problemas difíciles de resolver. ኤል AG ፣ se basa in tres principalpios principales de herencia Darwiniana:

  • ሄረንሲያ: ሎስ ሂጆ ሪቢቢን ላስ ካራክቲሪስቲስታስ ዴ ሱ ፓድሬስ። ኤ ኤል ኤል ኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤኤ ኤል ኤስ ላስ ኒውስቫስ
  • Variación: Debe haber un mecanismo para introducir variedad. en ኤል AG ፣ ትርጉሙ ለሴ ደበ agregar variabilidad de alguna 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 “ብቃት” 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 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 representación 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", tenonos un arreglo con 10 elementos 0 y 1. Así entonces 101000000 meaninga que los leds 0 y 2 están encendidos, y el resto apagados. 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. ወደ ክሮሞሶማ መግባቶች ፣ no es más que una representació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 arbitrariamente la posición 5 cambia de apagado a encendido
  4. ላ recombinación, consiste en tomas dos cromosomas, escoger un punto de cruzamiento, እና intercambiar la información entre ambos (ver el diagrama)
  5. 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 para seleccionar el mejor. እንደዚያ ከሆነ ፣ አንድ trabajar con la intensidad de de luz y la cantidad de leds encendidos

ደረጃ 4 ኤል አልጎሪቲሞ

ኤል አልጎሪቲሞ
ኤል አልጎሪቲሞ
ኤል አልጎሪቲሞ
ኤል አልጎሪቲሞ
ኤል አልጎሪቲሞ
ኤል አልጎሪቲሞ

ፓሶ እና ፓሶ

  1. Crear una población de muchos cromosomas inicializados al azar
  2. Evaluar cual es el mejor con la función de "የአካል ብቃት"
  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. 2 ን እንደገና ይድገሙ

ምሳሌ

Como expliqué en las definiciones, una tira (cromosoma) 1000101010, representa los leds encendidos "1" y apagados "0", en el የወረዳ መጫወቻ ሜዳ። Vamos a definir nuestra función de "የአካል ብቃት" como:

ብቃት = (lectura de luz) x 0.5 - (número de leds) x 0.5

Noten como restamos el numero number de leds en la fórmula, pues queremos la mejor luz con la cantidad menor de leds, መግቢያዎች si una solución es similar en luz pero con menos leds, seleccionaremos esa.

አሆራ encendemos los leds correspondientes a cada cromosoma y evaluamos su fitness, como se muestra en la figura. ኖት ኮሞ ኤ ኤል ኢምፓል ቴነሞስ ፦

0011100000 የአካል ብቃት = 98.5

1011100001 የአካል ብቃት = 102.5

1010101011 የአካል ብቃት = 102

ሎስ ዴ የአካል ብቃት ማሶ አልቶ ልጅ 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 población nuevamente evaluamos su fitness y así continuamos. 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 lo pueden descargar en mi GitHub. ምንም የቃላት ዝርዝር መግለጫ የለም።

የኮዲጎ ርዕሰ መምህር

El siguiente código crea una población de 20 ክሮሞሶማዎች ፦

#20 ን መለየት

የህዝብ ብዛት (ኤን);

ኤል objeto es የሕዝብ y እነሆ hemos llamado pop. Esto inmediatamente ctrea una pobación de 20 cromosomas, inicializados con todos 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);

ሉጎጎ 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.mutate ክሮሞሶም (0.05 ፣ 1);

Y evaluamos con la función de evaluación, que explico más abajo

መገምገም ();

ሉኦጎ ኦርዶናሞስ ሎስ ክሮሞሶማስ ደ ከንቲባው የአካል ብቃት እንቅስቃሴ (የ usando አረፋ ዓይነት) ፣ esto facilita el proceso de recombinación ፣

pop.sort ();

ሁሉም ነገር ነው። Ahora veamos la función de evaluación que es importante

Función de evaluación

ኤል ኮዲጎ ዴ ግምገማ () es:

ባዶ ግምገማ () {

ለ (int i = 0; i <pop.n; i ++) {setPixels (i); // መዘግየትን ለማብራት የ LED ጊዜን ይሰጣል (100) ፤ የአካል ብቃት (i); }}

Vean que simplemente prendemos los leds correspondientes al cromosoma (eso es lo que hace setPixels ()) ፣ y evaluamos su fitness, con la función, ባዶነት ብቃት (int a) {

pop.fitness [a] = 0.5 * ተንሳፋፊ (CircuitPlayground.lightSensor ()) - 0.5 * float (pop.countBits (ሀ)); }

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

ደረጃ 6: Funcionando Y Retos

Funcionando

ኤን ኤል ቪድዮ ከኮሜራ ጋር መላመድ እና አፖኮ ላስ ዲፈረንቴንስ ኮንዲሲዮንስ ዴ ሉዝ። Siempre encuentra una buena solución. Si lograste entender este instructable, te felicito, los algoritmos genéticos son un tema difícil en computación, pero eso es lo que lo hace más emocionante.

ደ 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 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.

Comentario የመጨረሻ

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 número de LEDS, es simple y hasta trivial, que probablemente se puede solucionar de manera más rápida con otros métodos. እንደዚሁም ፣ እገዳው ፣ ሲሎ 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, entonces, algo como optimizar la luz, ችግር የሌለባቸው በናቱራሊዛ ታይኔ ሴንዲዶ (እኔ disculpan si me puse espeso!)

ሬስቶሶች

  • Buscar un problema de optimización más complicado con una función de "የአካል ብቃት" más compleja
  • Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos por por allí metidos)
  • አንድ ሮቦትን ይቅረጹ ፣ ፓራ ለ resuelva diferentes situaciones
  • Estudiar meiosis, para aprender sobre mecanismos de evolución
  • Estudiar a fondo los algoritmos genéticos (hay libros completos en el tema)

የሚመከር: