Você está na página 1de 10

Algoritmo genético

Actividad 2.3
Nombre del Alumno:

Raya González Antonio de Jesús

Materia:
Inteligencia computacional
Maestro:
Sheila Esmeralda González
Carrera:
Ingeniería Mecatrónica

Fecha de entrega: domingo 29 de octubre del 2017


Introducción
En este reporte se muestran las técnicas y desarrollo implementado para un
programa en Python en donde a partir de la creación de una población,
realizaremos un algoritmo genético a nivel de bits en donde proponiendo un
modelo ideal, obtendremos los resultados de lo que sería una población parecida
a este modelo.

Objetivo
Crear un algoritmo genético de una población en Python donde a partir de un
modelo establecido se realice la selección, cruza y mutación de estos individuos
para la obtención de una nueva población parecida al modelo ya establecido.

Resumen
En este reporte se parte primeramente describiendo lo que es el algoritmo
genético de una población, en que consiste una selección a partir de esta misma,
que es la muta y la cruza.

Después se explicó detalladamente el código explicando la aplicación de las


técnicas y funciones necesarias para realizar el código a nivel de bits.

Al final del reporte se explican los resultados obtenidos del grupo de población
esperado y las características que este presentó de acuerdo al algoritmo
establecido.

2
Marco Teórico

Algoritmo genético

El algoritmo genético es una técnica de búsqueda basada en la teoría de la


evolución de Darwin, son métodos adaptativos que pueden usarse para resolver
problemas de búsqueda y optimización, están basados en el proceso genético de
los organismos vivos.

Para realizar un algoritmo genético de una población, primero que nada se tiene
que tener un modelo al cual se pretende idealizar mediante el algoritmo, se
realizara una selección de acuerdo a las características que más se acerquen al
modelo esperado, se hará una cruza de individuos como mínimo de 2 en
adelante, llegara un punto en el que quizá al hacer las cruzas se llegue a estancar
los resultados por lo que después se realizara una mutación, como resultado se
tendrá un grupo de individuos muy parecido al del modelo esperado.

Existen algunas características que son fundamentales en un algoritmo genético


las cuales mencionaremos a continuación:

Selección

De acuerdo con la teoría de la evolución de Darwin, sólo los mejores individuos


se reproducen. Basándose en esto existen varios métodos que son utilizados por
los genéticos: Selección por la Regla de la Ruleta, Selección por Ranking,
Selección de Estado Fijo por citar algunos de los más utilizados.

Cruza

Se denomina operador de cruce a la forma de calcular el genoma del nuevo


individuo en función del genoma del padre y de la madre. El operador de cruce
es fuertemente responsable de las propiedades del algoritmo genético, y
determinará en gran medida la evolución de la población.

3
Existen gran cantidad de técnicas de cruce como Cruce básico, Cruce
multipunto, Cruce segmentado, Cruce uniforme y Cruces para permutación

Mutación
Se define mutación como una variación de las informaciones contenidas en el
código genético habitualmente, un cambio de un gen a otro producido por algún
factor exterior al algoritmo genético.
La siguiente imagen muestra el proceso que debe llevar a cabo un algoritmo
genético en un grupo de población.

Ilustración 1. Proceso de un algoritmo genético.

Operadores a nivel de bits en python

Las operaciones a nivel de bits manipulan directamente bits. En todos los


computadores los números se representan con bits, una serie de números
binarios que comprenden ceros y unos. A continuación se muestras los
principales operadores a nivel de bits.

Ilustración 2. Principales operadores a nivel de bits.


4
Desarrollo
Lo primero que se hizo fue definir a la población la cual se definió al azar con
las siguientes funciones:

Debido a que estaremos trabajando a nivel de bits convertiremos los números


enteros en bits en arreglos de 8.

Se estableció un modelo ideal al cual se desea llegar al final.

Después se calculó el fitness de los individuos y se hizo la selección de estos


mismos buscando los individuos más parecidos al modelo ideal.

5
Después se hizo la cruza de los individuos utilizando las operaciones de bits and
y or (multiplicación y suma).

Al final se hizo la mutación de los individuos tomando en cuenta que no se


pueden mutar los padres y se mostró el resultado de la población final más
acercada al modelo establecido.

6
Resultados
Al aquí se muestra una población con el modelo ideal al cual se desea llegar.

Este es el resultado de la población final observando que es muy similar a lo


que se esperaba de acuerdo al modelo ideal, el resultado lo devuelve en número
ordinal entero.

Conclusión
Con este reporte se comprendió lo que es, y como se puede implementar un
algoritmo genético, donde la finalidad era comprender el cruce de individuos
utilizando operadores de Python a nivel de bits con respecto a los padres e hijos
así como la comprensión entre cual se puede y debe mutarse entre ellos.

7
Bibliografía
Algoritmo genético

https://robologs.net/2015/09/01/como-programar-un-algoritmo-genetico-
parte-ii-implementacion-en-python/

http://algoritmogeneticouba.blogspot.mx/2012/11/cruce-y-
mutaciones.html

Operaciones a nivel de bits en Python

http://pyspanishdoc.sourceforge.net/lib/bitstring-ops.html

https://www.tutorialspoint.com/python/bitwise_operators_example.htm

Definición de conceptos

https://www.google.com.mx/search?q=algoritmo+genetico&source=lnms
&tbm=isch&sa=X&ved=0ahUKEwiJydLBmZTXAhUHh1QKHQnLAp8
Q_AUICigB&biw=1366&bih=637#imgrc=N_G_py0vjoAq-M:

8
Anexos
Aquí se muestra el código completo utilizado para el algoritmo genético a nivel
de bits.

9
10

Você também pode gostar