一种三值fprm电路面积与延时最佳极性搜索方法

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

阅读说明:本技术 一种三值fprm电路面积与延时最佳极性搜索方法 (Three-value FPRM circuit area and delay optimal polarity searching method ) 是由 符强 陈嘉豪 童楠 钟才明 王克逸 于 2021-07-02 设计创作,主要内容包括:本发明公开了一种基于MOAMA算法的三值FPRM电路面积与延时优化方法,通过在多目标人工蜉蝣算法(Multi-objective artificial mayfly algorithm,MOAMA算法)中引入反向映射机制,更改雌蜉蝣位置公式为反向映射雄蜉蝣位置,有效激发个体活性,并设置人工蜉蝣替换雄蜉蝣群中的失效个体,增加种群进化速度,然后结合三值FPRM表达式、极性转换技术和MOAMA算法,寻找三值FPRM电路较优极性;优点是全局寻优能力和局部搜索能力强,可以在较少的迭代次数中寻找到较优极性,收敛速度快,优化效果较好。(The invention discloses a ternary FPRM circuit area and time delay optimization method based on MOAMA algorithm, wherein a reverse mapping mechanism is introduced in a Multi-objective artificial mayfly algorithm (MOAMA algorithm), a female mayfly position formula is changed into a reverse mapping male mayfly position, the activity of an individual is effectively stimulated, artificial mayfly is set to replace a failed individual in a male mayfly group, the population evolution speed is increased, and then a ternary FPRM expression, a polarity conversion technology and the MOAMA algorithm are combined to find the superior polarity of a ternary FPRM circuit; the method has the advantages of strong global optimization capability and local search capability, capability of finding out better polarity in fewer iteration times, high convergence speed and better optimization effect.)

一种三值FPRM电路面积与延时最佳极性搜索方法

技术领域

本发明涉及一种三值FPRM电路面积与延时优化方法,尤其是涉及一种三值FPRM电路面积与延时最佳极性搜索方法。

背景技术

在三值FPRM电路面积和延时优化领域,MODPSO算法和MODCPSO算法是解决三值FPRM电路极性搜索问题的有效多目标算法,MODPSO算法以pareto支配关系取代加权法搜索极性,可以有效的寻找最优极性并获得pareto最优解集,但该算法易过早收敛,陷入局部最优,优化效果具有较大的提升空间;MODCPSO算法在MODPSO算法的基础上进行优化,将子群划分为两个团队,令两个团队中的粒子分别进行比较,其中较差粒子向着较好粒子进行更新操作,避免MODCPSO算法过早收敛,同时引入变异机制提高MODCPSO算法搜索精度,跳出局部最优的可能性。虽然MODCPSO算法相对于MODPSO算法,可以避免陷入局部最优,优化效果较好,但是当迭代次数较少时,MODCPSO算法性能不足以找到较优的极性,故其需要设定较大的迭代次数,进行很多次的迭代搜索才能找到较优的极性,达到预期的优化效果,以致收敛速度将降低。

发明内容

本发明所要解决的技术问题是提供一种全局寻优能力和局部搜索能力强,可以在较少的迭代次数中寻找到较优极性,收敛速度快,优化效果较好的三值FPRM电路面积与延时最佳极性搜索方法。

本发明解决上述技术问题所采用的技术方案为:一种基于MOAMA算法的三值FPRM电路面积与延时优化方法,包括括以下步骤:

(1)建立p极性下三值FPRM电路面积估算模型和延时估算模型:

S1.1、将p极性下三值FPRM电路用三值FPRM逻辑表达式表示为:

其中,n为函数fp(xn-1,xn-2,…,x0)输入变量的个数,p极性用n位三进制表示为pn- 1pn-2…p0,pj∈{0,1,2},j=0,1,2,…,n-1,xn-1,xn-2,…,x0为函数fp(xn-1,xn-2,…,x0)的n个输入变量,运算符为模3加运算,ai为三值FPRM逻辑表达式的第i个与项系数,ai∈{0,1,2},i为与项序数,i=0,1,2,…,3n-1,*为乘运算符,∏为模3乘运算符,ij∈{0,1,2},的值由极性p的第j位pj决定,当pj为0时, 当pj为1时,当pj为2时, 为三进制加运算;

S1.2、p极性下三值FPRM电路用三值FPRM逻辑表达式由多输入模3加项和多输入模3乘项组成,将多输入模3加项看作多输入模3加门,多输入模3乘项看作多输入模3乘门,首先采用类Huffman算法将p极性下三值FPRM电路用三值FPRM逻辑表达式内所有多输入模3乘门分解为多个二输入模3乘门,多输入模3加门分解为多个二输入模3加门,得到分解后的逻辑表达式,将分解后的逻辑表达式中二输入模3乘门数量记为Area_Mod_3M,二输入模3加门的数量记为Area_mod_3A,将分解后的逻辑表达式中从输入变量到输出信号经过二输入模3乘门和二输入模3加门的数量最多的路径作为关键路径,将该关键路径上包含的二输入模3乘门和二输入模3加门的数量和记为num(Mod_3);

S1.3、将p极性下三值FPRM电路的面积记为area(p),延时记为delay(p),将p极性下三值FPRM电路的面积估算模型用式(2)表示,延时估算模型用(3)表示:

area(p)=Area_Mod_3M+Area_Mod_3A (2)

delay(p)=num(Mod_3) (3)

(2)将多目标人工蜉蝣算法与三值FPRM电路面积与延时优化进行关联:将三值FPRM电路的极性对应为多目标人工蜉蝣算法中蜉蝣的位置,三值FPRM电路可选择极性的空间对应为多目标人工蜉蝣算法中蜉蝣的搜索空间;

(3)设置极性支配规则:设蜉蝣群中任意两个蜉蝣位置对应的极性分别为P1和P2,设置两个判定条件,如式(4)和(5)所示:

P1area≤P2area&&P1delay≤P2delay (4)

P1area<P2area||P1delay<P2delay (5)

其中P1area表示P1极性下三值FPRM电路的面积,P1delay表示P1极性下三值FPRM电路的延时,P2area表示P2极性下三值FPRM电路的面积,P2delay表示P2极性下三值FPRM电路的延时,符号&&表示当符号&&左右两个公式同时满足时判定条件成立,符号||表示当符号||左右两个公式有任何一个满足时判定条件成立,若P1极性和P2极性同时满足判定条件(4)和(5),则认为极性P1支配极性P2,记作P1>P2,此时极性P1对应的蜉蝣支配极性P2对应的蜉蝣;若极性P1和极性P2只满足判定条件(4),则P1极性和P2极性互不支配;若极性P1和极性P2只满足判定条件(5),则P1极性和P2极性互不支配;若P1极性和P2极性既不满足判定条件(4),也不满足判定条件(5),则P1极性与P2极性互不支配或P2极性支配P1极性;

(4)设置拥挤度计算规则:设需要计算拥挤度的蜉蝣群中蜉蝣个数为Na,Na为大于等于1的整数,将该需要计算拥挤度的蜉蝣群作为原始蜉蝣群,将该原始蜉蝣群中第u个蜉蝣的拥挤度记为crowdu为由第u个蜉蝣的第一个拥挤度,为第u个蜉蝣的第二个拥挤度,将第u个蜉蝣的位置对应的极性记为Pau,第u个蜉蝣的位置对应的极性下三值FPRM电路的延时记为第u个蜉蝣的位置对应的极性下三值FPRM电路的面积记为其中u∈[1,2,…,Na];

首先将原始蜉蝣群中各蜉蝣按其位置对应的极性下三值FPRM电路的延时从小到大排序,得到排序后的第一个蜉蝣群,该第一个蜉蝣群中第1个蜉蝣的第一个拥挤度为其内全部蜉蝣的位置对应的极性下三值FPRM电路的延时之和,第Na个蜉蝣的第一个拥挤度也为全部蜉蝣的位置对应的极性下三值FPRM电路的延时之和,第w个蜉蝣的第一个拥挤度为第w+1个蜉蝣的位置对应的极性下三值FPRM电路的延时减去第w-1个蜉蝣的位置对应的极性下三值FPRM电路的延时之差除以第Na个蜉蝣的位置对应的极性下三值FPRM电路的延时减去第1个蜉蝣的位置对应的极性下三值FPRM电路的延时之差的商,其中w∈[2,3,…,Na-1];

然后将原始蜉蝣群中各蜉蝣按其位置对应的极性下三值FPRM电路的面积从小到大进行排序,得到排序后的第二个蜉蝣群,该第二个蜉蝣群中第1个蜉蝣的第一个拥挤度为其内全部蜉蝣的位置对应的极性下三值FPRM电路的面积之和,第Na个蜉蝣的第一个拥挤度也为全部蜉蝣的位置对应的极性下三值FPRM电路的面积之和,第w个蜉蝣的第一个拥挤度为第w+1个蜉蝣的位置对应的极性下三值FPRM电路的面积减去第w-1个蜉蝣的位置对应的极性下三值FPRM电路的面积之差除以第Na个蜉蝣的位置对应的极性下三值FPRM电路的面积减去第1个蜉蝣的位置对应的极性下三值FPRM电路的面积之差的商;

基于每个蜉蝣的第一个拥挤度和第二个拥挤度就能计算得到每个蜉蝣的拥挤度;

(5)采用多目标人工蜉蝣算法搜索三值FPRM电路面积与延时的Pareto最佳极性解集,具体过程为:

Step1、分别设定雄蜉蝣群、雌蜉蝣群、蜉蝣群和外部档案库,其中雄蜉蝣群中的个体为雄蜉蝣,雌蜉蝣群中的个体为雌蜉蝣,蜉蝣群由雄蜉蝣群和雌蜉蝣群构成,设蜉蝣群中蜉蝣数量为M,雄蜉蝣群中雄蜉蝣的数量为M/2,雌蜉蝣群中雌蜉蝣的数量为M/2,M为大于等于20且小于等于100的偶数,/为除法符号,外部档案库规模为archive_size,archive_size为大于等于5且小于等于M的整数,外部档案库中存入的雄蜉蝣和雌蜉蝣统称为蜉蝣,算法迭代总次数为Max_iteration,Max_iteration为大于等于10且小于等于20的整数;

Step2、对雄蜉蝣群进行初始化,得到第0代雄蜉蝣群,将第0代雄蜉蝣群中第k个雄蜉蝣的位置表示为 表示第0代雄蜉蝣群中第k个雄蜉蝣位置的第j位,被初始化为小于等于2且大于等于0的实数,将第0代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置记为其中将第0代雄蜉蝣群中第k个雄蜉蝣的速度表示为表示第0代雄蜉蝣群中第k个雄蜉蝣速度的第j位,被初始化为0;

将第0代雄蜉蝣群的婚礼舞蹈系数记为dance0,令dance0=5,婚礼舞蹈系数衰减参数设为dancedamp,取值为0.8,最大惯性权重为gmax,取值为1.5,最小惯性权重为gmin,取值为0.4,蜉蝣群认知系数记为c1,取值为1,雄蜉蝣认知系数为c2,取值为1.5,设置第0代雄蜉蝣群中第k个雄蜉蝣生存周期变量为为0;

设置雌蜉蝣位置反向映射规则,根据第0代雄蜉蝣群中的雄蜉蝣位置生成雌蜉蝣群中雌蜉蝣位置,得到第0代雌蜉蝣群,将第0代雌蜉蝣群中第k个雌蜉蝣的位置表示为第0代雌蜉蝣群中第k个雌蜉蝣的位置的第j位采用公式(6)计算得到:

Step3、将第0代雄蜉蝣群中每个雄蜉蝣的位置的每一位进行四舍五入操作变为整数,得到其对应的极性,通过列表技术得到第0代雄蜉蝣群中每个雄蜉蝣位置对应极性下三值FPRM逻辑表达式,按照上述步骤S1.2~步骤S1.3的方法得到第0代雄蜉蝣群中每个雄蜉蝣位置对应极性下三值FPRM电路的面积与延时;

Step4、根据极性支配规则,将第0代雄蜉蝣群中每个雄蜉蝣的位置对应的极性与其他雄蜉蝣的位置对应的极性进行比较,统计每个雄蜉蝣被其他雄蜉蝣支配的次数,按照雄蜉蝣被其他雄蜉蝣支配次数的数量确定每个雄蜉蝣的非支配级数,非支配级数从1开始递增,相邻两个非支配级数相差1,被其他雄蜉蝣支配次数最少的雄蜉蝣的非支配级数为最小级数1,雄蜉蝣被支配次数增加则其非支配级数也逐步增加,被其他雄蜉蝣支配次数最多的雄蜉蝣的非支配级数为最高级数,如果有多个雄蜉蝣被其他雄蜉蝣支配次数的数量相同,则其非支配级数也相同,将第0代雄蜉蝣群中非支配级数最低的雄蜉蝣作为蜉蝣加入外部档案库;

按照第0代雄蜉蝣群相同的方法,将第0代雌蜉蝣群中每个雌蜉蝣的位置对应的极性与其他雌蜉蝣的位置对应的极性进行比较,统计每个雌蜉蝣被其他雌蜉蝣支配的次数,按照雌蜉蝣被其他雌蜉蝣支配次数的数量确定每个雌蜉蝣的非支配级数,非支配级数从1开始递增,相邻两个非支配级数相差1,被其他雌蜉蝣支配次数最少的雌蜉蝣的非支配级数为最小级数1,雌蜉蝣被支配次数增加则其非支配级数也逐步增加,被其他雌蜉蝣支配次数最多的雌蜉蝣的非支配级数为最高级数,如果有多个雌蜉蝣被其他雌蜉蝣支配次数的数量相同,则其非支配级数也相同,将第0代雌蜉蝣群中非支配级数最低的雌蜉蝣作为蜉蝣加入外部档案库;

判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,若当前外部档案库存储的蜉蝣数量超过外部档案库规模上限archives_size,则计算当前外部档案库中所有蜉蝣的拥挤距离,从外部档案库中剔除一个拥挤距离最小的蜉蝣,当拥挤距离最小的蜉蝣存在2个以上时,随机选择一个拥挤距离最小的蜉蝣剔除,每从外部档案库中剔除一个蜉蝣,就重新判定当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,如果当前外部档案库存储的蜉蝣数量仍超过外部档案库规模上限archives_size,则再次计算当前外部档案库中蜉蝣的拥挤距离,从外部档案库中再次剔除拥挤距离最小的一个蜉蝣,直至达到外部档案库规模上限,然后从当前外部档案库中随机选取一个蜉蝣作为第0代蜉蝣群最优蜉蝣gbest0

若当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size,则不做额外操作,直接从当前外部档案库中随机选取一个蜉蝣作为第0代蜉蝣群最优蜉蝣gbest0

Step5、设定迭代次数变量t,初始化变量t,令变量t=1;

Step6、对蜉蝣群进行第t次迭代,迭代过程如下:

Step6.1、设定第t代惯性权重为gt,采用公式(7)计算得到gt

gt=gmax-(gmax-gmin)/Max_iteration*t (7)

Step6.2、设定第t代雄蜉蝣群婚礼舞蹈系数为dancet,根据公式(8)计算得到dancet

dancet=dancet-1*dancedamp (8)

Step6.3、将第t代雄蜉蝣群中第k个雄蜉蝣的速度表示为表示第t代雄蜉蝣群中第k个雄蜉蝣速度的第j位,大于vmin且小于vmax,vmin表示速度第j位的最小取值,取-0.2,vmax表示速度第j位的最大取值,取0.2,先采用随机函数在[-1,1]内生成随机值然后根据公式(9)~(11)计算得到

其中,为第t-1代雄蜉蝣群中第k个雄蜉蝣速度的第j位,e为自然对数,取2.71,β是一个固定的能见度系数,取2,rp为第t-1代雄蜉蝣群中第k个蜉蝣的位置与其自身曾经到过最好位置的距离,采用式(10)计算得到,rg为第t-1代雄蜉蝣群中第k个雄蜉蝣的位置与第t-1代蜉蝣群最优蜉蝣的位置的距离,采用式(11)计算得到,为第t-1代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置的第j位,为第t-1代蜉蝣群最优蜉蝣的位置的第j位,为第t-1代雄蜉蝣群中第k个雄蜉蝣位置的第j位,表示第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性,f(gbestt-1)为第t-1代蜉蝣群最优蜉蝣的位置所对应的极性,表示第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性支配第t-1代蜉蝣群最优蜉蝣的位置所对应的极性,表示第t-1代蜉蝣群最优蜉蝣的位置所对应的极性支配第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性或两者互不支配,为平方根运算符,∑为累加运算符,为第t-1代蜉蝣群中最优蜉蝣位置的第j位;

判断计算得到的是否大于0.2以及是否小于0,若大于0.2,则令等于0.2,若小于0,则令等于0,否则保持不变;

Step6.4、令第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置等于第t-1代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置,第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置记为为第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置的第j位,计算公式如下:

令第t代蜉蝣群的最优蜉蝣gbestt的位置等于第t-1代蜉蝣群的最优蜉蝣gbestt-1的位置,第t代蜉蝣群的最优蜉蝣gbestt的位置的第j位记为公式如下:

Step6.5、将第t代雄蜉蝣群中第k个雄蜉蝣的位置表示为表示第t代雄蜉蝣群中第k个雄蜉蝣位置的第j位,为小于等于2且大于等于0的实数,采用公式(14)计算得到

在计算得到后,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

Step6.6、将第t代雌蜉蝣群中第k个雌蜉蝣的位置表示为其中表示第t代雌蜉蝣群中第k个雌蜉蝣位置的第j位,为小于等于2大于等于0的实数,采用公式(15)计算得到

Step6.7、将第t代雄蜉蝣中每个雄蜉蝣的位置的每一位均进行四舍五入操作变为整数,得到其对应的极性,并得到第t代雄蜉蝣中每个雄蜉蝣的位置对应极性下的三值FPRM表达式,按照上述步骤S1.2~步骤S1.3的方法得到第t代雄蜉蝣群对应的每个极性下三值FPRM电路的面积与延时;

将第t代雄蜉蝣群中第k个雄蜉蝣位置对应的极性与第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置对应的极性进行比较,若第t代雄蜉蝣群中第k个雄蜉蝣的位置对应的极性支配第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置对应的极性,则将第t代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置更新为等于第t代雄蜉蝣群中第k个雄蜉蝣的位置,否则第t代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置保持不变;

将第t代雄蜉蝣群中第1个雄蜉蝣至第M/2个雄蜉蝣的位置对应的极性依次与第t代蜉蝣群最优蜉蝣的位置对应的极性比较,若第t代雄蜉蝣群中第k个雄蜉蝣的位置对应的极性支配第t代蜉蝣群最优蜉蝣的位置对应的极性,则将第t代蜉蝣群最优蜉蝣更新为第t代雄蜉蝣群中第k个雄蜉蝣,否则第t代蜉蝣群最优蜉蝣保持不变,每次比较时第t代蜉蝣群最优蜉蝣均为当前最新的第t代蜉蝣群最优蜉蝣;

将第t代雌蜉蝣群中每个雌蜉蝣位置的每一位分别进行四舍五入操作变为整数,得到其对应的极性,并得到第t代雌蜉蝣中每个雌蜉蝣的位置对应极性下的三值FPRM表达式,按照上述步骤S1.2~步骤S1.3的方法得到第t代雌蜉蝣群对应的每个极性下三值FPRM电路的面积与延时;

将第t代雌蜉蝣群中第1个雌蜉蝣至第M/2个雌蜉蝣的的位置对应的极性依次与第t代蜉蝣群最优蜉蝣所代表极性比较,若第t代雌蜉蝣群中第k个雌蜉蝣位置对应的极性支配第t代蜉蝣群最优蜉蝣位置对应的极性,则将第t代蜉蝣群最优蜉蝣更新为第t代雌蜉蝣群中第k个雌蜉蝣,否则第t代蜉蝣群最优蜉蝣保持不变,每次比较时第t代蜉蝣群最优蜉蝣均为当前最新的第t代蜉蝣群最优蜉蝣;

Step6.8、根据极性支配规则,将第t代雄蜉蝣群中每个雄蜉蝣的位置对应的极性与其他雄蜉蝣的位置对应的极性进行比较,统计每个雄蜉蝣被其他雄蜉蝣支配的次数,按照雄蜉蝣被其他雄蜉蝣支配次数的数量确定每个雄蜉蝣的非支配级数,被其他雄蜉蝣支配次数最少的雄蜉蝣的非支配级数为最小级数1,雄蜉蝣被支配次数增加其非支配级数也逐步增加,被其他雄蜉蝣支配次数最多的雄蜉蝣的非支配级数为最高级数,如果有多个雄蜉蝣被其他雄蜉蝣支配次数的数量相同,则其非支配级数也相同;将雄蜉蝣群中非支配级数最低的雄蜉蝣加入外部档案库;将雌蜉蝣群中每个雌蜉蝣的位置对应的极性与其他雌蜉蝣的位置对应的极性进行比较,统计每个雌蜉蝣被其他雌蜉蝣支配的次数,按照雌蜉蝣被其他雌蜉蝣支配次数的数量确定每个雌蜉蝣的非支配级数,被其他雌蜉蝣支配次数最少的雌蜉蝣的非支配级数为最小级数1,雌蜉蝣被支配次数增加其非支配级数也逐步增加,被其他雌蜉蝣支配次数最多的雌蜉蝣的非支配级数为最高级数,如果有多个雌蜉蝣被其他雌蜉蝣支配次数的数量相同,则其非支配级数也相同,将雌蜉蝣群中非支配级数最低的雌蜉蝣加入外部档案库;

Step6.9、根据非支配级数从低到高对第t代雄蜉蝣群中的雄蜉蝣进行排序,根据非支配级数从低到高对第t代雌蜉蝣群中的雌蜉蝣进行排序,将第t代雄蜉蝣群中的第k个雄蜉蝣与第t代雌蜉蝣群中的第k个雌蜉蝣进行交配生成第t代子代蜉蝣群,第t代子代蜉蝣群由雄性子代蜉蝣和雌性子代蜉蝣构成,根据公式(16)得到第t代子代蜉蝣中第k个雄性子代蜉蝣的位置表示第t代子代蜉蝣群中第k个雄性子代蜉蝣位置的第j位,根据公式(17)得到第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置表示第t代子代蜉蝣中第k个雌性子代蜉蝣位置的第j位,具体交配过程如下:

Step6.9.1、在[-1,1]内生成随机值

Step6.9.2、采用公式(16)得到第t代子代蜉蝣中第k个雄性子代蜉蝣的位置;

Step6.9.3、采用公式(17)得到第t代子代蜉蝣中第k个雌性子代蜉蝣的位置;

在计算结束后,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

设置第t代子代蜉蝣群中第k个雄性子代蜉蝣的速度为0,生存周期为0,将第t代子代蜉蝣中第k个雄性子代蜉蝣的位置的每一位分别进行四舍五入操作变为整数,得到其对应的极性,并得到该极性下三值FPRM电路的面积与延时;

将第t代子代蜉蝣群中第1个雄性子代蜉蝣的位置至第M/2个雄性子代蜉蝣的位置所对应的极性依次与第t代蜉蝣群最优蜉蝣的位置所对应的极性进行比较,若第t代子代蜉蝣群中第k个雄性子代蜉蝣的位置所对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将第t代子代蜉蝣群中第k个雄性子代蜉蝣作为蜉蝣加入外部档案库,并将第t代蜉蝣群最优蜉蝣更新为第t代子代蜉蝣群中第k个雄性子代蜉蝣,否则不作任何处理;

将第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置的每一位进行四舍五入操作变为整数,得到其对应的极性,并得到该极性下三值FPRM面积与延时;

将第t代子代蜉蝣群中第1个雌性子代蜉蝣的位置至第M/2个雌性子代蜉蝣的位置所对应的极性依次与第t代蜉蝣群最优蜉蝣的位置所对应的极性进行比较,若第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置所对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将第t代子代蜉蝣群中第k个雌性子代蜉蝣作为蜉蝣加入外部档案库,并将第t代蜉蝣群最优蜉蝣更新为第t代子代蜉蝣群中第k个雌性子代蜉蝣,否则不作任何处理;

将第t代子代蜉蝣群中所有雄性子代蜉蝣作为雄蜉蝣加入第t代雄蜉蝣群,将第t代子代蜉蝣中所有雌性子代蜉蝣作为雌蜉蝣加入第t代雌蜉蝣群;

Step6.10、计算当前第t代雄蜉蝣群中每个雄蜉蝣的非支配级数,判定是否存在支配级数大于5的雄蜉蝣,如果不存在,则保持各雄蜉蝣当前支配级数不变,如果存在,则将所有非支配级数大于5的雄蜉蝣的非支配级数变为5,由此当前非支配级数至多为{1,2,3,4,5}五种,分别判断每种非支配级数的雄蜉蝣数量是否大于为向下取整符号,如果某种非支配级数的雄蜉蝣数量大于则按拥挤度计算规则计算当前第t代雄蜉蝣群中该种非支配级数的所有雄蜉蝣的拥挤度,抽取拥挤度最大的个雄蜉蝣,抽取时若存在要从两个或两个以上雄蜉蝣拥挤度相同的雄蜉蝣中进行抽取的情况,则随机抽取所需数量,如果小于或者等于则抽取该非支配级数的全部雄蜉蝣;

判断当前抽取的所有雄蜉蝣的数量是否等于M/2,如果等于M/2,则采用抽取的所有雄蜉蝣构成一个新的雄蜉蝣群,如果小于M/2,则从未抽取雄蜉蝣中随机抽取相应数量的雄蜉蝣,使抽取的雄蜉蝣群的数量等于M/2后,采用此时抽取的所有雄蜉蝣构成一个新的雄蜉蝣群,将该新的雄蜉蝣群作为当前得到的第t代雄蜉蝣群;

Step6.11、计算当前第t代雌蜉蝣群中雌蜉蝣的非支配级数,判定是否存在支配级数大于5的雄蜉蝣,如果不存在,则保持各雄蜉蝣当前支配级数不变,如果存在,则将所有非支配级数大于5的雌蜉蝣非支配级数变为5,由此当前非支配级数至多为{1,2,3,4,5}五种,判断每种非支配级数的雌蜉蝣数量大于是否大于如果某种非支配级数的雌蜉蝣数量大于则按拥挤度计算规则计算雌蜉蝣群中该种非支配级数的所有雌蜉蝣的拥挤度,抽取拥挤度最大的个雌蜉蝣,抽取时若存在要从两个或者两个以上雌蜉蝣拥挤度相同的雌蜉蝣中进行抽取的情况,则随机抽取所需数量,如果小于或者等于则抽取该非支配级数的全部雌蜉蝣;

判断当前抽取的所有雌蜉蝣的数量是否等于M/2,如果等于M/2,则采用抽取的所有雌蜉蝣构成一个新的雌蜉蝣群,如果小于M/2,则从未抽取雌蜉蝣中随机抽取相应数量的雌蜉蝣,使抽取的雌蜉蝣群的数量等于M/2后,采用此时抽取的所有雌蜉蝣构成一个新的雌蜉蝣群,将该新的雌蜉蝣群作为当前得到的第t代雌蜉蝣群,当前得到的第t代雌蜉蝣群即为最终得到的第t代雌蜉蝣群;

Step6.12、将第t代雄蜉蝣群中每个雄蜉蝣的生存周期加1,将第t代雄蜉蝣群中所有雄蜉蝣根据非支配级数从小到大排序,若此时第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中不存在生存周期超过4的雄蜉蝣,则不作任何处理,直接进入步骤Step6.14,若此时第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中存在H个生存周期超过4的雄蜉蝣,H为大于等于1的整数,则从外部档案库中随机选取H个蜉蝣,设选出的蜉蝣别称为人工蜉蝣;采用当前选取的H个人工蜉蝣构成一个人工蜉蝣群,将该人工蜉蝣群中第h个人工蜉蝣的当前进化次数设为0,h=1,2,…,H,该人工蜉蝣群中第h个人工蜉蝣为第0代进化的第h个人工蜉蝣,将第0代进化的第h个人工蜉蝣的位置记为为第0代进化的第h个人工蜉蝣的位置的第j位,第0代进化的第h个人工蜉蝣的速度记为速度为第0代进化的第h个人工蜉蝣的速度的第j位,将第0代进化的第h个人工蜉蝣的速度的每一位均重置为0,第0代进化的第h个人工蜉蝣曾到过的最好位置记为为第0代进化的第h个人工蜉蝣曾到过的最好位置的第j位,将第0次进化的第h个人工蜉蝣曾到过的最好位置重置为等于第0次进化的第h个人工蜉蝣的位置;对当前人工蜉蝣群中H个第0代进化的人工蜉蝣分别进行q次进化,具体进化过程如下:

Step6.12.1、在[0,1]内生成随机数根据公式(18)计算进化总次数q,根据进化公式进行进化。:

其中为向上取整运算符;

Step6.12.2、设定进化次数变量b,初始化b,令b=1;

Step6.12.3、对第b-1进化的第h个人工蜉蝣进行第b次迭代进化,得到第b次进化的第h个人工蜉蝣,迭代进化过程如下:

Step6.12.3.1、在[-1,1]内生成随机值

Step6.12.3.2、令第b次进化的人工蜉蝣曾到过的最好位置等于第b-1次进化的人工蜉蝣曾到过的最好位置;

Step6.12.3.3、采用公式(19)和(20)分别计算第b次进化的第h个人工蜉蝣的位置和速度分别进行改变,公式如下:

其中,表示第b-1次进化的第h个人工蜉蝣的位置,为第b-1次进化的第h个人工蜉蝣位置的第j位,表示第b-1次进化的第h个人工蜉蝣的位置所对应的极性,表示第b-1次进化的第h个人工蜉蝣的位置所对应的极性支配第t-1代蜉蝣群最优蜉蝣所对应的极性,表示第t代蜉蝣群最优蜉蝣所对应的极性支配第b-1次进化的第h个人工蜉蝣的位置所对应的极性或两者互不支配,为第b次进化的第h个人工蜉蝣速度的第j位,为第b-1次进化的第h个人工蜉蝣曾经到达过的最好位置的第j位;为第b次进化的第h个人工蜉蝣的位置的第j位,为第b-1次进化的第h个人工蜉蝣的速度的第j位;

在计算结束后,若大于0.2,则令等于0.2,若小于0,则令等于0,否则人保持不变,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

Step6.12.3.4、若第b次进化的第h个人工蜉蝣的位置所对应的极性支配第b-1次进化的第h个人工蜉蝣曾经到达过的最好位置所对应的极性,则令第b次进化的第h个人工蜉蝣曾经到达过的最好位置等于第b次进化的第h个人工蜉蝣位置,否则第b次进化的第h个人工蜉蝣曾经到达过的最好位置保持不变;

Step6.12.3.5、判断b的当前值是否等于q,如果等于,则转到步骤Step6.13,如果不等于,则采用b的当前值加1的和更新b的值,再转到Step6.12.3,进行下一次进化;

Step6.13、设置当前人工蜉蝣群中人工蜉蝣的生命周期为0,将当前人工蜉蝣群中每个人工蜉蝣的位置的每一位分别进行四舍五入操作变为整数,得到对应极性,并得到每个人工蜉蝣的位置对应的极性下三值FPRM面积与延时,若某个人工蜉蝣的位置对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将该人工蜉蝣作为蜉蝣加入外部档案库,将当前第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中H个生存周期超过4的雄蜉蝣剔除,然后将当前人工蜉蝣群中的所有人工蜉蝣作为雄蜉蝣加入雄蜉蝣群,清除人工蜉蝣群;

Step6.14、根据极性支配规则,将当前外部档案库中每个蜉蝣的位置对应的极性与当前外部档案库中其他蜉蝣的位置对应的极性进行比较,统计每个蜉蝣被其他蜉蝣支配的次数,按照蜉蝣被其他蜉蝣支配次数的数量确定每个蜉蝣的非支配级数,被其他蜉蝣支配次数最少的蜉蝣的非支配级数为最小级数1,蜉蝣被支配次数增加其非支配级数也逐步增加,被其他蜉蝣支配次数最多的蜉蝣的非支配级数为最高级数,如果有多个蜉蝣被其他蜉蝣支配次数的数量相同,则其非支配级数也相同;将当前外部档案库中非支配级数最低的蜉蝣保留,其他剔除;

Step6.15、判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,若当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size,则不进行操作,否则计算当前外部档案库中蜉蝣的拥挤距离,先将拥挤距离最小的任意一个蜉蝣删除,;然后再次判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,如果未超过,则结束操作,如果超过,则再次计算当前外部档案库中蜉蝣的拥挤距离,将拥挤距离最小的任意一个蜉蝣删除,直至当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size;

Step6.16、从当前外部档案库中随机选取一个蜉蝣作为第t代蜉蝣群最优蜉蝣gbestt。;

Step7、判断t的当前值是否等于Max_iteration,若等于,则此时外部档案库存储的蜉蝣的位置对应的极性集合即为满足三值FPRM电路面积与延时Pareto关系的最佳极性集合,优化结束,输出结果;若不等于,则采用t的当前值加1的和更新t的取值,返回步骤Step6,进行下一次迭代。

与现有技术相比,本发明的优点在于通过在多目标人工蜉蝣算法(Multi-objective artificial mayfly algorithm,MOAMA算法)中引入反向映射机制,更改雌蜉蝣位置公式为反向映射雄蜉蝣位置,有效激发个体活性,并设置人工蜉蝣替换雄蜉蝣群中的失效个体,增加种群进化速度,然后结合三值FPRM表达式、极性转换技术和MOAMA算法,寻找三值FPRM电路较优极性,全局寻优能力和局部搜索能力强,可以在较少的迭代次数中寻找到较优极性,收敛速度快,优化效果较好,通过对10个MCNC Benchmark电路进行仿真实验,将MOAMA算法与MODPSO算法和MODCPSO算法进行实验比较,本发明方法具有明显的有效性和可靠性。

附图说明

图1为本发明的基于MOAMA算法的三值FPRM电路面积与延时优化方法与现有的两种方法对电路进行优化时的面积进化曲线对比图;

图2为本发明的基于MOAMA算法的三值FPRM电路面积与延时优化方法与现有的两种方法对电路进行优化时的延时进化曲线对比图。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。

实施例:一种基于MOAMA算法的三值FPRM电路面积与延时优化方法,包括括以下步骤:

(1)建立p极性下三值FPRM电路面积估算模型和延时估算模型:

S1.1、将p极性下三值FPRM电路用三值FPRM逻辑表达式表示为:

其中,n为函数fp(xn-1,xn-2,…,x0)输入变量的个数,p极性用n位三进制表示为pn- 1pn-2…p0,pj∈{0,1,2},j=0,1,2,…,n-1,xn-1,xn-2,…,x0为函数fp(xn-1,xn-2,…,x0)的n个输入变量,运算符为模3加运算,ai为三值FPRM逻辑表达式的第i个与项系数,ai∈{0,1,2},i为与项序数,i=0,1,2,…,3n-1,*为乘运算符,∏为模3乘运算符,ij∈{0,1,2},的值由极性p的第j位pj决定,当pj为0时,当pj为1时,当pj为2时, 为三进制加运算;

S1.2、p极性下三值FPRM电路用三值FPRM逻辑表达式由多输入模3加项和多输入模3乘项组成,将多输入模3加项看作多输入模3加门,多输入模3乘项看作多输入模3乘门,首先采用类Huffman算法将p极性下三值FPRM电路用三值FPRM逻辑表达式内所有多输入模3乘门分解为多个二输入模3乘门,多输入模3加门分解为多个二输入模3加门,得到分解后的逻辑表达式,将分解后的逻辑表达式中二输入模3乘门数量记为Area_Mod_3M,二输入模3加门的数量记为Area_Mod_3A,将分解后的逻辑表达式中从输入变量到输出信号经过二输入模3乘门和二输入模3加门的数量最多的路径作为关键路径,将该关键路径上包含的二输入模3乘门和二输入模3加门的数量和记为num(Mod_3);

S1.3、将p极性下三值FPRM电路的面积记为area(p),延时记为delay(p),将p极性下三值FPRM电路的面积估算模型用式(2)表示,延时估算模型用(3)表示:

area(p)=Area_Mod_3M+Area_Mod_3A (2)

delay(p)=num(Mod_3) (3)

(2)将多目标人工蜉蝣算法与三值FPRM电路面积与延时优化进行关联:将三值FPRM电路的极性对应为多目标人工蜉蝣算法中蜉蝣的位置,三值FPRM电路可选择极性的空间对应为多目标人工蜉蝣算法中蜉蝣的搜索空间;

(3)设置极性支配规则:设蜉蝣群中任意两个蜉蝣位置对应的极性分别为P1和P2,设置两个判定条件,如式(4)和(5)所示:

P1area≤P2area&&P1delay≤P2delay (4)

P1area<P2area||P1delay<P2delay (5)

其中P1area表示P1极性下三值FPRM电路的面积,P1delay表示P1极性下三值FPRM电路的延时,P2area表示P2极性下三值FPRM电路的面积,P2delay表示P2极性下三值FPRM电路的延时,符号&&表示当符号&&左右两个公式同时满足时判定条件成立,符号||表示当符号||左右两个公式有任何一个满足时判定条件成立,若P1极性和P2极性同时满足判定条件(4)和(5),则认为极性P1支配极性P2,记作P1>P2,此时极性P1对应的蜉蝣支配极性P2对应的蜉蝣;若极性P1和极性P2只满足判定条件(4),则P1极性和P2极性互不支配;若极性P1和极性P2只满足判定条件(5),则P1极性和P2极性互不支配;若P1极性和P2极性既不满足判定条件(4),也不满足判定条件(5),则P1极性与P2极性互不支配或P2极性支配P1极性;

(4)设置拥挤度计算规则:设需要计算拥挤度的蜉蝣群中蜉蝣个数为Na,Na为大于等于1的整数,将该需要计算拥挤度的蜉蝣群作为原始蜉蝣群,将该原始蜉蝣群中第u个蜉蝣的拥挤度记为crowdu为由第u个蜉蝣的第一个拥挤度,为第u个蜉蝣的第二个拥挤度,将第u个蜉蝣的位置对应的极性记为Pau,第u个蜉蝣的位置对应的极性下三值FPRM电路的延时记为第u个蜉蝣的位置对应的极性下三值FPRM电路的面积记为其中u∈[1,2,…,Na];

首先将原始蜉蝣群中各蜉蝣按其位置对应的极性下三值FPRM电路的延时从小到大排序,得到排序后的第一个蜉蝣群,该第一个蜉蝣群中第1个蜉蝣的第一个拥挤度为其内全部蜉蝣的位置对应的极性下三值FPRM电路的延时之和,第Na个蜉蝣的第一个拥挤度也为全部蜉蝣的位置对应的极性下三值FPRM电路的延时之和,第w个蜉蝣的第一个拥挤度为第w+1个蜉蝣的位置对应的极性下三值FPRM电路的延时减去第w-1个蜉蝣的位置对应的极性下三值FPRM电路的延时之差除以第Na个蜉蝣的位置对应的极性下三值FPRM电路的延时减去第1个蜉蝣的位置对应的极性下三值FPRM电路的延时之差的商,其中w∈[2,3,…,Na-1];

然后将原始蜉蝣群中各蜉蝣按其位置对应的极性下三值FPRM电路的面积从小到大进行排序,得到排序后的第二个蜉蝣群,该第二个蜉蝣群中第1个蜉蝣的第一个拥挤度为其内全部蜉蝣的位置对应的极性下三值FPRM电路的面积之和,第Na个蜉蝣的第一个拥挤度也为全部蜉蝣的位置对应的极性下三值FPRM电路的面积之和,第w个蜉蝣的第一个拥挤度为第w+1个蜉蝣的位置对应的极性下三值FPRM电路的面积减去第w-1个蜉蝣的位置对应的极性下三值FPRM电路的面积之差除以第Na个蜉蝣的位置对应的极性下三值FPRM电路的面积减去第1个蜉蝣的位置对应的极性下三值FPRM电路的面积之差的商;

基于每个蜉蝣的第一个拥挤度和第二个拥挤度就能计算得到每个蜉蝣的拥挤度;

(5)采用多目标人工蜉蝣算法搜索三值FPRM电路面积与延时的Pareto最佳极性解集,具体过程为:

Step1、分别设定雄蜉蝣群、雌蜉蝣群、蜉蝣群和外部档案库,其中雄蜉蝣群中的个体为雄蜉蝣,雌蜉蝣群中的个体为雌蜉蝣,蜉蝣群由雄蜉蝣群和雌蜉蝣群构成,设蜉蝣群中蜉蝣数量为M,雄蜉蝣群中雄蜉蝣的数量为M/2,雌蜉蝣群中雌蜉蝣的数量为M/2,M为大于等于20且小于等于100的偶数,/为除法符号,外部档案库规模为archive_size,archive_size为大于等于5且小于等于M的整数,外部档案库中存入的雄蜉蝣和雌蜉蝣统称为蜉蝣,算法迭代总次数为Max_iteration,Max_iteration为大于等于10且小于等于20的整数;

Step2、对雄蜉蝣群进行初始化,得到第0代雄蜉蝣群,将第0代雄蜉蝣群中第k个雄蜉蝣的位置表示为 表示第0代雄蜉蝣群中第k个雄蜉蝣位置的第j位,被初始化为小于等于2且大于等于0的实数,将第0代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置记为其中将第0代雄蜉蝣群中第k个雄蜉蝣的速度表示为 表示第0代雄蜉蝣群中第k个雄蜉蝣速度的第j位,被初始化为0;

将第0代雄蜉蝣群的婚礼舞蹈系数记为dance0,令dance0=5,婚礼舞蹈系数衰减参数设为dancedamp,取值为0.8,最大惯性权重为gmax,取值为1.5,最小惯性权重为gmin,取值为0.4,蜉蝣群认知系数记为c1,取值为1,雄蜉蝣认知系数为c2,取值为1.5,设置第0代雄蜉蝣群中第k个雄蜉蝣生存周期变量为为0;

设置雌蜉蝣位置反向映射规则,根据第0代雄蜉蝣群中的雄蜉蝣位置生成雌蜉蝣群中雌蜉蝣位置,得到第0代雌蜉蝣群,将第0代雌蜉蝣群中第k个雌蜉蝣的位置表示为第0代雌蜉蝣群中第k个雌蜉蝣的位置的第j位采用公式(6)计算得到:

Step3、将第0代雄蜉蝣群中每个雄蜉蝣的位置的每一位进行四舍五入操作变为整数,得到其对应的极性,通过列表技术得到第0代雄蜉蝣群中每个雄蜉蝣位置对应极性下三值FPRM逻辑表达式,按照上述步骤S1.2~步骤S1.3的方法得到第0代雄蜉蝣群中每个雄蜉蝣位置对应极性下三值FPRM电路的面积与延时;

Step4、根据极性支配规则,将第0代雄蜉蝣群中每个雄蜉蝣的位置对应的极性与其他雄蜉蝣的位置对应的极性进行比较,统计每个雄蜉蝣被其他雄蜉蝣支配的次数,按照雄蜉蝣被其他雄蜉蝣支配次数的数量确定每个雄蜉蝣的非支配级数,非支配级数从1开始递增,相邻两个非支配级数相差1,被其他雄蜉蝣支配次数最少的雄蜉蝣的非支配级数为最小级数1,雄蜉蝣被支配次数增加则其非支配级数也逐步增加,被其他雄蜉蝣支配次数最多的雄蜉蝣的非支配级数为最高级数,如果有多个雄蜉蝣被其他雄蜉蝣支配次数的数量相同,则其非支配级数也相同,将第0代雄蜉蝣群中非支配级数最低的雄蜉蝣作为蜉蝣加入外部档案库;

按照第0代雄蜉蝣群相同的方法,将第0代雌蜉蝣群中每个雌蜉蝣的位置对应的极性与其他雌蜉蝣的位置对应的极性进行比较,统计每个雌蜉蝣被其他雌蜉蝣支配的次数,按照雌蜉蝣被其他雌蜉蝣支配次数的数量确定每个雌蜉蝣的非支配级数,非支配级数从1开始递增,相邻两个非支配级数相差1,被其他雌蜉蝣支配次数最少的雌蜉蝣的非支配级数为最小级数1,雌蜉蝣被支配次数增加则其非支配级数也逐步增加,被其他雌蜉蝣支配次数最多的雌蜉蝣的非支配级数为最高级数,如果有多个雌蜉蝣被其他雌蜉蝣支配次数的数量相同,则其非支配级数也相同,将第0代雌蜉蝣群中非支配级数最低的雌蜉蝣作为蜉蝣加入外部档案库;

判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,若当前外部档案库存储的蜉蝣数量超过外部档案库规模上限archives_size,则计算当前外部档案库中所有蜉蝣的拥挤距离,从外部档案库中剔除一个拥挤距离最小的蜉蝣,当拥挤距离最小的蜉蝣存在2个以上时,随机选择一个拥挤距离最小的蜉蝣剔除,每从外部档案库中剔除一个蜉蝣,就重新判定当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,如果当前外部档案库存储的蜉蝣数量仍超过外部档案库规模上限archives_size,则再次计算当前外部档案库中蜉蝣的拥挤距离,从外部档案库中再次剔除拥挤距离最小的一个蜉蝣,直至达到外部档案库规模上限,然后从当前外部档案库中随机选取一个蜉蝣作为第0代蜉蝣群最优蜉蝣gbest0

若当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size,则不做额外操作,直接从当前外部档案库中随机选取一个蜉蝣作为第0代蜉蝣群最优蜉蝣gbest0

Step5、设定迭代次数变量t,初始化变量t,令变量t=1;

Step6、对蜉蝣群进行第t次迭代,迭代过程如下:

Step6.1、设定第t代惯性权重为gt,采用公式(7)计算得到gt

gt=gmax-(gmax-gmin)/Max_iteration*t (7)

Step6.2、设定第t代雄蜉蝣群婚礼舞蹈系数为dancet,根据公式(8)计算得到dancet

dancet=dancet-1*dancedamp (8)

Step6.3、将第t代雄蜉蝣群中第k个雄蜉蝣的速度表示为 表示第t代雄蜉蝣群中第k个雄蜉蝣速度的第j位,大于vmin且小于vmax,vmin表示速度第j位的最小取值,取-0.2,vmax表示速度第j位的最大取值,取0.2,先采用随机函数在[-1,1]内生成随机值然后根据公式(9)~(11)计算得到

其中,为第t-1代雄蜉蝣群中第k个雄蜉蝣速度的第j位,e为自然对数,取2.71,β是一个固定的能见度系数,取2,rp为第t-1代雄蜉蝣群中第k个蜉蝣的位置与其自身曾经到过最好位置的距离,采用式(10)计算得到,rg为第t-1代雄蜉蝣群中第k个雄蜉蝣的位置与第t-1代蜉蝣群最优蜉蝣的位置的距离,采用式(11)计算得到,为第t-1代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置的第j位,为第t-1代蜉蝣群最优蜉蝣的位置的第j位,为第t-1代雄蜉蝣群中第k个雄蜉蝣位置的第j位,表示第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性,f(gbestt-1)为第t-1代蜉蝣群最优蜉蝣的位置所对应的极性,表示第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性支配第t-1代蜉蝣群最优蜉蝣的位置所对应的极性,表示第t-1代蜉蝣群最优蜉蝣的位置所对应的极性支配第t-1代雄蜉蝣群中第k个雄蜉蝣的位置所对应的极性或两者互不支配,为平方根运算符,∑为累加运算符,为第t-1代蜉蝣群中最优蜉蝣位置的第j位;

判断计算得到的是否大于0.2以及是否小于0,若大于0.2,则令等于0.2,若小于0,则令等于0,否则保持不变;

Step6.4、令第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置等于第t-1代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置,第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置记为为第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置的第j位,计算公式如下:

令第t代蜉蝣群的最优蜉蝣gbestt的位置等于第t-1代蜉蝣群的最优蜉蝣gbestt-1的位置,第t代蜉蝣群的最优蜉蝣gbestt的位置的第j位记为公式如下:

Step6.5、将第t代雄蜉蝣群中第k个雄蜉蝣的位置表示为表示第t代雄蜉蝣群中第k个雄蜉蝣位置的第j位,为小于等于2且大于等于0的实数,采用公式(14)计算得到

在计算得到后,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

Step6.6、将第t代雌蜉蝣群中第k个雌蜉蝣的位置表示为其中表示第t代雌蜉蝣群中第k个雌蜉蝣位置的第j位,为小于等于2大于等于0的实数,采用公式(15)计算得到

Step6.7、将第t代雄蜉蝣中每个雄蜉蝣的位置的每一位均进行四舍五入操作变为整数,得到其对应的极性,并得到第t代雄蜉蝣中每个雄蜉蝣的位置对应极性下的三值FPRM表达式,按照上述步骤S1.2~步骤S1.3的方法得到第t代雄蜉蝣群对应的每个极性下三值FPRM电路的面积与延时;

将第t代雄蜉蝣群中第k个雄蜉蝣位置对应的极性与第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置对应的极性进行比较,若第t代雄蜉蝣群中第k个雄蜉蝣的位置对应的极性支配第t代雄蜉蝣群中第k个雄蜉蝣曾经到达过的最好位置对应的极性,则将第t代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置更新为等于第t代雄蜉蝣群中第k个雄蜉蝣的位置,否则第t代雄蜉蝣群中第k个雄蜉蝣曾到达过的最好位置保持不变;

将第t代雄蜉蝣群中第1个雄蜉蝣至第M/2个雄蜉蝣的位置对应的极性依次与第t代蜉蝣群最优蜉蝣的位置对应的极性比较,若第t代雄蜉蝣群中第k个雄蜉蝣的位置对应的极性支配第t代蜉蝣群最优蜉蝣的位置对应的极性,则将第t代蜉蝣群最优蜉蝣更新为第t代雄蜉蝣群中第k个雄蜉蝣,否则第t代蜉蝣群最优蜉蝣保持不变,每次比较时第t代蜉蝣群最优蜉蝣均为当前最新的第t代蜉蝣群最优蜉蝣;

将第t代雌蜉蝣群中每个雌蜉蝣位置的每一位分别进行四舍五入操作变为整数,得到其对应的极性,并得到第t代雌蜉蝣中每个雌蜉蝣的位置对应极性下的三值FPRM表达式,按照上述步骤S1.2~步骤S1.3的方法得到第t代雌蜉蝣群对应的每个极性下三值FPRM电路的面积与延时;

将第t代雌蜉蝣群中第1个雌蜉蝣至第M/2个雌蜉蝣的的位置对应的极性依次与第t代蜉蝣群最优蜉蝣所代表极性比较,若第t代雌蜉蝣群中第k个雌蜉蝣位置对应的极性支配第t代蜉蝣群最优蜉蝣位置对应的极性,则将第t代蜉蝣群最优蜉蝣更新为第t代雌蜉蝣群中第k个雌蜉蝣,否则第t代蜉蝣群最优蜉蝣保持不变,每次比较时第t代蜉蝣群最优蜉蝣均为当前最新的第t代蜉蝣群最优蜉蝣;

Step6.8、根据极性支配规则,将第t代雄蜉蝣群中每个雄蜉蝣的位置对应的极性与其他雄蜉蝣的位置对应的极性进行比较,统计每个雄蜉蝣被其他雄蜉蝣支配的次数,按照雄蜉蝣被其他雄蜉蝣支配次数的数量确定每个雄蜉蝣的非支配级数,被其他雄蜉蝣支配次数最少的雄蜉蝣的非支配级数为最小级数1,雄蜉蝣被支配次数增加其非支配级数也逐步增加,被其他雄蜉蝣支配次数最多的雄蜉蝣的非支配级数为最高级数,如果有多个雄蜉蝣被其他雄蜉蝣支配次数的数量相同,则其非支配级数也相同;将雄蜉蝣群中非支配级数最低的雄蜉蝣加入外部档案库;将雌蜉蝣群中每个雌蜉蝣的位置对应的极性与其他雌蜉蝣的位置对应的极性进行比较,统计每个雌蜉蝣被其他雌蜉蝣支配的次数,按照雌蜉蝣被其他雌蜉蝣支配次数的数量确定每个雌蜉蝣的非支配级数,被其他雌蜉蝣支配次数最少的雌蜉蝣的非支配级数为最小级数1,雌蜉蝣被支配次数增加其非支配级数也逐步增加,被其他雌蜉蝣支配次数最多的雌蜉蝣的非支配级数为最高级数,如果有多个雌蜉蝣被其他雌蜉蝣支配次数的数量相同,则其非支配级数也相同,将雌蜉蝣群中非支配级数最低的雌蜉蝣加入外部档案库;

Step6.9、根据非支配级数从低到高对第t代雄蜉蝣群中的雄蜉蝣进行排序,根据非支配级数从低到高对第t代雌蜉蝣群中的雌蜉蝣进行排序,将第t代雄蜉蝣群中的第k个雄蜉蝣与第t代雌蜉蝣群中的第k个雌蜉蝣进行交配生成第t代子代蜉蝣群,第t代子代蜉蝣群由雄性子代蜉蝣和雌性子代蜉蝣构成,根据公式(16)得到第t代子代蜉蝣中第k个雄性子代蜉蝣的位置表示第t代子代蜉蝣群中第t个雄性子代蜉蝣位置的第j位,根据公式(17)得到第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置表示第t代子代蜉蝣中第k个雌性子代蜉蝣位置的第j位,具体交配过程如下:

Step6.9.1、在[-1,1]内生成随机值

Step6.9.2、采用公式(16)得到第t代子代蜉蝣中第k个雄性子代蜉蝣的位置;

Step6.9.3、采用公式(17)得到第t代子代蜉蝣中第k个雌性子代蜉蝣的位置;

在计算结束后,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

设置第t代子代蜉蝣群中第k个雄性子代蜉蝣的速度为0,生存周期为0,将第t代子代蜉蝣中第k个雄性子代蜉蝣的位置的每一位分别进行四舍五入操作变为整数,得到其对应的极性,并得到该极性下三值FPRM电路的面积与延时;

将第t代子代蜉蝣群中第1个雄性子代蜉蝣的位置至第M/2个雄性子代蜉蝣的位置所对应的极性依次与第t代蜉蝣群最优蜉蝣的位置所对应的极性进行比较,若第t代子代蜉蝣群中第k个雄性子代蜉蝣的位置所对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将第t代子代蜉蝣群中第k个雄性子代蜉蝣作为蜉蝣加入外部档案库,并将第t代蜉蝣群最优蜉蝣更新为第t代子代蜉蝣群中第k个雄性子代蜉蝣,否则不作任何处理;

将第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置的每一位进行四舍五入操作变为整数,得到其对应的极性,并得到该极性下三值FPRM面积与延时;

将第t代子代蜉蝣群中第1个雌性子代蜉蝣的位置至第M/2个雌性子代蜉蝣的位置所对应的极性依次与第t代蜉蝣群最优蜉蝣的位置所对应的极性进行比较,若第t代子代蜉蝣群中第k个雌性子代蜉蝣的位置所对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将第t代子代蜉蝣群中第k个雌性子代蜉蝣作为蜉蝣加入外部档案库,并将第t代蜉蝣群最优蜉蝣更新为第t代子代蜉蝣群中第k个雌性子代蜉蝣,否则不作任何处理;

将第t代子代蜉蝣群中所有雄性子代蜉蝣作为雄蜉蝣加入第t代雄蜉蝣群,将第t代子代蜉蝣中所有雌性子代蜉蝣作为雌蜉蝣加入第t代雌蜉蝣群;

Step6.10、计算当前第t代雄蜉蝣群中每个雄蜉蝣的非支配级数,判定是否存在支配级数大于5的雄蜉蝣,如果不存在,则保持各雄蜉蝣当前支配级数不变,如果存在,则将所有非支配级数大于5的雄蜉蝣的非支配级数变为5,由此当前非支配级数至多为{1,2,3,4,5}五种,分别判断每种非支配级数的雄蜉蝣数量是否大于为向下取整符号,如果某种非支配级数的雄蜉蝣数量大于则按拥挤度计算规则计算当前第t代雄蜉蝣群中该种非支配级数的所有雄蜉蝣的拥挤度,抽取拥挤度最大的个雄蜉蝣,抽取时若存在要从两个或两个以上雄蜉蝣拥挤度相同的雄蜉蝣中进行抽取的情况,则随机抽取所需数量,如果小于或者等于则抽取该非支配级数的全部雄蜉蝣;

判断当前抽取的所有雄蜉蝣的数量是否等于M/2,如果等于M/2,则采用抽取的所有雄蜉蝣构成一个新的雄蜉蝣群,如果小于M/2,则从未抽取雄蜉蝣中随机抽取相应数量的雄蜉蝣,使抽取的雄蜉蝣群的数量等于M/2后,采用此时抽取的所有雄蜉蝣构成一个新的雄蜉蝣群,将该新的雄蜉蝣群作为当前得到的第t代雄蜉蝣群;

Step6.11、计算当前第t代雌蜉蝣群中雌蜉蝣的非支配级数,判定是否存在支配级数大于5的雄蜉蝣,如果不存在,则保持各雄蜉蝣当前支配级数不变,如果存在,则将所有非支配级数大于5的雌蜉蝣非支配级数变为5,由此当前非支配级数至多为{1,2,3,4,5}五种,判断每种非支配级数的雌蜉蝣数量大于是否大于如果某种非支配级数的雌蜉蝣数量大于则按拥挤度计算规则计算雌蜉蝣群中该种非支配级数的所有雌蜉蝣的拥挤度,抽取拥挤度最大的个雌蜉蝣,抽取时若存在要从两个或者两个以上雌蜉蝣拥挤度相同的雌蜉蝣中进行抽取的情况,则随机抽取所需数量,如果小于或者等于则抽取该非支配级数的全部雌蜉蝣;

判断当前抽取的所有雌蜉蝣的数量是否等于M/2,如果等于M/2,则采用抽取的所有雌蜉蝣构成一个新的雌蜉蝣群,如果小于M/2,则从未抽取雌蜉蝣中随机抽取相应数量的雌蜉蝣,使抽取的雌蜉蝣群的数量等于M/2后,采用此时抽取的所有雌蜉蝣构成一个新的雌蜉蝣群,将该新的雌蜉蝣群作为当前得到的第t代雌蜉蝣群,当前得到的第t代雌蜉蝣群即为最终得到的第t代雌蜉蝣群;

Step6.12、将第t代雄蜉蝣群中每个雄蜉蝣的生存周期加1,将第t代雄蜉蝣群中所有雄蜉蝣根据非支配级数从小到大排序,若此时第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中不存在生存周期超过4的雄蜉蝣,则不作任何处理,直接进入步骤Step6.14,若此时第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中存在H个生存周期超过4的雄蜉蝣,H为大于等于1的整数,则从外部档案库中随机选取H个蜉蝣,设选出的蜉蝣别称为人工蜉蝣;采用当前选取的H个人工蜉蝣构成一个人工蜉蝣群,将该人工蜉蝣群中第h个人工蜉蝣的当前进化次数设为0,h=1,2,…,H,该人工蜉蝣群中第h个人工蜉蝣为第0代进化的第h个人工蜉蝣,将第0代进化的第h个人工蜉蝣的位置记为为第0代进化的第h个人工蜉蝣的位置的第j位,第0代进化的第h个人工蜉蝣的速度记为速度为第0代进化的第h个人工蜉蝣的速度的第j位,将第0代进化的第h个人工蜉蝣的速度的每一位均重置为0,第0代进化的第h个人工蜉蝣曾到过的最好位置记为为第0代进化的第h个人工蜉蝣曾到过的最好位置的第j位,将第0次进化的第h个人工蜉蝣曾到过的最好位置重置为等于第0次进化的第h个人工蜉蝣的位置;对当前人工蜉蝣群中H个第0代进化的人工蜉蝣分别进行q次进化,具体进化过程如下:

Step6.12.1、在[0,1]内生成随机数根据公式(18)计算进化总次数q,根据进化公式进行进化。:

其中为向上取整运算符;

Step6.12.2、设定进化次数变量b,初始化b,令b=1;

Step6.12.3、对第b-1进化的第h个人工蜉蝣进行第b次迭代进化,得到第b次进化的第h个人工蜉蝣,迭代进化过程如下:

Step6.12.3.1、在[-1,1]内生成随机值

Step6.12.3.2、令第b次进化的人工蜉蝣曾到过的最好位置等于第b-1次进化的人工蜉蝣曾到过的最好位置;

Step6.12.3.3、采用公式(19)和(20)分别计算第b次进化的第h个人工蜉蝣的位置和速度分别进行改变,公式如下:

其中,表示第b-1次进化的第h个人工蜉蝣的位置,为第b-1次进化的第h个人工蜉蝣位置的第j位,表示第b-1次进化的第h个人工蜉蝣的位置所对应的极性,表示第b-1次进化的第h个人工蜉蝣的位置所对应的极性支配第t-1代蜉蝣群最优蜉蝣所对应的极性,表示第t代蜉蝣群最优蜉蝣所对应的极性支配第b-1次进化的第h个人工蜉蝣的位置所对应的极性或两者互不支配,为第b次进化的第h个人工蜉蝣速度的第j位,为第b-1次进化的第h个人工蜉蝣曾经到达过的最好位置的第j位;为第b次进化的第h个人工蜉蝣的位置的第j位,为第b-1次进化的第h个人工蜉蝣的速度的第j位;

在计算结束后,若大于0.2,则令等于0.2,若小于0,则令等于0,否则人保持不变,若大于2,则令等于2,若小于0,则令等于0,否则保持不变;

Step6.12.3.4、若第b次进化的第h个人工蜉蝣的位置所对应的极性支配第b-1次进化的第h个人工蜉蝣曾经到达过的最好位置所对应的极性,则令第b次进化的第h个人工蜉蝣曾经到达过的最好位置等于第b次进化的第h个人工蜉蝣位置,否则第b次进化的第h个人工蜉蝣曾经到达过的最好位置保持不变;

Step6.12.3.5、判断b的当前值是否等于q,如果等于,则转到步骤Step6.13,如果不等于,则采用b的当前值加1的和更新b的值,再转到Step6.12.3,进行下一次进化;

Step6.13、设置当前人工蜉蝣群中人工蜉蝣的生命周期为0,将当前人工蜉蝣群中每个人工蜉蝣的位置的每一位分别进行四舍五入操作变为整数,得到对应极性,并得到每个人工蜉蝣的位置对应的极性下三值FPRM面积与延时,若某个人工蜉蝣的位置对应的极性支配第t代蜉蝣群最优蜉蝣的位置所对应的极性,则将该人工蜉蝣作为蜉蝣加入外部档案库,将当前第t代雄蜉蝣群中第个雄蜉蝣到第M/2个雄蜉蝣中H个生存周期超过4的雄蜉蝣剔除,然后将当前人工蜉蝣群中的所有人工蜉蝣作为雄蜉蝣加入雄蜉蝣群,清除人工蜉蝣群;

Step6.14、根据极性支配规则,将当前外部档案库中每个蜉蝣的位置对应的极性与当前外部档案库中其他蜉蝣的位置对应的极性进行比较,统计每个蜉蝣被其他蜉蝣支配的次数,按照蜉蝣被其他蜉蝣支配次数的数量确定每个蜉蝣的非支配级数,被其他蜉蝣支配次数最少的蜉蝣的非支配级数为最小级数1,蜉蝣被支配次数增加其非支配级数也逐步增加,被其他蜉蝣支配次数最多的蜉蝣的非支配级数为最高级数,如果有多个蜉蝣被其他蜉蝣支配次数的数量相同,则其非支配级数也相同;将当前外部档案库中非支配级数最低的蜉蝣保留,其他剔除;

Step6.15、判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,若当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size,则不进行操作,否则计算当前外部档案库中蜉蝣的拥挤距离,先将拥挤距离最小的任意一个蜉蝣删除,;然后再次判断当前外部档案库存储的蜉蝣数量是否超过外部档案库规模上限archives_size,如果未超过,则结束操作,如果超过,则再次计算当前外部档案库中蜉蝣的拥挤距离,将拥挤距离最小的任意一个蜉蝣删除,直至当前外部档案库存储的蜉蝣数量未超过外部档案库规模上限archives_size;

Step6.16、从当前外部档案库中随机选取一个蜉蝣作为第t代蜉蝣群最优蜉蝣gbestt。;

Step7、判断t的当前值是否等于Max_iteration,若等于,则此时外部档案库存储的蜉蝣的位置对应的极性集合即为满足三值FPRM电路面积与延时Pareto关系的最佳极性集合,优化结束,输出结果;若不等于,则采用t的当前值加1的和更新t的取值,返回步骤Step6,进行下一次迭代。

为验证本发明的基于MOAMA算法的三值FPRM电路面积与延时优化方法在求解三值FPRM电路极性搜索问题上的有效性和鲁棒性。抽取10个MCNC Benchmark电路进行仿真实验,比较本发明方法(MOAMA算法)、文献1(FU Qiang,WANG Peng-jun,TONG Nan,etal.Multi constraint polarity optimization method for FPRM circuits based onmodpso algorithm[J].Acta electronica Sinica,2017,39(003):717-723)中的MODCPSO算法和文献2(WANG Ming-bo,WANG Peng-jun,FU Qiang,et al.Area and delayoptimization of ternary FPRM circuit based on modcpso algorithm[J].Computerapplication research,2019,36(02):138-14)中的MODPSO算法的优化效果,算法共迭代10次。

表1为三种算法5次重复实验得到的最优解和最差解,表2为五次实验中三种算法所得最优极性的面积和延时总和与MOAMA算法的优化率,同时记录算法达到最优解的次数。

表1三值FPRM电路面积与延时最优极性搜索结果

表2五次实验面积与延时总和与优化率

由表1和表2数据可得,在5次重复实验中,MOAMA算法求得最优极性的概率为72%,MODPSO为26%,MODCPSO为16%,随着输入变量的增加,MODPSO和MODCPSO求得最优极性的次数减少,而MOAMA算法仍有较大可能求得最优极性,体现算法鲁棒性较好。对比算法的最优解和最劣解的差异,可以看到MOAMA算法最优值和最劣值之间差异较小,而MODPSO算法和MODCPSO算法差异较大,例如对于newcond电路,MOAMA算法面积差为122,MODPSO算法和MODCPSO算法差为396,说明MOAMA算法的全局搜索能力优于其他算法。在三值FPRM电路的面积和延时的优化率上,MOAMA算法对比MODPSO算法平均优化6.79%和3.01%,对比MODCPSO算法平均优化8.24%和3.87%,结果表明MOAMA算法具有更优的寻优性能。

为更加直观的看到MOAMA算法对于极性搜索问题的优化效果,将5次重复实验中10个测试电路的每代结果之和作为最后测试结果,结果如图1和图2所示。

分析图1可知,在面积进化曲线方面,MODCPSO算法进化速度较慢,MODPSO算法从第4代开始出现进化停滞现象,MOAMA算法仍可向下寻优。在迭代整个过程中,MOAMA算法的搜索效率优于其他两个算法,体现更高的寻优效率。分析图2可知,在延时进化曲线方面,MODCPSO算法和MODPSO算法分别在第2代和第3代早熟收敛,而MOAMA算法在第7代才陷入局部最优,说明MOAMA算法寻优能力更强。

终上所述,针对三值FPRM电路的极性搜索问题,本发明的基于MOAMA算法的三值FPRM电路面积与延时优化方法,结合三值FPRM表达式、三值列表极性转换技术与MOAMA算法,并根据三值FPRM电路极性的面积和延时优化模型,分析任一极性下三值FPRM电路的面积与延时,本发明的基于MOAMA算法的三值FPRM电路面积与延时优化方法已用C语言实现,通过对10个MCNC基准测试电路进行仿真实验,与MODPSO算法和MODCPSO算法数据比较,验证在电路面积与延时优化方面具有较高的有效性和可靠性。

34页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种结合子图同构的量子线路程序通用变换方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类