本发明属于调度分配领域,更具体地,涉及一种基于遗传算法的舰船对岸打击火力分配方法。
背景技术:
火力分配问题为当今作战系统工程的研究热点问题,由于该种问题为np完全问题,没有多项式复杂度算法完成最优解的求取。舰船对岸打击火力分配问题,就是对于舰队编队,利用舰载的多种武器对岸上多个目标进行打击,获取较优作战效果的武器分配方案。获取较优解,可以用到各种现代数值求解算法例如传统遗传算法、蛙跳算法、模拟退火算法等。
在传统遗传算法求取火力分配方案,是一种可行的方案,定义适应度函数后可以获得较好的武器分配方案。但是传统遗传算法求解结果很不稳定,编码位过多会造成求解时间长、收敛速度慢、初始种群生成困难等问题。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于遗传算法的舰船对岸打击火力分配方法,由此解决传统遗传算法求解结果很不稳定,编码位过多会造成求解时间长、收敛速度慢、初始种群生成困难的技术问题。
为实现上述目的,本发明提供了一种基于遗传算法的舰船对岸打击火力分配方法,包括:
(1)以一艘舰船上的一种武器作为火力单元,将火力单元对岸上目标的火力分配数目作为编码位,采用随机分布生成法对每个火力单元进行编码,得到初始种群;
(2)利用适应度函数计算初始种群的种群适应度,根据种群适应度结合轮盘赌对初始种群进行选择,得到选择后种群,对选择后种群进行染色体交叉和变异,得到新的种群;
(3)利用新的种群更新初始种群后重复步骤(2),重复多次后,得到舰船对岸打击火力分配方案。
进一步地,步骤(1)包括:
(1-1)获取舰船和岸上目标的相关信息,所述相关信息包括:参战每一艘舰船的经纬度、舰船载有武器的种类、每种武器的数目、每一个岸上目标的战略价值和武器对岸上目标的命中毁伤概率;
(1-2)以一艘舰船上的一种武器作为火力单元,利用相关信息得到火力单元的地理位置、武器数量、武器射程和火力单元对岸上目标的毁伤概率矩阵;
(1-3)将火力单元对岸上目标的火力分配数目作为编码位,采用随机分布生成法对每个火力单元进行编码,得到初始种群,根据每一个岸上目标的战略价值和火力单元对岸上目标的毁伤概率矩阵,以岸上目标毁伤最大为目的,建立适应度函数。
进一步地,步骤(1-2)包括:
以一艘舰船上的一种武器作为火力单元,利用相关信息得到火力单元的地理位置、武器数量、武器射程;
所述地理位置为火力单元所在的经纬度,其中,东经为正,西经为负,经度的取值范围为(-180°,180°),北纬为正,南纬为负,纬度的取值范围为(0°,180°);
所述火力单元的数量为n,岸上目标的数量为m,火力单元i与岸上目标j的距离的lij:
c=sin(lati)*sin(latj)*cos(loni-lonj)+cos(lati)*cos(latj)
lij=r*arccos(c)*pi/180
其中,lati表示第i个火力单元的经度,loni表示第i个火力单元的纬度,火力单元i的武器射程为ri,对于岸上目标,武器射程如果大于等于火力单元与岸上目标之间的距离,即lij≤ri,则火力单元对岸上目标的毁伤概率为pij,否则火力单元的毁伤概率为0,所有火力单元对岸上目标的毁伤概率pij构成火力单元对岸上目标的毁伤概率矩阵p,i=1,2,......,n;j=1,2,......,m。
进一步地,编码为对每个火力单元对m个岸上目标中的(m-1)个岸上目标进行编码。
进一步地,编码的具体实现方式为:
对于火力单元i,火力单元的数量为n,岸上目标的数量为m,火力单元i装载的导弹数量为mi,火力单元i有(m-1)个编码位,当
进一步地,适应度函数为:
s(x)=f(x)*g(x)
其中,s(x)为适应度函数,f(x)为初始适应度函数,g(x)为指示函数,pij为火力单元i对岸上目标j的毁伤概率,n为火力单元的数量,m为岸上目标的数量,约束条件为
进一步地,步骤(2)包括:
利用适应度函数计算初始种群的种群适应度为
设置交换概率为pc,将选择后的种群中的个体随机成对作为父代,对父代以pc概率进行交换,产生随机数r1∈[0,1],如果r1<pc则发生交换,从父代的染色体中选取随机一点为交叉点,交换交叉点之后的基因,获得子代;如果父代未发生交换,那么由父代直接产生子代;设置变异概率为pm,对子代中的每一个体,以pm概率进行变异,产生随机数r2∈[0,1],如果r2<pm则发生变异,对该个体染色体中的任意一个基因位进行变异,得到新的种群。
进一步地,步骤(3)包括:
利用新的种群更新初始种群后重复步骤(2),重复多次,在每一代迭代过程中,记录该次迭代时的最大适应度值sbest、迭代次数bestq和最优编码方案xbest,sbest=s(xbest),对于当前迭代次数cur,若当前迭代时的适应度值scur=s(xcur),scur>sbest,更新当前迭代下的最大适应度值sbest、迭代次数bestq和最优编码方案xbest,即xbest=xcur,sbest=s(xcur),bestq=cur,若cur-bestq>预设迭代次数,那么就终止遗传算法,得到目标编码方案,通过目标编码方案得到舰船对岸打击火力分配方案。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明采用随机分布生成法对每个火力单元进行编码,得到初始种群;这样生成的初始种群很容易,同时本发明使用的改进的遗传算法为利用适应度函数计算初始种群的种群适应度,根据种群适应度结合轮盘赌对初始种群进行选择,得到选择后种群,对选择后种群进行染色体交叉和变异,得到新的种群;使得对此迭代后的求解结果很稳定。
(2)本发明采用减少一位编码的方式进行编码,使得迭代过程耗时短、收敛速度快,本发明的适应度函数充分考虑了减少一位编码的操作,同时结合约束函数,使得最后得到的舰船对岸打击火力分配方案准确、稳定性强。
附图说明
图1是本发明实施例提供的一种基于遗传算法的舰船对岸打击火力分配方法的流程图;
图2是本发明实施例提供的遗传算法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,一种基于遗传算法的舰船对岸打击火力分配方法,包括:
(1)以一艘舰船上的一种武器作为火力单元,将火力单元对岸上目标的火力分配数目作为编码位,采用随机分布生成法对每个火力单元进行编码,得到初始种群;
(2)利用适应度函数计算初始种群的种群适应度,根据种群适应度结合轮盘赌对初始种群进行选择,得到选择后种群,对选择后种群进行染色体交叉和变异,得到新的种群;
(3)利用新的种群更新初始种群后重复步骤(2),重复多次后,得到舰船对岸打击火力分配方案。
如图2所示,步骤(1)包括:
(1-1)获取舰船和岸上目标的相关信息,所述相关信息包括:参战每一艘舰船的经纬度、舰船载有武器的种类、每种武器的数目、每一个岸上目标的战略价值和武器对岸上目标的命中毁伤概率;
(1-2)以一艘舰船上的一种武器作为火力单元,利用相关信息得到火力单元的地理位置、武器数量、武器射程;
所述地理位置为火力单元所在的经纬度,其中,东经为正,西经为负,经度的取值范围为(一180°,180°),北纬为正,南纬为负,纬度的取值范围为(0°,180°);
所述火力单元的数量为n,岸上目标的数量为m,火力单元i与岸上目标j的距离的lij:
c=sin(lati)*sin(latj)*cos(loni-lonj)+cos(lati)*cos(latj)
lij=r*arccos(c)*pi/180
其中,lati表示第i个火力单元的经度,loni表示第i个火力单元的纬度,火力单元i的武器射程为ri,对于岸上目标,武器射程如果大于等于火力单元与岸上目标之间的距离,即lij≤ri,则火力单元对岸上目标的毁伤概率为pij,否则火力单元的毁伤概率为0,所有火力单元对岸上目标的毁伤概率pij构成火力单元对岸上目标的毁伤概率矩阵p,i=1,2,......,n;j=1,2,......,m。
(1-3)将火力单元对岸上目标的火力分配数目作为编码位,采用随机分布生成法对每个火力单元进行编码,得到初始种群,对于火力单元i,火力单元的数量为n,岸上目标的数量为m,火力单元i装载的导弹数量为mi,火力单元i有(m-1)个编码位,当
根据每一个岸上目标的战略价值和火力单元对岸上目标的毁伤概率矩阵,以岸上目标毁伤最大为目的,建立适应度函数。
适应度函数为:
s(x)=f(x)*g(x)
其中,s(x)为适应度函数,f(x)为初始适应度函数,g(x)为指示函数,pij为火力单元i对岸上目标j的毁伤概率,n为火力单元的数量,m为岸上目标的数量,约束条件为
步骤(2)包括:
利用适应度函数计算初始种群的种群适应度为
设置交换概率为pc=0.95,将选择后的种群中的个体随机成对作为父代,对父代以pc概率进行交换,产生随机数r1∈[0,1],如果r1<pc则发生交换,从父代的染色体中选取随机一点为交叉点,交换交叉点之后的基因,获得子代;如果父代未发生交换,那么由父代直接产生子代;设置变异概率为pm,对子代中的每一个体,以pm=0.05概率进行变异,产生随机数r2∈[0,1],如果r2<pm则发生变异,对该个体染色体中的任意一个基因位进行变异,得到新的种群。
具体地:
交叉为一点交叉。
变异:采用一点变异策略,对于要变异的个体xu,随机选取两点1≤i1≤n,1≤j1≤m-1,则i1对应的基因
步骤(3)包括:
利用新的种群更新初始种群后重复步骤(2),重复多次,在每一代迭代过程中,记录该次迭代时的最大适应度值sbest、迭代次数bestq和最优编码方案xbest,sbest=s(xbest),对于当前迭代次数cur,若当前迭代时的适应度值scur=s(xcur),scur>sbest,更新当前迭代下的最大适应度值sbest、迭代次数bestq和最优编码方案xbest,即xbest=xcur,sbest=s(xcur),bestq=cur,若cur-bestq>100,那么就终止遗传算法,得到目标编码方案,通过目标编码方案得到舰船对岸打击火力分配方案。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。