求解
z
=
x
2
+
y
2
−
10
c
o
s
(
2
π
x
)
−
10
c
o
s
(
2
π
y
)
−
20
z=x^2+y^2-10cos(2\pi x)-10cos(2\pi y)-20
z=x2+y2−10cos(2πx)−10cos(2πy)−20在x、y属于[-5,-5]的最大值
主函数 PSO.m
1 绘制函数图像
clear; clc
% 绘制函数图像
f1 =figure('color',[1,1,1]);[x, y]=meshgrid(-5:0.1:5,-5:0.1:5);
z = x .^2+ y .^2-10*cos(2*pi* x)-10*cos(2*pi* y)-20;mesh(x, y, z)
%% 输出结果disp(['目标函数的最大值为:',num2str(fitnessgbest)])disp(['自变量的取值为:',num2str(gbest)])
f2 =figure('color',[1,1,1]);mesh(x, y, z)
hold on % 叠加绘图plot3(gbest(1),gbest(2),fitnessgbest(1),'ro','MarkerFaceColor','r',...'MarkerEdgeColor','k','MarkerSize',5)title('粒子寻优结果')xlabel('X轴');ylabel('Y轴');zlabel('Z轴')
f3 =figure('color',[1,1,1]);plot(yy)title('适应值变化曲线')xlabel('迭代次数');ylabel('适应值')
适应度函数 fun.m
function y =fun(x)
y =x(1).^2+x(2).^2-10*cos(2*pi*x(1))-10*cos(2*pi*x(2))-20;