PSO自用学习笔记

实践(2维)——matlab

求解:f(x)=xsin(x)cos(2x)-2xsin(3x)+3xsin(4x)在[0,50]的最小值。

%%初始化种群
close all
clear
clc
%%Sphere
clear
f=@(x)x.*sin(x).*cos(2*x)-2*x.*sin(3*x)+3*x.*sin(4*x);
N=20; %初始种群个数
d=1; %可行解维数
ger=500; %最大迭代次数
limit=[0,50]; %设置位置参数限制
vlimit=[-10,10]; %设置速度限制
w=0.8; %惯性权重
c1=0.5; %自我学习因子
c2=0.5; %群体学习因子
figure(1);
ezplot(f,[0,0.01,limit(2)]);%曲线x=limit(1)+(limit(2)-limit(1)).*rand(N,d);%初始种群的位置v=rand(N,d);%初始种群的速度
xm=x;%每个个体的历史最佳位置
ym=zeros(1,d); %种群的历史最佳位置
fxm=ones(N,1)*inf; %每个个体的历史最佳适应度
fym=inf; %种群历史最佳适应度hold on
plot(xm,f(xm),'ro');title("初始状态图");figure(2)
%%群体更新
iter=1;
%record = zeros(ger,1);%记录器
while iter<=gerfx=f(x);%个体当前适应度for i=1:Nif fx(i)<fxm(i)fxm(i)=fx(i); %更新个体历史最佳适应度xm(i,:)=x(i,:);%更新个体历史最佳位置(取值)endendif min(fxm)<fym[fym,nmin]=min(fxm);%更新群体历史最佳适应度ym=xm(nmin,:);%更新群体历史最佳位置endv=v*w+c1*rand*(xm-x)+c2*rand*(repmat(ym,N,1)-x);%速度更新%边界速度处理v(v>vlimit(2))=vlimit(2);v(v<vlimit(1))=vlimit(1);x=x+v;%位置更新%边界位置处理x(x>limit(2))=limit(2);x(x<limit(1))=limit(1);record(iter)=fym;%最大值记录x0=0:0.01:limit(2);hold onsubplot(1,2,1)plot(x0,f(x0),'b-',x,f(x),'ro');title('状态位置变化');subplot(1,2,2);plot(record);title('最优适应度进行过程');pause(0.01)iter=iter+1;
endx0=0:0.01:limit(2);
figure(4);
hold on
plot(x0,f(x0),'b-',x,f(x),'ro');title("最终状态位置");
disp(['最大值:',num2str(fym)]);
disp(['变量取值:',num2str(ym)]);

实践(3维)——matlab

求解:20+x^2+y^2-10cos(2πx)-10cos(2πy)在[-5.12,5.12]的最小值

%初始化种群
close all
clear
clc
f=@(x,y) 20+x.^2+y.^2-10*cos(2*pi.*x)-10*cos(2*pi.*y);%[-5.12,5.12]x0=[-5.12:0.05:5.12];
y0=x0;
[X,Y]=meshgrid(x0,y0);
Z=f(X,Y);
figure(1);mesh(X,Y,Z);
colormap(parula(5));N=50; %初始种群个数
d=2;%可行解维数
ger=100;%最大迭代次数
limit=[-5.12,5.12];%设置位置参数限制
vlimit=[-.5,.5];%设置速度限制
w=0.8; %惯性权重
c1=0.5;%自我学习因子
c2=0.5;%群体学习因子x=limit(1)+(limit(2)-limit(1).*rand(N,d));%初始种群的位置
v=rand(N,d); %初始种群的速度
xm=x; %每个个体的历史最佳位置
ym=zeros(1,d); %种群的历史最佳位置
fxm=ones(N,1)*inf; %每个个体的历史最佳适应度
fym=inf; %种群历史最佳适应度
%record=zeros(ger,1);
hold on
%[X,Y]=meshgrid(x(:,1),x(:,2));
%Z=f(X,Y);
scatter3(x(:,1),x(:,2),f(x(:,1),x(:,2)),'r*');
figure(2)
record=[];%%群体更新
iter=1;
%record=zeros(ger,1);%记录器
while iter<=gerfx=f(x(:,1),x(:,2));for i=1:Nif fx(i)<fxm(i)fxm(i)=fx(i); %更新个体历史最佳适应度xm(i,:)=x(i,:);%更新个体历史最佳位置(取值)endendif min(fxm)<fym[fym,nmin]=min(fxm);%更新群体历史最佳适应度ym=xm(nmin,:);%更新群体历史最佳位置endv=v*w+c1*rand*(xm-x)+c2*rand*(repmat(ym,N,1)-x);%速度更新%边界速度处理v(v>vlimit(2))=vlimit(2);v(v<vlimit(1))=vlimit(1);x=x+v;%位置更新%边界位置处理x(x>limit(2))=limit(2);x(x<limit(1))=limit(1);record(iter)=fym;%最大值记录subplot(1,2,1)mesh(X,Y,Z)hold onscatter3(x(:,1),x(:,2),f(x(:,1),x(:,2)),'r*');title(['状态位置变化','迭代次数',num2str(iter)])subplot(1,2,2);plot(record);title('最优适应度进化过程')pause(0.01)iter=iter+1;
end
figure(4);mesh(X,Y,Z);hold on
scatter3(x(:,1),x(:,2),f(x(:,1),x(:,2)),'r*'),title('最终状态位置')
disp(['最优值:',num2str(fym)]);
disp(['变量取值:',num2str(ym)]);

PSO | 基础概念+两个简单的案例相关推荐

  1. Prism安装、MVVM基础概念及一个简单的样例

    一:Prism的下载和安装 1:在http://compositewpf.codeplex.com/上下载最新的包. 下载完毕后,运行之,选择解压目录解压之.解压完毕的根目录下有chm帮助文档. 2: ...

  2. 机器学习基础概念及简单框架

    机器学习要知道的基础概念和简单框架 机器学习相关的基础概念 机器学习的简单框架 机器学习相关的基础概念 All models are wrong but some are useful(所有模型都是错 ...

  3. ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇

    ML与math:机器学习与高等数学基础概念.代码实现.案例应用之详细攻略--基础篇 目录 一.ML与高等数学 0.基础数学 1.导数.方向导数.梯度 1.1.概念简介 1.2.代码实现 2.Taylo ...

  4. 【计算机视觉】计算机视觉入门大全:基础概念、运行原理、应用案例详解

    来源:图灵人工智能  「机器能够模拟人类视觉系统」的幻想已经过时了.自 1960 年代第一批学术论文出现以来,计算机视觉已经走了很远,现代系统已经出现,且它们可以集成到移动应用中. 今天,由于其广泛应 ...

  5. 深度学习:基础概念陈述及P-R曲线绘制案例(Python)

    文章目录 @[toc] 一.概念陈述 1.1引例 1.2机器学习与深度学习 1.3基础概念 1.4机器学习与统计学的对比 二.数据集(dataset) 2.1数据集的数学表示 2.2训练集和测试集 2 ...

  6. java打印输出万年历_Java基础之打印万年历的简单实现(案例)

    Java基础之打印万年历的简单实现(案例) 问题:输入年,月,打印对应年月的日历. 示例: 问题分析: 1,首先1970年是Unix系统诞生的时间,1970年成为Unix的元年,1970年1月1号是星 ...

  7. 关于深度学习的一些基础概念的简单梳理

    目录 独立同分布independent and identically distributed (i.i.d.) BN(Batch Normalization)批规范化 正则化 损失函数 过拟合现象 ...

  8. JQuery的几个简单小案例(基础)

    JQuery的几个简单小案例 实现表格的的隔行换色 实现复选框的全选与全不选 QQ表情的选择 多选下拉列表的左右移动 实现表格的的隔行换色 需求:事先制作一个如图所示的table表格,将数据行的奇数行 ...

  9. 机器学习的9个基础概念和10种基本算法总结

    https://blog.csdn.net/libaqiangdeliba/article/details/41901387 1.基础概念: (1) 10折交叉验证:英文名是10-fold cross ...

最新文章

  1. Spring Boot项目错误:Error parsing lifecycle processing instructions
  2. Linux: debian/ubuntu下安装Neo4j
  3. 怎么git 自己建的服务器_Git服务器搭建,以及Git基本操作
  4. ASP.NET .Net UCS2 加码最复杂的方法
  5. 又来了!深度学习PyTorch与TensorFlow到底哪家强?
  6. VM虚拟机ping不通局域网其他主机的解决办法
  7. C语言操作符 进阶 (常见错误及细节)
  8. JS中this的四种用法
  9. 2010年终人生的思考
  10. R语言-时间日期函数
  11. android studio for android learning (十八) android事件监听器绑定的方法详解
  12. 小巧票据打印软件免费下载
  13. LINUX内核编译选项-4
  14. Go的全新漏洞检测工具govulncheck来了
  15. 农村饮用水项目微信支付完整代码
  16. 如何给边框添加阴影效果
  17. java lru笔试题,2016年头条校招笔试(LRU算法)
  18. php eos,EOS区块链PHP开发包
  19. HDMI 1.4 协议详解
  20. 那些年啊,那些事——一个程序员的奋斗史 ——98

热门文章

  1. 取消WPS自动编号问题
  2. 华为最新“天才少年”宁博宇曝光,将关注这个科技领域!
  3. Github+jekyll搭建个人博客
  4. 单内存16g和双8g差别大吗_电脑内存条单16G和双8G哪个好,单条是不是稳定
  5. Wine开源项目第一关--编译源码
  6. 开始邮寄调档函了?不同情况处理档案的方式!
  7. Mac文件大清理 Xcode文件清理
  8. 微星GT80S win8+ubuntu16.04.01+theano+tensorflow+cuda8.0深度学习平台搭建
  9. 金多多解读高度板前锋电子无溢价
  10. python xlrd详解