Სარჩევი:
- ნაბიჯი 1: მასალები
- ნაბიჯი 2: Búsqueda Al Azar
- ნაბიჯი 3: Evolución Y Definiciones
- ნაბიჯი 4: El Algoritmo
- ნაბიჯი 5: ელ კოდიგო
- ნაბიჯი 6: Funcionando Y Retos
ვიდეო: Kit Ciencia Y Arte: Algoritmo Genético (Vida Artificial): 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
Los algoritmos genéticos son probablemente una de las cosas más interesantes de la computación (en mi opinión). ბიომრავალფეროვნების იდეა, რომელიც წარმოიშობა ბიოლოგიურ განვითარებაში, შეიძლება გამოყენებულ იქნას ერთ -ერთი უწყვეტი პრობლემის გადასაჭრელად.
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.
წარმოიდგინეთ CP CP es un ser vivo, y que se debe adapter a las Condiciones cambiantes de luz. El CP, de bus bus la forma más eficiente de prender sus leds, para obtener la şaredar 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: მასალები
მარტივი:
- მიკროსქემის მოედანი (cualquier Arduino con leds y sensor de luz)
- ბატერიასი
- USB კაბელი
- Algo para generar luz y sombra para pruebas
ნაბიჯი 2: 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 pavariente cada vez), ალბათ არ არის 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 resolutionverlo. Vamos esto estadísticamente. La probabilidad de que el mono escriba "banano" es entonces 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
ეს არის პირველი 1 15 625 000 000, ეს არის ალბათობა იმისა, რომ მონო მონო აღწერს "ბანანოს", არის 1 დან 15 მილიონამდე … სავარაუდოდ, ალბათ! Dicho de otro modo, es muy poco სავარაუდოდ que un mono escriba la palabra "banano" escribiendo teclas al azar, ah, pero si tuviéramos 15 millones de monos escribiendo, es posible que uno de ellos escriba la palabra "banano". სავარაუდოა, რომ პოკო, მაგრამ შეუძლებელია.
Formalicemos არის იდეა 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 purposea n veces, entonces, la probabilidad P de no escribir la palabra "banano" en n nentos sería:
P = [1- (1/50)^ 6]^ ნ
Así por ejemplo si purposeo una vez, P = 1, როგორც განზრახვა მილიონებში, P = 0.999936, 10 მილიონ მილიონამდე, P = 0.53, y mientras más grande se n, más me acerco a P = 0, ეს არის decir, con un numero infinito de purposeos, 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 is 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 ideas del como se genera la variabilidad genética en los seres vivos, და inventanto 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 purposeo de buscar la solución, no sea pavariente del paranteo anterior.
შენიშვნა: ინფორმაციის ზუსტი გაგზავნა, რომელიც მოიცავს უსასრულო ინფორმაციას
ნაბიჯი 3: Evolución Y Definiciones
ევოლუცია
Un algoritmo genético (AG) არის un algoritmo რომელიც ნებადართულია პრობლემის გადაჭრის სხვადასხვა პრობლემის გადაჭრაში. El AG, se basa en tres principios principales de herencia Darwiniana:
- Herencia: Los hijo reciben las características de sus padres. En el AG indica que las nuevas soluciones heredan lo alcanzado por soluciones anteriores
- ვარიაცია: Debe haber un mecanismo para introducir variedad. en el AG, signa que se debe agregar variabilidad de alguna manera para encontrar nuevas soluciones
- სელექცია: Hay un mecanismo en la cual se seccionan 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 გაუადვილდა ახსნა el algoritmo, debemos definir algunas cosas antes. ეს არის განსაზღვრული შვილების კომუნისტი, რომელიც ასახავს algoritmo genético que encuentren- ს, რომელიც ხელს უწყობს ლიტერატურულ ენებს.
- Uno de los primeros pasos არის "codificar" el problema, esto quiere decirous debemos tener un un un წარმომადგენელი მათი პრობლემის pod pod 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. Aso entonces 101000000 signa 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
- Una Población is 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. შემოიფარგლება CROSSOMOMA, არ არსებობს არა მხოლოდ LEDS– ის წარმომადგენლობა, არამედ LED– ების გაფართოება და გაფართოება 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 a encendido
- რეკომბინაცია, შედგება en tomas dos cromosomas, escoger un punto de cruzamiento, e intercambiar la información entre ambos (ver el diagrama)
- ფიტნესის შეფასების ფუნქცია, ეს არის კრიტერიუმი, რომელიც საშუალებას გაძლევთ შეაფასოთ ეს თანხები, რათა მიიღოთ სელექციონერ მეჯორესთან დაკავშირებული პრობლემები. 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
- Evaluar cual es el mejor con la función de "fitness"
- Copiar 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 definit nuestra función de "fitness" como:
ფიტნეს = (lectura de luz) x 0.5 - (número de leds) x 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 similar en luz pero con menos leds, seleccionaremos esa.
Ahora entonces encendemos los ledsrespondrespondeses cada cromosoma y vlerësamos su fitness, como se muestra en la figura. შენიშვნა:
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 terminal con una nueva población, 1011100001
0011101011
1010100011
ეს არის ახალი პოტენციალი, რომელიც აფასებს თქვენს ფიტნესს და როგორც უწყვეტობას. მედიდა 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. არ არსებობს განმარტება, თუ როგორ განვმარტო თავისუფლება "cromosome.h", რაც შეიძლება გამოყენებულ იქნას როგორც ძირითადი პრინციპი.
კოდიგო პრინციპი
El siguiente código crea una población de 20 cromosomas:
#განსაზღვრეთ N 20
პოპ მოსახლეობა (N);
El objeto es მოსახლეობა y lo 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);
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 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 vlerësamos con la función de შეფასების, que explico más abajo
შეაფასეთ ();
Luego ordenamos los cromosomas de Mayor a menor fitness (usubo bubble sort), ეს არის რეკონსტრუქციის პროცესის გაადვილება, pop.sort ();
სულ ეს არის. Ahora veamos la función de შეფასების რაც მნიშვნელოვანია
შეფასების ფუნქცია
El codigo de შეაფასოს () es:
ბათილად შეაფასე () {
for (int i = 0; i <pop.n; i ++) {setPixels (i); // აძლევს LED დროს დაყოვნების ჩართვისათვის (100); ფიტნეს (ი); }}
Vean que simplemente prendemos los ledsrespondientes al cromosoma (eso es lo que hace setPixels ()), y vlerësamos 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 fitness de cada cromosoma en pop.fitness
ნაბიჯი 6: Funcionando Y Retos
ფუნქცია
ვიდეოში შეგიძლიათ იხილოთ ადაპტაცია და აპოკოს სხვადასხვა განსხვავებების პირობები luz. Siempre encuentra una buena solución. თუ თქვენ გესაჭიროებათ სწავლება, თქვენ გაგიხარდებათ, 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 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 პირობები. Se quede correr el algoritmos para determinar lo mejor en cada situación, y luego dejar estas definidas en el CP, pero en este ejemplo ejemplo dejamos que el algoritmo siempre esté explorando.
როგორც ეს შეიძლება იყოს mutationales, ver comn como el algoritmo es algo inestable y le va a costar llegar და una situación optima.
Comentario ფინალი
El ejoemplo utilizado es ilustrativo, y para paragraduat 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 ალბათ სავარაუდოა, რომ ეს შეიძლება იყოს solucionar de manera más rápida con otros métodos. Sin embargo, si lo vemos desde el punto de vista de seres vivos, la evolución organa, 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 un una función de "fitness" ms completeja
- Mejorara el desempeño, cambiando probabilidad de mutación, re-combinación, aumentando la población, cambiando tiempos (esos delays por allí metidos)
- გამოიყენეთ რობოტი, რომელიც განსხვავდება სიტუაციიდან
- Estudiar meiosis, para aprender sobre mecanismos de evolución
- Estudiar a fondo los algoritmos genéticos (თივის ლიბროს სრულყოფილება და სხვა თემა)
გირჩევთ:
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: 11 საფეხური
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: En este instructable aprenderemos como hacer un dispensador de alimento para sus mascotas, por lo general, o men men en caso siempre he querido hacer un dispensador autom á un perro y un gato. Por ende no tengo una
Kit Ciencia Y Arte: Cómo Cargar Código Al სათამაშო მოედანი: 4 ნაბიჯი
Kit Ciencia Y Arte: Cómo Cargar Código Al სათამაშო მოედანი: Ac á ექსპლიკაცია, როგორც ჩანს " სუბე " el c ó digo. EL c ó digo de cada proyecto est á cada instruction, ცოდვა ემბარგო puede descargar todo el c ó digo en el GitHub
Kit Ciencia Y Arte: ორდენანდო ლისტასი (ბუშტის დახარისხება): 4 ნაბიჯი
Kit Ciencia Y Arte: Ordenando Listas (Bubble Sort): 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 artificial es mucho m á s f á cil de lo que parece. El primer paso es entender el un funcionamiento de una de las unidades m á s Simples en programación ó n, que for analog í 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 არის განკარგული ელექტრო ó nico muy popular en educationaci ó n, pues con el se pueden hacer r á pidamente ejercicios de computaci ó n tangible e interacci ó n ხელშესახები ó con computadoras.El Makey Makey, no es m