一种自动生成某型部队编组ID的方法
2019-10-20王洋杨亮温雅赵秋月安琪
王洋 杨亮 温雅 赵秋月 安琪
摘 要:在某型部队中,利用编组ID来标识不同节点的身份。生成编组ID主要有两个难点:一是某型部队身份难以直接确认(因为编组数据中包括所有部队的信息,某型部队没有特殊标识);二是编组ID与现有编组数据之间没有直接对应的关系。本文提出一种自动生成某型部队编组ID的方法,一是利用递归算法寻找出某型部队,二是利用现有编组数据之间的相对关系来生成编组ID。通过实例验证,本文方法大大提高了生成编组ID的效率和稳定性。
关键词:编组ID;自动生成
某型部队中,利用编组ID来标识本节点的身份。编组ID由八位十六进制数组成,前四位目前设置为“0000”,第五位表示车辆类型,如果本级节点是部队节点,则用0表示;第六、七位分别为营、连号;第八位为车号,如果本级节点是部队节点,则用0表示。生成编组ID主要有两个难点:一是编组数据中某型部队没有特殊标识,需要通过其他方法来筛选;二是编组ID与编組数据之间没有直接对应的关系,难以直接生成。之前的方法生成编组ID时,是通过人工干预的方法对编组数据中的编组数据B(以下用CSB表示)进行修改,使之与编组ID具有一一对应的关系。这种方法的缺点是耗时比较长,往往需要几十分钟的时间;另外,这种方法局限性太大,人工干预多,要求操作人员按照事先规定的规则去修改编组数据,不符合部队的实际情况。基于此,本文提出一种自动生成某型部队编组ID的方法,提高生成编组ID的效率和稳定性。
1 自动筛选某型部队算法
由于编组ID是针对某型部队设置的,所以首先需要从编组数据中筛选出某型部队,确定某型部队身份的依据是该部队里面是否包含某几型车辆。然而,某几型车辆不一定直接挂在营级节点下面,而是可能挂在指挥所、连级、排级、班级节点下面,所以难以直接确定某型部队的身份。针对这种情况,本文使用递归算法来对编组数据进行筛选,获取某型部队:
步骤一:从编组数据中筛选出营级部队的编组数据A(以下用CSA表示),作为初始CSA;
步骤二:读取编组数据,获取初始CSA的下级车辆CSA集合,[A1,A2,...,Ai,...,AM],其中1SymbolcB@
iSymbolcB@
M,Ai表示第i个CSA;
步骤三:判断集合大小是否大于0,如果等于0,则函数返回false;如果大于0,则跳到步骤四;
步骤四:初始化i=1;
步骤五:判断iSymbolcB@
M,如果是,跳到步骤六;如果不满足,跳到步骤七;
步骤六:判断Ai对应的车是否为某几型车辆;如果是,则返回true;如果不是,则i=i+1,跳到步骤五;
步骤七:根据初始CSA获取其对应的CSB;
步骤八:根据CSB获取下级部队CSB集合,[B1,B2,...,Bj,...,BN],其中1SymbolcB@
jSymbolcB@
N,Bj表示第j个CSB;
步骤九:判断集合大小是否大于0,如果等于0,则函数返回false;如果大于0,则跳到步骤十;
步骤十:根据Bj获取其对应的CSA,并跳到步骤一。
至此,可以获取到编组数据中所有的某型部队营级节点,即初始CSA对应的节点。
2 自动生成编组ID方法
由于编组ID与现有编组数据之间没有直接对应的关系,难以直接给出,本文利用CSB之间的相对关系和车辆与部队节点的隶属关系来生成编组ID。CSB的特点是:下级节点的CSB是在上级节点CSB的基础上加上两位数字生成,同级节点的CSB后两位是从“01”开始递增的。由于本营下面的车辆节点并不一定都是某几型车辆,所以不能简单地利用CSB的后两位来表示车号。编组ID是针对某型部队的部队节点和车辆节点生成的。获取到某型部队营级节点后,本文根据编组数据自动生成编组ID,方法如下:
步骤一:按照遍历的顺序对某型营级部队进行编号,营号从1开始递增,如一营编组ID为“00000100”;
步骤二:获取一营的下级车辆,编组ID根据车辆类型依次从1开始递增,如一营下面某个车的编组ID为“00004101”;
步骤三:获取一营下面各连级部队,依据是连级部队的CSB是在营级部队CSB的基础上加上两位数字生成的,按照CSB由小到大的顺序为各连生成编组ID,其连号是从一开始递增,如一营一连编组ID为“00000110”;
步骤四:获取各连下面的车辆,包括排、班下面的车辆,判断该车辆是否为某几型车辆,如果是则按顺序为该车辆生成编组ID,如一营一连下面某个车的编组ID为“00001111”;
步骤五:对其它营按照步骤二到步骤四的顺序进行遍历,为各连、各车辆生成编组ID。
3 算法验证
利用本文算法编写程序,调用名录接口将编组ID添加到名录自定义属性中,便于查看和后续调用。经过实例验证,本文程序运行的时间为0.979秒,大大提高了生成编组ID的效率。如图2所示,“XX车”节点序号为1的自定义属性项为编组ID,其属性值为“00001111”,符合预期的结果。另外,名录中其它各节点的编组ID属性与预期的结果完全一致,从而验证了本文方法的可靠性。
4 结论
针对某型部队编组ID难以直接生成的问题,提出一种自动筛选某型部队节点、并根据编组数据之间的相对关系来生成编组ID的方法。通过调用名录接口增加自定义属性,验证了本文方法的可靠性。