Algoritmo genético general mejorado para resolver problemas de optimización con restricciones (código MATLAB)

Tabla de contenido

1. Información general

2 Algoritmo Genético

2.1 El concepto básico de algoritmo genético

2.2 Características del algoritmo genético 

2.3 Diagrama de bloques del programa 

3 resultados en ejecución

 4 Algoritmo genético general mejorado para resolver problemas de optimización con restricciones (código MATLAB)


1. Información general

       El Algoritmo Genético (GA) es un algoritmo de búsqueda de optimización global adaptativo formado por la simulación del proceso genético y de evolución de los organismos en el entorno natural . Fue propuesto por primera vez por el profesor JH Holland en los Estados Unidos, y se originó a partir de la investigación sobre sistemas adaptativos naturales y artificiales en la década de 1960; en la década de 1970, KADe Jong, basado en la idea de los algoritmos genéticos, llevó a cabo una gran cantidad de experimentos de cálculo de optimización de funciones numéricas puras en computadoras80 En la década de 1990, DJ Goldberg resumió el algoritmo genético sobre la base de una serie de trabajos de investigación. El algoritmo genético es un método aleatorio de búsqueda y optimización global desarrollado imitando el mecanismo de evolución biológica en la naturaleza. Se basa en la teoría de la evolución de Darwin y la teoría genética de Mendel, y es esencialmente un método de búsqueda global, paralelo y eficiente, que puede adquirir y acumular automáticamente conocimiento sobre el espacio de búsqueda durante el proceso de búsqueda, y controlar adaptativamente el proceso de búsqueda para obtener la solución óptima. Operación del Algoritmo Genético: Utilice el principio de "supervivencia del más apto" para generar sucesivamente una solución óptima aproximada en la población de solución potencial. En cada generación, la selección individual se realiza de acuerdo con el valor de aptitud del individuo en el dominio del problema y el método de reconstrucción tomado de la genética natural, y se genera una nueva solución aproximada. Este proceso conduce a la evolución de los individuos de la población, y los nuevos individuos resultantes se adaptan mejor al medio ambiente que los individuos originales.

       La teoría de la selección natural sostiene que los más aptos sobreviven y que si los organismos quieren sobrevivir, deben luchar por sobrevivir. La lucha por la supervivencia incluye tres aspectos: la lucha dentro de las especies, la lucha entre especies y la lucha entre los organismos y el medio ambiente. En la lucha por la supervivencia, los individuos con mutaciones favorables tienden a sobrevivir y tienen más oportunidades de transmitir mutaciones favorables a la descendencia; es probable que los individuos con mutaciones desfavorables sean eliminados y las posibilidades de producir descendencia serán mucho menores. Por tanto, todos los individuos que ganan en la lucha por la supervivencia son individuos con una gran adaptabilidad al medio. Darwin llamó a este proceso de supervivencia de los más aptos y eliminación de los no aptos en la lucha por la supervivencia selección natural . La teoría de la selección natural de Darwin muestra que la herencia y la variación son los factores internos que determinan la evolución de los organismos. La herencia se refiere a la similitud de rasgos entre padres e hijos; la variación se refiere a las diferencias de rasgos entre padres e hijos, así como entre individuos en la descendencia. En los organismos, la herencia y la variación están estrechamente relacionadas. Los rasgos hereditarios de un organismo tienden a mutar y algunos de los rasgos mutados pueden heredarse. La herencia puede transmitir continuamente los rasgos de los organismos a la descendencia, manteniendo así las características de la especie; la variación puede cambiar los rasgos de los organismos, para adaptarse a nuevos entornos y continuar desarrollándose. Toda actividad vital de una criatura tiene su base material, al igual que la herencia y la variación de una criatura. De acuerdo con la investigación de la citología y la genética modernas, el principal portador de material genético es el cromosoma, y ​​el gen es un fragmento con efecto genético, que almacena información genética, se puede copiar con precisión y también puede sufrir mutaciones. El propio organismo selecciona y controla la herencia de sus rasgos a través de la duplicación y el cruce de genes. Al mismo tiempo, a través de la recombinación de genes, la variación de genes y la variación en la estructura y número de cromosomas, se producen una variedad de fenómenos de variación. Las características genéticas de los organismos permiten que las especies en el mundo biológico permanezcan relativamente estables; las características de variación de los organismos permiten que los organismos individuales produzcan nuevos rasgos e incluso formen nuevas especies, lo que promueve la evolución y el desarrollo de los organismos. Debido a la posibilidad de cruce y mutación de genes en la reproducción de los organismos, se producen ligeros cambios continuos en los rasgos biológicos, que proporcionan las condiciones materiales y la base para la selección direccional del entorno externo, y hacen posible la evolución del h2 biológico .

2 Algoritmo Genético

2.1 El concepto básico de algoritmo genético

En términos simples, el algoritmo genético utiliza tecnología de búsqueda de población para representar a la población como un conjunto de soluciones de problemas y genera una nueva generación de población aplicando una serie de operaciones genéticas como selección, cruce y mutación a       la población actual , y evoluciona gradualmente la población para incluir el estado óptimo óptimo aproximado. Dado que el algoritmo genético es un método informático formado por la interpenetración de la genética natural y la informática, a menudo se utilizan algunos términos básicos relacionados con la evolución natural en el algoritmo genético, y la relación correspondiente entre los términos se muestra en la Tabla 2.1.

Término de genética

Terminología del algoritmo genético

grupo

conjunto de soluciones factibles

individual

Solución factible

cromosoma

Codificación de Soluciones Factibles

Gene

componentes factiblemente decodificables

forma genética

codigo genetico

adaptabilidad

valor de la función objetivo

elegir

seleccione la acción

cruz

operación cruzada

Mutaciones

operación de mutación

2.2 Características del algoritmo genético 

El algoritmo genético es un método de búsqueda paralelo, eficiente y global formado por la simulación del proceso genético y evolutivo de los organismos en el medio natural, que tiene principalmente las siguientes características:

(1) El algoritmo genético toma la codificación de la variable de decisión como objeto de operación. Esta forma de codificar variables de decisión hace posible utilizar conceptos como cromosomas y genes en biología como referencia en el proceso de cálculos de optimización, imitar los mecanismos de herencia y evolución en la naturaleza y aplicar operadores genéticos convenientemente. Especialmente para algunos problemas de optimización que solo tienen el concepto de código pero no el concepto de valor, o es difícil tener el concepto de valor, el método de procesamiento de codificación muestra sus ventajas únicas.

(2) El algoritmo genético utiliza directamente el valor de la función objetivo como información de búsqueda . Solo utiliza el valor de la función de aptitud transformado a partir del valor de la función objetivo para determinar la dirección de búsqueda adicional y el rango de búsqueda sin requerir otra información auxiliar, como el valor derivado de la función objetivo. En aplicaciones prácticas, muchas funciones no pueden o son difíciles de derivar, o incluso no existen en absoluto.Para la optimización y optimización combinatoria de tales funciones objetivo, el algoritmo genético muestra su alta superioridad, porque evita el problema de la derivación de funciones. obstáculo.

(3) El algoritmo genético utiliza la información de búsqueda de múltiples puntos de búsqueda al mismo tiempo . El proceso de búsqueda del algoritmo genético de la solución óptima parte de un grupo inicial compuesto por muchos individuos, en lugar de un solo individuo.

Se realizan operaciones como selección, cruce y mutación en este grupo para generar una nueva generación de grupos, que incluye mucha información de grupo. Esta información puede evitar buscar algunos puntos innecesarios, lo que equivale a buscar más puntos, que es una especie de paralelismo implícito exclusivo del algoritmo genético.

(4) El algoritmo genético es una técnica de búsqueda basada en la probabilidad . El algoritmo genético es una tecnología de búsqueda de probabilidad adaptativa, y sus operaciones, como la selección, el cruce y la mutación, se llevan a cabo de manera probabilística, lo que aumenta la flexibilidad de su proceso de búsqueda. Aunque esta característica probabilística también producirá algunos individuos con baja aptitud en la población, a medida que avanza el proceso de evolución, siempre se producirán más y más individuos excelentes en la nueva población. Comparado con algunos otros algoritmos, la robustez del algoritmo genético hace que la influencia de los parámetros en su efecto de búsqueda sea lo más pequeña posible. (5) El algoritmo genético tiene las características de autoorganización, autoadaptación y autoaprendizaje. Cuando el algoritmo genético utiliza el proceso evolutivo para obtener información para organizar su propia búsqueda, los individuos con alta aptitud física tienen una mayor probabilidad de supervivencia y obtienen una estructura genética más adaptable al entorno. Al mismo tiempo, el algoritmo genético tiene escalabilidad y es fácil de combinar con otros algoritmos para generar un algoritmo híbrido que combina las ventajas de ambas partes.

2.3 Diagrama de bloques del programa 

          

El flujo de operación del algoritmo genético se muestra en la Figura 2.1. Los pasos específicos son los siguientes:

(1) Inicialización . Establezca el contador de álgebra de evolución g = 0, establezca el álgebra de evolución máxima G y genere aleatoriamente individuos NP como la población inicial P (0).

(2) Evaluación individual . Calcule la aptitud de cada individuo en la población P().

(3) Seleccione la operación . El operador de selección actúa sobre la población y, de acuerdo con la aptitud del individuo, de acuerdo con ciertas reglas o métodos, selecciona algunos individuos excelentes para heredar a la siguiente generación de población.

(4) Operación cruzada . Aplicar el operador de cruce a la población e intercambiar algunos cromosomas entre los pares de individuos seleccionados con cierta probabilidad de generar nuevos individuos.

(5) Operación de variación . Aplicar el operador de mutación a la población, y cambiar uno o algunos valores de genes a otros alelos con cierta probabilidad para el individuo seleccionado. Después de que la población P(i) se someta a operaciones de selección, cruzamiento y mutación, se obtiene la siguiente generación de población P(t+1). Calcule su valor de aptitud y clasifíquelo de acuerdo con el valor de aptitud, listo para la próxima operación genética.

(6) Juicio de la condición de terminación : si g<G, entonces g=g+1, vaya al paso (2); si g>G, entonces el individuo con la máxima aptitud obtenida en este proceso de evolución se presenta como la solución óptima, para terminar el cálculo.

Parte del código:

function New_Population = EnviornmentalSelection(Population,Offspring,state)
% 本函数用来挑选新的种群

N = length(Population);
New_Population = Population;

%% 基本思路如下:为了确保种群的多样性,采用一对一替换机制。只有后代表现强于父代才会发生替换。
for i=1:N
    pcv = Population(i).con;
    ccv = Offspring(i).con;
    pf = Population(i).obj;
    cf = Offspring(i).obj;
    if (pcv == 0 && ccv == 0) % 采用 feasible rules 挑选新解
        if pf < cf
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    else
        if pcv < ccv
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    end
end

% %% 此处采用精英保留策略,每一次迭代之后,挑选指定数量的最佳解替换最劣解,其中数量于概率根据迭代进度计算
% objs = [New_Population.obj];
% cons = [New_Population.cons];
% [~,index] = sortrows([cons' objs']);
% n = ceil((1-state)*(N/100));
% if rand>state*state/2
%     New_Population(index(end-n+1:end)) = New_Population(index(1:n));
% end

3 resultados en ejecución

 4 Algoritmo genético general mejorado para resolver problemas de optimización con restricciones (código MATLAB)

Página de inicio del blog: @果格格果树果

Supongo que te gusta

Origin blog.csdn.net/weixin_61181717/article/details/128097603
Recomendado
Clasificación