粒子群算法matlab以求解函数最优解为例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了粒子群算法matlab以求解函数最优解为例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1499字,纯文字阅读大概需要3分钟。
内容图文
![粒子群算法matlab以求解函数最优解为例](/upload/InfoBanner/zyjiaocheng/596/4b8ceb6491bb46e6b9b9fe9f363a19df.jpg)
粒子群算法matlab以求解函数最优解为例
clear; clc; close all;
N=100; %粒子个数
D=2; %粒子维数
MaxIter=500; %最大迭代次数
C1max=1.8; %权重参数,自适应
C2max=1.8;
C1=1.2;
C2=1.2;
w=0.79;
Wmax=0.8; %对自己速度的记忆
Wmin=0.4;
Xmax=4; Xmin=-4; %自变量的范围
Vmax=1; Vmin=-1; %速度的范围
x=rand(N,D)*(Xmax-Xmin)+Xmin; %初始化N个粒子的D维空间位置
v=rand(N,D)*(Vmax-Vmin)+Vmin; %初始化N个粒子的D维空间速度
p=x;
pbest=ones(N,1);
for i=1:N
pbest(i)=func(p(i,:)); %计算适应度,此处求的优化目标是最小值
end
g=ones(1,D);
gbest=min(pbest); %全局最小值
index=find(pbest==gbest);
g=p(index(1),:); %全局最小位置
gb=ones(1,MaxIter); %记录历史的全局最小
for i=1:MaxIter
for j=1:N
if func(x(j,:))<pbest(j)
pbest(j)=func(x(j,:)); %记录对应粒子的局部最小
p(j,:)=x(j,:);
end
if pbest(j)<gbest
gbest=pbest(j); %记录对应粒子的全局最小
g=p(j,:);
end
w=Wmax-(Wmax-Wmin)*i/MaxIter; %自适应更新记忆度
C1=(C1max-C1)*i/MaxIter+C1; %自适应更新权重
C2=(C2max-C2)*i/MaxIter+C2;
v(j,:)=w*v(j,:)+C1*rand*(p(j,:)-x(j,:))+C2*rand*(g-x(j,:)); %速度调整
x(j,:)=x(j,:)+v(j,:); %位置更新
for ii=1:D
if v(j,ii)>Vmax | v(j,ii)<Vmin %边界调整
v(j,ii)=rand*(Vmax-Vmin)+Vmin;
end
if x(j,ii)>Xmax | x(j,ii)<Xmin
x(j,ii)=rand*(Xmax-Xmin)+Xmin;
end
end
end
gb(i)=gbest;
end
g
gb(end)
figure(1)
plot(gb);
xlabel('迭代次数');
ylabel('适应度值');
figure(2);
k1=-4:0.02:4;
k2=-4:0.02:4;
z=3*cos(k1'*k2)+k1+k2.^2;
mesh(k1,k2,z);
hold on;
scatter(g(:,1),g(:,2),func(g),'*')
内容总结
以上是互联网集市为您收集整理的粒子群算法matlab以求解函数最优解为例全部内容,希望文章能够帮你解决粒子群算法matlab以求解函数最优解为例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。