MAT之PSO:利用PSO实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

MAT之PSO:利用PSO实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度

简介: MAT之PSO:利用PSO实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度
+关注继续查看

输出结果

image.png


代码设计


x = 1:0.01:2;          

y = sin(10*pi*x) ./ x;  

figure

plot(x, y)

title('绘制目标函数曲线图—Jason niu');

hold on

c1 = 1.49445;

c2 = 1.49445;

maxgen = 50;    

sizepop = 10;  

Vmax = 0.5;    

Vmin = -0.5;

popmax = 2;    

popmin = 1;

for i = 1:sizepop

   pop(i,:) = (rands(1) + 1) / 2 + 1;    

   V(i,:) = 0.5 * rands(1);  

   fitness(i) = fun(pop(i,:));

end

[bestfitness bestindex] = max(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,:) + 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(i) = fitnesszbest;    

end

[fitnesszbest zbest]

plot(zbest, fitnesszbest,'r*')

figure

plot(yy)

title('PSO:PSO算法(快于GA算法)实现找到最优个体适应度—Jason niu','fontsize',12);

xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);

————————————————

版权声明:本文为CSDN博主「一个处女座的程序猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41185868/article/details/79379034

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SAP BTP SDK for Android 已经支持 Kotlin 了
SAP BTP SDK for Android 已经支持 Kotlin 了
3 0
推荐一个好玩的鼠标和键盘使用情况统计软件,完全免费
推荐一个好玩的鼠标和键盘使用情况统计软件,完全免费
4 0
【leetcode刷题】39.最小操作次数使数组元素相等——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ n-1个数同时加一,就好比每次有一个数自身减一,因为只能做减法,所以数组最后的数只能是最小值。这样的话每个元素减去最小值求其和就是答案。小小菜鸟,博君一笑! ——leetcode此题热评
9 0
【leetcode刷题】42.扑克牌中的顺子——Java版
【leetcode刷题】42.扑克牌中的顺子——Java版
8 0
ECS使用体验
牛顿曾有句名言:“我之所以比别人看得更远,是因为站在巨人的肩膀上。
11 0
【leetcode刷题】43. 2 的幂——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ 神仙题。。没见过就不会,见过就会了。 ——leetcode此题热评
4 0
【leetcode刷题】44.快乐数——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ 快乐就完事了 ——leetcode此题热评
7 0
【leetcode刷题】41.调整数组顺序使奇数位于偶数前面——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ left, right双指针法,时间复杂度O(N),空间复杂度O(1) ——leetcode此题热评
8 0
【leetcode刷题】45. 同构字符串——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ java 通过map的 k-v 解决 ——leetcode此题热评
6 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载