导航:首页 > 源码编译 > pso算法

pso算法

发布时间:2022-02-06 16:23:15

1. pso算法是如何应用的,我十分不理解

f(x)目标函数,粒子群是用来最这个目标函数求最大值或者最小值的

2. PSO算法的应用

“适应值最小的条件下各节点的坐标”
各节点是什么意思?
你是需要适应度值最小对应的粒子坐标吗?

3. pso的算法结构

对微粒群算法结构的改进方案有很多种,对其可分类为:采用多个子种群;改进微粒学习对象的选取策略;修改微粒更新迭代公式;修改速度更新策略;修改速度限制方法、位置限制方法和动态确定搜索空间;与其他搜索技术相结合;以及针对多模问题所作的改进。
第一类方案是采用多个子种群。柯晶考虑优化问题对收敛速度和寻优精度的双重要求并借鉴多群体进化算法的思想,将寻优微粒分成两组,一组微粒采用压缩因子的局部模式PSO算法,另一组微粒采用惯性权重的全局模式PSO算法,两组微粒之间采用环形拓扑结构。对于高维优化问题,PSO算法需要的微粒个数很多,导致计算复杂度常常很高,并且很难得到好的解。因此,出现了一种协作微粒群算法(Cooperative ParticleSwarm Optimizer, CPSO-H),将输入向量拆分成多个子向量,并对每个子向量使用一个微粒群来进行优化。虽然CPSO-H算法使用一维群体来分别搜索每一维,但是这些搜索结果被一个全局群体集成起来之后,在多模问题上的性能与原始PSO算法相比有很大的改进。Chow使用多个互相交互的子群,并引入相邻群参考速度。冯奇峰提出将搜索区域分区,使用多个子群并通过微粒间的距离来保持多样性。陈国初将微粒分成飞行方向不同的两个分群,其中一分群朝最优微粒飞行,另一分群微粒朝相反方向飞行;飞行时,每一微粒不仅受到微粒本身飞行经验和本分群最优微粒的影响,还受到全群最优微粒的影响。Niu在PSO算法中引入主—从子群模式,提出一种多种群协作PSO算法。Seo提出一种多组PSO算法(Multigrouped PSO),使用N组微粒来同时搜索多模问题的N个峰。Selleri使用多个独立的子群,在微粒速度的更新方程中添加了一些新项,分别使得微粒向子群历史最优位置运动,或者远离其他子群的重心。王俊年借鉴递阶编码的思想,构造出一种多种群协同进化PSO算法。高鹰借鉴生态学中环境和种群竞争的关系,提出一种基于种群密度的多种群PSO算法。
第二类方案是改进微粒学习对象的选取策略。Al-kazemi提出多阶段PSO算法,将微粒按不同阶段的临时搜索目标分组,这些临时目标允许微粒向着或背着它自己或全局最好位置移动。Ting对每个微粒的pBest进行操作,每一维从其他随机确定的维度学习,之后如果新的pBest更好则替换原pBest;该文还比较了多种不同学习方式对应的PSO算法的性能。Liang提出一种新颖的学习策略CLPSO,利用所有其他微粒的历史最优信息来更新微粒的速度;每个微粒可以向不同的微粒学习,并且微粒的每一维可以向不同的微粒学习。该策略能够保持群体的多样性,防止早熟收敛,可以提高PSO算法在多模问题上的性能;通过实验将该算法与其它几种PSO算法的变种进行比较,实验结果表明该算法在解决多模复杂问题时效果很好。Zhao在PSO算法中使用适应值最好的n个值来代替速度更新公式中的gBest。Abdelbar提出一种模糊度量,从而使得每个邻域中有多个适应值最好的微粒可以影响其它微粒。Wang也采用多个适应值最好的微粒信息来更新微粒速度,并提出一种模糊规则来自适应地确定参数。崔志华提出一种动态调整的改进PSO算法,在运行过程中动态调整极限位置,使得每个微粒的极限位置在其所经历的最好位置与整体最好位置所形成的动态圆中分布。与原始PSO算法相反,有一类方法是远离最差位置而非飞向最优位置。Yang提出在算法中记录最差位置而非最优位置,所有微粒都远离这些最差位置。与此类似,Leontitsis在微粒群算法中引入排斥子的概念,在使用个体最优位置和群体最优位置信息的同时,在算法中记录当前的个体最差位置和群体最差位置,并利用它们将微粒排斥到最优位置,从而让微粒群更快地到达最优位置。孟建良提出一种改进的PSO算法,在进化的初期,微粒以较大的概率向种群中其他微粒的个体最优学习;在进化后期,微粒以较大的概率向当前全局最优个体学习。Yang在PSO算法中引入轮盘选择技术来确定gBest,使得所有个体在进化早期都有机会引领搜索方向,从而避免早熟。
第三类方案是修改微粒更新公式。Hendtlass在速度更新方程中给每个微粒添加了记忆能力。He在速度更新方程中引入被动聚集机制。曾建潮通过对PSO算法的速度进化迭代方程进行修正,提出一种保证全局收敛的随机PSO算法。Zeng在PSO算法中引入加速度项,使得PSO算法从一个二阶随机系统变为一个三阶随机系统,并使用PID控制器来控制算法的演化。为了改进PSO算法的全局搜索能力,Ho提出一种新的微粒速度和位置更新公式,并引入寿命(Age)变量。
第四类方案是修改速度更新策略。Liu认为过于频繁的速度更新会弱化微粒的局部开采能力并减慢收敛,因此提出一种松弛速度更新(RVU)策略,仅当微粒使用原速度不能进一步提高适应值时才更新速度,并通过试验证明该策略可以大大减小计算量并加速收敛。罗建宏对同步模式和异步模式的PSO算法进行了对比研究,试验结果表明异步模式收敛速度显着提高,同时寻优效果更好。Yang在微粒的更新规则中引入感情心理模型。Liu采用一个最小速度阈值来控制微粒的速度,并使用一个模糊逻辑控制器来自适应地调节该最小速度阈值。张利彪提出了对PSO算法增加更新概率,对一定比例的微粒并不按照原更新公式更新,而是再次随机初始化。Dioan利用遗传算法(GA)来演化PSO算法的结构,即微粒群中各微粒更新的顺序和频率。
第五类方案是修改速度限制方法、位置限制方法和动态确定搜索空间。Stacey提出一种重新随机化速度的速度限制和一种重新随机化位置的位置限制。Liu在[76]的基础上,在PSO算法中引入动量因子,来将微粒位置限制在可行范围内。陈炳瑞提出一种根据微粒群的最佳适应值动态压缩微粒群的搜索空间与微粒群飞行速度范围的改进PSO算法。
第六类方案是通过将PSO算法与一些其他的搜索技术进行结合来提高PSO算法的性能,主要目的有二,其一是提高种群多样性,避免早熟;其二是提高算法局部搜索能力。这些混合算法包括将各种遗传算子如选择、交叉、变异引入PSO算法,来增加种群的多样性并提高逃离局部最小的能力。Krink通过解决微粒间的冲突和聚集来增强种群多样性,提出一种空间扩展PSO算法(Spatial ExtensionPSO,SEPSO);但是SEPSO算法的参数比较难以调节,为此Monson提出一种自适应调节参数的方法。用以提高种群多样性的其他方法或模型还包括“吸引—排斥”、捕食—被捕食模型、耗散模型、自组织模型、生命周期模型(LifeCycle model)、贝叶斯优化模型、避免冲突机制、拥挤回避(Crowd Avoidance)、层次化公平竞争(HFC)、外部记忆、梯度下降技术、线性搜索、单纯形法算子、爬山法、劳动分工、主成分分析技术、卡尔曼滤波、遗传算法、随机搜索算法、模拟退火、禁忌搜索、蚁群算法(ACO)、人工免疫算法、混沌算法、微分演化、遗传规划等。还有人将PSO算法在量子空间进行了扩展。Zhao将多主体系统(MAS)与PSO算法集成起来,提出MAPSO算法。Medasani借鉴概率C均值和概率论中的思想对PSO算法进行扩展,提出一种概率PSO算法,让算法分勘探和开发两个阶段运行。
第七类方案专门针对多模问题,希望能够找到多个较优解。为了能使PSO算法一次获得待优化问题的多个较优解,Parsopoulos使用了偏转(Deflection)、拉伸(Stretching)和排斥(Repulsion)等技术,通过防止微粒运动到之前已经发现的最小区域,来找到尽可能多的最小点。但是这种方法会在检测到的局部最优点两端产生一些新的局部最优点,可能会导致优化算法陷入这些局部最小点。为此,Jin提出一种新的函数变换形式,可以避免该缺点。基于类似思想,熊勇提出一种旋转曲面变换方法。
保持种群多样性最简单的方法,是在多样性过小的时候,重置某些微粒或整个微粒群。Lvbjerg在PSO算法中采用自组织临界性作为一种度量,来描述微粒群中微粒相互之间的接近程度,来确定是否需要重新初始化微粒的位置。Clerc提出了一种“Re-Hope”方法,当搜索空间变得相当小但是仍未找到解时(No-Hope),重置微粒群。Fu提出一种带C-Pg变异的PSO算法,微粒按照一定概率飞向扰动点而非Pg。赫然提出了一种自适应逃逸微粒群算法,限制微粒在搜索空间内的飞行速度并给出速度的自适应策略。
另一种变种是小生境PSO算法,同时使用多个子种群来定位和跟踪多个最优解。Brits还研究了一种通过调整适应值计算方式的方法来同时找到多个最优解。Li在PSO算法中引入适应值共享技术来求解多模问题。Zhang在PSO算法中采用顺序生境(SequentialNiching)技术。在小生境PSO算法的基础上,还可以使用向量点积运算来确定各个小生境中的候选解及其边界,并使该过程并行化,以获得更好的结果。但是,各种小生境PSO算法存在一个共同的问题,即需要确定一个小生境半径,且算法性能对该参数很敏感。为解决该问题,Bird提出一种自适应确定niching参数的方法。
Hendtlass在PSO算法中引入短程力的概念,并基于此提出一种WoSP算法,可以同时确定多个最优点。刘宇提出一种多模态PSO算法,用聚类算法对微粒进行聚类,动态地将种群划分成几个类,并且使用微粒所属类的最优微粒而非整个种群的最好微粒来更新微粒的速度,从而可以同时得到多个近似最优解。Li在PSO算法中引入物种的概念,但是由于其使用的物种间距是固定的,该方法只适用于均匀分布的多模问题;为此,Yuan对该算法进行扩展,采用多尺度搜索方法对物种间距加以自适应的调整。
此外,也有研究者将PSO算法的思想引入其他算法中,如将PSO算法中微粒的运动规则嵌入到进化规划中,用PSO算法中的运动规则来替代演化算法中交叉算子的功能。

4. Tent映射与PSO算法用于波段寻优的思想

高光谱遥感对地物光谱特征进行了细致的刻画,提高了地物识别的可靠性,但是随着光谱维数增加也带来了大量冗余数据,给高光谱数据处理与信息识别等增添了负担,同时也会影响地物识别的精度,故地物识别时对高光谱数据进行降维、选取特征波段就显得非常重要。支持向量机(Support Vector Machine,SVM)是一种机器学习算法,由美国贝尔实验室Vapnik针对分类和回归问题,为适合小样本学习问题首先提出来的(Vapnik,1995),SVM具有很好的泛化能力,并在一定程度上克服了机器学习的维数灾难。近年来,SVM以及基于其他算法改进的SVM用于高光谱影像的分类得到了广泛应用,并取得了很好的分类精度(Melgani et al.,2004;李祖传等,2011)。但针对高光谱数据冗余性,粒子群优化(Particle Swarm Optimization,PSO)算法在寻找最优特征波段组合与进一步提高SVM分类精度方面具有较好的优势。

PSO算法是一种通过个体与群体之间的协作来寻找最优解的机器学习算法,具有自适应,自组织以及快速得到最优解的能力。PSO算法首先由Kennedy和Eberhart提出来的,后来为了使PSO有更广泛的应用范围,他们又提出了二进制PSO算法(Kennedy et al.,1995,1997;Khanesar et al.,2007;张浩等,2008)。自从PSO算法提出以来,该算法已经在各个研究领域得到了广泛的关注。在高光谱遥感应用方面,Monteiro和Kosugi(2007)提出基于PSO的高光谱影像最佳波段组合和最佳波段数的选取方法,并通过实验和传统波段选取方法相比较,证明了基于PSO进行特征波段选取的优越性。丁胜等(2010)提出一种PSO-BSSVM分类模型,用于高光谱影像特征波段的选取以及对SVM的参数寻优,通过和其他方法的实验比较得出该模型可以提高分类精度。李林宜和李德仁(2011)也在模糊特征的选取中也用了PSO算法。总之PSO在高光谱影像分类的特征波段选取中应用比较成功,但由于PSO容易早熟,陷入局部最优,所以针对这点以及为获得更高的SVM分类精度,对PSO加以改进是非常有意义的。Tent映射是混沌理论中典型的混沌映射例子,Tent映射具有随机性和遍历性,所以把Tent映射加入PSO可以对PSO算法容易陷入局部最优的状况进行改善。本章就主要通过改进Tent映射后运用于二进制PSO算法进行寻优,寻找高光谱影像SVM分类的最优特征波段组合。

5. 二进制PSO算法

PSO算法中每一粒子都被看是潜在的最优解,具体实现思路是先将粒子初始化,对于每个粒子都有一个当前位置以及根据适应度值做粒子更新的速度(Kennedy et al.,1995),通过迭代计算得到最优解。PSO粒子速度计算和对应位置更新的原理如式(8.1)、式(8.2)所示:

高光谱遥感影像信息提取技术

式中:xid是粒子;c1,c2是学习因子;w是惯性因子,是粒子速度保持更新之前粒子速度的能力;pid是目前单个粒子最优位置;pgd是整个粒子群目前得到的最优位置;rand是0~1之间的随机数。

二进制PSO首先将粒子初始化为0和1组成的序列。二进制PSO算法是对式(8.2)作些改变,其位置更新如式(8.3)所示(程志刚等,2007):

高光谱遥感影像信息提取技术

式中: 是 Sigmoid 函数。

6. 咨询一个最简单的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),可以再联系

7. spso(一种粒子群算法),英文全名是 就是增加多峰函数搜索的pso算法,请问它的英文全名.

Standard Particle Swarm Optimization - 标准粒子群算法
Simple Particle Swarm Optimization - 简化粒子群算法
【英语牛人团】

8. 粒子群优化算法(PSO)的matlab运行程序~~谢谢大家啦!

%不知道你具体的问题是什么,下面是一个最基本的pso算法解决函数极值问题,如果是一些大型的问题,需要对速度、惯性常数、和自适应变异做进一步优化,希望对你有帮助
function y = fun(x)
y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;
%下面是主程序
%% 清空环境
clc
clear

%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen=200; % 进化次数
sizepop=20; %种群规模

Vmax=1;%速度限制
Vmin=-1;
popmax=5;%种群限制
popmin=-5;

%% 产生初始粒子和速度
for i=1:sizepop
%随机产生一个种群
pop(i,:)=5*rands(1,2); %初始种群
V(i,:)=rands(1,2); %初始化速度
%计算适应度
fitness(i)=fun(pop(i,:)); %染色体的适应度
end

%找最好的染色体
[bestfitness bestindex]=min(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,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;

%自适应变异(避免粒子群算法陷入局部最优)
if rand>0.8
k=ceil(2*rand);%ceil朝正无穷大方向取整
pop(j,k)=rand;
end

%适应度值
fitness(j)=fun(pop(j,:));

%个体最优更新
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

%% 结果分析
plot(yy)
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');

9. pso的离散算法

很多优化问题涉及到离散或二值的变量,典型的例子包括调度问题或路由问题。而PSO算法的更新公式和过程是面向连续空间并为其设计的,因此需要做一些修改使之适应离散空间的情况。编码的修改可能很简单,难点在于定义速度的意义和确定轨迹的变化。
Kennedy定义了第一个离散二进制版本的PSO算法。微粒使用二进制字符串进行编码。通过使用sigmoid函数,速度被限制在[0, 1]区间之内,并被解释为“概率的变化”。Yang对该方法在量子空间进行了扩展。
Mohan提出了几种二进制方法(直接方法、量子方法、正则方法、偏差向量方法以及混合方法),但是从有限的实验中没有得出什么结论。Clerc对一些专用于某些约束优化问题如TSP问题的PSO算法变种进行了试验,结果显示该方法比较有前途。Pang使用模糊矩阵来表示微粒的位置和速度,对PSO算法的算符进行了重定义,并将其应用到TSP问题的求解。Pampara将PSO算法与信号处理中的角调制技术结合起来,将高维二进制问题降维为一个在连续空间中定义的四维问题,并通过求解该四维问题来获得原问题的解。Afshinmanesh重新定义了离散PSO算法中的加法与乘法,并使用人工免疫系统中的阴性选择来实现速度限制Vmax。
Hu提出了一种改进PSO算法来处理排列问题。微粒被定义为一组特定值的排列,速度基于两个微粒的相似度重新定义,微粒根据由它们的速度所定义的随机率来变换到一个新的排列。引入了一个变异因子来防止当前的pBest陷入局部最小。在n皇后问题上的初步研究显示改进的PSO算法在解决约束满意问题方面很有前途。
Migliore对原始的二进制PSO算法进行了一些改进,提出了可变行为二进制微粒群算法(VB-BPSO)和可变动态特性二进制微粒群算法(VD-BPSO)。VB-BPSO算法按照连续PSO算法的速度更新公式的思想设计了一个新的速度更新公式,用来确定微粒位置向量每一位为1的概率。而VD-BPSO算法则是根据一定规则在两组不同参数确定的VB-BPSO算法之间切换。Migliore应用该算法设计出一种简单鲁棒的自适应无源天线。
Parsopoulos以标准函数为例测试微粒群优化算法解决整数规划问题的能力。Salman将任务分配问题抽象为整数规划模型并提出基于微粒群优化算法的解决方法。两者对迭代产生的连续解均进行舍尾取整后评价其质量。但是PSO算法生成的连续解与整数规划问题的目标函数评价值之间存在多对一的映射,以整型变量表示的目标函数不能准确反映算法中连续解的质量,而由此导致的冗余解空间与相应的冗余搜索降低了算法的收敛效率。
高尚采用交叉策略和变异策略,将PSO算法用来解决集合划分问题。赵传信重新定义了微粒群位置和速度的加法与乘法操作,并将PSO算法应用到0/1背包问题求解中。EL-Gallad在PSO算法中引入探索和勘探两个算子,用于求解排序问题。Firpi提出了BPSO算法的一种保证收敛的版本(但是并未证明其保证收敛性),并将其应用到特征选择问题。
上述离散PSO算法都是间接的优化策略,根据概率而非算法本身确定二进制变量,未能充分利用PSO算法的性能。在处理整数变量时,PSO算法有时候很容易陷入局部最小。原始PSO算法的思想是从个体和同伴的经验进行学习,离散PSO算法也应该借鉴该思想。高海兵基于传统算法的速度—位移更新操作,在分析微粒群优化机理的基础上提出了广义微粒群优化模型(GPSO),使其适用于解决离散及组合优化问题。GPSO 模型本质仍然符合微粒群优化机理,但是其微粒更新策略既可根据优化问题的特点设计,也可实现与已有方法的融合。基于类似的想法,Goldbarg将局部搜索和路径重连过程定义为速度算子,来求解TSP问题。

10. PSO算法解决带约束条件的优化问题

约束条件:
a11x1+a12x2+…+a1nxn≤b1
a21x1+a22x2+…+a2nxn≤b2
…………………………
am1x1+am2x2+…+amnxn≤bm
x1,x2,…,xn≥0 式中x1,x2,…,xn为企业生产的各种产品;b1,b2,…,bm为可供使用的各种投入要素的数量;
aij(i=1,2…m;j=1,2,… n)为第j种产品每生产1个单位所需要的第i种投入要素的数量;最后,非负值约束条件表示各种产品的产量必须是正值,负值是没有意义的。

阅读全文

与pso算法相关的资料

热点内容
什么是哲学pdf 浏览:505
hdfs的三个下载命令 浏览:520
java常用的排序算法 浏览:355
51单片机连接adc 浏览:857
python命名变量报错 浏览:117
安卓手机如何换windows系统 浏览:610
python中的类是什么 浏览:628
我的英雄学院用哪个app可以看 浏览:33
excel插入选项卡对象命令 浏览:691
python字符全排列 浏览:499
824页大瓜文件pdf 浏览:221
朔州ios源码 浏览:249
算法逻辑电路 浏览:940
青少年喝酒解压辩论赛 浏览:175
android如何新建activity 浏览:741
ntp支持的认证算法 浏览:716
想做快手主播需要什么app 浏览:926
阿里云服务器如何转账户 浏览:905
编译器和解释器实现技术完全不同 浏览:434
虐杀原形汉化补丁怎么解压 浏览:647