clear all
clc
x=zeros(1,10);
[x1,x2,f] = PSO_im(@imF,60,2,2,0.8,800,5,0.0000001,10,0.6,0.0000000000000000001,0);
%得到出计算结果
disp('*************************************************');
disp('目标函数取最小值时的自变量:');
x1
x2
disp('目标函数的最小值为:')
f
disp('**************************************************');
function y=imF(x)
y=(cos(x(1)^2-x(2)^2)-3)/((2+ (x(1)^2+x(2)^2))^2)+0.8;
end
function [x,y,Result]=PSO_immu(func,N,c1,c2,w,MaxDT,D,eps,DS,replaceP,minD,Psum)
format long;
%%%%%%给定初始化条件%%%%%%%%%%%%%%%%%%%%%%%%%%%
c1=1.2; %学习因子1
c2=1.2; %学习因子2
w=0.8; %惯性权重
MaxDT=800; %最大迭代次数
D=2; %搜索空间维数(未知数个数)
N=60; %初始化群体个体数目
eps=10^(-10); %设置精度(在已知最小值时候用)
DS=8; %每隔DS次循环就检查最优个体是否变优
replaceP=0.5; %粒子的概率大于replaceP将被免疫替换
minD=1e-10;