基于遗传算法的变异规则补充方法及装置

文档序号:1890461 发布日期:2021-11-26 浏览:20次 >En<

阅读说明:本技术 基于遗传算法的变异规则补充方法及装置 (Mutation rule supplementing method and device based on genetic algorithm ) 是由 文弘扬 熊小庆 王睿 周朝信 于 2021-09-01 设计创作,主要内容包括:本发明公开了一种基于遗传算法的变异规则补充方法及装置,可用于金融领域或其他技术领域,该方法包括:获取原始变异规则种群,其中,所述原始变异规则种群包括:多个变异规则以及每个变异规则各自的预设执行状态;根据所述变异规则进行变异测试,得到每个所述变异规则各自的真实执行状态;根据适应度对所述原始变异规则种群中的变异规则进行筛选,得到筛选后的变异规则种群;进行遗传交叉,得到遗传交叉产生的变异规则;进行遗传变异,得到遗传变异产生的变异规则;将产生的变异规则加入到所述筛选后的变异规则种群中,得到遗传交叉变异后的变异规则种群。本发明有助于提高变异测试的充分性和完整性。(The invention discloses a mutation rule supplementing method and device based on a genetic algorithm, which can be used in the financial field or other technical fields, and the method comprises the following steps: obtaining an original variation rule population, wherein the original variation rule population comprises: a plurality of variation rules and a respective preset execution state of each variation rule; performing variation test according to the variation rule to obtain the respective real execution state of each variation rule; screening the variation rules in the original variation rule population according to the fitness to obtain a screened variation rule population; carrying out genetic crossing to obtain a variation rule generated by the genetic crossing; carrying out genetic variation to obtain variation rules generated by the genetic variation; and adding the generated variation rule into the screened variation rule population to obtain a variation rule population subjected to genetic cross variation. The invention is helpful for improving the sufficiency and completeness of the variation test.)

基于遗传算法的变异规则补充方法及装置

技术领域

本发明涉及变异测试技术领域,具体而言,涉及一种基于遗传算法的变异规则补充方法及装置。

背景技术

随着互联网科技产品的不断涌现,产品质量直接决定产品使用生命周期,测试作为互联网产品进入生产前的最后一道门槛,测试的全面性直接决定了产品使用的极限,最大程度验证了软件的服务质量,为产品的问题暴露、异常修正、改进调试等提出了建设性意见和决定性指示,保证软件在真实的生产环境中稳定、健康、持续进行高质量服务。

在软件测试领域中,变异测试是一种基于源代码进行变更的方式进行代码有效性判定的方式,通过对源程序中进行部分细节代码修改调整、执行,有效揭示单元测试存在的数据弱点或者代码功能不足,提升开发人员对代码的异常隐藏问题定位分析能力,降低产品的生产风险。

变异测试是一种基于代码细节调整执行的测试方法,主要思想源于对指令字节码的识别,并根据识别的特定字节码标识进行调整、修改,通过执行变异后的代码完成变异测试。现有的变异测试中,通过设定多种变异规则,例如startWith->endWith,表示将代码中的关键字startWith修改为endWith,在进行变异测试时,根据各变异规则生成变异测试用例,进而执行各变异测试用例进行变异测试。由此可见,变异规则的设定直接决定变异测试的充分性和完整性。

目前的变异规则往往是通过借助规则划定的,这就导致在已有的变异测试中不同代码领域变异规则可移植性弱、变异种类相对固定等一系列问题。当前变异测试普遍存在缺乏变异规则更新扩充方法、已有变异规则局限性大的问题,在此条件下生成的变异测试用例,难以保证变异测试的充分性和完整性。

发明内容

本发明为了解决上述背景技术中的技术问题,提出了一种基于遗传算法的变异规则补充方法及装置。

为了实现上述目的,根据本发明的一个方面,提供了一种基于遗传算法的变异规则补充方法,该方法包括:

获取原始变异规则种群,其中,所述原始变异规则种群包括:多个变异规则以及每个变异规则各自的预设执行状态;

根据所述变异规则进行变异测试,得到每个所述变异规则各自的真实执行状态;

根据所述预设执行状态以及所述真实执行状态确定每个所述变异规则的适应度,并根据所述适应度对所述原始变异规则种群中的变异规则进行筛选,得到筛选后的变异规则种群;

基于预设的交叉概率对所述筛选后的变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则;

基于预设的变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则;

将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的变异规则种群中,得到遗传交叉变异后的变异规则种群。

可选的,该基于遗传算法的变异规则补充方法,还包括:

根据程序代码的修改记录确定候补变异因子;

将所述候补变异因子与预设的初始变异因子库中的变异因子进行结合,生成变异规则;

将生成的变异规则加入到预设的初始变异规则库中;

将所述初始变异规则库中的原有变异规则的预设执行状态设置为通过,将新加入所述初始变异规则库的变异规则的预设执行状态设置为失败,得到原始变异规则种群。

可选的,在所述得到遗传交叉变异后的变异规则种群之后,还包括:

执行n次遗传交叉变异步骤,得到最终的变异规则种群,n大于等于1,其中,在每次执行遗传交叉变异步骤时,确定初始变异规则种群,对所述初始变异规则种群进行变异测试,得到所述初始变异规则种群中的每个变异规则各自的真实执行状态,根据所述初始变异规则种群中的每个变异规则各自的预设执行状态以及所述真实执行状态确定所述初始变异规则种群中的每个变异规则的适应度,并根据适应度对所述初始变异规则种群中的变异规则进行筛选,得到筛选后的初始变异规则种群,基于所述交叉概率对所述筛选后的初始变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则,基于所述变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则,将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的初始变异规则种群中,得到本次遗传交叉变异步骤处理后的变异规则种群。

可选的,所述确定初始变异规则种群,具体包括:

在第一次执行所述遗传交叉变异步骤时,将所述遗传交叉变异后的变异规则种群作为初始变异规则种群;

在非第一次执行所述遗传交叉变异步骤时,将上一次执行遗传交叉变异步骤得到的处理后的变异规则种群作为初始变异规则种群。

可选的,该基于遗传算法的变异规则补充方法,还包括:

将遗传交叉产生的变异规则以及遗传变异产生的变异规则的预设执行状态设置为失败。

可选的,所述将所述候补变异因子与预设的初始变异因子库中的变异因子进行结合,生成变异规则,具体包括:

从所述初始变异因子库中确定出目标变异因子,其中,所述目标变异因子为与所述候补变异因子类型相同的变异因子;

将所述候补变异因子分别与每个所述目标变异因子进行结合,生成变异规则。

为了实现上述目的,根据本发明的另一方面,提供了一种基于遗传算法的变异规则补充装置,该装置包括:

原始变异规则种群获取模块,用于获取原始变异规则种群,其中,所述原始变异规则种群包括:多个变异规则以及每个变异规则各自的预设执行状态;

变异测试模块,用于根据所述变异规则进行变异测试,得到每个所述变异规则各自的真实执行状态;

种群筛选模块,用于根据所述预设执行状态以及所述真实执行状态确定每个所述变异规则的适应度,并根据所述适应度对所述原始变异规则种群中的变异规则进行筛选,得到筛选后的变异规则种群;

遗传交叉模块,用于基于预设的交叉概率对所述筛选后的变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则;

遗传变异模块,用于基于预设的变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则;

遗传交叉变异后的变异规则种群生成模块,用于将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的变异规则种群中,得到遗传交叉变异后的变异规则种群。

可选的,该基于遗传算法的变异规则补充装置,还包括:

候补变异因子确定模块,用于根据程序代码的修改记录确定候补变异因子;

变异规则生成模块,用于将所述候补变异因子与预设的初始变异因子库中的变异因子进行结合,生成变异规则;

变异规则添加模块,用于将生成的变异规则加入到预设的初始变异规则库中;

原始变异规则种群生成模块,用于将所述初始变异规则库中的原有变异规则的预设执行状态设置为通过,将新加入所述初始变异规则库的变异规则的预设执行状态设置为失败,得到原始变异规则种群。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于遗传算法的变异规则补充方法中的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述基于遗传算法的变异规则补充方法中的步骤。

本发明的有益效果为:

本发明实施例先通过适应度对原始变异规则种群中的变异规则进行筛选,然后通过遗传交叉和遗传变异生成新的变异规则,对原始变异规则种群进行补充,有效的提高了变异规则的数量,有助于提高变异测试的充分性和完整性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明实施例基于遗传算法的变异规则补充方法的第一流程图;

图2是本发明实施例基于遗传算法的变异规则补充方法的第二流程图;

图3是本发明实施例确定候补变异因子的流程图;

图4是本发明实施例基于遗传算法的变异规则补充装置的第一结构框图;

图5是本发明实施例基于遗传算法的变异规则补充装置的第二结构框图;

图6是本发明实施例计算机设备示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

需要说明的是,本发明的基于遗传算法的变异规则补充方法及装置可用于金融领域,也可以应用于其他技术领域。

本发明提供一种基于遗传算法的变异规则补充方法,其主要特征是通过扫描开发人员提交的git代码,通过对修改部分进行扫描、定位、分析、筛选获取到相应最佳待补充变异因子位置及候补变异因子类型信息,并通过遗传算法进行变异规则补充,自动完成待测试工程的定制化变异测试中变异规则更新补充,完善变异测试的全面性。

图1是本发明实施例基于遗传算法的变异规则补充方法的第一流程图,如图1所示,在本发明一个实施例中,本发明的基于遗传算法的变异规则补充方法包括步骤S101至步骤S106。

步骤S101,获取原始变异规则种群,其中,所述原始变异规则种群包括:多个变异规则以及每个变异规则各自的预设执行状态。

在本发明一个实施例中,原始变异规则种群的具体生成流程可见步骤S201至步骤S204。

在本发明一个实施例中,预设执行状态包括通过(true)以及失败(false),通过(true)指的是变异规则对应的变异测试的结果为通过,失败(false)指的是变异规则对应的变异测试的结果为失败。

在本发明中,变异测试是一种基于代码细节调整执行的测试方法,主要思想源于对指令字节码的识别,并根据识别的特定字节码标识进行调整、修改,通过执行变异后的代码完成变异测试。现有的变异测试中,通过设定多种变异规则,例如startWith->endWith,表示将代码中的关键字startWith修改为endWith。

步骤S102,根据所述变异规则进行变异测试,得到每个所述变异规则各自的真实执行状态。

在本发明一个实施例中,在进行变异测试时,生成各变异规则各自对应的变异测试用例,进而逐个执行各变异测试用例进行变异测试,得到每个变异规则各自的真实执行状态。真实执行状态包括通过(true)以及失败(false)。

在本发明一个实施例中,如真实执行状态与预设执行状态一致,则该条变异有效,设定阈值为0,反之,则视为变异无效,设定阈值为1,并将该统计维度作为适应度计算的第一维度。

步骤S103,根据所述预设执行状态以及所述真实执行状态确定每个所述变异规则的适应度,并根据所述适应度对所述原始变异规则种群中的变异规则进行筛选,得到筛选后的变异规则种群。

在本发明一个实施例中,在每次执行变异测试后,将变异点位置进行存储,通过队列压栈的方式保存不同变异点执行的历史信息,存入压栈表格并在全部执行完成后进行适应度统计,计算每个变异规则在当前种群中的适应度值。

在本发明一个实施例中,可以通过以下适应度函数来计算适应度:

其中,f(x)为适应度,x为预设执行状态,y为真实执行状态,count(z)为堆栈内已存在变异规则数,为衰减超参数,可以设置为0.8。

步骤S104,基于预设的交叉概率对所述筛选后的变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则。

在本发明一个实施例中,本发明将所述筛选后的变异规则种群中的变异规则平均分为父链和母链两组。进而将父链和母链中的变异规则两两交叉处理,得到遗传交叉产生的变异规则。

在本发明一个实施例中,本发明设置交叉概率k为0.8,本发明通过随机数方式,如果生成随机数大于k值时,进行父链、母链交叉,交叉点选择为执行程序中随机节点即可。反之,则不进行交叉。

步骤S105,基于预设的变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则。

在本发明一个实施例中,在遗传交叉完成后,本发明将全量的变异规则进行逐个判断,设定变异概率u为0.8,通过随机生成数方式,大于u时进行该变异规则的变异处理,变异点选择当前程序中存在的任意候选变异点,变异值选择变异列表中同类型下任意一值进行替换,完成变异。反之,则保留变异规则不进行变异处理。

步骤S106,将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的变异规则种群中,得到遗传交叉变异后的变异规则种群。

在本发明一个实施例中,本发明在生成遗传交叉变异后的变异规则种群时,还将遗传交叉产生的变异规则以及遗传变异产生的变异规则的预设执行状态设置为失败。

在本发明一个实施例中,本发明可以多次迭代执行上述步骤S102至步骤S106,得到最终的变异规则种群。

具体的,本发明执行n次遗传交叉变异步骤,得到最终的变异规则种群,n大于等于1,其中,在每次执行遗传交叉变异步骤时,确定初始变异规则种群,对所述初始变异规则种群进行变异测试,得到所述初始变异规则种群中的每个变异规则各自的真实执行状态,根据所述初始变异规则种群中的每个变异规则各自的预设执行状态以及所述真实执行状态确定所述初始变异规则种群中的每个变异规则的适应度,并根据适应度对所述初始变异规则种群中的变异规则进行筛选,得到筛选后的初始变异规则种群,基于所述交叉概率对所述筛选后的初始变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则,基于所述变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则,将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的初始变异规则种群中,得到本次遗传交叉变异步骤处理后的变异规则种群。

在本发明一个实施例中,本发明在将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的初始变异规则种群中时,还将遗传交叉产生的变异规则以及遗传变异产生的变异规则的预设执行状态设置为失败。

在本发明一个实施例中,所述确定初始变异规则种群,具体包括:

在第一次执行所述遗传交叉变异步骤时,将所述遗传交叉变异后的变异规则种群作为初始变异规则种群;

在非第一次执行所述遗传交叉变异步骤时,将上一次执行遗传交叉变异步骤得到的处理后的变异规则种群作为初始变异规则种群。

图2是本发明实施例基于遗传算法的变异规则补充方法的第二流程图,如图2所示,在本发明一个实施例中,上述步骤S101中的原始变异规则种群具体为通过步骤S201至步骤S204生成的。

步骤S201,根据程序代码的修改记录确定候补变异因子。

在本发明一个具体实施例中,本发明可以从Git仓库拉取开发人员提交代码信息,以开发每次提交为单位维度,采集单位维度下连续两次提交记录作为单次候选变异因子提取依据。进而将连续两次的记录进行相似性比较,以单位执行行为标准,两次提交记录比较后,该行提交记录中仅有单元内容修正部分作为待候选变异因子。

例如"if(substring(0,6)).equals('202006'):"在二次提交记录中修正为"if(substring(0,6)).startWith('202006'):",该部分即为单元修正,更正部分为关键字equals,替换为startWith,则对应的变异规则为startWith->equals,将startWith作为候补变异因子。

步骤S202,将所述候补变异因子与预设的初始变异因子库中的变异因子进行结合,生成变异规则。

在本发明实施例中,初始变异因子库中包含多个变异因子。本发明将候补变异因子与初始变异因子库中的变异因子进行结合,生成多个新的变异规则。

在本发明一个实施例中,本步骤具体包括:

从所述初始变异因子库中确定出目标变异因子,其中,所述目标变异因子为与所述候补变异因子类型相同的变异因子;将所述候补变异因子分别与每个所述目标变异因子进行结合,生成变异规则。

在本发明一个实施例中,本发明将候补变异因子与已有初始变异因子库中的同类型的变异因子进行匹配,即初始化初始变异因子库为参数,进行二维映射处理。

例如,候补变异因子为startWith,初始变异因子库中包含同类型变异因子endWith、contains等,本发明通过映射生成如startWith->endWith、startWith->contains等新的变异规则。

步骤S203,将生成的变异规则加入到预设的初始变异规则库中。

在本发明实施例中,初始变异规则库中包含多个变异规则,初始变异规则库为根据初始变异因子库中的各变异因子建立的。

步骤S204,将所述初始变异规则库中的原有变异规则的预设执行状态设置为通过,将新加入所述初始变异规则库的变异规则的预设执行状态设置为失败,得到原始变异规则种群。

在程序化工厂模式开发过程中,源代码通过Git进行代码开发、共享、更新等操作,通过使用Git diff命令等即可获取对应提交代码变动行及相应行号,通过对历史每次提交变动行进行筛选,获取差异提交数据。以两次连续提交记录为单元进行代码单句对比,筛选最低修改单元,如首次提交代码为:

Map<String,Object>featureMap=extractFeatures(seedCase,ignoreConf);

第二次提交修改后代码为:

Map<String,Object>featureMap=extractAttentionFeatures(seedCase,ignoreConf);

即对比后,两组代码中开发人员使用初始化函数发生了变更,对应的变异规则为extractAttentionFeatures()->extractFeatures(),即新增候补变异因子extractAttentionFeatures(),其中,该变更为调用函数变更,在加入到变更因子的同时,还需要对函数内部的参数进行类型确认,该部分类型参数也需要进行变异因子扩充。

图3为函数部分新增变异候补因子的筛选过程,非函数变更部分可直接加入已有变异因子库,并将该部分作为新增变异因子的一部分,后续在遗传算法中进行进一步扩充。

函数部分判定为参数模式变更,变更部分也可直接加入到变异库中,非参数增减模式的部分,需判定是否为入参值改变,由于Git在进行代码查验构成中,任何微小的变化,如新增空格和“;”等都会触发Git diff命令扫描输出,所以,此处仅保留函数中参数入参值发生调整的部分,并将每组参数类型进行扫描,并加入到候补变异因子库中,通过后续的遗传算法完成进一步的变异因子补充处理。

在本发明一个实施例中,由于遗传、交叉、变异的过程均基于Git拉取代码的变更行(号),所以,不能通过二进制类的编码方式将原有程序行进行基因编码,本发明通过变相处理行号的方式进行基因编码,通过将整个程序执行的覆盖行作为一条完整的基因,完成后续遗传算法的变异因子补充更新。

本发明的遗传算法主要基于4个步骤,首先,需要生成原始变异规则种群,针对初始变异因子库,将候补变异因子与初始变异因子库中同类型变异因子进行2维映射,每一个新增变异规则中,仅调整一个候补变异因子。如候补变异因子有2种类型,分别为整型(int)和字符串(String),其中,整型可变异列表中一共有5组可变异项,字符串类型变异类别中一共有3组可变异项,则根据每个变异测试用例仅有一组因子变异要求,总计生成5+3共8个变异规则。并将生成的变异规则的执行预设结果预设为失败。

种群适应性筛选,根据原始变异规则种群中的每个变异规则生成变异测试用例,将生成的测试用例通过自动化执行测试用例的方式调起运行,并将每组运行的结果和执行情况通过适应度函数进行统计计算,并将计算的结果通过轮盘赌的方式进行遗传筛选,保留尽可能高适应性基因种群(变异规则种群)。

遗传交叉,通过一轮适应度筛选后,将全部的基因链进行均分处理,每个变异规则为一个基因链,生成父链和母链两组,通过两两交叉处理,交叉概率k设定为0.8,通过随机数方式,如果生成随机数大于k值时,进行父链、母链交叉,交叉点选择为执行程序中随机节点即可。反之,则不进行交叉。

遗传变异,交叉完成后,将全量的基因链进行逐个判断,每个变异规则为一个基因链,设定变异概率u为0.8,通过随机生成数方式,大于u时进行该基因链的变异处理,变异点选择当前程序中存在的任意候选变异点,变异值选择变异列表中同类型下任意一值进行替换,完成变异。反之,则保留基因链不进行变异处理。

由以上实施例可以看出,为了降低变异测试中变异因子以及变异规则的更新补充人力开销和时间成本,提升变异测试效能,补充测试充分性,本发明提出了一种基于遗传算法的变异规则补充方法,可有效提升变异因子的更新效率,具体实现了以下有益效果:

1、本发明直接通过扫描Git中开发人员提交记录,扫描每组变更记录,分析获取差异信息,充分考虑了程序开发中涉及到的全量变更细节,个性化对不同程序的变异特性进行补充。

2、本发明变异规则补充更新通过使用自动择优筛选变异规则,最大程度寻求高价值变异特性,遗传变异过程充分结合变异测试的随机变异特性,提升了变异测试的测试效能。

3、本发明更新处理可增加迭代模式,通过设置定时或者设置定量次数提交模式进行变异规则补充,可不断进行变异规则学习补充,降低人力成本,提高效能。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

基于同一发明构思,本发明实施例还提供了一种基于遗传算法的变异规则补充装置,可以用于实现上述实施例所描述的基于遗传算法的变异规则补充方法,如下面的实施例所述。由于基于遗传算法的变异规则补充装置解决问题的原理与基于遗传算法的变异规则补充方法相似,因此基于遗传算法的变异规则补充装置的实施例可以参见基于遗传算法的变异规则补充方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是本发明实施例基于遗传算法的变异规则补充装置的第一结构框图,如图4所示,在本发明一个实施例中,本发明实施例基于遗传算法的变异规则补充装置包括:

原始变异规则种群获取模块1,用于获取原始变异规则种群,其中,所述原始变异规则种群包括:多个变异规则以及每个变异规则各自的预设执行状态;

变异测试模块2,用于根据所述变异规则进行变异测试,得到每个所述变异规则各自的真实执行状态;

种群筛选模块3,用于根据所述预设执行状态以及所述真实执行状态确定每个所述变异规则的适应度,并根据所述适应度对所述原始变异规则种群中的变异规则进行筛选,得到筛选后的变异规则种群;

遗传交叉模块4,用于基于预设的交叉概率对所述筛选后的变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则;

遗传变异模块5,用于基于预设的变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则;

遗传交叉变异后的变异规则种群生成模块6,用于将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的变异规则种群中,得到遗传交叉变异后的变异规则种群。

图5是本发明实施例基于遗传算法的变异规则补充装置的第二结构框图,如图5所示,在本发明一个实施例中,本发明实施例基于遗传算法的变异规则补充装置还包括:

候补变异因子确定模块7,用于根据程序代码的修改记录确定候补变异因子;

变异规则生成模块8,用于将所述候补变异因子与预设的初始变异因子库中的变异因子进行结合,生成变异规则;

变异规则添加模块9,用于将生成的变异规则加入到预设的初始变异规则库中;

原始变异规则种群生成模块10,用于将所述初始变异规则库中的原有变异规则的预设执行状态设置为通过,将新加入所述初始变异规则库的变异规则的预设执行状态设置为失败,得到原始变异规则种群。

在本发明一个实施例中,本发明实施例基于遗传算法的变异规则补充装置还包括:

迭代执行模块,用于执行n次遗传交叉变异步骤,得到最终的变异规则种群,n大于等于1,其中,在每次执行遗传交叉变异步骤时,确定初始变异规则种群,对所述初始变异规则种群进行变异测试,得到所述初始变异规则种群中的每个变异规则各自的真实执行状态,根据所述初始变异规则种群中的每个变异规则各自的预设执行状态以及所述真实执行状态确定所述初始变异规则种群中的每个变异规则的适应度,并根据适应度对所述初始变异规则种群中的变异规则进行筛选,得到筛选后的初始变异规则种群,基于所述交叉概率对所述筛选后的初始变异规则种群中的变异规则两两进行遗传交叉,得到遗传交叉产生的变异规则,基于所述变异概率对遗传交叉产生的变异规则进行遗传变异,得到遗传变异产生的变异规则,将遗传交叉产生的变异规则以及遗传变异产生的变异规则加入到所述筛选后的初始变异规则种群中,得到本次遗传交叉变异步骤处理后的变异规则种群。

在本发明一个实施例中,所述迭代执行模块,具体用于:

在第一次执行所述遗传交叉变异步骤时,将所述遗传交叉变异后的变异规则种群作为初始变异规则种群;

在非第一次执行所述遗传交叉变异步骤时,将上一次执行遗传交叉变异步骤得到的处理后的变异规则种群作为初始变异规则种群。

在本发明一个实施例中,本发明实施例基于遗传算法的变异规则补充装置还包括:

预设执行状态设置模块,用于将遗传交叉产生的变异规则以及遗传变异产生的变异规则的预设执行状态设置为失败。

在本发明一个实施例中,所述变异规则生成模块8,包括:

同类型变异因子确定单元,用于从所述初始变异因子库中确定出目标变异因子,其中,所述目标变异因子为与所述候补变异因子类型相同的变异因子;

生成单元,用于将所述候补变异因子分别与每个所述目标变异因子进行结合,生成变异规则。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图6所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述基于遗传算法的变异规则补充方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

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

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于依据池的知识管理方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!