Asignaciones del curso Inteligencia artificial y aprendizaje automático (4. Optimización de funciones)


Este artículo es la cuarta parte de la tarea del curso de inteligencia artificial y aprendizaje automático (4. Optimización de funciones)

¡Este artículo es solo como referencia de aprendizaje!


Saltar a otros capítulos:

1. Conceptos básicos de la ingeniería del conocimiento

2. Aproximación de funciones

3. Lógica difusa

4. Optimización de funciones


Tabla de contenido

4. Optimización de funciones

4.1 Visualización de funciones

4.2 Optimización de la función del algoritmo genético

4.2.1 Principio del algoritmo genético

4.2.2 Pasos de implementación del algoritmo genético

4.2.3 Cambiar los parámetros relacionados con el algoritmo genético

4.2.4 Análisis y resumen de resultados experimentales.

4.3 Optimización de la función del algoritmo de enjambre de partículas

4.3.1 Principio del algoritmo de enjambre de partículas

4.3.2 Pasos experimentales del algoritmo de enjambre de partículas

4.3.3 Cambiar los parámetros relacionados del algoritmo de enjambre de partículas

4.3.4 Análisis y resumen de resultados experimentales.

4.4 Comparación y análisis de desempeño de los resultados de GA y PSO

4.4.1 Comparación de resultados

4.4.2 Análisis de desempeño y similitudes entre GA y PSO

4.4.3 Diferencias entre GA y PSO

4.5 Resumen y conocimientos del experimento

referencias

4. Optimización de funciones


P: Utilice GA y PSO para estudiar el problema de valor mínimo de la siguiente función:

f(x_{1},x_{2})=2cos(x_{1}x_{2})+3x_{1}+x_{2}^{2},x_{1},x_{2}\in [-5,5]

Requerir:

1. Diseño de algoritmos e implementación de algoritmos (anote métodos y pasos específicos para codificación, selección, cruce, mutación, etc.);

2. Cambiar los parámetros relevantes del algoritmo (tamaño de la población, número de iteraciones, probabilidades de cruce y mutación, pesos de inercia, factores de aprendizaje, etc.) y estudiar su impacto en el rendimiento de la optimización;

3. Análisis y comparación de los resultados de los dos algoritmos.

4.1 Visualización de funciones

       Primero, dibuje la imagen de la función objetivo: el valor de la función se usa como la coordenada z y la imagen del dominio [-5, 5] se muestra visualmente usando diferentes precisiones. La precisión es n = 100, n = 1000 respectivamente La imagen de la función se muestra en la Figura 4-1. Como se muestra en la Figura 4-2, el código de visualización visual es el siguiente:

%% 函数可视化MATLAB源码
figure(1)
x_1 = linspace(-5,5,100); % 设置x轴的范围
x_2 = x_1; % 设置y轴范围
[X_1,X_2] = meshgrid(x_1,x_2); % 将其x,y轴网格化
f = 2.*cos(X_1.*X_2) + 3.*X_1 + X_2.^2;
Fig = mesh(X_1,X_2,f); % 绘制三维曲面图
title('函数f三维曲面图')
xlabel('x_1')
ylabel('x_2')
zlabel('f')
grid on

 Figura 4-1 Imagen de la función Precisión n=100

Figura 4-2 Imagen de la función Precisión n=1000

4.2 Optimización de la función del algoritmo genético

       El algoritmo genético (GA) se originó a partir de investigaciones de simulación por computadora en sistemas biológicos [3]. Es un método estocástico de búsqueda y optimización global desarrollado para imitar el mecanismo de evolución biológica en la naturaleza y se basa en la teoría de la evolución de Darwin y la teoría de la genética de Mendel. 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 de forma adaptativa el proceso de búsqueda para obtener la mejor solución [4, 5].

4.2.1 Principio del algoritmo genético

       Según la teoría de la evolución biológica, el algoritmo genético simula el problema a resolver en un proceso de evolución biológica. Al simular el proceso de reproducción y evolución de los organismos naturales, el cruce de genes, la mutación genética y otros procesos, genera la siguiente generación y gradualmente elimina individuos o soluciones con poca adaptabilidad. Retener individuos o soluciones con mayor aptitud se denomina "selección natural y supervivencia del más apto". Después de generaciones limitadas de evolución, es probable que evolucionen individuos con una aptitud física muy alta [6].

       Los términos relevantes en algoritmos genéticos se muestran en la Tabla 4-1.

Tabla 4-1 Nombres, símbolos y descripciones de términos relacionados con algoritmos genéticos

nombre

representaciones y símbolos

ilustrar

Gene

genotipo

Llevar la información básica de un individuo, la expresión interna de los cromosomas característicos.

cromosoma

cromosoma

vector de un cierto número de genes

fenotipo

fenotipo

La manifestación externa de un individuo formada según el genotipo, la manifestación externa del rasgo cromosómico.

individual

individual

Una entidad que tiene todas las características de un ser vivo.

población

población

un conjunto de varios individuos

elegir

selección

El proceso de eliminar individuos con poca adaptabilidad en una población y retener individuos con gran adaptabilidad.

cruz

Transversal

El proceso de intercambio de uno o más genes entre dos cromosomas.

Mutaciones

mutación

El proceso de mutación de uno o más genes en un cromosoma.

adaptabilidad

aptitud física

Indicadores utilizados para evaluar la adaptabilidad individual

codificación

codificación

El proceso de escribir genes en los cromosomas.

descodificación

descodificación

El proceso de codificación inversa de los cromosomas a los genes.

       El diseño del algoritmo genético es el siguiente:

       1. Codificación de cromosomas: en los algoritmos genéticos, los métodos de codificación comunes incluyen: codificación binaria, codificación de punto flotante, codificación de posición, etc. Aquí hay un ejemplo para ilustrar la operación específica de la codificación binaria: para la función f (x) de la relación de mapeo x->f, el rango de valores de la variable independiente x es [a, b], según la conversión decimal binaria relación, se puede encontrar un valor mínimo de ε tal que:

2^{\varepsilon}-1\geq \frac{ba}{\xi }

Entre ellos, ε es la longitud del número binario codificado, ξ es la precisión. Por ejemplo, dado ξ = 0,1, entonces el número mínimo de dígitos de la variable independiente que se puede tomar es un decimal y ξ es generalmente 1. , 0,1, 0,01, 0,001, etc. Por ejemplo, aquí a = 63, b = 0, ξ = 1, la longitud mínima del número binario codificado se puede obtener como ε = 6. Cualquier número entero del 0 al 63 se puede representar mediante un número binario de 6 bits. Después de codificar 10 y 60, los cromosomas obtenidos son [001010] y [111100] respectivamente. La codificación binaria se utiliza más en la práctica: los números simples 0 y 1 se pueden utilizar para simular fenotipos genéticos en los cromosomas y también proporciona operaciones más convenientes para la selección cromosómica posterior, el cruce de genes y la mutación genética.

       2. Inicialización de la población: establecer el tamaño de la población afectará directamente la eficiencia del cálculo y si se puede encontrar la solución óptima. La configuración del tamaño de la población se considera principalmente desde los dos aspectos siguientes: para la diversidad de la población, cuanto mayor sea la población, mejor, para evitar caer en la optimización local; para la eficiencia computacional, una población más grande significa un aumento en la cantidad de cálculo y El tiempo de cálculo de cada generación aumentará. Por lo tanto, el tamaño de la población debe establecerse en función de las condiciones reales.

       3. Calcule la aptitud individual: Primero, determine la función de aptitud. La selección de la función de aptitud afecta directamente la velocidad de convergencia del algoritmo genético y también determinará si se puede encontrar la solución óptima global. La función de la función de aptitud es evaluar la adaptabilidad ambiental de los individuos de la población. Los individuos con buena aptitud tienen mayores posibilidades de supervivencia. La función de aptitud puede tomar la forma de una función en diferentes modelos o puede ser un valor fijo.

       4. Selección: La selección en los algoritmos genéticos generalmente se divide en método de ruleta y método de competencia. El método de la ruleta normaliza la aptitud de todos los individuos de la población y obtiene los datos como la probabilidad de cada individuo. Al generar un número aleatorio [0,1], se determina la probabilidad máxima del individuo seleccionado. La idea del método de competencia es muy simple: se seleccionan aleatoriamente dos o más individuos de la población para comparar su aptitud, el que tenga la mayor aptitud se copiará a sí mismo como la siguiente generación y los individuos restantes serán eliminados. En el método de competencia, si el número de individuos seleccionados es mayor a 2, pero solo hay una descendencia, la población seguirá disminuyendo, por el contrario, si el número de descendencia es mayor que el número de padres, la población seguirá disminuyendo. Aumentar. Es importante encontrar la solución óptima global. Todo causará ciertas dificultades.

       5. Cruce: la mutación cruzada incluye cruce de un solo punto y cruce de múltiples puntos. El cruce de un solo punto selecciona aleatoriamente dos individuos y genes en la misma posición en los cromosomas de los dos individuos, e intercambia posiciones genéticas para obtener dos individuos con nuevos cromosomas. La mutación cruzada del algoritmo genético es similar a la recombinación cruzada de cromosomas.

       6. Mutación: la mutación genética incluye mutación de un solo punto y mutación de múltiples puntos, es decir, uno o más genes en el cromosoma se seleccionan aleatoriamente para la operación de mutación.

       7. Decodificación: el individuo óptimo de la población de última generación se somete a la operación inversa de la codificación para realizar el mapeo desde la codificación hasta la solución, y este resultado se utiliza como la solución óptima aproximada del problema. El diagrama de flujo del algoritmo genético se muestra en la Figura 4-3.

 Figura 4-3 Diagrama de flujo del algoritmo genético

       El proceso del algoritmo genético es el siguiente:

       (1) Inicialice los hiperparámetros del tamaño de la población inicial, la probabilidad de mutación cruzada, la probabilidad de mutación genética y el número de iteración de evolución de la población. y codificar a todos los individuos.

       (2) Proporcione una función de aptitud adecuada y calcule el valor de aptitud de cada individuo de la población.

       (3) Utilizar el método de la ruleta o el método de competición para sobrevivir y eliminar al más apto de esta generación.

       (4) La mutación cruzada de un solo punto o de múltiples puntos se adopta en la descendencia de acuerdo con la probabilidad de mutación cruzada.

       (5) Utilice variación genética de un solo punto o de múltiples puntos en la descendencia de acuerdo con la probabilidad de variación genética.

       (6) Determine si se ha alcanzado el número de iteraciones de evolución de la población establecido por la inicialización. De lo contrario, ingrese la siguiente iteración de la población, use esta descendencia como padre y comience desde 2 nuevamente; si está satisfecho, salga de genética y registrar todos los individuos de la última generación y sus adaptaciones valor de grado.

       (7) Encuentre el valor de aptitud óptimo en la última generación y decodifíquelo para obtener su valor en el espacio de solución.

       Combinados con el diseño de algoritmos genéticos, los principios de diseño comúnmente utilizados para parámetros se muestran en la Tabla 4-2.

Tabla 4-2 Principios de diseño comunes para parámetros de algoritmos genéticos

nombre

símbolo

valor

Tamaño de la población (número de individuos)

S

[1,100]

Probabilidad de mutación cruzada

Ordenador personal

[0.4,0.99]

Probabilidad de mutación genética

Pm

[0,0001,0,2]

Número de iteraciones de la evolución de la población.

GRAMO

[100,500]

4.2.2 Pasos de implementación del algoritmo genético

       1. Primero determine la función de aptitud. El código fuente de MATLAB es el siguiente:

%% 适应度函数fitness MATLAB源码
function fx = fitness(x)
fx = 2*cos(x(1)*x(2)) + 3*x(1) + x(2)^2;
end

       2. Luego determine los parámetros del modelo de algoritmo genético como se muestra en la Tabla 4-3. Configure los parámetros del modelo de algoritmo genético a través de gaoptimset y establezca parámetros como el espacio de solución, el tamaño de la población, la probabilidad de cruce, la probabilidad de mutación y el número máximo de iteraciones a través del estructura optiGA.Código fuente de MATLAB de la siguiente manera.

Tabla 4-3 Configuración de parámetros del algoritmo genético

nombre

símbolo

valor

Tamaño de la población (número de individuos)

S

100

Probabilidad de mutación cruzada

Ordenador personal

0,8

Probabilidad de mutación genética

Pm

0.1

Número de iteraciones de la evolución de la población.

GRAMO

100

%% 遗传算法主函数MATLAB源码
%% GA调参
optiGA = gaoptimset;
optiGA.PopInitRange = [[-5 -5];[5 5]];% 个体解空间
optiGA.PopulationSize = 100;% 种群规模
optiGA.EliteCount = 2;% 每次迭代保留下来的个体数量
optiGA.CrossoverFraction = 0.8;% 交叉概率
optiGA.MutationFraction = 0.1;% 变异概率
optiGA.Generations = 100;% 最大迭代次数
optiGA.MutationFcn = @mutationuniform;%变异函数句柄
optiGA.PlotFcns = @gaplotbestf;
optiGA.TolFun = 1.000e-006;

numOfVars = 2;%变量个数

%% 运行GA
[x,fval] = ga(@fitness,numOfVars,optiGA)
disp('min(fx) is:')
fx = 2*cos(x(1)*x(2)) + 3*x(1) + x(2)^2

X 1, x 2 y la mejor aptitud        del individuo óptimo, es decir, el valor f, se obtienen ejecutando la operación, respectivamente, como se muestra en la Tabla 4-4. La curva de declive de la función de desempeño (valor de la función de aptitud) es como se muestra en la Figura 4-4 (a), y marque la posición del individuo óptimo en el gráfico de funciones como se muestra en la Figura 4-4 (b). También es necesario utilizar la complejidad para evaluar la calidad del modelo, por lo que el El tiempo de ejecución y la proporción de memoria de ejecución se trazan como se muestra en la Figura 4-5.

Tabla 4-4 Fitness individual óptimo y óptimo

x1 _

x2 _

F

-4.911066980849371

-0.556144351064970

-16.257882472418547

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-4 Resultados de la ejecución del algoritmo genético

Figura 4-5 Complejidad y proporción de memoria en ejecución

4.2.3 Cambiar los parámetros relacionados con el algoritmo genético

       Cambie los parámetros relevantes del algoritmo, modifique el tamaño de la población n, el número de iteración m, la probabilidad de cruce Pc y los parámetros del modelo de probabilidad de mutación Pm como se muestra en la Tabla 4-5, y estudie su impacto en el rendimiento de la optimización.

Tabla 4-5 Cambio de parámetros relacionados con el algoritmo genético

Cambiar parámetros

Valor del parámetro

Otros parámetros

Tamaño de la población norte

30

metro=100

Pc=0,8

Pm=0,1

60

100

150

Número de iteraciones m

30

norte=100

Pc=0,8

Pm=0,1

50

70

150

Probabilidad de cruce Pc

0,5

norte=100

metro=100

Pm=0,1

0,6

0,7

0,9

0,95

Probabilidad de mutación Pm

0,01

norte=100

metro=100

Pc=0,8

0,05

0,2

       El tamaño de la población es: 30, 60, 100, 150, el número de iteraciones es: 30, 50, 70, 150, la probabilidad de cruce es: 0,5, 0,6, 0,7, 0,8, 0,9, 0,95, la probabilidad de mutación es: 0,01 , 0.05, 0.1, 0.2, utilizan métodos de permutación y combinación para realizar la optimización de cuadrícula de los hiperparámetros del algoritmo genético. Primero, realice la optimización de la cuadrícula en el tamaño de la población. Los resultados se muestran en la Figura 4-6, Figura 4-7, Figura 4-8 y Figura 4-9.

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-6 Resultados de la ejecución del algoritmo genético cuando el tamaño de la población es 30

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-7 Resultados de ejecución del algoritmo genético cuando el tamaño de la población es 60

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-8 Resultados de ejecución del algoritmo genético cuando el tamaño de la población es 100

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-9 Resultados de ejecución del algoritmo genético cuando el tamaño de la población es 150

       Luego realice la optimización de la cuadrícula en el número de iteraciones y los resultados se muestran en la Figura 4-10, Figura 4-11, Figura 4-12 y Figura 4-13.

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-10 Resultados de ejecución del algoritmo genético cuando el número de iteraciones es 30

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-11 Resultados de ejecución del algoritmo genético cuando el número de iteraciones es 50

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-12 Resultados de ejecución del algoritmo genético cuando el número de iteraciones es 70

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-13 Resultados de ejecución del algoritmo genético cuando el número de iteraciones es 150

       Realice la optimización de la cuadrícula en la probabilidad de cruce y los resultados se muestran en la Figura 4-14, Figura 4-15, Figura 4-16, Figura 4-17 y Figura 4-18.

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-14 Resultados de la ejecución del algoritmo genético cuando la probabilidad de cruce es 0,5

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-15 Resultados de la ejecución del algoritmo genético cuando la probabilidad de cruce es 0,6

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-16 Resultados de la ejecución del algoritmo genético cuando la probabilidad de cruce es 0,7

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-17 Resultados de la ejecución del algoritmo genético cuando la probabilidad de cruce es 0,9

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-18 Resultados de la ejecución del algoritmo genético cuando la probabilidad de cruce es 0,95

        Realice una optimización de la cuadrícula en la probabilidad de mutación cruzada y los resultados se muestran en la Figura 4-19, la Figura 4-20 y la Figura 4-21.

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-19 Resultados de la ejecución del algoritmo genético cuando la probabilidad de mutación es 0,01

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-20 Resultados de la ejecución del algoritmo genético cuando la probabilidad de mutación es 0,05

(a) Curva de disminución del valor de la función de aptitud (b) Posición individual óptima

Figura 4-21 Resultados de la ejecución del algoritmo genético cuando la probabilidad de mutación es 0,2

4.2.4 Análisis y resumen de resultados experimentales.

       Dado que los parámetros internos del algoritmo genético, como la posición inicial de cada cromosoma, la probabilidad de cruce individual y la probabilidad de mutación generadas aleatoriamente cada vez, y el número aleatorio multiplicado por la mutación cruzada, se generan aleatoriamente, los resultados obtenidos en cada probablemente son diferentes y no son necesariamente el óptimo global. Los resultados de la optimización de la cuadrícula de hiperparámetros anterior se pueden resumir como se muestra en la Tabla 4-5.

Tabla 4-6 Cambio de parámetros y resultados relacionados con el algoritmo genético

Cambiar parámetros

Valor del parámetro

Otros parámetros

 ( x 1, x 2)

mínimo

Tiempo de ejecución de GA

Tamaño de la población norte

30

metro=100

Pc=0,8

Pm=0,1

-4,6218, 0,5749

-15.3046

1.837

60

-4,9887, -0,8666

-14.9743

1.880

100

-4,8501, -0,6944

-16.0172

1.336

150

-4,7370, 0,6640

-15.7700

2.089

Número de iteraciones m

30

norte=100

Pc=0,8

Pm=0,1

-4,4339, -0,7402

-14.7341

1.788

50

-4,8595, -0,6448

-16.1628

2.062

70

-4,9638, 0,6300

-16.4943

2.051

150

-4,9819, 0,6320

-16.5463

1.790

Probabilidad de cruce Pc

0,5

norte=100

metro=100

Pm=0,1

-4,9964, -0,6090

-16.6086

1.915

0,6

-4,7343, -0,6914

-15.7076

2.033

0,7

-4,9796, 0,5859

-16.5455

1.873

0,9

-4,7679, 0,6242

-15.8869

1.391

0,95

-4,9780, -0,6230

-16.5443

2.232

Probabilidad de mutación Pm

0,01

norte=100

metro=100

Pc=0,8

-4,9983, -0,5948

-16.6127

1.949

0,05

-4,9987, -0,6134

-16.6141

2.358

0,2

-4,9237, -0,6343

-16.3684

2.004

Observe ( x 1, x 2 )        en todos los modelos de hiperparámetros , el valor mínimo de la función objetivo y el tiempo de ejecución del algoritmo genético, de modo que el cromosoma del valor mínimo de la función ( x 1, x 2) = (-4.9987, -0,6134), el número de poblaciones del modelo es 100, el número de iteraciones es 100, la probabilidad de cruce es 0,8 y la probabilidad de mutación es 0,05. El tiempo de ejecución del algoritmo genético es de 2,358 s. En comparación con el modelo con un tiempo de ejecución del algoritmo genético de 1,949 y una probabilidad de mutación de 0,01, su complejidad temporal y espacial son las mismas que las del modelo óptimo, porque el tiempo de ejecución aquí no es muy importante y puede ignorarse. Se puede ver en la tabla anterior:

       1. El impacto del tamaño de la población en el rendimiento de optimización de los algoritmos genéticos

       种群规模不宜太大,也不宜太小。群体规模太小,会出现近亲交配,产生病态基因,而且造成有效等位基因先天缺失,即使采用较大概率的变异算子,生成具有竞争力高阶模式的可能性仍然核销,况且大概率变异算子对已有模式的破坏作用极大[7]。同时,遗传算子存在随机误差(模式采样误差),妨碍小群体中有效模式的正确传播,使得种群进化不能按照模式定理产生所预期的期望数量;种群规模太大,如果迭代次数不够,难以收敛,使系统鲁棒性下降,还会增加时间复杂度和空间复杂度,与遍历效果差不多,没有意义。在该问题中,选择种群规模100为佳。

       2、迭代次数对遗传算法优化性能的影响

       进化代数太小,算法不容易收敛,种群还没有成熟就已经结束,并输出最优个体,很明显这样的结果往往不是最优的,除非恰好在极值处取到;进化代数太大,算法已经熟练或者种群过于早熟不可能再收敛,继续进化没有意义,只会增加时间开支和资源浪费。在该问题中,选择迭代次数100为佳。

       3、交叉概率对遗传算法优化性能的影响

       交叉概率太大容易破坏已有的有利模式,随机性增大,容易错失最优个体;交叉概率太小不能有效更新种群。在该问题中,选择交叉概率0.8为佳。

       4、变异概率对遗传算法优化性能的影响

       变异概率太小种群的多样性下降太快,容易导致有效基因的迅速丢失且不容易修补;变异概率太大,尽管种群的多样性可以得到保证,但是高阶模式被破坏的概率也随之增大在该问题中,选择变异概率0.05为佳。

     最终得到函数最小值的染色体(x1,x2)=(-4.9987, -0.6134),函数在该定义域下的最小值为-16.6141,算法用时2.358s。

4.3 粒子群算法函数优化

       粒子群算法(PSO)属于群智能算法的一种,是通过模拟鸟群捕食行为设计的。假设区域里就只有一块食物(即通常优化问题中所讲的最优解),鸟群的任务是找到这个食物源[8]。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即我们所说的找到了最优解,即问题收敛。

4.3.1 粒子群算法原理

       粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度V和位置X,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值Pbest,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解Gbest,粒子群中的所有粒子根据自己找到的当前个体极值Pbest和整个粒子群共享的当前全局最优解Gbest来调整自己的速度和位置。粒子群算法的思想相对比较简单,主要分为:1、初始化粒子群;2、评价粒子,即计算适应值;3、寻找个体极值Pbest;4、寻找全局最优解Gbest;5、修改粒子的速度和位置[9, 10]。

       主要步骤如下:

       1、初始化

       首先,我们需要设置最大的速度区间,防止超出最大的区间。位置信息即为整个搜索空间,我们在速度区间和搜索空间上随机初始化速度和位置。设置群体规模m

       2、个体极值与全局最优解

       个体极值为每个粒子找到的历史上最优的位置信息,并从这些个体历史最优解中找到一个全局最优解,并与历史最优解比较,选出最佳的作为当前的历史最优解。

       3、更新速度和位置

       按式(4-1)更新粒子速度与位置:

 V_{id}=\omega V_{id}+c_{1}\times rand\times (P_{id}-X_{id})+c_{2}\times rand\times (P_{gd}-X_{ identificación})

X_{id}=X_{id}+V_{id}

 式中,ω为惯性因子;c1、c2为加速常数;rand为[0, 1]的随机数;Pid表示第i个变量的个体极值的第d维;Pgd表示全局最优解的第d维。

       4、终止条件

       有两种终止条件可以选择,一是最大代数:t;二是相邻两代之间的偏差在一个指定的范围内即停止。

4.3.2 粒子群算法实验步骤

       1、设置模型超参数:种群规模、惯性权重、学习因子,最大迭代次数等,设置模型超参数MATLAB源码如下:

%% 设置模型超参数MATLAB源码
%% PSO
% 初始化超参数,模型等
Size = 100;
Dimension = 2;
time = 200;
c1 = 1.5;
c2 = 1.5;
Wmax = 0.5;
Wmin = 0.1;
Pmax = 5;
Pmin = -5;
Vmax = 1;
Vmin = -1;

       2、初始化种群个体的位置与速度MATLAB源码如下:

%% 初始化粒子位置与速度MATLAB源码
% 初始化种群个体的位置与速度
x = rand(Size, Dimension)*(Pmax-Pmin)+Pmin;
v = rand(Size, Dimension)*(Vmax-Vmin)+Vmin;

       3、初始化个体最优位置和最优值MATLAB源码如下:

%% 初始化粒子最优位置和最优值MATLAB源码
% 初始化个体最优位置和最优值
p = x;
pbest = ones(Size, 1);
for i = 1:Size
    pbest(i) = fitness(x(i,:));
end

       4、初始化全局最优位置和最优值MATLAB源码如下:

%% 初始化全局最优位置和最优值MATLAB源码
% 初始化全局最优位置和最优值
g = ones(1, Dimension);
gbest = inf;
for i = 1:Size
    if pbest(i) < gbest
        g = p(i,:);
        gbest = pbest(i);
    end
end
gb = ones(1, time);

       5、迭代开始直至终止,注意:适应度函数与遗传算法的适应度函数相同,因此直接调用fitness子函数即可。迭代与终止MATLAB源码如下

%% 迭代与终止MATLAB源码
for i = 1:time
    for j = 1:Size
        if fitness(x(j,:)) < pbest(j)% 更新个体最优位置和最优值
            p(j,:) = x(j,:);
            pbest(j) = fitness(x(j,:));
        end
        if pbest(j) < gbest% 更新全局最优位置和最优质
            g = p(j,:);
            gbest = pbest(j);
        end
        w = Wmax-(Wmax-Wmin)*i/time;% 动态计算惯性权重值
        v(j,:) = w*v(j,:)+c1*rand*(p(j,:)-x(j,:))+c2*rand*(g-x(j,:));% 更新速度
        x(j,:) = x(j,:)+v(j,:);% 更新位置
        for k = 1:Dimension% 边界条件处理
            if (v(j,k) > Vmax) || (v(j,k) < Vmin)
                v(j,k) = rand*(Vmax-Vmin)+Vmin;
            end
            if (x(j,k) > Pmax) || (x(j,k) < Pmin)
                x(j,k) = rand*(Pmax - Pmin) + Pmin;
            end
        end
    end
    gb(i) = gbest;% 记录历代全局最优值
end

       6、输出最优个体、最优值,并绘制适应度曲线,MATLAB源码如下:

%% 输出最优结果与适应度曲线绘制MATLAB源码
g % 最优个体
gb(end) % 最优值
figure(2)
plot(gb,'LineWidth',2)
xlabel('Time')
ylabel('1/Fitness')
title('Fitness Curve') 

       运行得到最优粒子的x1、x2以及最佳适应度即f值分别别如表4-7所示,性能函数(适应度函数值)的下降曲线如图4-22(b),并在函数图中标注最优个体的位置如图4-22(a),与遗传算法同理,还需要用复杂度来评价模型优劣,因此绘制运行时长及运行内存占比情况如图4-23所示。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-22 粒子群算法运行结果

表4-7 最优粒子和最佳适应度

x1

x2

f

f-4.999982360428467

0.601048524601063

-16.620122324415950

图4-23 复杂度与运行内存占比

4.3.3 改变粒子群算法相关参数

       改变粒子群算法的相关参数:种群规模s、迭代次数t、学习因子c1、c2、惯性权重上限wmax、惯性权重下限wmin如表4-8所示,研究它们对粒子群函数优化性能的影响。

表4-8 改变粒子群算法相关参数

改变参数

参数值

其他参数

种群规模s

50

t=200

c1,c2=1.5

wmax=0.5,wmin=0.1

100

150

迭代次数t

50

s=100

c1,c2=1.5

wmax=0.5,wmin=0.1

100

150

学习因子c1

1.3

s=100

t=200

c2=1.5

wmax=0.5,wmin=0.1

1.7

1.9

学习因子c2

1.3

s=100

t=200

c1=1.5

wmax=0.5,wmin=0.1

1.7

1.9

惯性权重上限wmax

0.6

s=100

t=200

c1,c2=1.5

wmin=0.1

0.7

0.8

惯性权重下限wmin

0.2

s=100

t=200

c1,c2=1.5

wmax=0.5

0.3

0.4

       种群规模为:50、100、150,迭代次数为:50、100、150,学习因子c1为:1.3、1.7、1.9,学习因子c2为:1.3、1.7、1.9,惯性权重上限wmax为:0.6、0.7、0.8,惯性权重下限wmin为:0.2、0.3、0.4,使用排列组合的方式,对粒子群算法超参数进行网格寻优。首先对种群规模进行网格寻优,结果如图4-24、图4-25、图4-26。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-24 种群规模50时粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-25 种群规模100时粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-26 种群规模150时粒子群算法运行结果

       然后对迭代次数进行网格寻优,结果如图4-27、图4-28、图4-29。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-27 迭代次数50时粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-28 迭代次数100时粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-29 迭代次数150时粒子群算法运行结果

       对学习因子c1进行网格寻优,结果如图4-30、图4-31、图4-32。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-30 学习因子c1=1.3粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-31 学习因子c1=1.7粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-32 学习因子c1=1.9粒子群算法运行结果

        对学习因子c2进行网格寻优,结果如图4-33、图4-34、图4-35。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-33 学习因子c2=1.3粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-34 学习因子c2=1.7粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-35 学习因子c2=1.9粒子群算法运行结果

        惯性权重上限wmax进行网格寻优,结果如图4-36、图4-37、图4-38。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-36 惯性权重上限0.6粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-37 惯性权重上限0.7粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-38 惯性权重上限0.8粒子群算法运行结果

        惯性权重下限wmin进行网格寻优,结果如图4-39、图4-40、图4-41。

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-39 惯性权重下限0.2粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-40 惯性权重下限0.3粒子群算法运行结果

(a) 最优粒子位置                      (b) 适应度函数下降曲线

图4-41 惯性权重下限0.4粒子群算法运行结果

4.3.4 实验结果分析与总结

       在以上的超参数网格寻优中的结果可以整理如表4-9所示。

表4-9 改变粒子群算法相关参数与运行结果

改变参数

参数值

其他参数

(x1,x2)

最小值

PSO运行时间

种群规模s

50

t=200

c1,c2=1.5

wmax=0.5,wmin=0.1

-4.9995, -0.5984

-16.6179

0.487

100

-4.9999, 0.6039

-16.6200

0.536

150

-4.9999, -0.6038

-16.6201

0.659

迭代次数t

50

s=100

c1,c2=1.5

wmax=0.5,wmin=0.1

-4.9996, 0.6136

-16.6170

0.540

100

-4.9998, 0.6105

-16.6187

0.481

150

-4.9995, -0.6010

-16.6186

0.521

学习因子c1

1.3

s=100

t=200

c2=1.5

wmax=0.5,wmin=0.1

-5.0000, 0.6079

-16.6200

0.571

1.7

-4.9999, 0.6090

-16.6195

0.615

1.9

-4.9999, 0.6031

-16.6200

0.552

学习因子c2

1.3

s=100

t=200

c1=1.5

wmax=0.5,wmin=0.1

-4.9999, 0.6044

-16.6202

0.606

1.7

-4.9998, -0.6077

-16.6195

0.556

1.9

-4.9995, -0.6068

-16.6185

0.530

惯性权重上限wmax

0.6

s=100

t=200

c1,c2=1.5

wmin=0.1

-4.9997, -0.6084

-16.6190

0.533

0.7

-4.9998, -0.6000

-16.6195

0.549

0.8

-5.0000, -0.6072

-16.6202

0.598

惯性权重下限wmin

0.2

s=100

t=200

c1,c2=1.5

wmax=0.5

-4.9998, -0.6071

-16.6195

0.611

0.3

-4.9999, -0.6011

-16.6199

0.640

0.4

-5.0000, -0.6096

-16.6196

0.606

       观察不同超参数粒子群算法模型下的(x1,x2),目标函数最小值以及粒子群算法运行时间,使得函数最小值的粒子(x1,x2)=(-4.9999, 0.6044)、(x1,x2)=(-5.0000, -0.6072),两个模型参数如下:种群数目为100,迭代次数为200,学习因子c1均为1.5、,学习因子c2分别为1.3、1.5,惯性权重上限wmax分别为0.5、0.8,惯性权重下限wmin均为0.1。算法的运行时间分别为0.606s、0.598s。分析其时间复杂度和空间复杂度相同,因此我认为虽然运行时间不同,但相差不大,运行时间并不是非常重要,可以忽略不计。通过上表可知:粒子群算法的精度,不一定是哪个参数越大或越小越好,关键在于多个参数之间的配合,就譬如以上实验中,虽然模型参数不同(不同学习因子c2、惯性权重上限wmax),且(x1,x2)也不相同,但最优值非常相近,更加证明了以上总结。

       最终得到函数最小值的粒子(x1,x2)=(-4.9999, 0.6044)、(x1,x2)=(-5.0000, -0.6072),函数在该定义域下的最小值为-16.6202,算法用时0.606s、0.598s。

4.4 GAPSO结果比较与性能分析

4.4.1 结果比较

       GA与PSO在该问题(函数优化)上的相关参数与结果如表4-10、表4-11所示。

表4-10 遗传算法相关参数及结果

改变参数

参数值

其他参数

 (x1,x2)

f最小值

GA运行时间

种群规模n

30

m=100

Pc=0.8

Pm=0.1

-4.6218, 0.5749

-15.3046

1.837

60

-4.9887, -0.8666

-14.9743

1.880

100

-4.8501, -0.6944

-16.0172

1.336

150

-4.7370, 0.6640

-15.7700

2.089

迭代次数m

30

n=100

Pc=0.8

Pm=0.1

-4.4339, -0.7402

-14.7341

1.788

50

-4.8595, -0.6448

-16.1628

2.062

70

-4.9638, 0.6300

-16.4943

2.051

150

-4.9819, 0.6320

-16.5463

1.790

交叉概率Pc

0.5

n=100

m=100

Pm=0.1

-4.9964, -0.6090

-16.6086

1.915

0.6

-4.7343, -0.6914

-15.7076

2.033

0.7

-4.9796, 0.5859

-16.5455

1.873

0.9

-4.7679, 0.6242

-15.8869

1.391

0.95

-4.9780, -0.6230

-16.5443

2.232

变异概率Pm

0.01

n=100

m=100

Pc=0.8

-4.9983, -0.5948

-16.6127

1.949

0.05

-4.9987, -0.6134

-16.6141

2.358

0.2

-4.9237, -0.6343

-16.3684

2.004

       在遗传算法中,最终得到函数最小值的染色体(x1,x2)=(-4.9987, -0.6134),函数在该定义域下的最小值为-16.6141,算法用时2.358s,最优模型的种群数目为100,迭代次数为100,交叉概率为0.8,变异概率为0.05。

      在粒子群算法中,最终得到函数最小值的粒子(x1,x2)=(-4.9999, 0.6044)、(x1,x2)=(-5.0000, -0.6072),函数在该定义域下的最小值为-16.6202,算法用时0.606s、0.598s。两个模型参数:种群数目为100,迭代次数为200,学习因子c1均为1.5、,学习因子c2分别为1.3、1.5,惯性权重上限wmax分别为0.5、0.8,惯性权重下限wmin均为0.1。相对而言,该问题中,如果利用MATLAB,遗传算法更容易实现,但需要费时调整模型超参数,而对于粒子群算法,编程需要花时间,但相同时间下,相对于遗传算法能获得更好的结果。

表4-11 改变粒子群算法相关参数与运行结果

改变参数

参数值

其他参数

(x1,x2)

最小值

PSO运行时间

种群规模s

50

t=200

c1,c2=1.5

wmax=0.5,wmin=0.1

-4.9995, -0.5984

-16.6179

0.487

100

-4.9999, 0.6039

-16.6200

0.536

150

-4.9999, -0.6038

-16.6201

0.659

迭代次数t

50

s=100

c1,c2=1.5

wmax=0.5,wmin=0.1

-4.9996, 0.6136

-16.6170

0.540

100

-4.9998, 0.6105

-16.6187

0.481

150

-4.9995, -0.6010

-16.6186

0.521

学习因子c1

1.3

s=100

t=200

c2=1.5

wmax=0.5,wmin=0.1

-5.0000, 0.6079

-16.6200

0.571

1.7

-4.9999, 0.6090

-16.6195

0.615

1.9

-4.9999, 0.6031

-16.6200

0.552

学习因子c2

1.3

s=100

t=200

c1=1.5

wmax=0.5,wmin=0.1

-4.9999, 0.6044

-16.6202

0.606

1.7

-4.9998, -0.6077

-16.6195

0.556

1.9

-4.9995, -0.6068

-16.6185

0.530

惯性权重上限wmax

0.6

s=100

t=200

c1,c2=1.5

wmin=0.1

-4.9997, -0.6084

-16.6190

0.533

0.7

-4.9998, -0.6000

-16.6195

0.549

0.8

-5.0000, -0.6072

-16.6202

0.598

惯性权重下限wmin

0.2

s=100

t=200

c1,c2=1.5

wmax=0.5

-4.9998, -0.6071

-16.6195

0.611

0.3

-4.9999, -0.6011

-16.6199

0.640

0.4

-5.0000, -0.6096

-16.6196

0.606

4.4.2 GAPSO性能分析与相同点

       GA和PSO都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解[11]GAPSO相同点如下:

       1、都属于仿生算法。PSO主要模拟鸟类觅食、人类认知等社会行为而提出;GA主要借用生物进化中适者生存的规律。

       2、都属于全局优化方法。两种算法都是在解空间随机产生初始种群,因而算法在全局的解空间进行搜索,且将搜索重点集中在性能高的部分。

       3、都属于随机搜索算法。都是通过随机优化方法更新种群和搜索最优点。PSO中认知项和社会项前都加有随机数;而GA的遗传操作均属随机操作。

       4、都隐含并行性。搜索过程是从问题解的一个集合开始的,而不是从单个个体开始,具有隐含并行搜索特性,从而减小了陷入局部极小的可能性。并且由于这种并行性,易在并行计算机上实现,以提高算法性能和效率。

       5、根据个体的适配信息进行搜索,因此不受函数约束条件的限制,如连续性、可导性等。

       6、对高维复杂问题,往往会遇到早熟收敛和收敛性能差的缺点,都无法保证收敛到最优点。

4.4.3 GAPSO不同点

       GA与PSO不同点如下:

       1、PSO有记忆,好的解的所有知识都保存,而GA没有记忆,以前的知识随着种群的改变被破坏。

       2、在GA算法中,染色体之间相互共享信息,所以整个种群的移动是比较均匀地向最优区域移动。PSO中的粒子仅仅通过当前搜索到最优点进行共享信息,所以很大程度上这是一种单项信息共享机制,整个搜索更新过程是跟随当前最优解的过程。在大多数情况下,所有粒子可能比遗传算法中的进化个体以更快速度收敛于最优解。

       3. La tecnología de codificación y las operaciones genéticas de GA son relativamente simples, mientras que en comparación con GA , PSO no requiere codificación y no hay operaciones de cruce ni mutación. Las partículas solo se actualizan a través de la velocidad interna, por lo que el principio es más simple, el Los parámetros son menores y la implementación es más sencilla.

       4. En términos de convergencia, GA ya cuenta con un método de análisis de convergencia relativamente maduro y puede estimar la velocidad de convergencia, mientras que la investigación de PSO en esta área es todavía relativamente débil. Aunque existen análisis de convergencia de versiones deterministas simplificadas, la transformación del determinismo en estocasticidad requiere más investigación.

       5. En términos de aplicación, el algoritmo PSO se utiliza principalmente en problemas continuos, incluido el entrenamiento de redes neuronales y la optimización de funciones, etc., mientras que GA también se puede aplicar a problemas discretos además de problemas continuos, como problemas de TSP y problemas de comerciante. , programación de talleres, etc.

4.5 Resumen y conocimientos del experimento

referencias

[1] Shui Jijun, Red neuronal de aprendizaje profundo (3) Algoritmo de retropropagación que los principiantes pueden entender, https://blog.csdn.net/HISJJ/article/details/126953224?spm=1001.2014.3001.5501, 202.12.31.

[2] Wang Xudong , Shao Huihe , teoría de redes neuronales RBF y su aplicación en el control [J], Información y Control , 1997(04):32-44.

[3] Jin Xidong, algoritmo genético y su aplicación [D], Chengdu: Southwest Jiaotong University, 1996.

[4] Ji Genlin, Revisión de la investigación de algoritmos genéticos [J], Aplicaciones informáticas y software, 2004, 21(2):5.

[5] Wang Q, Spronck P, Tracht R. Una descripción general de los algoritmos genéticos aplicados a los problemas de ingeniería de control[C]// Aprendizaje automático y cibernética, Conferencia internacional de 2003 sobre. IEEE, 2003.

[6] Shui Jijun, Notas de estudio del controlador de rechazo activo de perturbaciones (ADRC) del algoritmo genético mejorado (IGA), https://blog.csdn.net/HISJJ/article/details/127386770?spm=1001.2014.3001.5501, 2022.12.30.

[7] helloHKTK, ajuste de parámetros del algoritmo genético, https://www.cnblogs.com/helloHKTK/p/9772778.html, 2023.1.4.

[8] Wang Yutao, Qian Yanzhu, Análisis de big data y aprendizaje automático de Python [M], Beijing, Machinery Industry Press, 2020.5, P92-P94.

[9] Li Aiguo , Qin Zheng , Bao Fumin , He Shengping , Algoritmo de optimización de enjambre de partículas [J] Ingeniería informática y aplicaciones , 2002(21):1-3+17.

[10] Zhou Zhihua, Aprendizaje automático[M], Beijing, Tsinghua University Press, 2016.1, P23-43.

[11] Li Hongya , Peng Yuzhong , Deng Chuyan , Gong Daoqing Revisión de la investigación híbrida sobre GA y PSO [J] Ingeniería y aplicaciones informáticas , 2018, 54(02): 20-28+39.


Otros capítulos de la tarea del curso Inteligencia artificial y aprendizaje automático: 1. Conceptos básicos de la ingeniería del conocimiento , 2. Aproximación de funciones , 3. Lógica difusa

Supongo que te gusta

Origin blog.csdn.net/HISJJ/article/details/130500329
Recomendado
Clasificación