function [Solution Result] = Untitled2()
%初始化
clear all;
clc;
% 给定初始条件
c1=1.4962; %学习因子 c1
c2=1.4962; %学习因子 c2
w=0.7298; %惯性全数
MaxDT=10000; %最大迭代数
N=40; %初始化群体个体数目
D=10; %搜素空间维数
max=10;
min=-10;
eps=10^(-6); %设置精度
% 初始化种群的个体
for i=1:N
for j=1:D
x(i,j)=(max-min)*rand+min; % 随机初始化位置
v(i,j)=20*rand-10; %随机初始化速度
end
end
%计算粒子的适应度,初始化Pi和Pg
for i=1:N
pi=fitness(x(i,:),D); %局部最优
y(i,:)=x(i,:);
pg=x(i,:); %pg为全局最优
end
for i=1:N
if pi<fitness(pg,D)
pg=x(i,:);
end
end
%进入主循环
for ite=1:MaxDT %迭代过程
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
sig(v)=1/(1+exp(-v(i,:)));
if rand()<sig(v)
x(i,:)=1;
else
x(i,:)=0;
end
if fitness(x(i,:),D)<pi %迭代寻找局部最优
pi=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
if pi<fitness(pg,D) %迭代寻找全局最优
pg=y(i,:);
end
end
end
%最后计算结果
disp('*******************************************')
disp('函数的全局最优位置为:')
Solution=pg
disp('最后得到的优化极值为:')
Result=fitness(pg,D)
disp('********************************************')
function Result=fitness(x,D)
sum=0.0;
for i=1:D
sum=sum+x(i)^2;
end
Result=sum;