多航路作战推演算法的实现

2013-10-25 07:32璐,王
吉林大学学报(理学版) 2013年5期
关键词:链表歼击机敌机

韩 璐,王 岐

(吉林大学计算机科学与技术学院,长春130012)

多航路作战推演算法是基于特定战场环境、敌方预计行动及我方行动方案拟制的战斗过程仿真演示.多航路作战推演可根据给定的航线(本文中航路是一个对象,而航线为航路的一个属性)、速度、行动开始时间模拟海上作战中各航路上批次的移动,并在多条航路同时推演的情况下给出批次的遭遇、作战过程、毁伤情况等信息.该算法还能实现有效范围内的自动打击功能,如导弹阵地、飞机场等对来犯敌人的自动打击,并根据给定的固定阵地雷达发现半径和发现概率演示其与批次间的作战过程.此外,还支持空域掩护、伴随掩护、指定航线、佯动和巡逻等辅助作战方法[1-2].

1 体系结构

多航路作战推演算法体系结构如图1所示.在开始推演前,要给出待推演批次、各批次的任务航路及战场环境等.图1中批次对象的属性主要有批次编号、名称、类型、武器型号或名称、探测半径、武器的挂载或装备、批次的当前状态等.其中武器装备用于计算批次的作战效能,批次的当前状态用于记录批次状态参数.每个航路上都有一个批次,所以一个批次对象可以作为一个航路对象的属性.航路对象的属性还包括航路类型、作战方(敌我双方)、特殊空域相关信息(如特殊空域发现半径、交战状态等)及航线信息等.数据操作包括航线信息和武器装备信息的采集和管理.作战推演是整个推演的核心,它负责计算和返回所有的推演数据,推演过程和结果可通过演示窗口以动画形式显示到屏幕上.

图1 体系结构Fig.1 System of architecture

2 算法实现过程

多航路作战推演算法的关键是航线当前状态的判断、航路间航行同步、特殊航路实时生成和作战结果的计算.多航路海上作战推演算法要求将给定初始状态的航路进行推演,返回该航路下一时刻的状态[3].本文假设每条航路都能根据给定的时刻返回对应批次所处的位置和速度,即可将推演过程按固定的时间间隔分成若干时刻,从初始时刻开始依次对每个航路进行计算以得到下一个时刻的状态.

2.1 航路当前状态 对航路某一时刻的推演实际上是对该时刻所有航路上的批次进行比较(横向比较),而要得到航路的所有状态,还必须对航路不同时刻的状态进行比较(纵向比较).航路上可能发生的事件有航行状态(包括起航前、起航、航行、航行结束、航行结束后)和战争状态(包括遭遇、战斗、战斗结束).战争状态由横向比较得到,航行状态则由纵向比较得到[4],如图2所示.横向比较主要是对不同作战方的批次间进行比较,根据批次间的距离、发现概率和发现半径判断是否进入作战状态.如果进入作战状态,则计算参与战斗两个批次的作战效能,并给出批次的毁伤情况,如批次单位的剩余数量及主要单位的毁伤程度等.此外,参战批次会产生作战延迟,涉及到推演算法中的同步问题.纵向比较即对同一条航路上批次不同时刻的比较,一般为与前一时刻的比较,比较的参数为批次的位置信息,比较的结果与状态信息的对应关系如图3所示,其中:FM表示批次的前一个状态;PT表示批次前一个位置与本次位置的比较;T表示相等;F表示不等.

图2 航路比较示意图Fig.2 Comparison of multi-voyages

图3 状态判断示意图Fig.3 State judgment

2.2 推演的同步问题 在解决推演批次的同步问题中,本文算法加入3个关于时间延迟的参数:1)战争用时参数,设置一次遭遇战所用的时间;2)战争过程中记录状态数的参数,用于控制战斗过程中批次的位置;3)遭遇战延迟时间参数,用于计算遭遇战后航路点坐标.参数1)是一个常量T,不同批次用不同的参数值控制战争耗时(参考实际的经验值);参数2)为一个链表,链表的长度为批次数量,每个链表元素代表对应批次战争用时(用状态数表示);参数3)也是一个链表,长度等于批次数量,它的每个元素记录对应批次累计的延迟时间G.当横向比较中发现批次遭遇后,将对应链表元素赋值成战争用时T和两个相邻状态间的时间间隔I之比W.计算每个时刻的批次状态前,先判断该批次对应的战斗用时是否为0,如果不为0,将本次比较的状态赋值为上一次的状态,然后将战斗用时减1,并继续其他批次的比较.对于战斗用时为0的批次,如果本次比较没有与其他批次遭遇,则返回当前时刻减去累计延迟时刻的状态;如果本次比较的结果为该批次与其他批次遭遇,则将该批次的战斗用时和累计时间都加上一个W[5].下面给出一个实际推演的例子.

设有3个批次,A,B为我方批次,C为敌方批次,假设一次战斗用时为T,推演中两个相邻时间间隔为 I,战斗用时链表为 a,累计延迟链表为 b,A,B,C 对应的元素为 a[0],a[1],a[2]和b[0],b[1],b[2],初始值都为0.用x表示第几个状态,A和C在第n个状态上遭遇.由上述算法可知W=T/I,当x<n时,A,B,C分别按自己的航路航行,没有累计延迟;当x=n时,A和C对应的链表元素a[0]=W,a[2]=W,b[0]=W,b[2]=W,B 正常航行,A,B,C 的状态分别为An,Bn,Cn;当x=n+1时,由于A和C对应的战斗用时不为0,则A和C的状态赋值为count=An,Cn,a[0]=W-1,a[2]=W-1,而B的状态为Bn+1;直到A和C的战斗用时重新为0,即第n+W个状态时刻,a[0],a[1],a[2]都重新变为 0,A,B,C 的状态分别是 An+W-b[0],Bn+W-b[1],Cn+W-b[2],即 An,Bn+W,Cn,以后的状态依次类推,直到所有批次完成航行[6].

通过分析可见,如果在初始化批次时把批次启航的初始时间加到批次的累计延迟上,即可实现所有航路起始时间的设定.推演的总状态数c取决于三方面,假设有n条航线,以第i条航线为例,它们分别是航线的航行用时Ti,推演的采点间隔I,单条航线上总延迟时间Li,则

其中:max{Ti/I}为待推演航路中航行用时最大航路的航行用时;max{Li}为所有航线中延迟时间最长航线的总延迟.假设每条航线上有m次遭遇(由于每条航线上批次的遭遇次数不一定,所以m为一个变量),令max{Li}=L,则

2.3 特殊航路的处理 多航路作战推演算法不但能对一般航路进行推演,还能处理导弹阵地、空域掩护、伴随掩护、巡逻、飞机场等非主动作战状况的推演,本文把这些情况下的航路统称为特殊航路.

导弹阵地可视为不移动的航路,它的速度永远为0,具有发现半径和发现概率,剩余数量和毁伤程度由武器效能对比给出.导弹阵地发现敌方飞机后,连续发出导弹对敌机进行攻击直到敌机飞出攻击范围,每次导弹攻击计算一次敌机毁伤,如图4所示.由图4可见,导弹阵地发现敌机后发射导弹攻击,导弹分别在A,B,C三点击中敌机.通过敌航线上的小圆圈可明显看出敌机的毁伤程度.此外,当敌机距离足够近,即导弹阵地在敌机的攻击范围内时,敌机也可对导弹阵地进行攻击并给出毁伤.导弹航线的算法和飞机场特殊航路中歼击机追赶敌机的算法相同.

空域掩护是战斗机在一定空域范围内进行掩护,一般受掩护的空域是固定的.虽然空域掩护的武器是战斗机,但在推演过程中假设该批次不动,批次位置为该空域的中心.空域半径就是发现半径,再根据战斗机的性能和掩护飞行方式(如八字飞行、圆周飞行等)计算发现概率.在推演演示窗口中,该空域中的批次做给定方式的往复飞行,当与敌机遭遇时处理交战状态并计算双方毁伤.

伴随掩护和巡逻都是作战中必要的战术,伴随掩护批次与所伴随的主任务批次在指定汇合点汇合,当主任务完成后,伴随任务飞机返航;后者按要求在固定的航线上飞行,与一般航路的实现相似.

飞机场与导弹阵地相似,只是在交战时,前者的武器为歼击机,后者是导弹.飞机场(用航路表示)本身有发现半径和发现概率,飞机场发现敌机后,会派出歼击机出动拦截或追击,这就需要实时计算歼击机的航线.当歼击机飞离机场一定距离后,需计算返航路线并返回.关于歼击机飞离机场最远距离的控制,可参考批次遭遇延迟算法[7],设置一个歼击机飞离机场距离参数,每次追击前将其赋值,每计算一个状态判断一次,若不为0继续追击,并将该参数减1;为0则歼击机返航.

下面给出机场歼击机拦截(追击)航线的计算方法,在算法中将空间坐标简化为平面投影坐标.将歼击机的初始位置设为机场位置(x0,y0),敌机进入机场发现半径并被发现时的位置为(x1,y1),歼击机速度v.首先容易求得歼击机与敌机之间的距离d(算法省略),然后再令

图4 导弹阵地示意图Fig.4 Missile position

如果在歼击机飞离机场最远距离时还没有追上敌机,或与敌机遭遇战后歼击机直接返航,返航路线为歼击机返航点与机场的连线.图5为歼击机追赶航线示意图(歼击机追上敌机并交战的情形).A点表示敌机进入飞机场发现半径,在发现半径范围内,每推演一个状态计算一次发现概率,发现敌机则出动歼击机追击.对每个敌方批次只追击一次.如果在固定的时间内还追不上敌机则返航[8].

综上所述,多航路作战推演算法主要用到两次比较,假设有10条航路(横向比较为10),推演过程需要500个状态(纵向比较为500),时间复杂度为O(10×10×500).该算法返回类似于图2所示的数据结构,并能给出所有航路不同时刻的状态属性,根据这些属性可设计对应的推演界面,直观展示海上作战过程[9].此外,根据不同的需求,算法还能提供关键事件及推演时间的显示,在推演过程中,可选择暂停推演和继续推演.由于推演中批次发现概率的引入,所以即使推演前的初始状态完全相同,推演的结果也可能会不同,这就需要对同一初始状态进行多次推演,从而得出较客观的结论[10].该算法可为军事作战的诸多系统进行任务推演,对预测战争结果、制定战争计划有一定的理论指导作用.

图5 歼击机追赶航线示意图Fig.5 Fighter catching routes

[1]赵晓哲,沈治河.海军作战数学模型[M].北京:国防工业出版社,2004.

[2]贺毅辉.作战模拟基础[M].北京:国防工业出版社,2012.

[3]Watman K.War Gaming and Its Role in Examining the Future[J].Brown Journal of World Affairs,2003,2003,X(1):51-61.

[4]Perry W L,Signori D,Boon J,Jr.Exploring Information Superiority[DB/OL].2012-11-14.http://www.rand.org/content/dam/rand/pubs/monograph-reports/2005/MR1467.pdf.

[5]SU Chun-mei,FENG Zhao-yang,WANG Li-jun.Automatic Creating Technique of Universal Flight Track [J].Ordnance Industry Automation,2010,29(12):20-25.(苏春梅,冯朝阳,王力军.通用飞机航迹生成技术[J].兵工自动化,2010,29(12):20-25.)

[6]YANG Yong,YAO Yi-ping,LIANG Hong-bo.Parallelization Techniques for Multi-core-cluster-based RTI[J].Journal of System Simulation,2012,24(9):1785-1789.(杨勇,姚益平,梁洪波.基于多核集群的RTI并行优化技术[J].系统仿真学报,2012,24(9):1785-1789.)

[7]GAO Xiang,WANG Hong-ke,WANG Zhi-jun,et al.Multi-aircraft Coordination Warfare Simulation System Based on Multi-agent[J].Systems Engineering and Electronics,2010,32(4):807-811.(高翔,王宏柯,王治军,等.基于多Agent的多机协同空战仿真系统设计和实现[J].系统工程与电子技术,2010,32(4):807-811.)

[8]LIU Ming,XU Yang,CHEN Zheng,et al.Decentralized Multi-agent Based Cooperative Path Planning for Multi-UAVs[J].Computer Science,2012,39(1):219-222.(刘铭,徐杨,陈峥,等.基于Multi-agent系统的多飞行器协同路径规划方法的研究[J].计算机科学,2012,39(1):219-222.)

[9]WEI Tie-tao,QU Xiang-ju.Route Planning Method Formultiple Vehicles Coordinated Target Assignment[J].Journal of Beijing University of Aeronautics and Astronautics,2009,35(8):917-920.(魏铁涛,屈香菊.多机协同与多目标分配任务规划方法[J].北京航空航天大学学报,2009,35(8):917-920.)

[10]HU Gen-sheng,KONG Xiang-hua,WANG Ran-hui,et al.Design and Implementation of Battlefield Target Simulation Based on FLAMES[J].Journal of System Simulation,2010,22(11):2502-2504.(胡艮胜,孔向华,王然辉,等.基于FLAMES的战场目标仿真设计与实现[J].系统仿真学报,2010,22(11):2502-2504.)

猜你喜欢
链表歼击机敌机
冲着敌机,开炮!——M1939式37毫米高射炮
如何用链表实现一元多项式相加
基于二进制链表的粗糙集属性约简
跟麦咭学编程
新中国建国后击落入侵敌机大盘点
基于MTF规则的非阻塞自组织链表
兵器图解:J—11重型歼击机升级改进方案
万花筒
2002~2006年歼击机疗养飞行员疾病谱分析
偷架敌机开回家