一种基于纸币的算法仿真验证方法、客户端及终端设备转让专利

申请号 : CN201710337842.X

文献号 : CN107302446B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黎波里

申请人 : 深圳怡化电脑股份有限公司深圳市怡化时代科技有限公司深圳市怡化金融智能研究院

摘要 :

本发明适用于金融机具技术领域,提供了一种基于纸币的算法仿真验证方法、客户端及终端设备,包括:客户端发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果根据所述执行结果判断算法仿真验证是否合格。客户端和服务器中均安装有分布式模块,分布式模块接收到客户端发送的多个算法仿真任务后,将其分配到不同的服务器中去执行,提高了批量算法仿真验证的效率,使得算法工程师在开发出新的算法后能够很方便的在大量样本上验证新算法。

权利要求 :

1.一种基于纸币的算法仿真验证方法,其特征在于,所述基于纸币的算法仿真验证方法包括:客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于客户端和服务器执行算法仿真任务;

客户端发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;

客户端接收至少两个服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;

客户端以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务到至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务,得出执行结果并发送到客户端;

客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。

2.如权利要求1所述的基于纸币的算法仿真验证方法,其特征在于,所述发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务到至少两个服务器,具体包括:在所述算法仿真任务的数量大于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送数量与所述服务器的数量相同的算法仿真任务至所述服务器,并标记已被所述服务器执行及正在被执行的算法仿真任务,所述服务器的数量大于或等于2;

所述分布式模块获取所述服务器的负载,根据所述服务器的负载从未被标记的算法仿真任务中选择相应数量的未被标记的算法仿真任务,并将选择的未被标记的算法仿真任务发送至所述服务器;

在所述算法仿真任务的数量小于或等于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送所述算法仿真任务至所述服务器,所述服务器的数量大于或等于2。

3.如权利要求1所述的基于纸币的算法仿真验证方法,其特征在于,在所述客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格之后,包括:在客户端判断出所述算法仿真验证不合格时,分析所述执行结果,推送所述算法仿真验证不合格原因及修改建议。

4.一种客户端,其特征在于,所述客户端包括:

载入单元,用于客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于客户端和服务器执行算法仿真任务;

请求发起单元,用于发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;

任务发送单元,用于客户端接收至少两个服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;

客户端以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务到至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务,得出执行结果并发送到客户端;

执行结果统计单元,用于统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。

5.如权利要求4所述的客户端,其特征在于,所述任务发送单元,包括:

标记模块,用于在所述算法仿真任务的数量大于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送数量与所述服务器的数量相同的算法仿真任务至所述服务器,并标记已被所述服务器执行及正在被执行的算法仿真任务,所述服务器的数量大于或等于2;

第一发送模块,用于由所述分布式模块获取所述服务器的负载,根据所述服务器的负载从未被标记的算法仿真任务中选择相应数量的未被标记的算法仿真任务,并将选择的未被标记的算法仿真任务发送至所述服务器;

第二发送模块,用于在所述算法仿真任务的数量小于或等于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送所述算法仿真任务至所述服务器,所述服务器的数量大于或等于2 。

6.一种终端设备,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于客户端和服务器执行算法仿真任务;

发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;

客户端接收至少两个服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;

客户端以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务到至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务,得出执行结果并发送到客户端;

统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。

7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于客户端和服务器执行算法仿真任务;

发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;

客户端接收至少两个服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;

客户端以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务到至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务,得出执行结果并发送到所述客户端;

统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。

说明书 :

一种基于纸币的算法仿真验证方法、客户端及终端设备

技术领域

[0001] 本发明属于金融机具技术领域,尤其涉及一种基于纸币的算法仿真验证方法、客户端及终端设备。

背景技术

[0002] 纸币作为一种重要的票证在日常生活中随处可见,更是现代金融行业的血液。金融行业中常常需要通过算法对纸币各方面进行识别、验证,例如纸币的真伪,纸币票面图像的版面、币值等;纸币识别算法主要包括纸币图像预处理、倾斜校正、序列号切分、单字分割和字符识别几个部分。随着计算技术的不断发展,针对纸币的各种新的算法也不断的被开发出来。在开发各种算法的过程中,算法工程每设计出一种新的算法,都需要对新设计出算法进行仿真验证,通常每个算法需要大量的样本来进行验证其执行的准确率及执行效率,现有技术中对于算法的仿真验证方法由于受到PC的CPU的计算能力及外设的IO速度的限制,在对算法进行仿真验证时,常需要较长的时间,大大降低了算法工程师的开发效率。
[0003] 故,基于现有技术的缺陷,需要提出一种新的基于纸币的算法仿真验证方法。

发明内容

[0004] 本发明实施例提供了一种基于纸币的算法仿真验证方法、客户端及终端设备,以解决现有技术中进行算法仿真验证时所需时间长,仿真验证效率低的问题。
[0005] 本发明实施例的第一方面提供了一种基于纸币的算法仿真验证方法,所述基于纸币的算法仿真验证方法包括:
[0006] 客户端发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;
[0007] 客户端接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;
[0008] 客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0009] 本发明实施例的第二方面提供了一种客户端,所述客户端包括:
[0010] 请求发起单元,用于发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;
[0011] 任务发送单元,用于接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器中的一个,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;所述客户端和所述服务器中分别安装有分布式模块;
[0012] 执行结果统计单元,用于统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0013] 本发明实施例的第三方面提供了一种终端设备,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0014] 发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;
[0015] 接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;
[0016] 统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0017] 本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0018] 发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;
[0019] 接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到所述客户端;
[0020] 统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0021] 本发明实施例与现有技术相比存在的有益效果是:通过将多台PC机互联,由其中一台PC机作为客户端,其余PC机作为服务器,由客户端发起算法仿真验证请求,通过安装在PC机内的分布式模块,将多个算法仿真任务分配到不同的服务器中去执行,提高了批量算法仿真验证的效率,使得算法工程师在开发出新的算法后能够很方便的在大量样本上验证新算法。

附图说明

[0022] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是本发明实施例一提供的一种基于纸币的算法仿真验证方法的实现流程图;
[0024] 图2是本发明实施例二提供的一种基于纸币的算法仿真验证方法的实现流程图;
[0025] 图3是本发明实施例三提供的一种客户端的结构框图;
[0026] 图4是本发明实施例四提供的一种终端设备的结构示意图。

具体实施方式

[0027] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0028] 本发明实施例中,对于算法工程开发出新的算法,通过客户端发起算法仿真验证请求进行新算法的仿真验证,客户端生成socket服务以开启接收服务器发送的socket连接请求的权限;然后接收多个服务器发送的socket连接请求,由于客户端和服务器中均安装有分布式模块,客户端可以通过分布式模块发送算法仿真任务都不同的服务器,以使所述服务器执行所述算法仿真任务,接收并统计服务器返回的执行结果,根据统计的执行结果判断本次算法仿真验证是否合格。
[0029] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0030] 实施例一:
[0031] 图1示出了本发明第一实施例提供的一种基于纸币的算法仿真验证方法的流程图,详述如下:
[0032] 步骤S11,客户端发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;
[0033] 本发明实施例中,首先将多台PC机互联,在将PC机互联时可以通过局域网连接或通过无线连接也可以为基于无线保真(Wireless-Fidelity,Wi-Fi)、紫蜂协议(Zigbee)或者啁啾协议的连接,当然,上述多台PC机也可以通过其它方式与物联网系统认证中心连接,此处不作限定。
[0034] 以局域网连接多台PC机为例,在多台通过局域网互联的PC机,以其中一台PC机作为客户端,其余PC机作为服务器;所述的多台PC机上均安装分布式模块,因此,每台PC机充当的角色可在客户端和服务器之间根据需要进行切换。由客户端发起算法仿真验证请求,然后根据发起的算法仿真验证请求生成socket服务,socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。因此,生成的socket服务开启了客户端接收socket连接请求的权限。
[0035] 步骤S12,客户端接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;所述客户端和所述服务器中分别安装有分布式模块;
[0036] 本发明实施例中,客户端接收来自多个服务器的socket连接请求,连接成功后根据服务器的请求按照预设的规则发送算法仿真任务到多个服务器中的一个。对于待验证的算法,往往需要通过多个样本来验证其合格与否,因此,客户端发起算法仿真验证请求时会接收到多个算法仿真任务,对于所述的多个算法仿真任务客户端首先对其进行整理,生成任务列表,所述任务列表用于对接收到的算法仿真任务进行统计和区分,以便于后续客户端按照预设的规则将不同的算法仿真任务发送到不同的服务器去执行;其中,所述预设的规则可以是按照算法仿真任务生成的先后顺序依次调用任务列表中对应的算法仿真任务,然后发送到不同的服务器,也可以是按照服务器发出与客户端连接请求的先后顺序调用任务列表对应的算法仿真任务,再分配到不同的服务器。具体的发送规则可根据需要预先设置,这里不做限定。服务器接收到算法仿真任务后执行所述算法仿真任务,得到执行结果,并将执行结果发送到客户端。
[0037] 步骤S13,客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。所述执行结果指不同算法仿真任务对同一算法进行验证后分别得到的仿真结果。
[0038] 本发明实施例中,客户端接收所有服务器发送的算法仿真任务的执行结果,对所述执行结果进行统计,在统计时,预先统计从各个服务器接收到的执行结果的总数量,然后统计各个服务器发送的执行结果中合格的执行结果的数量,计算出每台服务器执行结果的合格率;由于客户端进行算法仿真任务分配是随机分配不同算法仿真任务到不同的服务器,因此,采用不同算法仿真任务对同一算法进行验证得到的执行结果,每台服务的仿真验证合格率应该相近;若计算出的每台服务器的执行结果的合格率无明显差别,则计算出所有服务器执行结果的平均合格率,将所述平均合格率与预设的合格率进行对比,在所述平均合格率大于或等于预设的合格率时,判定本次进行仿真验证的算法为合格的算法。若出现某台服务器的执行结果的合格率明显低于或高于其他服务器的执行结果的合格率,则舍弃从该服务器得出的执行结果,再计算其他服务器的执行结果的平均合格率,进而判断此次仿真验证的算法是否合格。
[0039] 在统计分析服务器发送的执行结果时,首先计算每个服务器执行结果的合格率,除去合格率与多数服务器的执行结果的合格率相差较大的服务器的执行结果,排除了服务器自身原因造成的算法仿真任务执行出现偏差的因素,然后计算所有服务器执行结果的平均合格率,通过平均合格率最终判断当前的算法是否为合格算法,排除了外因造成算法仿真任务的执行结果出现偏差的因素,提高了验证的精确度。
[0040] 优选地,在所述客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格之后,包括:
[0041] 在客户端判断出所述算法仿真验证不合格时,分析所述执行结果,推送所述算法仿真验证不合格原因及修改建议。
[0042] 本发明实施例中,若客户端判断出本次算法仿真验证不合格,则随机从每个服务器的不合格的执行结果中抽取一定数目的算法仿真任务,分析其执行过程,查找执行结果不合格的原因,并推送出相关的修改建议。
[0043] 本发明实施例中,通过将多台PC机互联,由其中一台PC机作为客户端,其余PC机作为服务器,由客户端发起算法仿真验证请求,生成socket服务以开启接收服务器发送的socket连接请求的权限;然后接收多个服务器发送的socket连接请求,客户端和服务器中均安装有分布式模块,客户端和服务器之间角色可根据需要进行切换,客户端将生产的多个算法仿真任务发送到预先设置的分布式模块,以使所述分布式模块发送不同的算法仿真任务到不同的服务器,进而使所述服务器执行所述算法仿真任务;客户端接收并统计服务器返回的执行结果,根据统计的执行结果判断本次算法仿真验证是否合格。通过安装在PC机内的分布式模块,将多个算法仿真任务分配到不同的服务器中去执行,提高了批量算法仿真验证的效率,使得算法工程师在开发出新的算法后能够很方便的在大量样本上验证新算法。并且本发明实施例中客户端对多个的算法仿真任务进行整理生成任务列表,方便了对算法仿真任务的调用与区分;按照预先设置的发送规则分配给多个服务器,避免了算法仿真任务的重复发送。
[0044] 实施例二:
[0045] 图2示出了本发明第二实施例提供的一种基于纸币的算法仿真验证方法的流程图,详述如下:
[0046] 步骤S21,客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于执行所述算法仿真任务。
[0047] 本发明实施例中,对于算法工程师新开发出的算法,一般要与另外一些算法相结合才能共同完成一项任务;以纸币中冠字号图像识别算法为例,在对纸币中的冠字号进行识别时,需要通过识版本,币值,面向等一系列算法才能定位出纸币中冠字号图像的位置从而识别冠字号;因此,首先将算法工程师开发的某一项新算法载入待验证算法的序列,并编译生成算法执行序列,以供后续服务器在执行算法仿真任务时根据所述算法执行序列执行算法仿真任务。
[0048] 步骤S22,客户端发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;该步骤的实现过程参见实施例一中步骤S11的实现过程。
[0049] 步骤S23,客户端接收至少两个服务器发送的服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;
[0050] 步骤S24,客户端以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务。
[0051] 本发明实施例中,客户端接收服务器发送的socket连接请求,然后将所述算法执行序列发送到向客户端发送socket连接请求的服务器,由服务器接收并保存所述算法执行序列。然后客户端以单个样本为单位生成多个算法仿真任务,发送所述算法仿真任务到预先设置的分布式模块,由分布式模块发送所述多个算法仿真任务到多个服务器中的一个,以使接收到所述算法仿真任务的服务器根据所述算法执行序列执行所述算法仿真任务。例如若一个算法仿真若需要验证30000个样本,则生成30000个算法仿真任务,每个算法仿真任务均包含样本的路径信息。然后客户端将所生成的30000个算法仿真任务发送到分布式模块,由分布式模块按照一定的规则发送到多个服务器。
[0052] 优选地,所述发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务至少两个服务器,具体包括:
[0053] 在所述算法仿真任务的数量大于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送数量与所述服务器的数量相同的算法仿真任务至所述服务器,并标记已被所述服务器执行及正在被执行的算法仿真任务,所述服务器的数量大于或等于2;
[0054] 所述分布式模块获取所述服务器的负载,根据所述服务器的负载从未被标记的算法仿真任务中选择相应数量的未被标记的算法仿真任务,并将选择的未被标记的算法仿真任务发送至所述服务器;
[0055] 在所述算法仿真任务的数量小于或等于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送所述算法仿真任务至所述服务器,所述服务器的数量大于或等于2。
[0056] 本发明实施例中,若算法仿真任务的数量多于服务器的数量,则每台服务器可能会执行多个算法仿真任务,此时,分布式模块接收到客户端发送的多个算法仿真任务后,先发送与服务器数量相同的算法仿真任务到服务器;在向服务器发送算法仿真任务后,对发送过并顺利执行或正在被执行的算法仿真任务进行标记,以避免重复发送;同时,监听发送到每个服务器的算法仿真任务的数量,由于每个服务器的负载能力有限,在短时间内不可能无限的接收并执行算法仿真任务;因此,监听一段时间内发送到每个服务器的算法仿真任务的数量,并选择当前负载低于预设负载阈值的服务器,对选出服务器按照负载的高低进行排序,优先发送算法仿真任务到负载最低的服务器。分布式模块在分配算法仿真任务时选择负载低的服务器优先发送,有助于实现各个服务器的负载均衡,避免一部分服务器空闲而另一部分超负载运转的情况,提高了算法仿真验证的效率。
[0057] 若算法仿真任务的数量小于或服务器的数量,说明每台服务器最多执行一个算法仿真任务即可,此时,分布式模块接收到客户端发送的过个算法仿真任务后,随机向每个服务器发送不多于一个的算法仿真任务即可。
[0058] 可选地,客户端在通过分布式模块向服务器发送算法仿真任务的具体实现过程也可参见实施例一中的步骤S12,在此不再赘述。
[0059] 服务器接对接收到的算法仿真任务通过算法仿真任务中的路径获取样本信息,然后按照算法执行序列执行算法仿真任务。以上述纸币中的冠字号识别为例:服务器根据算法仿真任务中的路径获取整张纸币的图像,经过算法执行序列中的版本、币值、面向等算法后定位到冠字号位置,将冠字号图像切割出来作为输入给到冠字号图像算法,冠字号图像算法识别出每个字符将其输出,最终得出执行结果,并发送执行结果到客户端。
[0060] 步骤S25,客户端统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。该步骤的具体实现过程参见实施例以中步骤S13的实现过程,在此不再赘述。
[0061] 本发明实施例中,首先将新开发的算法载入算法执行序列,将算法执行序列发送到服务器,在服务器执行算法仿真任务时根据算法执行序列执行,保证了整个验证过程的完整性。分布式模块在向服务器发送算法仿真任务时,优先发送给负载最低的服务器,有助于实现服务器的负载均衡,提高验证效率。
[0062] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0063] 实施例三:
[0064] 对应于上文实施例所述的一种基于纸币的算法仿真验证方法,图3示出了本发明实施例提供的一种客户端的结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。
[0065] 参照图3,所述客户端包括:
[0066] 请求发起单元31,任务发送单元32,执行结果统计单元33,其中:
[0067] 请求发起单元31,用于发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启所述客户端接收socket连接请求的权限;
[0068] 本发明实施例中,客户端与服务器相连接,在连接时可以通过局域网或通过无线连接也可以为基于无线保真(Wireless-Fidelity,Wi-Fi)、紫蜂协议(Zigbee)或者啁啾协议的连接,然后由请求发起单元31发起算法仿真验证请求,生成的socket服务,开启客户端接收socket连接请求的权限。
[0069] 可选地,所述客户端还包括:算法执行序列生成单元,用于由客户端载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于执行所述算法仿真任务。
[0070] 本发明实施例中,对于算法工程师新开发出的算法,一般要与另外一些算法相结合才能共同完成一项任务;因此,首先将算法工程师开发的某一项新算法载入待验证算法的序列,并编译生成算法执行序列,以供后续服务器在执行算法仿真任务时根据所述算法执行序列执行算法仿真任务。
[0071] 任务发送单元32,用于接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器中的一个,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;所述客户端和所述服务器中分别安装有分布式模块;
[0072] 本发明实施例中客户端接收来自多个服务器的socket连接请求,连接成功后根据服务器的请求按照预设的规则发送算法仿真任务到多个服务器中的一个。对于待验证的算法,往往需要通过多个样本来验证其合格与否,因此,客户端发起算法仿真验证请求时会接收到多个算法仿真任务,然后发送到不同的服务器去执行,并接收服务器的执行结果;具体实现过程参见实施例一中步骤S12,在此不再赘述。
[0073] 可选地,所述任务发送单元32,具体包括:
[0074] 服务器连接模块,用于接收至少两个服务器发送的服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;
[0075] 算法仿真任务发送模块,用于以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务。
[0076] 可选地,所述算法仿真任务发送模块,包括:
[0077] 标记模块,用于在所述算法仿真任务的数量大于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送数量与所述服务器的数量相同的算法仿真任务至所述服务器,并标记已被所述服务器执行及正在被执行的算法仿真任务,所述服务器的数量大于或等于2;
[0078] 第一发送模块,用于由所述分布式模块获取所述服务器的负载,根据所述服务器的负载从未被标记的算法仿真任务中选择相应数量的未被标记的算法仿真任务,并将选择的未被标记的算法仿真任务发送至所述服务器。
[0079] 第二发送模块,用于在所述算法仿真任务的数量小于或等于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送所述算法仿真任务至所述服务器,所述服务器的数量大于或等于2。
[0080] 执行结果统计单元33,用于统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0081] 本发明实施例中任务发送单元33中包含的服务器连接模块,算法仿真任务发送模块以及所述算法仿真任务发送模块中包含的标记模块、第一发送模块、第二发送模块的具体实现过程参见实施例二中步骤S23,步骤S24的具体实现过程,在此不再赘述。
[0082] 优选地,在所述客户端还包括:
[0083] 建议推送单元,用于在判断出所述算法仿真验证不合格时,分析所述执行结果,推送所述算法仿真验证不合格原因及修改建议。
[0084] 本发明实施例中,若客户端判断出本次算法仿真验证不合格,则随机从每个服务器的不合格的执行结果中抽取一定数目的算法仿真任务,分析其执行过程,查找执行结果不合格的原因,并推送出相关的修改建议。
[0085] 本发明实施例中由客户端发起算法仿真验证请求,然后接收多个服务器发送的socket连接请求,客户端和服务器中均安装有分布式模块,客户端和服务器之间角色可根据需要进行切换,客户端将新开发的算法载入算法执行序列,将算法执行序列发送到服务器,在服务器执行算法仿真任务时根据算法执行序列执行,保证了整个验证过程的完整性,然后通过分布式模块将多个算法仿真任务分配到不同的服务器中去执行,提高了批量算法仿真验证的效率,使得算法工程师在开发出新的算法后能够很方便的在大量样本上验证新算法。
[0086] 实施例四:
[0087] 本发明还提供了一种终端设备,如图4所示,所述终端设备包括:射频(Radio Frequency,RF)电路410、存储器420、输入单元430、显示单元440、传感器450、音频电路460、无线模块470、处理器480、以及电源490等部件。本领域技术人员可以理解,图4中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0088] 下面结合图4对终端设备的各个构成部件进行具体的介绍:
[0089] RF电路410可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器480处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low  Noise Amplifier,LNA)、双工器等。此外,RF电路410还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE))、电子邮件、短消息服务(Short Messaging Service,SMS)等。
[0090] 存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0091] 具体地,输入单元430可包括触控面板431以及其他输入设备432。触控面板431,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板431上或在触控面板431附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板331可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器480,并能接收处理器480发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板431。除了触控面板431,输入单元430还可以包括其他输入设备432。具体地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0092] 显示单元440可包括显示面板441,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板441。进一步的,触控面板431可覆盖显示面板441,当触控面板431检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。虽然在图4中,触控面板431与显示面板441是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板431与显示面板441集成而实现输入和输出功能。
[0093] 终端设备400还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在手机移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0094] 音频电路460、扬声器461,传声器462可提供用户与终端设备之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经RF电路410以发送给比如另一手机,或者将音频数据输出至存储器420以便进一步处理。
[0095] 无线模块基于短距离无线传输技术,终端设备通过无线模块470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了无线模块470,但是可以理解的是,其并不属于终端设备400的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0096] 处理器480是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器480可包括一个或多个处理单元;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
[0097] 终端设备400还包括给各个部件供电的电源490(比如电池),优选的,电源可以通过电源管理系统与处理器480逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0098] 尽管未示出,终端设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0099] 在本发明实施例中,该终端所包括的处理器480还具有以下功能:一种基于纸币的算法仿真验证方法,所述基于纸币的算法仿真验证方法包括:
[0100] 发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;
[0101] 接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;
[0102] 统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0103] 进一步地,在所述客户端发起算法仿真验证请求之前,包括:
[0104] 载入算法到待验证算法序列,生成算法执行序列,所述算法执行序列用于执行所述算法仿真任务。
[0105] 进一步地,所述客户端接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,具体包括:
[0106] 接收至少两个服务器发送的服务器发送的socket连接请求,发送所述算法执行序列到所述至少两个服务器;
[0107] 以单个样本为单位生成至少两个算法仿真任务,发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务至少两个服务器,进而使接收到所述至少两个算法仿真任务的至少两个服务器根据所述算法执行序列执行所述至少两个算法仿真任务。
[0108] 进一步地,所述发送所述至少两个算法仿真任务到预先设置的分布式模块,以使所述分布式模块发送所述至少两个算法仿真任务至少两个服务器,具体包括:
[0109] 在所述算法仿真任务的数量大于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送数量与所述服务器的数量相同的算法仿真任务至所述服务器,并标记已被所述服务器执行及正在被执行的算法仿真任务,所述服务器的数量大于或等于2;
[0110] 所述分布式模块获取所述服务器的负载,根据所述服务器的负载从未被标记的算法仿真任务中选择相应数量的未被标记的算法仿真任务,并将选择的未被标记的算法仿真任务发送至所述服务器。
[0111] 在所述算法仿真任务的数量小于或等于所述服务器的数量时,发送所述算法仿真任务到预先设置的分布式模块,以使所述分布式模块分别发送所述算法仿真任务至所述服务器,所述服务器的数量大于或等于2。
[0112] 进一步地,在所述统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格之后,包括:
[0113] 在判断出所述算法仿真验证不合格时,分析所述执行结果,推送所述算法仿真验证不合格及修改建议。
[0114] 本发明实施例中由终端设备发起算法仿真验证请求,然后接收多个服务器发送的socket连接请求,终端设备和服务器中均安装有分布式模块,终端设备将新开发的算法载入算法执行序列,将算法执行序列发送到服务器,在服务器执行算法仿真任务时根据算法执行序列执行,保证了整个验证过程的完整性,然后将多个算法仿真任务分配到不同的服务器中去执行,提高了批量算法仿真验证的效率,使得算法工程师在开发出新的算法后能够很方便的在大量样本上验证新算法。
[0115] 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
[0116] 发起算法仿真验证请求,根据所述算法仿真验证请求生成socket服务;所述socket服务用于开启接收socket连接请求的权限;
[0117] 接收至少两个服务器发送的socket连接请求,根据所述socket连接请求发送算法仿真任务到至少两个服务器,以使接收到所述算法仿真任务的服务器执行所述算法仿真任务,得出执行结果并发送到客户端;
[0118] 统计所述算法仿真任务的执行结果,根据所述执行结果判断算法仿真验证是否合格。
[0119] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0120] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0121] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0122] 在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0123] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0124] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0125] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0126] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。