首先是程序的初始化
%% 程序初始化 √
clc;
clear;
close all;
接着是确定粒子群算法的适应度函数,此处用一个二元函数来代替,根据问题不同可以替换适应度函数
%% 目标函数 √
f = @(x,y) x .* sin(x) .* cos(2 * x) - 2 * x .* sin(3 * x) - y + cos(5 * y) + 5 * y .* sin(3 * y); % f(X,Y)
X = 0:0.1:20;
Y = 0:0.1:10;
[x,y] = meshgrid(X,Y); % 生成网格,构造X,Y矩阵
z_1 = x .* sin(x) .* cos(2 * x) - 2 * x .* sin(3 * x) - y + cos(5 * y) + 5 * y .* sin(3 * y);
figure(1)
mesh(x,y,z_1); % 以网格状绘制图像
下面是设置粒子群算法的运行参数,本文在x~[0,20],y~[0,10]范围内寻找目标函数的最大值
%% 优化相关参数设置 √
N = 50; % 初始种群个数
d = 2; % 空间维数
ger = 1000; % 最大迭代次数
xlimit = [0, 20]; % 设置x参数限制
ylimit = [0,10]; % 设置y参数限制
vlimit = [-5,5]; % 设置速度限制
w = 0.8; % 惯性权重
c1 = 1.495; % 自我学习因子