close all;
format long
tic;
%%%%%%%%%%%%%%%%%%%%%粒子群算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%单目标多变量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% xlimit = [-10^10,-10^(-10)];
% xlimit = [1,1.6;0.3,0.8];
% xlimit = [-8,10;-4,10;2,10];
% xlimit = [1,1.6;0.3,0.8;0.2,0.7;-2.3,2.6];
% xlimit = [1,1.6;0.3,0.8;0.2,0.7;-4,2.6;-5.1,10.25];
c2 = 2; %%社会学习系数
c1 = 0.75; %%自我学习系数
w = 0.2; %%惯性系数
xlimit = [-8,10;...%变量1的范围
-4,10;...%变量2的范围
2,10];%变量3的范围 %变量范围,左大右小
popsize = 50; %粒子数目
maxgen = 35; %迭代次数
vrange = 0.3; %%速度范围
SolveTimes = 1; %%求解次数
%%%%%%%%%预定义-勿更改%%%%%%%%%%%%%%%%
popdimension = size(xlimit,1);
vlimit = vrange*[-xlimit(:,2)+xlimit(:,1),xlimit(:,2)-xlimit(:,1)];
xrecode = zeros(SolveTimes,popdimension);
fitrecord = zeros(SolveTimes,maxgen);
for times = 1:1:SolveTimes
%初始化粒子
pop= repmat(xlimit(:,1)',popsize,1)+repmat(diff(xlimit'),popsize,1).*rand(popsize,popdimension);
v = repmat(vlimit(:,1)',popsize,1)+repmat(diff(vlimit'),popsize,1).*rand(popsize,popdimension);
%%II计算初始适应度
fitness = zeros(popsize,1);
for i=1:popsize
fitness(i)=fcn(po
Matlab实现单目标多变量粒子群算法(开源)
于 2022-03-29 17:23:58 首次发布