混合粒子群算法(基于杂交算法)
- 格式:docx
- 大小:16.06 KB
- 文档页数:2
改进粒子群算法的舰载武器目标分配陈曼;周凤星【摘要】针对舰载火力打击中的武器目标分配问题,设计了一种改善的混合粒子群优化算法来求解.对粒子更新速度的最大值进行线性递减,使得前期加强全局寻优能力,后阶段提高收敛能力;采用异步变化的学习因子,以及基于正切函数的惯性权重改进法来解决全局搜索能力与收敛精度之间的矛盾;引进了遗传算法中的杂交算子并采取模拟退火思想更新粒子,避免得到局部最优解.仿真结果显示,设计的算法能有效适宜地求解武器目标分配问题.【期刊名称】《火力与指挥控制》【年(卷),期】2018(043)011【总页数】5页(P72-76)【关键词】粒子群算法;异步;惯性权重改进;杂交;模拟退火【作者】陈曼;周凤星【作者单位】武汉科技大学信息科学与工程学院,武汉430081;武汉科技大学信息科学与工程学院,武汉430081【正文语种】中文【中图分类】TP301.6;TJ810.3+70 引言在舰载武器系统实施火力打击的过程中,当多个目标同时来袭时,就需要快速地作出决策如何进行武器目标分配,武器目标分配是指按照一定的最优分配原则将多种武器分配给多个来袭目标。
近年来,舰艇编队防空领域的武器目标分配问题受到了广泛关注,有关学者提出了许多智能算法进行求解,如遗传算法、蚁群算法、粒子群算法等,极大地提高了武器目标分配问题的效率和可行性[1-5]。
粒子群算法被广泛应用于武器目标分配问题中,如文献[6]将遗传算法中的交叉、变异操作加入到粒子群算法,降低了算法陷入局部收敛的可能,但增加了运行时间;文献[7]提出了一种离散粒子群优化算法,对粒子的速度和位置公式作出了新的定义,但这种方法增加了陷入局部最优的可能。
考虑到基本粒子群算法极可能陷入局部最优解的缺陷,本文提出了一种改善的粒子群算法对舰载武器目标分配问题进行求解,对解即分配结果采取十进制整数编码;对粒子更新的速度最大值进行线性递减,在初始阶段加强算法的全局寻优能力,后阶段提高收敛能力;对粒子位置更新基本公式中的学习因子采用异步变化的方式,并采用一种基于正切函数的惯性权重改进方法,平衡全局和局部寻优能力;最后将杂交操作引入算法,对更新后的粒子采用模拟退火策略进行替换,进一步增加搜索精度,仿真结果表明提出的算法能快速合理地求解武器目标分配问题。
小型微型计算机系统Journal of Chinese Computer SystemsDOI: 10. 20009/j. cnki. 21-1106/TP. 2020-08912022年2月第2期
Vol.43 No. 2 2022
结合引力测度和质心变异策略的混合粒子群优化算法胡凯,李均利,林秀丽,邓浩(四川师范大学计算机科学学院,成都610101)E-mail :707591035@ qq. com
摘要:针对经典粒子群优化(PSO)算法在算法前期易陷入局部极值、后期收敛精度低的问题,提出一种结合引力测度和质心 变弃策略的混合粒子群优化算法(GMCMPSO).首先,在算法初始阶段采用精英分组策略,以方便获取种群的优秀信息;其次, 对两个子群采用引力测度策略,以达到种群间信息的高效共享;最后,在引力测度的引导下对一部分普通粒子进行随机变异、对
剩余的普通粒子进行质心变异,以使得算法能够有效跳出局部极值和开发最具潜力的区域,并提高算法的收敛精度.将所提出 的算法和经典粒子群优化(PSO)算法、萤火虫和粒子群的混合优化(HFPSO)算法、基于分层自主学习的改进粒子群优化 (HCPSO)算法、适应度依赖优化(FDO)算法共5个算法在16个标准测试函数上进行了比较,各项实验结果表明,GMCMPSO 在高维多峰函数上对比其他4个算法有更高的收敛精度和更快的收敛速度.关键词:粒子群优化算法;精英分组;引力测度;质心变异;收敛精度;收敛速度中图分类号:TP301 文献标识码:A 文章编号:1000-1220(2022>02>0285七8
Hybrid Particle Swarm Optimization Algorithm Combining Gravity Measure and Centroid Mutation Strategy
HU Kai.LI Jun-li.LIN Xiu-U.DENG Hao(School of Computer Science, Sichuan Normal University .Chengdu 610101 .China)
基于粒子群算法的多目标优化问题研究1.引言多目标优化问题是现代工程设计和决策中经常遇到的问题之一,因为现实中往往需要优化多个目标。
传统的单目标优化问题只考虑一个目标函数,因此无法很好地解决多目标优化问题。
粒子群算法(Particle Swarm Optimization,PSO)是一种启发式优化算法,它已经广泛应用于多个领域中的优化问题。
本文将介绍粒子群算法以及基于粒子群算法的多目标优化问题研究。
2.粒子群算法原理粒子群算法是一种通过模拟自然界中鸟群或鱼群等生物群体行为来进行优化的算法,该算法由Eberhart和Kennedy在1995年提出。
粒子群算法将优化问题看作是在一个多维空间中的搜索问题,将解空间中的每一个可能的解看作一个粒子,各个粒子按照一定规则进行搜索,不断更新粒子位置和速度来寻找全局最优解。
在粒子群算法中,每个粒子都有位置和速度两个向量,位置向量表示当前的解,速度向量表示粒子的移动方向和速度大小。
在搜索过程中,每个粒子会记录自己目前找到的最优解,而全局最优解则是所有粒子的最优解中的最优解。
搜索过程中,粒子按照自身的最优解和全局最优解来调整速度和位置,以期望找到某个局部最优解,最终在搜索过程结束时得到全局最优解。
3.基于粒子群算法的多目标优化问题研究多目标优化问题需要同时优化多个目标函数,这些目标函数往往是相互矛盾的,因此需要找到一组解,这些解可以尽可能地满足多个目标函数的要求。
本章将介绍基于粒子群算法的多目标优化问题研究的方法。
3.1 基本方法在基于粒子群算法的多目标优化问题研究中,最常用的方法是多目标粒子群算法(Multi-objective Particle Swarm Optimization,MOPSO)。
该算法通过对粒子速度和位置的调整,以期望找到多个目标函数的 Pareto 前沿(Pareto Front),并从中选择最优解。
MOPSO 算法中,每个粒子的位置和速度向量都需要根据多个目标函数来计算。
主程序: P(i)=fitness2(x(i,:)); childv1(i,:)=(PoolVX(seed1,:)+PoolVX(seed2,:))*norm(PoolVX(seed1,:))/norm(PoolVX(seed1,:)+Po
%------基本粒子群优化算法(Particle Swarm Optimization)-----------
%------名称:混合粒子群优化算法(基于杂交的算法)
%------作用:求解优化问题
%------说明:全局性,并行性,高效的群体智能算法
%------初始格式化--------------------------------------------------
clear all;
clc;
format long;
%------给定初始化条件----------------------------------------------
c1=2; %学习因子1
%c1=3;
%c2=2;
Pc=0.9;
Sp=0.2;
c2=2; %学习因子2
w=0.7; %惯性权重
%MaxDT=500;
MaxDT=10000; %最大迭代次数
D=5; %搜索空间维数(未知数个数)
N=40; %初始化群体个体数目
%eps=10^(-6); %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
fori=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
figure(3)
fori=1:N
P(i)=fitness2(x(i,:));
y(i,:)=x(i,:);
end
Pg=x(N,:); %Pg为全局最优
fori=1:(N-1)
if fitness2(x(i,:))
end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求------------
for t=1:MaxDT
fori=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 fitness2(x(i,:))
y(i,:)=x(i,:);
end
if P(i)
end
r1=rand();
if r1
PoolX=x(1:numPool,:); %杂交池中粒子的位置
PoolVX=v(1:numPool,:); %杂交池中粒子的速度
fori=1:numPool
seed1=floor(rand()*(numPool-1))+1;
seed2=floor(rand()*(numPool-1))+1;
pb=rand();
childx1(i,:)=pb*PoolX(seed1,:)+(1-pb)*PoolX(seed2,:); %子代的位置计算
olVX(seed2,:));
end
x(1:numPool,:)=childx1; %子代位置替换父代位置
v(1:numPool,:)=childv1; %子代速度替换父代速度
end
Pbest(t)=fitness2(Pg);
end
end
plot(Pbest)
TempStr=sprintf('c1= %g ,c2=%g',c1,c2);
title(TempStr);
xlabel('迭代次数');
ylabel('适应度值');
%------最后给出计算结果
disp('*************************************************************')
disp('函数的全局最优位置为:')
Solution=Pg
disp('最后得到的优化极值为:')
Result=fitness2(Pg)
disp('*************************************************************')