PSO:利用PSO+ω参数实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度—Jason niu
2024-10-14 10:55:26
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; ws = 0.9;
we = 0.4; 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
w = ws - (ws-we)*(i/maxgen);
for j = 1:sizepop V(j,:) = w*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);
最新文章
- 尝试封装适用于权限管理的通用API
- 读《编写可维护的JavaScript》第六章总结
- WinForm中WebBrowser的使用
- mongodb java spring data
- JavaEE 获取路径全攻略
- 加州大学伯克利分校Stat2.2x Probability 概率初步学习笔记: Section 5 The accuracy of simple random samples
- PHP类与面向对象
- Oracle SQL语句追踪
- QTP自动化测试权威指南 连载(一)
- 迁移笔记:php缓存技术memcached
- 【迪杰斯特拉双关键字最短路】【HDU3790】【最短路径问题】
- Bootstrap入门(二十三)JS插件1:模态框
- 【工具】-RAP接口管理工具
- Java程序员职业生涯规划完整版:从程序员到CTO( 摘)
- Ex 5_26 变量约束是否能同时满足(并查集)_第九次作业
- 基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单
- JS - 兼容到ie7的自定义样式的滚动条封装
- [label][IDE] Develop Node.js Project With WebStorm
- 入门级 - 码云(Gitee),GitHub 教程
- Markdown调查