基于Ackley's function的,差分进化算法和粒子群算法的比较。
以下是matlab源码。
%%%%%%%%%%%%
%%%%%%%%%%%% Ackley's function
clear all; %清除所有变量
close all; %清图
clc; %清屏
x=-5:0.01:5;
y=-5:0.01:5;
N=size(x,2);
for i=1:N
for j=1:N
z(i,j)=-20*exp(-0.2*(0.5*(x(i)^2+y(j)^2))^0.5)-exp(0.5*(cos(2*pi*x(i))+cos(2*pi*y(j))))+20+exp(1);
end
end
mesh(x,y,z)
xlabel('x')
ylabel('y')

粒子群算法:
%%%%%%%%%%%%%%%%%粒子群算法求函数极值%%%%%%%%%%%%%%%%%%%%%%%%%%
tic %程序运行起点
time =[];
for i=1:500
time(i)=1;
end
%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all; %清除所有变量
close all; %清图
clc; %清屏
N=100; %群体粒子个数
D=2; %粒子维数
T=200; %最大迭代次数
c1=1.5; %学习因子1
c2=1.5; %学习因子2
Wmax=0.8; %惯性权重最大值
Wmin=0.4; %惯性权重最小值
Xmax=5; %位置最大值
Xmin=-5; %位置最小值
Vmax=1;&

该博客通过Matlab实现,对比了基于Ackley's function的差分进化算法和粒子群算法,展示了两种算法在求解函数极值时的性能。结果显示,虽然两者都能找到最优解,但粒子群算法的计算速度更快。
2966

被折叠的 条评论
为什么被折叠?



