CN104268278B - 一种基于规则的软件体系结构层性能演化优化方法 - Google Patents
一种基于规则的软件体系结构层性能演化优化方法 Download PDFInfo
- Publication number
- CN104268278B CN104268278B CN201410546025.1A CN201410546025A CN104268278B CN 104268278 B CN104268278 B CN 104268278B CN 201410546025 A CN201410546025 A CN 201410546025A CN 104268278 B CN104268278 B CN 104268278B
- Authority
- CN
- China
- Prior art keywords
- rule
- loc
- record
- tables
- rulnum
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于规则的软件体系结构层性能演化优化方法,采用遗传算法进行软件体系结构层性能演化优化:A.进行种群初始化;B.输入个体编码(规则号序列)、初始软件体系结构和规则使用历史表,计算种群中每个个体的适应度值;C.采用基于精英保留的轮盘赌选择策略进行选择操作;D.采用带约束检查机制的一点交叉进行交叉操作;E.采用带约束检查机制的一点变异进行变异操作;F.判断是否满足终止条件,是则转步骤G,否则基于步骤E得到的下一代种群,返回步骤B进行下一次迭代;步骤G.将最优个体中出现的0及没有改进效果的规则号依次删除,获得最优改进方案并输出。该方法可降低软件体系结构层性能的优化成本,提高优化质量。
Description
技术领域
本发明涉及软件性能优化技术领域,特别涉及一种基于规则的软件体系结构层性能演化优化方法。
背景技术
软件的性能是衡量软件***质量的一个重要属性,性能的优劣已经成为***成败的关键因素。在软件体系结构(Software Architecture,简记为SA)设计阶段进行性能优化,可以尽早发现资源使用率过高、响应时间过长和吞吐量过小等性能问题,并通过相应的设计改进缓解或消除这些问题,从而获得满足性能需求的SA设计方案,进而可在软件生命周期的早期达到性能优化的目的。基于SA进行性能优化,不仅可以显著减少软件性能优化的时间,而且能够有效降低优化的成本。
SA层性能优化一直是软件工程学术界和工业界高度关注的主题。经过多年研究和实践,已产生一些普适性的SA层性能改进知识。这些知识已被***归纳和总结过,并用自然语言描述的性能反模式进行了适当的表示。为了提高SA层性能优化的自动化程度,近年来涌现出一些基于规则的优化方法。这些方法以机器可处理的性能改进规则形式精确地描述了SA层性能反模式,并通过研发规则执行引擎,使得性能优化过程可以自动地使用这些规则。然而这些方法在优化过程中未充分考虑规则组合使用场景下各规则的使用次数和使用顺序不确定性的问题,使得它们只能搜索相对较小的性能改进空间,往往难以获得最优的性能改进方案。例如:文献《An approach for modeling and detecting softwareperformance antipatterns based on first-order logics》针对文献《Performancesolutions:a practical guide to creating responsive,scalable software》、《Software Performance Antipatterns》中的12种SA层性能反模式,给出了对应的12条改进规则。即使不考虑规则可以重复使用的情景,由这12条规则不同组合的情况而构成的改进空间也将高达1212(近9000万亿)个改进方案。在如此庞大的SA层性能改进空间中,如何找出最优性能改进方案仍是一个亟待解决的问题。
发明内容
本发明的目的在于提供一种基于规则的软件体系结构层性能演化优化方法,该方法可降低软件体系结构层性能的优化成本,提高优化质量。
为实现上述目的,本发明的技术方案是:一种基于规则的软件体系结构层性能演化优化方法,采用遗传算法进行软件体系结构层性能演化优化,包括以下步骤:
步骤A.进行种群初始化:设置种群规模、交叉概率、变异概率、最大进化代数、迭代数t=0,并采用一定的个体编码方法,随机生成初始种群P(t)中的每个个体;所述个体编码方法为:
任意个体的编码X'=<x'1,x'2,L,x'k,L,x'l'>均采用定长自然数编码,码长l’由下式定义:
其中ui表示i号规则最多可使用的次数;规则号1到n表示对n条性能改进规则的依次编号;特别地,引入0号规则表示不做任何动作的空规则,并令:1)0号规则最多可使用的次数u0=l’;2)0号规则作用在任何软件体系结构SA上都没有性能改进;3)由0号规则构成的单规则序列作用在任何软件体系结构SA上得到的改进后的软件体系结构仍是SA;
X’的每位x'k满足下式:
x'k∈N∧0≤x'k≤n
其中1≤k≤l',N表示自然数;
X’中i号规则出现的次数记为hi(X’),其满足下式:
hi(X')≤ui,0≤i≤n
步骤B.适应度计算:输入个体编码X’、初始软件体系结构SA0和空的规则使用历史表T_RuleUseInHis,采用solveFitness算法计算P(t)中每个个体的适应度值fitness,并更新T_RuleUseInHis表;T_RuleUseInHis表包括rulNum、loc、nxtRulNum、impNum、totNum五个字段,rulNum表示规则号,loc表示规则号在编码中的位置,nxtRulNum表示loc+1位置的规则号,若loc+1大于码长,则其值为-1,impNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则有改进效果的使用次数,totNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则的使用总数;所述solveFitness算法包括以下步骤:
B1.将个体编码X’中的0号规则依次全部删除,获得规则号序列X;
B2.将初始软件体系结构SA0和规则号序列X作为一定的规则序列执行算法的输入,运行所述规则序列执行算法,输出X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,以及序列中规则使用情况表T_RuleUseInSeq;T_RuleUseInSeq表包括rulNum、loc、isImp三个字段,rulNum表示规则号,loc表示规则号在X中的位置,isImp表示根据loc位置上编号为rulNum的规则执行前后的***响应时间,判定该规则的应用是否有性能改进效果,是则isImp为1,否则为0;
B3.根据X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,计算两者的差值ΔRT;
B4.根据T_RuleUseInSeq表,统计有性能改进效果的规则数impRulNum(X)和使用的总规则数totRulNum(X),按下式计算出个体编码X’的适应度值fitness:
其中,X为删除X’中出现的0号规则得到的规则号序列;
B5.根据T_RuleUseInSeq表,更新T_RuleUseInHis表;
B6.输出适应度值fitness和更新后的T_RuleUseInHis表,算法结束;
步骤C.选择操作:采用基于精英保留的轮盘赌选择策略在P(t)上进行个体选择,并生成临时种群P1(t);
步骤D.交叉操作:采用带约束检查机制的一点交叉,对交叉操作生成的两个新个体,从交叉位开始至最后一位依次检查每位上的规则号是否违反最大出现次数的约束,若违反则将该位赋值为0;按此方法在P1(t)上进行交叉操作生成临时种群P2(t);
步骤E.变异操作:采用带约束检查机制的一点变异,变异操作后执行约束检查,若变异后的规则号违反最大出现次数的约束,则将变异位赋值为0;按此方法在P2(t)上进行变异操作生成下一代种群;
步骤F.判断是否满足终止条件:最优个体经过多次迭代后其适应度不再发生变化,或者迭代次数达到最大进化代数,是则转步骤G,否则基于步骤E得到的下一代种群,返回步骤B进行下一次迭代;
步骤G.将最优个体中出现0及没有改进效果的规则号依次删除,获得最优改进方案X并输出。
进一步的,在步骤B2中,所述规则序列执行算法包括以下步骤:
B201.分别将待改进软件体系结构SA、当前位置i、T_RuleUseInSeq表、BRT和ART赋值为初始软件体系结构SA0、1、空、-1和-1;
B202.判断i是否大于X的长度,是则转步骤B206,否则转步骤B203;
B203.取X的第i个元素xi,并根据编号xi从规则库取出对应的规则,并与待改进软件体系结构SA一并交由规则执行引擎执行;
B204.根据规则执行引擎返回的执行前***响应时间BRTi和执行后***响应时间ARTi,计算BRTi与ARTi两者的差值ΔRT:
B2041.若BRT为-1,则把BRTi赋值给BRT;
B2042.将ARTi赋值给ART;
B2043.若ΔRT>0,将记录(xi,i,1)***T_RuleUseInSeq表中,否则将记录(xi,i,0)***T_RuleUseInSeq表中;
B2044.若ΔRT>0,则将规则执行引擎返回的改进后软件体系结构赋值给SA,使其成为下一条规则执行时的待改进软件体系结构;
B205.令i=i+1,并转步骤B203;
B206.输出BRT、ART和T_RuleUseInSeq表,算法结束。
进一步的,在步骤B5中,根据T_RuleUseInSeq表,按以下步骤更新T_RuleUseInHis表:
B501.给变量i和len分别赋值1和T_RuleUseInSeq表的记录数;
B502.若i≤len,则转步骤B503,否则更新结束;
B503.从T_RuleUseInSeq中取出第i条记录的值(rulNumi,loci,isImpi);
B504.在T_RuleUseInHis表中按主码值为进行查找,并将查找结果赋值给记录recordi;
B505.若(isImpi=1)∧(recordi不空)条件成立,将recordi记录中的impNum和totNum字段的值分别加1,并更新T_RuleUseInHis表中与recordi对应的记录;
B506.若(isImpi=0)∧(recordi不空)条件成立,将recordi记录中的totNum字段值加1,并更新T_RuleUseInHis表中的对应记录;
B507.若(isImpi=1)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,1,1)***T_RuleUseInHis表中;
B508.若(isImpi=1)∧(recordi为空)∧(loci=X的长度)条件成立,则将记录(rulNumi,loci,-1,1,1)***T_RuleUseInHis表中;
B509.若(isImpi=0)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,0,1)***T_RuleUseInHis表中;
B510.若(isImpi=0)∧(recordi为空)∧(loci=X的长度)条件成立,将记录(rulNumi,loci,-1,0,1)***T_RuleUseInHis表中;
B511.令i=i+1,并转步骤B502。
进一步的,在步骤E中,基于一定的条件变异概率进行变异操作,所述条件变异概率按如下方法得到:
基于规则使用历史表T_RuleUseInHis定义以下3个函数:
1)函数fΔ(j,k,m)表示在T_RuleUseInHis表中按主码值为(loc=j)∧(rulNum=k)∧(nxtRulNum=m)进行查找,若查找不到返回0,否则返回记录中impNum和totNum字段值的比值;
2)定义函数O(j,k)表示在T_RuleUseInHis表中按条件(loc=j)∧(rulNum=k)进行查找,若查找不到返回空集否则返回所有满足条件记录中nxtRulNum字段值构成的集合SnxtRulNum;
3)定义函数
基于定义的3个函数,条件变异概率p(x'i=k|x'i-1=q)由下式定义:
本发明的有益效果是:1、本发明将规则方法和演化技术紧密结合提出SA层性能优化方法,将基于规则的SA层性能优化抽象为一个寻找最优性能改进规则号序列的数学模型,并设计高效的演化求解算法,以找出最优性能改进方案。2、本发明设计的个体编码方案、带约束检查的交叉算子、基于统计学习机制和带约束检查的变异算子,能够在演化优化过程中灵活应用规则形式的性能改进知识、并可以充分使用规则执行历史中所包含的启发式信息,进而保证算法可以快速收敛到全局最优解。本发明在帮助缩短SA层性能优化的时间、降低优化成本和提高优化质量等方面都具有重要的应用价值和广泛的应用前景。
附图说明
图1是本发明实施例的实现流程图。
图2是本发明实施例中个体编码示意图。
图3是本发明实施例中规则序列执行算法的总体结构图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细说明。
本发明基于规则的软件体系结构层性能演化优化方法,采用遗传算法进行软件体系结构层性能演化优化,如图1所示,包括以下步骤:
步骤A.进行种群初始化
设置种群规模、交叉概率、变异概率、最大进化代数、迭代数t=0,并采用一定的个体编码方法,随机生成初始种群P(t)中的每个个体;个体编码示意图如图2所示,所述个体编码方法为:
任意个体的编码X'=<x1',x'2,L,x'k,L,xl”>均采用定长自然数编码,码长l’由下式定义:
其中ui表示i号规则最多可使用的次数;规则号1到n表示对n条性能改进规则的依次编号;特别地,引入0号规则表示不做任何动作的空规则,并令:1)0号规则最多可使用的次数u0=l’;2)0号规则作用在任何软件体系结构SA上都没有性能改进;3)由0号规则构成的单规则序列作用在任何软件体系结构SA上得到的改进后的软件体系结构仍是SA;
X’的每位x'k满足下式:
x'k∈N∧0≤x'k≤n
其中1≤k≤l',N表示自然数;
X’中i号规则出现的次数记为hi(X’),其满足下式:
hi(X')≤ui,0≤i≤n
步骤B.适应度计算
个体编码X’的适应度求解过程中需要将X’对应规则序列执行完成后,各规则的使用情况记录到一张规则使用历史表T_RuleUseInHis中。下面先给出规则使用历史表的定义,再给出适应度的求解过程。
规则使用历史表T_RuleUseInHis定义:
规则使用历史表T_RuleUseInHis用于记录到目前为止各个规则累计的使用情况。T_RuleUseInHis表的定义如下表1所示,前3个段构成了该表的主码。T_RuleUseInHis表包括rulNum、loc、nxtRulNum、impNum、totNum五个字段,rulNum表示规则号,loc表示规则号在序列中的位置,nxtRulNum表示loc+1位置的规则号,若loc+1大于编码长度,则其值为-1,impNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则有改进效果的使用次数,totNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则的使用总数。
表1 T_RuleUseInHis表定义
适应度求解过程:
输入个体编码X’、初始软件体系结构SA0和空的规则使用历史表T_RuleUseInHis,采用solveFitness算法计算P(t)中每个个体的适应度值fitness,并更新T_RuleUseInHis表;所述solveFitness算法包括以下步骤:
B1.将个体编码X’中的0号规则依次全部删除,获得规则号序列X。
B2.将初始软件体系结构SA0和规则号序列X作为一定的规则序列执行算法的输入,运行所述规则序列执行算法,输出X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,以及序列中规则使用情况表T_RuleUseInSeq。规则序列执行算法的总体结构如图3所示。
序列中规则使用情况表T_RuleUseInSeq定义:
序列中规则使用情况表T_RuleUseInSeq的定义如下表2所示,rulNum和loc两个字段构成了T_RuleUseInSeq表的主码。T_RuleUseInSeq表包括rulNum、loc、isImp三个字段,rulNum表示规则号,loc表示规则号在X中的位置,isImp表示根据loc位置上编号为rulNum的规则执行前后的***响应时间,判定该规则的应用是否有性能改进效果,是则isImp为1,否则为0。
表2 T_RuleUseInSeq表定义
所述规则序列执行算法包括以下步骤:
B201.分别将待改进软件体系结构SA、当前位置i、T_RuleUseInSeq表、BRT和ART赋值为初始软件体系结构SA0、1、空、-1和-1;
B202.判断i是否大于X的长度,是则转步骤B206,否则转步骤B203;
B203.取X的第i个元素xi,并根据编号xi从规则库取出对应的规则,并与待改进软件体系结构SA一并交由规则执行引擎执行;
B204.根据规则执行引擎返回的执行前***响应时间BRTi和执行后***响应时间ARTi,计算BRTi与ARTi两者的差值ΔRT:
B2041.若BRT为-1,则把BRTi赋值给BRT;
B2042.将ARTi赋值给ART;
B2043.若ΔRT>0,将记录(xi,i,1)***T_RuleUseInSeq表中,否则将记录(xi,i,0)***T_RuleUseInSeq表中;
B2044.若ΔRT>0,则将规则执行引擎返回的改进后软件体系结构赋值给SA,使其成为下一条规则执行时的待改进软件体系结构。
B205.令i=i+1,并转步骤B203;
B206.输出BRT、ART和T_RuleUseInSeq表,算法结束。
B3.根据X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,计算两者的差值ΔRT。
B4.根据T_RuleUseInSeq表,统计有性能改进效果的规则数impRulNum(X)和使用的总规则数totRulNum(X),按下式计算出个体编码X’的适应度值fitness:
其中,X为删除X’中出现的0号规则得到的规则号序列。fitness(X’)的两个乘积项分别表示性能改进幅度、X中有改进效果规则的数目占规则总数的比例,fitness(X’)的值越大表明性能改进方案X越优。
B5.根据T_RuleUseInSeq表,更新T_RuleUseInHis表:
B501.给变量i和len分别赋值1和T_RuleUseInSeq表的记录数;
B502.若i≤len,则转步骤B503,否则更新结束;
B503.从T_RuleUseInSeq中取出第i条记录的值(rulNumi,loci,isImpi);
B504.在T_RuleUseInHis表中按主码值为进行查找,并将查找结果赋值给记录recordi;
B505.若(isImpi=1)∧(recordi不空)条件成立,将recordi记录中的impNum和totNum字段的值分别加1,并更新T_RuleUseInHis表中与recordi对应的记录;
B506.若(isImpi=0)∧(recordi不空)条件成立,将recordi记录中的totNum字段值加1,并更新T_RuleUseInHis表中的对应记录;
B507.若(isImpi=1)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,1,1)***T_RuleUseInHis表中;
B508.若(isImpi=1)∧(recordi为空)∧(loci=X的长度)条件成立,则将记录(rulNumi,loci,-1,1,1)***T_RuleUseInHis表中;
B509.若(isImpi=0)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,0,1)***T_RuleUseInHis表中;
B510.若(isImpi=0)∧(recordi为空)∧(loci=X的长度)条件成立,将记录(rulNumi,loci,-1,0,1)***T_RuleUseInHis表中;
B511.令i=i+1,并转步骤B502。
B6.输出适应度值fitness和更新后的T_RuleUseInHis表,算法结束。
步骤C.选择操作
采用基于精英保留的轮盘赌选择策略在P(t)上进行个体选择,并生成临时种群P1(t)。
步骤D.交叉操作
采用带约束检查机制的一点交叉,对交叉操作生成的两个新个体,从交叉位开始至最后一位依次检查每位上的规则号是否违反最大出现次数的约束,若违反则将该位赋值为0;按此方法在P1(t)上进行交叉操作生成临时种群P2(t)。
步骤E.变异操作
采用带约束检查机制的一点变异,基于一定的条件变异概率进行变异操作,变异操作后执行约束检查,若变异后的规则号违反最大出现次数的约束,则将变异位赋值为0;按此方法在P2(t)上进行变异操作生成下一代种群。
所述条件变异概率按如下方法得到:
基于规则使用历史表T_RuleUseInHis定义以下3个函数:
1)函数fΔ(j,k,m)表示在T_RuleUseInHis表中按主码值为(loc=j)∧(rulNum=k)∧(nxtRulNum=m)进行查找,若查找不到返回0,否则返回记录中impNum和totNum字段值的比值;
2)定义函数O(j,k)表示在T_RuleUseInHis表中按条件(loc=j)∧(rulNum=k)进行查找,若查找不到返回空集否则返回所有满足条件记录中nxtRulNum字段值构成的集合SnxtRulNum;
3)定义函数
基于定义的3个函数,条件变异概率p(xi'=k|xi'-1=q)由下式定义:
步骤F.判断是否满足终止条件:最优个体经过多次迭代后其适应度不再发生变化,或者迭代次数达到最大进化代数,是则转步骤G,否则基于步骤E得到的下一代种群,返回步骤B进行下一次迭代。
步骤G.将最优个体中出现0及没有改进效果的规则号依次删除,获得最优改进方案X并输出。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (4)
1.一种基于规则的软件体系结构层性能演化优化方法,其特征在于,采用遗传算法进行软件体系结构层性能演化优化,包括以下步骤:
步骤A.进行种群初始化:设置种群规模、交叉概率、变异概率、最大进化代数、迭代数t=0,并采用一定的个体编码方法,随机生成初始种群P(t)中的每个个体;所述个体编码方法为:
任意个体的编码X'=<x'1,x'2,L,x'k,L,x'l'>均采用定长自然数编码,码长l’由下式定义:
其中ui表示i号规则最多可使用的次数;规则号1到n表示对n条性能改进规则的依次编号;特别地,引入0号规则表示不做任何动作的空规则,并令:1)0号规则最多可使用的次数u0=l’;2)0号规则作用在任何软件体系结构SA上都没有性能改进;3)由0号规则构成的单规则序列作用在任何软件体系结构SA上得到的改进后的软件体系结构仍是SA;
X’的每位x'k满足下式:
x'k∈N∧0≤x'k≤n
其中1≤k≤l',N表示自然数;
X’中i号规则出现的次数记为hi(X’),其满足下式:
hi(X')≤ui,0≤i≤n
步骤B.适应度计算:输入个体编码X’、初始软件体系结构SA0和空的规则使用历史表T_RuleUseInHis,采用solveFitness算法计算P(t)中每个个体的适应度值fitness,并更新T_RuleUseInHis表;T_RuleUseInHis表包括rulNum、loc、nxtRulNum、impNum、totNum五个字段,rulNum表示规则号,loc表示规则号在编码中的位置,nxtRulNum表示loc+1位置的规则号,若loc+1大于码长,则其值为-1,impNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则有改进效果的使用次数,totNum表示在loc和loc+1位置的规则号分别是rulNum和nxtRulNum的情景下,rulNum对应规则的使用总数;所述solveFitness算法包括以下步骤:
B1.将个体编码X’中的0号规则依次全部删除,获得规则号序列X;
B2.将初始软件体系结构SA0和规则号序列X作为一定的规则序列执行算法的输入,运行所述规则序列执行算法,输出X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,以及序列中规则使用情况表T_RuleUseInSeq;T_RuleUseInSeq表包括rulNum、loc、isImp三个字段,rulNum表示规则号,loc表示规则号在X中的位置,isImp表示根据loc位置上编号为rulNum的规则执行前后的***响应时间,判定该规则的应用是否有性能改进效果,是则isImp为1,否则为0;
B3.根据X对应规则序列执行前的***响应时间BRT和执行后的***响应时间ART,计算两者的差值ΔRT;
B4.根据T_RuleUseInSeq表,统计有性能改进效果的规则数impRulNum(X)和使用的总规则数totRulNum(X),按下式计算出个体编码X’的适应度值fitness:
其中,X为删除X’中出现的0号规则得到的规则号序列;
B5.根据T_RuleUseInSeq表,更新T_RuleUseInHis表;
B6.输出适应度值fitness和更新后的T_RuleUseInHis表,算法结束;
步骤C.选择操作:采用基于精英保留的轮盘赌选择策略在P(t)上进行个体选择,并生成临时种群P1(t);
步骤D.交叉操作:采用带约束检查机制的一点交叉,对交叉操作生成的两个新个体,从交叉位开始至最后一位依次检查每位上的规则号是否违反最大出现次数的约束,若违反则将该位赋值为0;按此方法在P1(t)上进行交叉操作生成临时种群P2(t);
步骤E.变异操作:采用带约束检查机制的一点变异,变异操作后执行约束检查,若变异后的规则号违反最大出现次数的约束,则将变异位赋值为0;按此方法在P2(t)上进行变异操作生成下一代种群;
步骤F.判断是否满足终止条件:最优个体经过多次迭代后其适应度不再发生变化,或者迭代次数达到最大进化代数,是则转步骤G,否则基于步骤E得到的下一代种群,返回步骤B进行下一次迭代;
步骤G.将最优个体中出现0及没有改进效果的规则号依次删除,获得最优改进方案X并输出。
2.根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征在于,在步骤B2中,所述规则序列执行算法包括以下步骤:
B201.分别将待改进软件体系结构SA、当前位置i、T_RuleUseInSeq表、BRT和ART赋值为初始软件体系结构SA0、1、空、-1和-1;
B202.判断i是否大于X的长度,是则转步骤B206,否则转步骤B203;
B203.取X的第i个元素xi,并根据编号xi从规则库取出对应的规则,并与待改进软件体系结构SA一并交由规则执行引擎执行;
B204.根据规则执行引擎返回的执行前***响应时间BRTi和执行后***响应时间ARTi,计算BRTi与ARTi两者的差值ΔRT:
B2041.若BRT为-1,则把BRTi赋值给BRT;
B2042.将ARTi赋值给ART;
B2043.若ΔRT>0,将记录(xi,i,1)***T_RuleUseInSeq表中,否则将记录(xi,i,0)***T_RuleUseInSeq表中;
B2044.若ΔRT>0,则将规则执行引擎返回的改进后软件体系结构赋值给SA,使其成为下一条规则执行时的待改进软件体系结构;
B205.令i=i+1,并转步骤B203;
B206.输出BRT、ART和T_RuleUseInSeq表,算法结束。
3.根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征在于,在步骤B5中,根据T_RuleUseInSeq表,按以下步骤更新T_RuleUseInHis表:
B501.给变量i和len分别赋值1和T_RuleUseInSeq表的记录数;
B502.若i≤len,则转步骤B503,否则更新结束;
B503.从T_RuleUseInSeq中取出第i条记录的值(rulNumi,loci,isImpi);
B504.在T_RuleUseInHis表中按主码值为(loc=loci)∧(rulNum=rulNumi)∧(nxtRulNum=xloci+1)进行查找,并将查找结果赋值给记录recordi;
B505.若(isImpi=1)∧(recordi不空)条件成立,将recordi记录中的impNum和totNum字段的值分别加1,并更新T_RuleUseInHis表中与recordi对应的记录;
B506.若(isImpi=0)∧(recordi不空)条件成立,将recordi记录中的totNum字段值加1,并更新T_RuleUseInHis表中的对应记录;
B507.若(isImpi=1)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,1,1)***T_RuleUseInHis表中;
B508.若(isImpi=1)∧(recordi为空)∧(loci=X的长度)条件成立,则将记录(rulNumi,loci,-1,1,1)***T_RuleUseInHis表中;
B509.若(isImpi=0)∧(recordi为空)∧(loci≠X的长度)条件成立,则将记录(rulNumi,loci,nxtRulNum,0,1)***T_RuleUseInHis表中;
B510.若(isImpi=0)∧(recordi为空)∧(loci=X的长度)条件成立,将记录(rulNumi,loci,-1,0,1)***T_RuleUseInHis表中;
B511.令i=i+1,并转步骤B502。
4.根据权利要求1所述的一种基于规则的软件体系结构层性能演化优化方法,其特征在于,在步骤E中,基于一定的条件变异概率进行变异操作,所述条件变异概率按如下方法得到:
基于规则使用历史表T_RuleUseInHis定义以下3个函数:
1)函数fΔ(j,k,m)表示在T_RuleUseInHis表中按主码值为(loc=j)∧(rulNum=k)∧(nxtRulNum=m)进行查找,若查找不到返回0,否则返回记录中impNum和totNum字段值的比值;
2)定义函数O(j,k)表示在T_RuleUseInHis表中按条件(loc=j)∧(rulNum=k)进行查找,若查找不到返回空集否则返回所有满足条件记录中nxtRulNum字段值构成的集合SnxtRulNum;
3)定义函数
基于定义的3个函数,条件变异概率p(x'i=k|x'i-1=q)由下式定义:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546025.1A CN104268278B (zh) | 2014-10-16 | 2014-10-16 | 一种基于规则的软件体系结构层性能演化优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546025.1A CN104268278B (zh) | 2014-10-16 | 2014-10-16 | 一种基于规则的软件体系结构层性能演化优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104268278A CN104268278A (zh) | 2015-01-07 |
CN104268278B true CN104268278B (zh) | 2017-06-30 |
Family
ID=52159799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410546025.1A Active CN104268278B (zh) | 2014-10-16 | 2014-10-16 | 一种基于规则的软件体系结构层性能演化优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268278B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669698A (zh) * | 2018-11-09 | 2019-04-23 | 福州三鑫隆铸业有限公司 | 基于频繁模式挖掘的gcc编译时能耗演化优化方法及存储设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866010A (zh) * | 2010-05-28 | 2010-10-20 | 北京航空航天大学 | 一种卫星导航***选星方法 |
CN102831063A (zh) * | 2012-09-03 | 2012-12-19 | 东华理工大学 | 一种软件体系结构并行演化冲突的检测方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844420B2 (en) * | 2005-02-02 | 2010-11-30 | Gm Global Technology Operations, Inc | Manufacturing system performance analysis tool software architecture |
US8073790B2 (en) * | 2007-03-10 | 2011-12-06 | Hendra Soetjahja | Adaptive multivariate model construction |
-
2014
- 2014-10-16 CN CN201410546025.1A patent/CN104268278B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866010A (zh) * | 2010-05-28 | 2010-10-20 | 北京航空航天大学 | 一种卫星导航***选星方法 |
CN102831063A (zh) * | 2012-09-03 | 2012-12-19 | 东华理工大学 | 一种软件体系结构并行演化冲突的检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104268278A (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416268B2 (en) | Aggregate features for machine learning | |
Khan et al. | Neighborhood based fast graph search in large networks | |
CN111340493B (zh) | 一种多维度分布式异常交易行为检测方法 | |
CN110390017A (zh) | 基于注意力门控卷积网络的目标情感分析方法及*** | |
CN107656978B (zh) | 一种基于函数依赖的多样性数据修复方法 | |
Doerr et al. | When do evolutionary algorithms optimize separable functions in parallel? | |
Neumann | Computational complexity analysis of multi-objective genetic programming | |
US20170011143A1 (en) | Search and poll method for solving multi-fidelity optimization problems | |
Liang et al. | Attribute reduction based on improved information entropy | |
Guilani et al. | Optimal component sequence in heterogeneous 1-out-of-N mixed RRAPs | |
CN104268278B (zh) | 一种基于规则的软件体系结构层性能演化优化方法 | |
Sun et al. | Toward auto-learning hyperparameters for deep learning-based recommender systems | |
Bryant | Tbuddy: A proof-generating BDD package | |
Qian et al. | Variable solution structure can be helpful in evolutionary optimization. | |
CN112905906B (zh) | 一种融合局部协同与特征交叉的推荐方法及*** | |
CN104462705A (zh) | 一种基于微粒群算法的夹具装配序列规划方法 | |
Chen et al. | ZKML: An Optimizing System for ML Inference in Zero-Knowledge Proofs | |
Georgopoulou et al. | A multi-objective metamodel-assisted memetic algorithm with strength-based local refinement | |
Liu et al. | Binary decision diagram with minimum expected path length | |
CN116668105A (zh) | 一种结合工控安全知识图谱的攻击路径推理*** | |
US20230229895A1 (en) | Automatic Selection of Quantization and Filter Pruning Optimization Under Energy Constraints | |
Kaufmann et al. | Practical algebraic calculus and Nullstellensatz with the checkers Pacheck and Pastèque and Nuss-Checker | |
Minato | VSOP (valued-sum-of-products) calculator for knowledge processing based on zero-suppressed BDDs | |
Yuan et al. | A trust‐region‐based BFGS method with line search technique for symmetric nonlinear equations | |
CN106095882A (zh) | 一种多云平台环境下的个性化云推荐方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |