SciELO - Scientific Electronic Library Online

 
vol.15 número21Exportaciones de cloruro de potasio (KCl), desde Bolivia hacia el mercado de fertilizantes del Brasil índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Servicios Personalizados

Articulo

Indicadores

    Links relacionados

    • No hay articulos citadosCitado por SciELO
    • No hay articulos similaresSimilares en SciELO

    Bookmark

    Revista Tecnológica

    versión impresa ISSN 1729-7532

    Rev. Tecnológica v.15 n.21 La Paz jun. 2019

     

    MATEMÁTICA

     

    Optimización de funciones a través de un algoritmo genético

     

    Function optimization with basic genetic algorithm

     

     

    Yohoni Cuenca Sarzuri*
    (*), Doctor en Ciencias y Humanidades – Mención Informática,
    Docente carrera de Mecánica Automotriz,
    Facultad de Tecnología – UMSA.
    History of the article: Received 12/11/2018. Style review 15/11/2018. Accepted 25/01/2019.

     

     


    Resumen

    El presente trabajo describe la optimización de una función simple por máximos y mínimos, comparando este resultado con el conseguido a través de un módulo macro en hoja Excel del algoritmo genético, que inicia la búsqueda de un óptimo a partir de una población aleatoria de soluciones posibles seguido de operaciones genéticas: (asignación por ruleta, cruce, mutación y elitismo) hasta que casi todas las poblaciones y generaciones convergen en un valor similar al obtenido por máximos y mínimos.

    Si bien la función ejemplo examinada es muy simple (sólo presenta un máximo para el intervalo 0 a 31), ha permitido verificar la capacidad que tiene el algoritmo genético y sus operadores para llegar a encontrar un valor óptimo global a partir de datos iniciales no estructurados rigurosamente (heurística).

    Palabras claves: Algoritmo genético, operaciones genéticas aleatorias, heurística, computación evolutiva.  


    Abstract

    This paper describes the optimization of a simple function by maximum and minimum, comparing this result with the one obtained through a macro module in Excel sheet of the genetic algorithm, which starts the search for an optimum from a random population of possible solutions followed by genetic operations: (assignment by roulette, crossing, mutation and elitism) until almost all populations and generations converge in a value similar to that obtained by maximums and minimums.

    Although the example function examined is very simple (it only presents a maximum for the interval 0 to 31), it has allowed to verify the ability of the genetic algorithm and its operators to reach an optimal global value from unstructured initial data. rigorously (heuristic).

    Keywords: Genetic algorithm, random genetic operations, heuristics, evolutionary computation


    Resumo

    Este artigo descreve a otimização de uma função simples por máximo e mínimo, comparando este resultado com o obtido através de um módulo macro na planilha Excel do algoritmo genético, que inicia a busca por um ótimo de uma população aleatória de possíveis soluções seguido de operações genéticas: (atribuição por roleta, cruzamento, mutação e elitismo) até que quase todas as populações e gerações convergem em um valor similar ao obtido por máximos e mínimos.

    Embora a função de exemplo examinada seja muito simples (apresenta apenas um máximo para o intervalo de 0 a 31), permitiu verificar a capacidade do algoritmo genético e seus operadores para alcançar um valor global ótimo a partir de dados iniciais não estruturados. rigorosamente (heurística).

    Palavras-chave: Algoritmo genético, operações genéticas aleatórias, heurísticas, computação evolutiva.


     

     

    INTRODUCCIÓN 

    Por lo general el término algoritmo1, está relacionado con un procedimiento lógico para obtener el resultado de un problema complicado, haciendo uso repetido de otro método matemático de cálculo más sencillo.

    En la actualidad, los algoritmos son parte de métodos de resolución de problemas que siguen una sucesión de pasos, simbolizados, a través de diagramas de flujo como es el caso de los programas de computación, o refiriéndose a algún modelo de la naturaleza.

    Al respecto, John Henry Holland propuso en 1970 la aplicación de un tipo de algoritmo similar al que controla el comportamiento de la herencia biológica2 y genética molecular. En consecuencia, un algoritmo genético básico,  promueve la evolución de un grupo de formaciones binarias a través de acciones aleatorias, parecidas a las que gobiernan la herencia biológica (recombinaciones genéticas y mutaciones), así como también la selección de acuerdo con algún criterio, para decidir cuáles son los Individuos mejor adaptados que sobreviven al medio (en equivalencia a un óptimo), y cuáles los menos aptos, a ser descartados. Esta primera característica, permite utilizar este algoritmo genético3 para resolver problemas de optimización.  

    De acuerdo con este enfoque, en el presente artículo se considera el procedimiento que sigue una aplicación algorítmica genética básica, para optimizar una función,  encontrando el valor x que permita a la función f(x) alcanza su máximo valor. 

     

    DESARROLLO

    Si por ejemplo la función ha optimizar corresponde a  la siguiente expresión algebraica:

    Tradicionalmente se pueden encontrar puntos críticos (máximos y mínimos), a partir de la primera y segunda derivadas. Por el criterio de la primera derivada, si la función f’(x0) es igual a cero o no existe, entonces hay un punto crítico en x0. Así se tiene que  los puntos críticos de la función son: x1 = 10, x2 = 30.

    Por la segunda derivada, si f(x0) < 0 entonces x0 es un máximo.

    Evaluando las dos raíces se tiene:

    6(10) – 120 = -60, como -60 < 0 es máximo.
    6(30) – 120 =  60, como  60 > 0 es mínimo

    Por lo tanto f(x) = x3 - 60x2 + 900x + 100               

    Cuando x = 10, f(x) = 4100  (máximo valor)
    Cuando  x = 30, f(x) =   100  (mínimo valor)

    Esta solución analítica puede comprobarse gráficamente, ver figura 1.

    Proceso iterativo del algoritmo genético básico 

    En la figura 2,  se muestra de manera general el proceso cíclico del algoritmo genético. El proceso inicial con la definición de la población inicial sobre el cual se aplica procesos de selección, operadores genéticos y validación o reemplazo, hasta obtener una nueva población y el ciclo vuelve a repetirse.   

    Definición de la población inicial

    El proceso de búsqueda parte de una población inicial, generalmente el procedimiento es aleatorio, cada uno de los individuos o soluciones que conforman la población inicial se define aleatoriamente del universo de soluciones. 

    Codificación de la población  

    •      Desde una visión biológica la información genética de un organismo está en su cromosoma4 el cual contiene la información genética del organismo representado mediante sus alelos, la configuración del cromosoma expresado como genotipo5 tiene su efecto indicado como fenotipo6, el cual hace referencia a lo que se desarrollará a partir del genotipo.

    •      Refiriéndose a esta similitud, en los algoritmos genéticos los cromosomas pueden ser representados como cadenas binarias y a partir de este genotipo llegar al fenotipo que puede representar a un número o símbolo. La regla de correspondencia de genotipo a fenotipo describe un proceso de codificación y decodificación. 

    Operadores genéticos

    Para obtener poblaciones con mejores individuos es necesario hacer cambios en los cromosomas de la nueva población mediante los operadores genéticos, los operadores genéticos más usuales son la selección, cruce y mutación, aunque también se pueden utilizar otros operadores como: reagrupamiento, colonización-extinción o migración. A continuación se describen los operadores principales.

    •      Selección, este operador permite conformar la nueva población, existen varios métodos como por ejemplo: selección por ruleta, selección por torneo, orden lineal y selección aleatoria.

    •      Cruce, los métodos más usuales para el cruce son: cruce de: un punto, dos  puntos y cruce uniforme. También existen cruces donde la codificación no necesariamente es binaria, por ejemplo si los genotipos empleados son enteros o reales puede usarse operadores de cruce como: media, media geométrica, y extensión (Gestal, Rivero, Rabuñal, y Pazos, 2010).

    •      Mutación, realiza un cambio aleatorio en el genotipo, generalmente en un alelo. 

    •      Copia, es una opción asexual que permite realizar la copia de un individuo en la nueva población.    

    •      Elitismo, es caso particular de la copia, ya que se realiza la copia de los mejores individuos en la nueva población. 

    Estrategia de reemplazo

    •      La transición de una población a una nueva población luego de aplicarse los operadores genéticos pasa por una estrategia de reemplazamiento o validación, que tiene la finalidad  de reunir en la nueva población las mejores soluciones, las estrategias de reemplazamiento más usuales son: elitismo, reemplazar al peor de la población, torneo restringido, peor entre semejantes y algoritmo de crownding (remate determinístico). 

    Solución por algoritmo genético básico

    Para la optimización de la función:

    Aplicando un algoritmo genético básico, se considera una población inicial de soluciones y a partir de ésta, se construyen nuevas generaciones de soluciones que convengan a la solución global, bajo este enfoque solo las soluciones más aptas conforme a una evaluación, permanecerán en el tiempo y tendrán descendencia, mientras que las peores soluciones serán  eliminadas. 

    Estructura del algoritmo genético

    La estructura del algoritmo genético que optimiza la función se muestra en el pseudocódigo de la figura 3.

    Codificación y tamaño de ensayo de la población

    Para la codificación de la población se considera la transformación de números del sistema decimal al binario, así cada número decimal estará representado por un cromosoma (binario con un número de bits7 = alelos), figura 4, con estas características el rango de forma corresponde a números enteros en el intervalo [0, 31], seleccionados aleatoriamente para una población de tamaño diez. En la tabla 1 se muestran las primeras  operaciones de selección realizadas sobre la población inicial de ensayo.

    Cruzamiento

    Este operador considera el cruce de cromosomas en un punto, la posición de cruce se cuenta de izquierda a derecha entre los padres, ver  figura 5. 

    En la tabla 2 se muestran los resultados del cruzamiento de cromosomas. La columna binario indica la conversión del número decimal x´ correspondiente a binario, la columna punto determina el lugar de cruce generado de manera aleatoria, sin embargo, existe la posibilidad de no realizar el cruzamiento si el número aleatorio es cinco, finalmente en la última columna se tiene una nueva población resultado del cruce.

    Mutación

    En esta operación se considera mutar (cambiar las características de un determinado porcentaje de los cromosomas de la población, para el ejemplo en cuestión, el porcentaje de mutación fue 10 porciento, modificando uno de sus alelos a un valor opuesto. La figura 6 muestra esta operación.

    Los cambios realizados luego de realizar la mutación al 10 porciento de la población se muestran en la tabla 3. En la columna posición se indica el alelo a mutar de manera aleatoria, el valor 0 en la posición indica que no se realizará la mutación, particularmente para esta tabla, el factor aleatorio permite una mutación al 10 porciento de la población. Las columnas cruce y mutación describen el cambio realizado después de la mutación, finalmente la columna x’’ muestra la nueva población obtenida después del cruce y mutación.

    Elitismo

    Se ha demostrado que un algoritmo genético debe aplicar el operador genético de elitismo para converger hacia un óptimo. Este elemento puede verse como un mecanismo que valida la transición de una población inicial a otra mejor (Rudolph, 1994).

    Bajo esta perspectiva, a partir de una población x se ha realizado operaciones de selección terminando en una población x’, después de las operaciones de cruce y mutación se genera otra población z. El proceso de validación trabaja sobre cada uno de los individuos o soluciones de la población z, si un individuo ha mejorado después de todo estos proceso pasa a formar parte de una nueva población x’’, representando a una población formada por las mejores soluciones. La figura 7 representa el mecanismo de validación utilizado. 

    Así el mecanismo de validación permite que una solución xi que pertenece a la población x, pueda permanecer en la población de los mejores x’’, siempre y cuando la solución zi obtenida a partir de xi resulte ser una solución deficiente, en otro caso la solución zi ingresa a la población de los mejores x’’ en lugar de xi. Ver  tabla 3.

    Convergencia a la solución

    Luego de ejecutarse el módulo macro con los parámetros:

    •      Número de hijos por generación  = 10
    •      Numero de generaciones              =  8
    •      Porcentaje de mutación                = 20%

    Se obtienen las siguientes generaciones de poblaciones descritas en la tabla 4.  

    Discusión de resultados

    Encontrado el óptimo por derivación (máximos y mínimos) de la función ejemplo, y comparando con el obtenido, a través del algoritmo genético básico y sus operadores aleatorios de cruce, mutación, elitismo y convergencia partiendo de una población inicial, ambos coinciden en el mismo número de x, que permite a la función f(x) alcanzar su máximo valor. 

     

    CONCLUSIONES

    Si bien la función ejemplo examinada es muy simple (sólo presenta un máximo para el intervalo 0 a 31), ha permitido verificar la capacidad que tiene el algoritmo genético y sus operadores para llegar a encontrar un valor óptimo global a partir de datos iniciales no estructurados rigurosamente (heurística).

     

    COMENTARIO FINAL 

    Importancia actual del algoritmo genético

    El desarrollo específico de software y hardware en la programación por computadora, ha demostrado que un algoritmo genético es muy útil para solucionar problemas de optimización con o sin restricciones, siguiendo un proceso de selección que a través de varias generaciones sucesivas evoluciona hacia la solución óptima.

    Entre las muchas aplicaciones del algoritmo genético por computadora, se tienen por ejemplo la optimización de funciones, el dilema del prisionero y el problema del vendedor viajero. (Michalewicz, 1996). La solución de sistemas de ecuaciones, el problema de la N reinas de ajedrez (Gestal, et-al, 2010). En consecuencia, el algoritmo genético se puede aplicar para resolver problemas donde los algoritmos de optimización estándar tienen indeterminaciones, así como también en problemas donde la función objetivo es discontinua, no diferenciable, estocástica o no lineal, ingresando en la clasificación de los métodos heurísticos de optimización, conjuntamente con los algoritmos de evolución diferencial, búsqueda diferencial, relajación dinámica, hill climbing (ascenso acelerado), Nelder-Mead, optimización por enjambre de partículas y optimización artificial de la colonia de abejas, por citar a los más actuales.

     

    NOTAS

    1 Recordando por ejemplo, el uso de algoritmos aritméticos para efectuar operaciones tales como la multiplicación, división, obtención de raíces cuadradas, máximo común divisor y mínimo común múltiplo de un número mediante su descomposición en factores primos, división de un polinomio por x – a mediante la regla de Ruffini, entre otros.

    2 Características, fisiológicas, morfológicas y bioquímicas de los seres vivos según el medio donde habitan, y que se transmiten de padres a hijos (descendencia).

    3 Diferenciándose de otros algoritmos evolutivos por utilizar números binarios para representar a sus componentes.

    4 Estructura compleja  pero muy bien organizada de información.

    5 Conjunto de genes de un organismo.

    6 Conjunto de rasgos característicos de un organismo.

    7 La cantidad de alelos del cromosoma, está en función del número de individuos establecido para la población, y puede aproximarse por la relación:
    nºbits = log población/log 2.

     

    BIBLIOGRAFÍA

    Optimización matemática, https://es.m.wikipedia.org, Consulta: 10/10/2018,

    Goldberg, D. E., Holland, J.H., 1988, Machine learning 3:95.https://doi.org/10.1023/A:1022602019183,Link Springer.com,        [ Links ]

    Michalewicz, Z., 1996, Genetic Algorithms + Data Structures = Evolution Programs, Springer-Verlag, ISBN: 978-3540606765, Alemania,        [ Links ]

    Gestal, M., et-al., 2010, Introducción a los algoritmos genéticos y programación genética, monografía nº 140, Universidad de La Coruña, ISBN: 978-84-9749-422-9, Galicia – España,

    Rudolph, G., 1994, Convergence properties of canonical genetics algorithms,IEEE Transactions on neural networks, Volume: 5 , Issue: 1 , Jan, pp: 96–101, USA.