1 基于tent混沌改进灰狼算法
针对基本灰狼算法易陷入局部最优,未考虑个体自身经验等问题,本文提出一种基于Tent映射的混合灰狼优化算法(grey wolf optimization algorithm based on particle swarm optimization,简称PSO_GWO).首先,其通过Tent混沌映射产生初始种群,增加种群个体的多样性;其次,采用非线性控制参数,前期递减速度慢,能够增加全局搜索能力,避免算法陷入局部最优,后期收敛因子递减速度快,增加算法局部搜索能力,从而提高整体收敛速度;最后,引入粒子群算法的思想,将个体自身经历过最优值与种群最优值相结合来更新灰狼个体的位置信息,从而保留灰狼个体自身最佳位置信息.为验证该算法的有效性,本文借助9个标准测试函数来与其他三种算法进行对比.实验结果表明,本文提出的算法比其他三种算法在单峰函数和多峰函数上搜索到的最优解更加理想; PSO_GWO算法比IGWO算法(the improved grey wolf optimization algorithm)在计算时间复杂度方面效果较好;同时,随着种群规模增大,PSO_GWO算法收敛值逐渐接近理想值.因此,本文提出的PSO_GWO算法能更快搜索到全局最优解,且鲁棒性更好.
2 部分代码
% PSO
% GWO
% IGWO
% PSO_GWO
%% 清空环境变量
clear
clc
%% 基本参数
N = 30; % 种群规模
maxgen = 500; % 最大迭代次数
%% 获取函数名
Function_name = 'F4'; % 从F1到F23的测试函数的名称(本文中的表1、2、3)
[lb, ub, dim, fobj] = Get_Functions_details(Function_name);
%% 初始化种群位置
X = initialization(N, dim, ub, lb);
for i = 1:N
fitness(i) = fobj(X(i, :));
end
cnt_max = 30;
curve_pso = zeros(1, maxgen);
curve_gwo = zeros(1, maxgen);
curve_igwo = zeros(1, maxgen);
curve_pso_gwo = zeros(1, maxgen);
for cnt = 1:cnt_max
%% 传入函数变量
[bestvalue_PSO, gbest_PSO, Curve_PSO] = PSO(N, maxgen, X, fitness, lb, ub, dim, fobj);
[bestvalue_GWO, gbest_GWO, Curve_GWO] = GWO(N, maxgen, X, fitness, lb, ub, dim, fobj);
[bestvalue_IGWO, gbest_IGWO, Curve_IGWO] = IGWO(N, maxgen, X, fitness, lb, ub, dim, fobj);
[bestvalue_PSO_GWO, gbest_PSO_GWO, Curve_PSO_GWO] = PSO_GWO(N, maxgen, X, fitness, lb, ub, dim, fobj);
%%
curve_pso = curve_pso + Curve_PSO;
curve_gwo = curve_gwo + Curve_GWO;
curve_igwo = curve_igwo + Curve_IGWO;
curve_pso_gwo = curve_pso_gwo + Curve_PSO_GWO;
end
%% 绘图比较
figure;
t = 1:maxgen;
semilogy(t, curve_pso/cnt_max, 'bo-', t, curve_gwo/cnt_max, 'k*-', t, curve_igwo/cnt_max, 'mx-',...
t, curve_pso_gwo/cnt_max, 'rd-', 'linewidth', 2, 'linewidth', 1.5, 'MarkerSize',7, 'MarkerIndices', 1:50:maxgen);
legend('PSO', 'GWO', 'IGWO', 'PSO\_GWO');
title('F3');
xlabel '迭代次数';
ylabel '目标函数值';
3 仿真结果
4 参考文献
[1]滕志军, 吕金玲, 郭力文,等. 一种基于Tent映射的混合灰狼优化的改进算法[J]. 哈尔滨工业大学学报, 2018, 50(11):46-55.