当前位置: 首页 > news >正文

改进PSO算法!新自组织分层粒子群优化算法,具有变化的时间变化加速系数,附完整代码

毫无疑问,进化算法领域中强大而有效的优化器之一是粒子群优化(PSO)。粒子群优化(PSO)是自组织分层 PSO 与时间变化加速系数(HPSO-TVAC)的结合,由 Ratnaweera 和 co-authors [1] 提出,是一种有效的模型,由 Eberhart 和 Kennedy [2] 在 1995 年引入,受到中央动物群体(如鱼群)的启发,这些动物通过群体行为解决优化问题。HPSO-TVAC 优化技术包含一个粒子群(Np 个粒子作为问题解决方案(Np 由粒子数量定义,粒子在 D 维解空间中定义,Xi=[xi,1,xi,2,...,xi,D]X_i = [x_{i,1}, x_{i,2}, ..., x_{i,D}]Xi=[xi,1,xi,2,...,xi,D])。

每个粒子在每次迭代(第一迭代)中根据其个人最佳位置(目标函数值或适应度函数值)Pi=[pi,1,pi,2,...,pi,D]P_i = [p_{i,1}, p_{i,2}, ..., p_{i,D}]Pi=[pi,1,pi,2,...,pi,D] 和群体中所有粒子的最佳位置 Pg=[pg,1,pg,2,...,pg,D]P_g = [p_{g,1}, p_{g,2}, ..., p_{g,D}]Pg=[pg,1,pg,2,...,pg,D] 调整其位置和速度。在每次迭代的优化过程中,粒子的位置和速度 (Vi,v⃗i)(V_i, \vec{v}_i)(Vi,vi) 由以下方程给出:

vi,jiter+1=c1iter×r1×(pi,j−xi,jiter)+c2iter×r2×(pg,j−xi,jiter)(1) v_{i,j}^{iter+1} = c_1^{\text{iter}} \times r_1 \times (p_{i,j} - x_{i,j}^{iter}) + c_2^{\text{iter}} \times r_2 \times (p_{g,j} - x_{i,j}^{iter}) \tag{1} vi,jiter+1=c1iter×r1×(pi,jxi,jiter)+c2iter×r2×(pg,jxi,jiter)(1)

xi,jiter+1=xi,jiter+vi,jiter+1(2) x_{i,j}^{iter+1} = x_{i,j}^{iter} + v_{i,j}^{iter+1} \tag{2} xi,jiter+1=xi,jiter+vi,jiter+1(2)

其中随机系数 r1r_1r1r2r_2r2 是 [0, 1] 范围内的均匀随机变量,c1iterc_1^{\text{iter}}c1iterc2iterc_2^{\text{iter}}c2iter 是加速系数,可以通过以下方程计算:

c1iter=(c1f−c1i)×iteritermax+c1i(3) c_1^{\text{iter}} = (c_1^f - c_1^i) \times \frac{\text{iter}}{\text{iter}_{\text{max}}} + c_1^i \tag{3} c1iter=(c1fc1i)×itermaxiter+c1i(3)

c2iter=(c2f−c2i)×iteritermax+c2i(4) c_2^{\text{iter}} = (c_2^f - c_2^i) \times \frac{\text{iter}}{\text{iter}_{\text{max}}} + c_2^i \tag{4} c2iter=(c2fc2i)×itermaxiter+c2i(4)

其中 c1ic_1^ic1i, c1fc_1^fc1f, c2ic_2^ic2ic2fc_2^fc2f 是常数,在本文中 c1iterc_1^{\text{iter}}c1iterc1i=c1f=2.5c_1^i = c_1^f = 2.5c1i=c1f=2.5 变化到 c2iterc_2^{\text{iter}}c2iterc2i=c2f=0.5c_2^i = c_2^f = 0.5c2i=c2f=0.5c2iterc_2^{\text{iter}}c2iterc2i=c2f=2.5c_2^i = c_2^f = 2.5c2i=c2f=2.5

HPSO-TVAC 算法是许多优化论文中的重要版本之一,与经典 HPSO-TVAC 相比,它在真实世界优化中非常有竞争力。

让我们,我们已经提高了 HSO-TVAC 算法的解决方案质量,同时增加了收敛速度并减少了局部最优的陷阱,而没有增加额外成本。这样,我们可以通过在 HSO-TVAC 算法中进行两个简单且协调的变化来获得解决方案。除了与 HPSO-TVAC 相似的情况外,其他情况的 NHPSO-TVAC 已经被选择为 [1]。在这些条件和 VVV 的范围内,我们考虑了 c1c_1c1c2c_2c2 作为指数,根据 (4) 和 (5),为了能够从局部最优中逃脱并增加搜索空间的多样性,我们选择了 c1iterc_1^{\text{iter}}c1iterc2iterc_2^{\text{iter}}c2iter 作为基本解决方案,并增加了控制参数,简化了算法。换句话说,算法简化了:

c1iter=(cf−ci)×iteritermax+ci(5) c_1^{\text{iter}} = (c_f - c_i) \times \frac{\text{iter}}{\text{iter}_{\text{max}}} + c_i \tag{5} c1iter=(cfci)×itermaxiter+ci(5)

c2iter=∣w(e−f/(1−w))(6) c_2^{\text{iter}} = |w(e^{-f/(1-w)}) \tag{6} c2iter=w(ef/(1w))(6)

这里随机系数 www 是标准正态随机变量,c2iterc_2^{\text{iter}}c2iterc=ci=0.5c = c_i = 0.5c=ci=0.5cmax=cf=0.0c_{\text{max}} = c_f = 0.0cmax=cf=0.0 对于所有模拟变化 citerc^{\text{iter}}citerc=ci=0.5c = c_i = 0.5c=ci=0.5cmax=cf=0.0c_{\text{max}} = c_f = 0.0cmax=cf=0.0

在最近的研究 [3, 4] 中,建议 PSO 算法中的全局和整体搜索能力比 (2) 更好,以便从局部最优中逃脱并找到最佳值,如第 r 部分所示,piiter−Xiiterp_i^{\text{iter}} - X_i^{\text{iter}}piiterXiiter 另一方面,模拟显示,如果不考虑 PSO 结构,则算法的收敛速度降低,这降低了算法的能力。因此,在所提出的算法的第二阶段,(2) 的整体搜索部分被转化为整体模拟搜索,用于个人局部搜索(即 piiter−2×Xiiterp_i^{\text{iter}} - 2 \times X_i^{\text{iter}}piiter2×Xiiter)。这样除了快速收敛到局部解外,还可以实现可接受的收敛性,提高最终优化质量。新搜索方程如下:

vi,jiter+1=c1iter×r1×(pi,jposition−xi,jiter)+c2iter×r2×((2×pi,jiter)−2×xi,jiter)(7) v_{i,j}^{\text{iter+1}} = c_1^{\text{iter}} \times r_1 \times (p_{i,j}^{\text{position}} - x_{i,j}^{\text{iter}}) + c_2^{\text{iter}} \times r_2 \times ((2 \times p_{i,j}^{\text{iter}}) - 2 \times x_{i,j}^{\text{iter}}) \tag{7} vi,jiter+1=c1iter×r1×(pi,jpositionxi,jiter)+c2iter×r2×((2×pi,jiter)2×xi,jiter)(7)

xi,jiter+1=xi,jiter+Δxi(8) x_{i,j}^{\text{iter+1}} = x_{i,j}^{\text{iter}} + \Delta x_i \tag{8} xi,jiter+1=xi,jiter+Δxi(8)

其中 Δxi=δmutalter⋅N(0,1)\Delta x_i = \delta_{\text{mut}}^{\text{alter}} \cdot \mathcal{N}(0, 1)Δxi=δmutalterN(0,1)

xi′=xi+Δxi(9) x_i' = x_i + \Delta x_i \tag{9} xi=xi+Δxi(9)

xi′x_i'xi 是代理经过变异后的新位置。

通过遵循这些步骤,HSO 算法有效地平衡了全局和局部搜索策略,确保在各种问题领域中实现稳健的优化性能。从表 1 的最后两行可以看出,该算法的时间比其他算法少 NBNBNBNBNBNB 是该算法比其他算法更差的次数),我们可以得出结论,所提出的 HSO-TVAC 优化技术比经典优化技术更有效且更稳定,HPSO-TVAC 可以被认为是经典 HPSO-TVAC 的改进版本,用于真实世界优化。

% % Based on the paper:
% % M. Ghasemi, J. Aghaei, and M. Hadipour, "New self-organising  hierarchical PSO with jumping time-varying acceleration
% % coefficients," Electron. Lett., vol. 53, no. 20, pp. 1360–1362, 2017. DOI: 10.1049/el.2017.2112.clear
clc
disp('HPSO-TVAC');CostFunction=@(x) ObjFun(x);nVar=40;            % Number of decision variablesVarMin=-100;        % Minimum value of decision variables
VarMax=-VarMin;     % Maximum value of decision variablesnPop=40;            % Number of algorithm populationci=0.5;
cf=0.0;MaxNFE=100e3;           % Maximum Number of Function Evaluations
MaxIt=MaxNFE/nPop;dx=VarMax-VarMin;
vmax(1:nVar)=0.5*dx;velocity=zeros(nPop,nVar);
position=velocity;
cost=zeros(1,nVar);
gbestcost=inf;
pbest=position;
pbestcost=cost;
gcost=zeros(1,MaxIt);
NFES=zeros(1,MaxIt);
NFE=0;
it=0;while NFE<MaxNFEit=it+1;if it==1    % Initializationfor i=1:nPopvelocity(i,1:nVar)=vmax;position(i,:)=rand(1,nVar).*VarMin+(VarMax-VarMin);cost(i)=CostFunction(position(i,:));NFE=NFE+1;pbest(i,:)=position(i,:);pbestcost(i)=cost(i);if pbestcost(i)<gbestcost(it)gbest=pbest(i,:);gbestcost=pbestcost(i);endendelsec_it=((cf-ci)*(it/MaxIt))+ci;for i=1:nPopA=randperm(nPop);A(A==i)=[];a0=A(1);w=randn;c1_it=(abs(w))^((c_it)*(w));c2_it=(abs((1-w)))^((c_it)*(1/(1-w)));%%%%%%%%%%%%%HPSOvelocity(i,:)=(c1_it*(rand(1,nVar)).*((pbest(i,:))-position(i,:)))...+(c2_it*(rand(1,nVar)).*((gbest+pbest(a0,:))-2*position(i,:)));for gg=1:nVarif velocity(i,gg)==0if rand<0.5velocity(i,gg)=rand*vmax(1,gg);elsevelocity(i,gg)=-rand*vmax(1,gg);endendvelocity(i,gg)=sign(velocity(i,gg)).*min(abs(velocity(i,gg)),abs(vmax(1,gg)));end%%%%%%%%%%%%%%%%velocity(i,:)=min(max(velocity(i,:),-vmax),vmax);position(i,:)=position(i,:)+velocity(i,:);position(i,:)=min(max(position(i,:),VarMin),VarMax);cost(i)=CostFunction(position(i,:));            NFE=NFE+1;if cost(i)<pbestcost(i)pbest(i,:)=position(i,:);pbestcost(i)=cost(i);if pbestcost(i)<gbestcostgbest=pbest(i,:);gbestcost=pbestcost(i);endendendendNFES(it)=NFE;gcost(it)=gbestcost;fprintf('Iteration %3.0f,  NFE %6.0f,   Best Cost %g\n',it,NFE,gbestcost)
endgcost(it+1:end)=[];
NFES(it+1:end)=[];
plot(NFES,gcost,'b','linewidth',2);BestSol.Position=gbest;
BestSol.Cost=gbestcost;

Ghasemi, M., Aghaei, J. and Hadipour, M. (2017), New self-organising hierarchical PSO with jumping time-varying acceleration coefficients. Electron. Lett., 53: 1360-1362. https://doi.org/10.1049/el.2017.2112

http://www.dtcms.com/a/310160.html

相关文章:

  • 交通拥挤识别准确率↑32%:陌讯时空特征融合算法实战解析
  • 【AMD | Docker】超级全面版本:在Docker中验证AMD GPU移动显卡可用性的方法
  • Redis深度剖析:从基础到实战(下)
  • 开源 Arkts 鸿蒙应用 开发(十四)线程--任务池(taskpool)
  • 什么类型网站适合WEB应用防火墙?
  • (27)运动目标检测之对二维点集进行卡尔曼滤波
  • 全国青少年信息素养大赛(无人飞行器主题赛(星际迷航)游记)
  • plc 以太网通讯模块实现:施耐德 PLC 多设备实时数据无缝协同应用案例
  • Java Validator自定义日期范围验证注解:实现不超过一年的时间跨度校验
  • 面向对象三大特性---封装
  • FileInputStream 和 FileOutputStream 简介
  • ubuntu22.04系统入门 linux入门(二) 简单命令 多实践以及相关文件管理命令
  • 便携式综合气象观测仪:随时随地 “捕捉” 天气变化
  • PaddleOcr转onnx和推理
  • python:前馈人工神经网络算法之实战篇,以示例带学,弄明白神经网络算法应用的思路、方法与注意事项等
  • 高斯透镜公式(调整镜头与感光元件之间的距离时,使得不同距离的物体在感光元件上形成清晰的影像)
  • 企业级LLM智能引擎 的完整解决方案,整合了 SpringAI框架、RAG技术、模型控制平台(MCP)和实时搜索,提供从架构设计到代码实现的全面指南:
  • 【iOS】retain/release底层实现原理
  • Java 日期时间格式化模式说明
  • PTE之路--01
  • vivado扫盲 out-of-context(腾讯元宝)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现围栏羊驼的检测识别(C#代码,UI界面版)
  • Android Material Components 全面解析:打造现代化 Material Design 应用
  • 数据处理四件套:NumPy/Pandas/Matplotlib/Seaborn速通指南
  • 如何在不依赖 Office 的情况下转换 PDF 为可编辑文档
  • lesson30:Python迭代三剑客:可迭代对象、迭代器与生成器深度解析
  • Redis 数据结构全景解析
  • Linux内核构建系统中的auto.conf与autoconf.h:原理与作用解析
  • 3D 管道如何实现流动的?
  • 基于SpringBoot+MyBatis+MySQL+VUE实现的疗养院管理系统(附源码+数据库+毕业论文+远程部署)