求实现基于粒子群算法的函数极值寻优算法MATLAB程序
我需要用粒子群算法对一个函数(函数见图片)进行极值寻优,请告诉我MATLAB程序代码应该怎么写?函数是这个!...
我需要用粒子群算法对一个函数(函数见图片)进行极值寻优,请告诉我MATLAB程序代码应该怎么写?
函数是这个! 展开
函数是这个! 展开
展开全部
for i=1:sizepop
% 随机产生一个种群
pop(i,:)=2*rands(1,2); % 初始化粒子
V(i,:)=0.5*rands(1,2); % 初始化速度
% 计算粒子适应度值
fitness(i)=fun(pop(i,:));
end
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:); % 群体极值位置
gbest=pop; % 个体极值位置
fitnessgbest=fitness; % 个体极值适应度值
fitnesszbest=bestfitness % 群体极值适应度值
% 迭代寻优
for i=1:maxgen
% 粒子位置和速度更新
for j=1:sizepop
% 速度更新
V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));
V(j,find(V(j,:)>Vmax))=Vmax;
V(j,find(V(j,:)<Vmin))=Vmin;
% 粒子更新
pop(j,:)=pop(j,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;
%新粒子适应度值
fitness(j)=fun(pop(j,:));
end
% 个体极值和种群极值更新
for j=1:sizepop
% 个体极值更新
if fitness(j)>fitnessgbest(j)
gbest(j,:)=pop(j,:);
fitnessgbest(j)=fitness(j);
end
% 群体极值更新
if fitness(j)>fitnesszbest
zbest=pop(j,:);
fitnesszbest=fitness(j);
end
end
% 每代最优值记录到yy数组中
result(i)=fitnesszbest;
end
% 画出每代最优个体适应度值
plot(result)
title('最优个体适应度值','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度值','fontsize',12);
% 随机产生一个种群
pop(i,:)=2*rands(1,2); % 初始化粒子
V(i,:)=0.5*rands(1,2); % 初始化速度
% 计算粒子适应度值
fitness(i)=fun(pop(i,:));
end
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:); % 群体极值位置
gbest=pop; % 个体极值位置
fitnessgbest=fitness; % 个体极值适应度值
fitnesszbest=bestfitness % 群体极值适应度值
% 迭代寻优
for i=1:maxgen
% 粒子位置和速度更新
for j=1:sizepop
% 速度更新
V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));
V(j,find(V(j,:)>Vmax))=Vmax;
V(j,find(V(j,:)<Vmin))=Vmin;
% 粒子更新
pop(j,:)=pop(j,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;
%新粒子适应度值
fitness(j)=fun(pop(j,:));
end
% 个体极值和种群极值更新
for j=1:sizepop
% 个体极值更新
if fitness(j)>fitnessgbest(j)
gbest(j,:)=pop(j,:);
fitnessgbest(j)=fitness(j);
end
% 群体极值更新
if fitness(j)>fitnesszbest
zbest=pop(j,:);
fitnesszbest=fitness(j);
end
end
% 每代最优值记录到yy数组中
result(i)=fitnesszbest;
end
% 画出每代最优个体适应度值
plot(result)
title('最优个体适应度值','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度值','fontsize',12);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
x y范围多少
追问
没有限定范围 迭代求极值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询