pso-svm的算法源代码(PSO算法伪代码)
admin 发布:2022-12-19 22:11 184
本篇文章给大家谈谈pso-svm的算法源代码,以及PSO算法伪代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、求把MATLAB的pso源代码算法修改为 qpso算法 要求返回参数相同
- 2、咨询一个最简单的PSO算法的程序
- 3、如图,如何用这个PSO算法或遗传算法来求函数极值,用C语言编写代码
- 4、Tent-PSO-SVM方法实施流程
- 5、Tent-PSO-SVM分类方法
求把MATLAB的pso源代码算法修改为 qpso算法 要求返回参数相同
下面的代码是量子群优化算法,你参照着改下:
popsize=20;
MAXITER=2000;
dimension=30;
irange_l=-5.12;
irange_r=5.12;
xmax=10;
sum1=0;
sum2=0;
mean=0;
st=0;
runno=10;
data1=zeros(runno,MAXITER);
for run=1:runno
T=cputime;
x=(irange_r- irange_l)*rand(popsize,dimension,1) + irange_l;
pbest=x;
gbest=zeros(1,dimension);
for i=1:popsize
f_x(i)=f3(x(i,:));
f_pbest(i)=f_x(i);
end
g=min(find(f_pbest==min(f_pbest(1:popsize))));
gbest=pbest(g,:);
f_gbest=f_pbest(g);
MINIUM=f_pbest(g);
for t=1:MAXITER
beta=(1-0.5)*(MAXITER-t)/MAXITER+0.5;
mbest=sum(pbest)/popsize;
for i=1:popsize
fi=rand(1,dimension);
p=fi.*pbest(i,:)+(1-fi).*gbest;
u=rand(1,dimension);
b=beta*(mbest-x(i,:));
v=-log(u);
y=p+((-1).^ceil(0.5+rand(1,dimension))).*b.*v;
x(i,:)=y;
x(i,:)=sign(y).*min(abs(y),xmax);
f_x(i)=f3(x(i,:));
if f_x(i)f_pbest(i)
pbest(i,:)=x(i,:);
f_pbest(i)=f_x(i);
end
if f_pbest(i)f_gbest
gbest=pbest(i,:);
f_gbest=f_pbest(i);
end
MINIUM=f_gbest;
end
data1(run,t)=MINIUM;
if MINIUM1e-007
mean=t;
end
end
sum1=sum1+mean;
sum2=sum2+MINIUM;
%MINIUM
time=cputime-T;
st=st+time;
end
av1=sum1/10; %输出平均收验代数
av2=sum2/10; %输出平均最优解
st/10 %就是最后anw输出的解
咨询一个最简单的PSO算法的程序
%------基本粒子群优化算法(Particle Swarm Optimization)-----------
%------作用:求解优化问题
%------初始格式化----------
format long;
c1=1.4962; %学习因子1
c2=1.4962; %学习因子2
w=0.7298; %惯性权重
MaxDT=1000; %最大迭代次数
D=10; %搜索空间维数(未知数个数)
N=40; %初始化群体个体数目
eps=10^(-6); %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
pg=x(1,:); %Pg为全局最优
for i=2:N
if fitness(x(i,:),D)
pg=x(i,:);
end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求------------
for t=1:MaxDT
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:),D)p(i)
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
if p(i)
pg=y(i,:);
end
end
Pbest(t)=fitness(pg,D);
end
%------最后给出计算结果
disp('*************************************************************')
disp('函数的全局最优位置为:')
Solution=pg
disp('最后得到的优化极值为:')
Result=fitness(pg,D)
disp('*************************************************************')
%------算法结束---
如果想要适应度函数源程序(fitness.m),可以再联系
如图,如何用这个PSO算法或遗传算法来求函数极值,用C语言编写代码
需要很多的子函数 %子程序:新物种交叉操作,函数名称存储为crossover.m function scro=crossover(population,seln,pc); BitLength=size(population,2); pcc=IfCroIfMut(pc);%根据交叉概率决定是否进行交叉操作,1则是,0则否 if pcc==1 chb=round(rand*(BitLength-2))+1;%在[1,BitLength-1]范围内随机产生一个交叉位 scro(1,:)=[population(seln(1),1:chb) population(seln(2),chb+1:BitLength)] scro(2,:)=[population(seln(2),1:chb) population(seln(1),chb+1:BitLength)] else scro(1,:)=population(seln(1),:); scro(2,:)=population(seln(2),:); end %子程序:计算适应度函数,函数名称存储为fitnessfun.m function [Fitvalue,cumsump]=fitnessfun(population); global BitLength global boundsbegin global boundsend popsize=size(population,1);%有popsize个个体 for i=1:popsize x=transform2to10(population(i,:));%将二进制转换为十进制 %转化为[-2,2]区间的实数 xx=boundsbegin+x*(boundsend-boundsbegin)/(power(2,BitLength)-1); Fitvalue(i)=targetfun(xx);%计算函数值,即适应度 end %给适...
望采纳!
Tent-PSO-SVM方法实施流程
基于改进Tent映射的PSO算法用于高光谱影像SVM分类中,特征波段的选取方法是通过迭代计算实现的,具体步骤如下所述。具体实现的流程框图如图8.1所示。
1)高光谱影像归一化处理;
2)根据式(8.6)、式(8.7)初始化粒子群,并进行PSO剩余参数设置,包括:惯性因子、学习因子、粒子群包含的粒子数、速度范围与最大迭代次数;
3)计算粒子适应度值,是通过调用LIBSVM工具箱计算每个粒子的适应度值;
4)判断粒子的适应度值是否满足迭代终止条件(达到迭代最大次数或者PSO收敛),如果满足则跳到第5)步。如果不满足,则判断适应度值是否满足Tent映射条件,如果满足则对粒子速度进行Tent映射来间接改变粒子位置,否则再进行个体粒子最优和群体粒子最优更新,然后转入第3)步;
5)输出结果。
图8.1 基于Tent-PSO-SVM分类的最优波段选取图
Tent-PSO-SVM分类方法
通过改进Tent映射的PSO算法用于高光谱影像SVM分类时,最佳特征波段选取的关键问题包括:粒子的初始化、粒子速度、位置更新以及与后面参数设置相匹配的Tent映射表达式。
(1)粒子群的初始化处理
假设粒子群由M个粒子(xi,1,…,xi,N)组成,如式(8.6)所示,每个粒子是N个0和1组成的二维序列,N对应高光谱影像波段总数,0表示对应位置的波段没有被选择,1表示对应的波段被选择。那么粒子群就被初始化为二进制矩阵。
高光谱遥感影像信息提取技术
相应的粒子速度初始化为0~1之间的随机实数矩阵,如式(8.7)所示。
高光谱遥感影像信息提取技术
(2)粒子适应度的计算
粒子适应度起到评价粒子好坏的作用,它控制着粒子更新的方向,粒子适应度值的计算函数如式(8.8)所示。式(8.8)为Tent-PSO-SVM分类时通过CV(交叉验证)方式得到分类精度的函数,具体实现时调用工具箱LIBSVM的matlab版本(Chang和Lin)。
高光谱遥感影像信息提取技术
式中:(xi,1,…,xi,N)表示一个粒子,在本章中相当于PSO算法寻优的一个特征波段组合。
关于pso-svm的算法源代码和PSO算法伪代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-05人工智能系统源代码(人工智能代码下载)[20240505更新]
- 05-05易语言源代码下载(易语言下载文件源码)[20240505更新]
- 05-05htmlqq代码(html跳转代码)[20240505更新]
- 05-05游程编码代码(游程编码的实现)[20240505更新]
- 05-05侧边栏导航内部代码(html侧面导航栏)[20240505更新]
- 05-05网站视频弹窗代码(浏览器视频弹窗)[20240505更新]
- 05-05视频主持人代码(视频主持人代码怎么弄)[20240505更新]
- 05-05魔域脚本源代码(魔域互通版脚本)[20240505更新]
- 05-05tab滑动门代码(css滑动门代码)[20240505更新]
- 05-05androidoa开源代码(android源码网)[20240505更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接