当前位置:首页 > 代码 > 正文

pso-svm的算法源代码(PSO算法伪代码)

admin 发布:2022-12-19 22:11 184


本篇文章给大家谈谈pso-svm的算法源代码,以及PSO算法伪代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求把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站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/26901.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载