一种基于多机协作的Costas序列搜索算法的制作方法

专利2022-05-09  96


本发明为costas序列搜索方法,具体涉及一种基于多机协作技术的costas序列搜索方法。



背景技术:

随着科学技术的发展,数字信号处理技术也愈发成熟,在工程实践中对于具有良好相关性的信号的需求也变得愈发普遍,由于costas序列具有主瓣高而尖锐,副瓣平坦且低的理想“图钉状”模糊函数特性,为此,costas序列在信息安全、无线通信、雷达系统、密码学中有着重要且广泛的应用。因此,对costas序列的研究具有重要意义。

上世纪九十年代,lloydr.welch和s.w.golomb等人将本原元理论引入costas序列的研究,提出了welch构造法、golomb构造法等并取得了一定的研究成果。这些学者将已知的高阶costas序列通过一定的方法去掉部分行与列进而得到低阶costas序列,或者利用代数方法的特殊增长构造法。

21世纪初至今,国内外学者一直专注于对costas序列搜索的研究,其中,d.richard的团队对于costas序列搜索依赖于超级计算机与集群,研究成本十分昂贵。而普通的单机搜索方法都具有搜索速度慢,效率低下的问题,对于高阶的序列更不用说。

随着互联网的发展,普通的单机无法提供足够的资源,多机协作系统应运而生,而高阶costas序列的穷举搜索方法需要大量计算,单机无法达到如此大的计算量。

zl2018110369190公开了一种基于向量的costas序列搜索方法,该方法基于深度优先搜索,从置换矩阵第一行开始尝试每个可能的位置,并递归到下一行选择满足置换矩阵条件的点,然后利用序列判断准则进行判断,但是该搜索方法置换矩阵的判断的计算量巨大,而且会存在无效的计算。

zl2020104345887公开了一种基于双向循环链表的costas序列搜索方法,该方法虽然减少了置换矩阵判断的计算量,但是此方法对于单机搜索costas序列时会存在耗时长的问题。



技术实现要素:

为了解决上述问题,本发明提供了一种基于多机协作技术的costas序列搜索方法,该搜索方法解决了单机搜索costas序列耗时太长问题以及单机搜索高阶costas序列性能不支持问题。

为了达到上述目的,本发明是通过以下技术方案实现的:

本发明是一种基于多机协作的costas序列搜索算法,该搜索算法包括如下步骤:

s1、输入要搜索的costas序列的任务阶数;

s2、在服务端对任务进行拆解,获得子任务信息并将子任务信息添加到数据库与消息队列mq中,具体为:

s21、将任务参数传递到任务拆解函数中,得到子任务信息,子任务信息含有数据序号、初始化任务、搜索阶数等参数;

s22、将子任务信息分别添加到数据库与发送到消息队列mq中;

s23、在数据库中设置参数便于查询任务状态。

s3、在客户端将任务解析,通过消息队列中的监听队列获取任务,并通过反射原理从消息队列mq中提取并恢复任务信息;具体为:

s31、客户端监听任务队列状态,从任务队列获取一个任务;

s32、通过反射原理从消息队列mq中提取并恢复任务信息,恢复含有数据序号、初始化任务、搜索阶数等参数的任务信息;

s33、客户端接收到消息后检验该任务执行情况,如果已执行则直接返回确认,否则将该任务投递到消息队列mq等待下一次客户。

s4、由客户端完成子任务并汇总,利用传递任务信息恢复的参数完成任务函数的初始化,启用线程池执行子任务,在消息队列与数据库中对多个子任务进行汇总,最终得到costas序列的数量与搜索花费时间;

具体包括如下步骤:

s41、利用传递任务信息恢复参数完成任务函数初始化;

s42、启用线程池执行,获取到的所有costas序列都通过中间件进行中间储存;

s43、在完成全部计算后取出中间储存的结果数据传递到服务端。

本发明的有益效果是:本发明利用多机协作技术对高阶costas序列进行搜索查找,解决了单机搜索costas序列耗时太长问题以及单机搜索高阶costas序列性能不支持问题;

本发明所提出一种基于多机协作的costas序列搜索算法,当阶数逐渐变多时,costas序列的多机协作搜索相比较于单机搜索系统耗时更少,而且当客户端数量增加,搜索速率也会随之增加,因此多机协作技术搜索costas序列极大的提高了搜索速度;

本发明还为搜索costas序列的相关研究提供了可以一种全新的思路,为同领域内的其他相关问题提供了参考,可以以此为依据进行拓展延伸和深入研究,具有十分广阔的应用前景。

附图说明

图1是本发明整体流程示意图。

图2是任务提交页面图。

图3是21阶costas序列示意图。

图4是单机方法搜索结果统计图。

图5是本方法搜索结果统计图。

图6是本发明的方法与单机方法关于搜索时长关系的对比示意图。

具体实施方式

以下将以图式揭露本发明的实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。

本发明揭示了一种基于多机协作的costas序列搜索算法,当阶数逐渐变多时,costas序列的多机协作搜索相比较于单机搜索系统耗时更少,因此多机协作技术搜索costas序列极大的提高了搜索速度。

本方法大致流程图如图1所示,本方法与现有方法的costas序列搜索速度对比示意图如图6所示,由于多机协作需要网络耗时,所以在15阶之前,搜索时长略大于单机搜索时长。单机搜索结果统计示意图如图4所示,本方法搜索结果统计示意图如图5所示,本方法得到的21阶costas序列示意图如图3所示。

具体包括如下步骤:

s1、输入要搜索的costas序列的任务阶数,如图2所示,按照图2要求填写所需搜索的costas序列阶数,在本实施例中,任务阶数为21阶。

s2、对任务进行拆解,获得子任务信息并将子任务信息添加到数据库与消息队列mq中,具体为:

s21、将任务参数传递到任务拆解函数中,getprecostasarrays(int[]precostas,intorder,intpre),得到子任务信息,子任务信息含有数据序号id、初始化任务task、搜索阶数order等参数;随后按序进入s22步骤;

s22、将子任务信息分别添加到数据库与发送到消息队列中,本实施例中个,数据库使用的是redis与mysql,消息队列使用的是rabbitmq,随后按序进入s23步骤;

s23、在mysql数据库中设置参数(base、task、res、sys_config)便于查询任务状态。

s3、在客户端将任务解析,通过消息队列中的监听队列获取任务,并通过反射原理从消息队列mq中提取并恢复任务信息;具体为:

s31、客户端监听任务队列状态,客户端利用rabbitmq中的监听任务队列状态taskid,去从任务队列获取一个任务,随后按序进入s32步骤;

s32、通过反射原理即反序列化template.setkeyserializer(newstringredisserializer()),从消息队列mq中提取并恢复任务信息,恢复含有数据序号id、初始化任务task、搜索阶数order等参数的任务信息,随后按序进入s33步骤;

s33、客户端接收到消息后检验该任务执行情况longtotal=redisutil.decr("order:" order,1),如果已执行(total标志位为1)则直接返回确认,否则(total标志位为负数)将该任务投递到消息队列mq等待下一次客户。

s4、由客户端完成子任务并汇总,利用传递任务信息恢复的参数完成任务函数的初始化,启用线程池执行子任务,在消息队列与数据库中对多个子任务进行汇总,最终得到costas序列的数量与搜索花费时间;

具体包括如下步骤:

s41、利用传递任务信息恢复参数完成任务函数初始化searchcommonutils.getinitprecostasarrays(order,subsize),随后按序进入s42步骤;

s42、启用线程池(stream线程池)执行,获取到的所有costas序列都通过rabbitmq进行中间储存,随后按序进入s43步骤;

s43、在完成全部计算后取出中间储存的结果数据传递到服务端resultprocess(channelchannel,@header(amqpheaders.delivery_tag)longtag,resultdtoresultdto)。

综上所述,本发明所提出一种基于多机协作的costas序列搜索算法,由于单机性能有一定上限,若计算高阶costas序列会花费很长时间,19阶以上便很难再用单机搜索得到costas序列结果,本方法克服了由于单机性能无法快速完成或无法完成搜索高阶costas序列任务。

以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。


技术特征:

1.一种基于多机协作的costas序列搜索算法,其特征在于:所述搜索算法包括如下步骤:

s1、输入要搜索的costas序列的任务阶数;

s2、在服务端对任务进行拆解,获得子任务信息并将子任务信息添加到数据库与消息队列mq中;

s3、在客户端将任务解析,通过消息队列中的监听队列获取任务,并通过反射原理从消息队列mq中提取并恢复任务信息;

s4、由客户端完成子任务并汇总,利用传递任务信息恢复的参数完成任务函数的初始化,启用线程池执行子任务,在消息队列与数据库中对多个子任务进行汇总,最终得到costas序列的数量与搜索花费时间。

2.根据权利要求1所述一种基于多机协作的costas序列搜索算法,其特征在于:在s2中任务拆解包括如下步骤:

s21、将任务参数传递到任务拆解函数中,得到子任务信息,子任务信息含有数据序号、初始化任务、搜索阶数参数;

s22、将子任务信息分别添加到数据库与发送到消息队列mq中;

s23、在数据库中设置参数便于查询任务状态。

3.根据权利要求1所述一种基于多机协作的costas序列搜索算法,其特征在于:在所述s3中任务解析具体包括如下步骤:

s31、客户端监听任务队列状态,从任务队列获取一个任务;

s32、通过反射原理从消息队列mq中提取并恢复任务信息,恢复含有数据序号、初始化任务、搜索阶数参数的任务信息;

s33、客户端接收到消息后检验该任务执行情况,如果已执行则直接返回确认,否则将该任务投递到消息队列mq等待下一次客户。

4.根据权利要求1所述一种基于多机协作的costas序列搜索算法,其特征在于:所述s4中任务执行具体包括如下步骤:

s41、利用传递任务信息恢复参数完成任务函数初始化;

s42、启用线程池执行,获取到的所有costas序列都通过中间件进行中间储存;

s43、在完成全部计算后取出中间储存的结果数据传递到服务端。

技术总结
本发明是一种基于多机协作的Costas序列搜索算法,包括:S1、输入要搜索的Costas序列的任务阶数;S2、对任务进行拆解,获得子任务信息并将子任务信息添加到数据库与消息队列MQ中;S3、在客户端将任务解析,通过消息队列中的监听队列获取任务,并通过反射原理从消息队列MQ中提取并恢复任务信息;S4、完成子任务并汇总,利用传递任务信息恢复的参数完成任务函数的初始化,启用线程池执行子任务,在消息队列与数据库中对多个子任务进行汇总,最终得到Costas序列的数量与搜索花费时间。本发明解决了单机搜索Costas序列耗时太长问题以及单机搜索高阶Costas序列性能不支持问题,极大提高了搜索速度。

技术研发人员:姚建国;贾青建
受保护的技术使用者:南京邮电大学
技术研发日:2021.05.10
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-9032.html

最新回复(0)