利用粒子群算法的三值FPRM电路面积与延时优化方法与流程

文档序号:14474409阅读:296来源:国知局
利用粒子群算法的三值FPRM电路面积与延时优化方法与流程

本发明涉及一种三值fprm电路优化方法,尤其是涉及一种利用粒子群算法的三值fprm电路面积与延时优化方法。



背景技术:

boolean逻辑和rm逻辑是三值逻辑函数的两种主要表现形式。与传统的boolean逻辑电路相比,基于rm逻辑的电路(如算术逻辑电路和奇偶校验电路等)在面积、功耗、速度和可测性等方面具有明显的优势。其中,三值fprm函数表达式是rm逻辑中一种常见的逻辑表达式。n变量的rm逻辑函数共有3n个三值fprm函数表达式,每一种表达式繁简不一,对应的电路面积与延时也不相同。因此,极性对于电路面积与延时等性能指标具有重要影响。

三值fprm电路面积与延时最佳极性搜索问题是一个多目标优化问题。目前,国内外相关研究主要通过加权系数法将该问题转化为单目标优化问题。但是,加权系数法存在几个问题:(1)权重系数无法确定,设置不同的加权系数,最终结果可能不同;(2)加权系数对pareto前沿曲线的形状较为敏感,较难获取前沿曲线凹区域的最优解;(3)权重系数的选取需要先验知识,但是这些先验知识往往是未知的。因此,近年来有学者采用多目标优化思想综合优化电路的性能。

粒子群算法、蚁群算法和蜂群算法均是用来解决三值fprm电路面积与延时优化问题较为有效的智能算法,目前已逐步被应用。粒子群算法相比其他智能算法,具有鲁棒性好和收敛速度快等特点。因此,粒子群算法在解决多目标优化问题中受到了越来越多的关注。但是,由于现有的粒子群算法中种群全局最优粒子的牵引作用过强,算法容易发生过早收敛的现象,粒子群算法最终搜索到的全局最佳极性并不是该三值fprm电路的最佳极性,优化效果较差。



技术实现要素:

本发明所要解决的技术问题是提供一种可以搜索到三值fprm电路的最佳极性集合,优化效果好的利用粒子群算法的三值fprm电路面积与延时优化方法。

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

①建立p极性下三值fprm电路面积估算模型和延时估算模型:

①-1将p极性下三值fprm电路用三值fprm逻辑表达式表示为:

其中,n为函数fp(xn-1,xn-2,…,x0)输入变量的个数;xn-1,xn-2,…,x0为函数fp(xn-1,xn-2,…,x0)的n个输入变量;为模3加运算符号;bi为与项系数,且bi∈{0,1,2};i为与项序数,i=0,1,2,…,3n-1,i用三进制可表示为in-1in-2…i0,ij∈{0,1,2},j为大于等于0且小于等于n-1的整数;p为三值fprm电路的极性,p用三进制可表示为pn-1pn-2…p0;为模3乘项,为第j个模3乘项的幂形态,极性p和与项序数i决定了幂形态的表示形式:

当pj=0时,在模3乘项中以原幂形态的形式出现,若ij=0,则若ij=1,则若ij=2,则表示xj的模3乘运算xj·xj;

当pj=1时,在模3乘项中以互补幂形态的形式出现,其中符号表示模3加运算,若ij=0,则若ij=1,则若ij=2,则

当pj=2时,在模3乘项中以互补幂形态的形式出现,若ij=0,则若ij=1,则若ij=2,则

①-2p极性下的三值fprm电路由多输入模3加项和多输入模3乘项组成,将多输入模3加项看作多输入模3加门,多输入模3乘项看作多输入模3乘门,首先采用类huffman算法将p极性下三值fprm电路内包含的所有多输入模3乘门分解为二输入模3乘门,将分解得到的二输入模3乘门数量记为no.mod_3m;然后再采用类huffman算法将p极性下三fprm电路内包含的所有多输入模3加门分解为二输入模3加门,将分解得到的二输入模3加门的数量记为no.mod_3a;

①-3在分解完的p极性下三值fprm电路中,从输入变量到输出信号经过二输入模3乘门和二输入模3加门的数量最少的路径作为关键路径,将该关键路径上包含的二输入模3乘门和二输入模3加门的数量和记为num(key);

①-4将p极性下三值fprm电路的面积记为area(p),延时记为delay(p),得到p极性下三值fprm电路的面积估算模型为:

area(p)=no.mod_3a+no.mod_3m(2)

延时估算模型为:

delay(p)=num(key)(3)

②构建多目标离散粒子群算法的三值fprm电路面积与延时优化的关联:将粒子的位置表示为极性,粒子的搜索空间表示为可选择极性的空间;

③采用多目标粒子群算法搜索三值fprm电路面积与延时的pareto最佳极性解集,具体过程为:

step1:设置粒子种群大小为m,m取值范围为大于等于20且小于等于100的偶数,粒子种群中任意粒子的位置为三值fprm电路的某一极性对应的n位三进制数,将粒子种群中第m个粒子的速度表示为vmnvm(n-1)…vmd…vm2vm1,d为大于等于1且小于等于n的整数,m=1,2,…,m,vmd表示粒子种群中第m个粒子的速度的第d位,vmd的取值范围在[-vmax,vmax]之间,vmax表示粒子速度的每一位的最大取值,其值为大于等于1且小于等于8的随机数;初始化粒子种群中每个粒子的速度和位置;通过列表技术得到当前粒子种群中各粒子的位置对应极性下的三值fprm逻辑表达式,按照上述步骤①-2~步骤①-4的方法得到各极性下三值fprm电路的面积与延时;设置粒子群算法的迭代总次数为t,t为大于等于100小于等于500的整数,设定当代迭代次数为变量t,初始化变量t,令变量t=0。

step2:设定极性支配规则:将当前粒子种群中任意两个粒子位置对应的极性记为p1和p2,若p1和p2满足:

则认定p1支配p2,记作p1>p2,此时p1对应的粒子支配p2对应的粒子;当极性p1不被当前粒子种群中其他粒子位置对应的极性支配时,则p1为满足三值fprm电路面积与延时pareto关系的最佳极性之一,pareto最佳极性解集为所有满足pareto关系的最佳极性的集合;

设置一个用于存放满足三值fprm电路面积与延时pareto关系的最佳极性的外部档案库,该外部档案库的大小记为num(rep),num(rep)为大于等于10且小于等于m的整数;

step3:采用极性支配规则将当前粒子群中每个粒子的位置对应的极性分别与其他粒子的位置对应的极性进行比较,统计每个粒子被其他粒子支配的次数,按照粒子被其他粒子支配次数的数量确定每个粒子的非支配级数,被其他粒子支配次数最少的粒子的非支配级数为最小级数,粒子被支配次数增加其非支配级数也逐步增加,被其他粒子支配次数最多的粒子的非支配级数为最高级数,如果有多个粒子被其他粒子支配次数的数量相同,则其非支配级数也相同;统计当前粒子群体中非支配级数最低的粒子数量,若非支配级数最低的粒子数量小于等于外部档案库的规模num(rep),则将所有非支配等级数最低的粒子对应的极性放入外部档案库中,若非支配级数最低的粒子数量大于外部档案库的规模num(rep),则计算每个非支配等级数最低的粒子的位置的拥挤距离,并按照拥挤距离从高到低的顺序选择num(rep)个非支配等级数最低的粒子,将这些选择的粒子位置对应的极性放入外部档案库中;

step4:采用变量t的当前值加1后的值去更新变量t,得到更新后的t,将更新后的t作为当代迭代次数,对粒子种群进行第t次迭代,具体的迭代过程为:

a.从当前粒子种群中随机抽取0.5*m个粒子构成第一个粒子子种群,剩余的粒子构成第二个粒子子种群,其中符号“*”表示乘运算符号;

b.将第一个粒子子种群中第h个粒子的非支配级数与第二个粒子子种群中第h个粒子的非支配级数进行比较,h=1,2,…,0.5*m,具体过程为:

b-1.若两个粒子的非支配级数不同,则按照以下步骤进行处理:

s1.按照以下步骤依次对非支配级数较大的粒子的速度第q位进行变异,q=1,2,…,n,具体步骤为:

s1-1.采用随机函数产生两个大于等于0且小于等于1的随机数,两个随机数分别记为r1和r2;

s1-2.将第t次迭代的惯性权重记为ω(t),采用公式(5)计算:

其中,ωmax表示惯性权重的最大值,其取值范围为大于等于0.7且小于等于1;ωmin表示惯性权重的最小值,其取值范围为大于等于0.1且小于等于0.5;

s1-3.采用公式(6)计算第t次迭代非支配级数较大的粒子速度的第q位的变异值:

其中,公式(6)中,v″hq(t)表示非支配级数较大的粒子的速度的第q位对应的变异值,c1和c2均为学习因子,c1和c2分别为大于等于1且小于等于3的整数,公式(6)中符号ceil()为向下取整符号,表示对进行向下取整操作,保留其整数部分;

如果t=1,则v′hq(t-1)表示非支配级数较大的粒子的初始速度的第q位,shq(t-1)表示非支配级数较小的粒子的初始化位置的第q位,s′hq(t-1)表示非支配级数较大的粒子的初始位置的第q位,表示粒子种群中所有粒子的初始位置的第q位的平均值,

如果t>1,则v′hq(t-1)表示非支配级数较大的粒子在t-1次迭代更新后的速度的第q位,shq(t-1)表示非支配级数较小的粒子在t-1次迭代更新后的位置的第q位,s′hq(t-1)表示非支配级数较大的粒子在t-1次迭代更新后的位置的第q位,表示粒子种群中所有粒子在t-1次迭代更新后的位置的第q位的平均值;

s1-4.如果v″hq(t)大于vmax,则采用vmax更新非支配级数较大的粒子的速度的第q位,如果v″hq(t)小于-vmax,则采用-vmax更新非支配级数较大的粒子的速度的第q位,如果v″hq(t)大于等于-vmax且小于等于vmax,则非支配级数较大的粒子的速度的第q位保持不变,由此完成非支配级数较大的粒子的速度的第q位的第t次迭代更新;

s2.对非支配级数较大的粒子的位置的第q位进行变异,q=1,2,…,n,具体步骤为:

s2-1.采用随机函数生成一大于等于1且小于等于3的随机整数k,采用随机函数生成大于等于0且小于等于1的随机数r3;

s2-2.采用公式(7)计算第t次迭代非支配级数较大的粒子的位置的第q位对应的变异值:

其中,公式(7)中,s′hq(t)表示非支配级数较大的粒子的位置的第q位对应的变异值,v″hq(t)表示在第t次迭代更新后非支配级数较大的粒子的速度的第q位的更新值,n=3,e表示自然对数的底,round(·)表示对的值进行四舍五入操作,取为整数。

s2-3.如果s′hq(t)大于2,则将非支配级数较大的粒子的位置的第q位更新为2,如果s′hq(t)小于0,则将非支配级数较大的粒子的位置的第q位更新为0,如果s′hq(t)大于等于0且小于等于2,则非支配级数较大的粒子的位置的第q位则保持不变,由此完成非支配级数较大的粒子的位置的第q位的第t次迭代更新;

b-2.若两个粒子的非支配等级相同,则设定一个大于等于1且小于等于1的概率常数p',依次按照以下步骤对第一个粒子子种群中第h个粒子与第二个粒子子种群中第h个粒子的位置进行更新,h=1,2,…,0.5*m,具体过程为:

a.随机产生两组随机数序列,第一组随机数序列记为rand1,第二组随机数序列记为rand2,随机数序列rand1和随机数序列rand2内分别包含n个大于等于0且小于等于1的随机数,将rand1中的第z个随机数记为rand1z,将rand2中的第z个随机数记为rand2z,其中z=1,2,…,n;

b.将随机数序列rand1中的第z个随机数rand1z与p'进行比较,如果rand1z大于等于p',则第一个粒子子种群中第h个粒子位置的第z位保持不变;如果rand1z小于p',则对第一个粒子子种群中第h个粒子位置的第z位按照及以下规则进行更行更新:如果第一个粒子子种群中第h个粒子位置的第z位的当前值为0,则将其更新为1;如果第一个粒子子种群中第h个粒子位置的第z位的当前值为1,则将其更新为2;如果第一个粒子子种群中第h个粒子位置的第z位的当前值为2,则将其更新为0;

c.将随机数序列rand2中的第z个随机数rand2z与p'进行比较,如果rand2z大于等于p',则第二个粒子子种群中第h个粒子位置的第z位保持不变;如果rand2z小于p',则对第二个粒子子种群中第h个粒子位置的第z位按照及以下规则进行更行更新:如果第二个粒子子种群中第h个粒子位置的第z位的当前值为0,则将其更新为1;如果第二个粒子子种群中第h个粒子位置的第z位的当前值为1,则将其更新为2;如果第二个粒子子种群中第h个粒子位置的第z位的当前值为2,则将其更新为0;

c.将更新后的第一个粒子子种群和第二个粒子子种群合并,得到更新后的粒子种群;

d.通过列表技术重新得到当前粒子种群中每个粒子的位置对应极性下的三值fprm逻辑表达式,并按照上述步骤①-2~步骤①-4再次得到各极性下三值fprm电路的面积与延时大小;

e.通过快速非支配排序算法计算第t次迭代更新后粒子种群内所有的粒子与当前外部档案库中所有极性对应的粒子作为一个整体来计算其内每个粒子的非支配级数,并将外部档案库中的极性清空,统计当前粒子群体中非支配级数最低的粒子数量,当前粒子群体中非支配级数最低的粒子数量小于等于外部档案库的规模num(rep),则将所有非支配等级数最低的粒子对应的极性放入外部档案库中,若非支配级数最低的粒子数量大于外部档案库的规模num(rep),则计算每个非支配等级数最低的粒子的位置的拥挤距离,并按照拥挤距离从高到低的顺序选择num(rep)个非支配等级数最低的粒子,将这些选择的粒子位置对应的极性放入外部档案库中;

step5:判断t是否等于t,如果等于,则此时外部档案库存储的极性即为满足三值fprm电路面积与延时pareto关系的最佳极性集合,优化结束,如果不等于,则返回步骤step4,进入下一次迭代更新。

所述的step3中计算初始状态下每个非支配等级数最低的粒子的位置的拥挤距离的具体过程为:

step3-1.将非支配等级数最低的粒子数量记为size(rep);

step3-2.根据每个非支配等级数最低的粒子的位置对应极性下三值fprm电路的面积大小,将这些非支配等级数最低的粒子按照面积从小到大的顺序进行排序;将初始状态排在第a位的非支配等级数最低的粒子的拥挤距离记为distancea(0),a=1,2,…,size(rep);

step3-3.令排在第1位的非支配等级数最低的粒子的拥挤距离distance1(0)=10000,排在第size(rep)位的非支配等级数最低的粒子的拥挤距离distancesize(rep)(0)=10000;

step3-4.采用公式(8)分别计算排在第2位~第size(rep)-1位的非支配等级数最低的粒子的拥挤距离:

其中,g=2,3,…,size(rep)-1,distanceg(0)表示第g个非支配等级数最低粒子的拥挤距离,areag+1(0)表示第g+1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积大小,areag-1(0)表示第g-1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积大小,max(area(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积的最大值,min(area(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积的最小值,delayg+1(0)表示第g+1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时大小,delayg-1(0)表示第g-1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时大小,max(delay(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时的最大值,min(delay(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时的最小值。

所述的步骤e中计算第t次迭代中每个非支配等级数最低的粒子的位置的拥挤距离的具体过程为:

e-1.将非支配等级数最低的粒子数量记为size(rep)1;

e-2.根据每个非支配等级数最低的粒子的位置对应极性下三值fprm电路的面积大小,将这些非支配等级数最低的粒子按照面积从小到大的顺序进行排序;将第t次迭代排在第q位的非支配等级数最低的粒子的拥挤距离记为distanceq(t),q=1,2,…,size(rep)1;

e-3.令排在第1位的非支配等级数最低的粒子的拥挤距离distance1(t)=10000,排在第size(rep)1位的非支配等级数最低的粒子的拥挤距离distancesize(rep)1(t)=10000;

e-4.采用公式(9)分别计算排在第2位~第size(rep)1-1位的非支配等级数最低的粒子的拥挤距离:

其中,g=2,…,size(rep)1-1,distanceg(t)表示在第t次迭代第g个非支配等级数最低粒子的拥挤距离,areag+1(t)表示第g+1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积大小,areag-1(t)表示第g-1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积大小,max(area(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积的最大值,min(area(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积的最小值,delayg+1(t)表示第g+1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时大小,delayg-1(t)表示第g-1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时大小,max(delay(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时的最大值,min(delay(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时的最小值。

与现有技术相比,本发明的优点在于采用pareto支配方法,不需要多次设置电路面积与延时的加权系数值,就能获取电路的最佳极性集合,并且在粒子群算法中引入竞争行为学习机制,通过将粒子种群划分为第一粒子子种群和第二粒子子种群两个团队,令两个团队中的粒子分别进行比较,其中较差的粒子向着较好的粒子进行更新操作,避免算法发生过早收敛的现象,同时,引入变异机制令种群粒子能够跳出局部最优解的搜索范围,提高算法的优化性能,由此可以搜索到三值fprm电路的最佳极性集合,优化效果好,通过13个benchmark电路进行仿真测试,实验结果表明:与dpso算法和modpso算法搜索到的最佳极性相比,本发明的方法具有更好的优化效率和鲁棒性。

附图说明

图1为本发明的方法与现有的两种方法的面积迭代进化曲线;

图2为本发明的方法与现有的两种方法的延时迭代进化曲线。

具体实施方式

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

实施例一:一种利用粒子群算法的三值fprm电路面积与延时优化方法,包括以下步骤:

①建立p极性下三值fprm电路面积估算模型和延时估算模型:

①-1将p极性下三值fprm电路用三值fprm逻辑表达式表示为:

其中,n为函数fp(xn-1,xn-2,…,x0)输入变量的个数;xn-1,xn-2,…,x0为函数fp(xn-1,xn-2,…,x0)的n个输入变量;⊕∑为模3加运算符号;bi为与项系数,且bi∈{0,1,2};i为与项序数,i=0,1,2,…,3n-1,i用三进制可表示为in-1in-2…i0,ij∈{0,1,2},j为大于等于0且小于等于n-1的整数;p为三值fprm电路的极性,p用三进制可表示为pn-1pn-2…p0;为模3乘项,为第j个模3乘项的幂形态,极性p和与项序数i决定了幂形态的表示形式:

当pj=0时,在模3乘项中以原幂形态的形式出现,若ij=0,则若ij=1,则若ij=2,则表示xj的模3乘运算xj·xj;

当pj=1时,在模3乘项中以互补幂形态的形式出现,其中符号表示模3加运算,若ij=0,则若ij=1,则若ij=2,则

当pj=2时,在模3乘项中以互补幂形态的形式出现,若ij=0,则若ij=1,则若ij=2,则

①-2p极性下的三值fprm电路由多输入模3加项和多输入模3乘项组成,将多输入模3加项看作多输入模3加门,多输入模3乘项看作多输入模3乘门,首先采用类huffman算法将p极性下三值fprm电路内包含的所有多输入模3乘门分解为二输入模3乘门,将分解得到的二输入模3乘门数量记为no.mod_3m;然后再采用类huffman算法将p极性下三fprm电路内包含的所有多输入模3加门分解为二输入模3加门,将分解得到的二输入模3加门的数量记为no.mod_3a;

①-3在分解完的p极性下三值fprm电路中,从输入变量到输出信号经过二输入模3乘门和二输入模3加门的数量最少的路径作为关键路径,将该关键路径上包含的二输入模3乘门和二输入模3加门的数量和记为num(key);

①-4将p极性下三值fprm电路的面积记为area(p),延时记为delay(p),得到p极性下三值fprm电路的面积估算模型为:

area(p)=no.mod_3a+no.mod_3m(2)

延时估算模型为:

delay(p)=num(key)(3)

②构建多目标离散粒子群算法的三值fprm电路面积与延时优化的关联:将粒子的位置表示为极性,粒子的搜索空间表示为可选择极性的空间;

③采用多目标粒子群算法搜索三值fprm电路面积与延时的pareto最佳极性解集,具体过程为:

step1:设置粒子种群大小为m,m取值范围为大于等于20且小于等于100的偶数,粒子种群中任意粒子的位置为三值fprm电路的某一极性对应的n位三进制数,将粒子种群中第m个粒子的速度表示为vmnvm(n-1)…vmd…vm2vm1,d为大于等于1且小于等于n的整数,m=1,2,…,m,vmd表示粒子种群中第m个粒子的速度的第d位,vmd的取值范围在[-vmax,vmax]之间,vmax表示粒子速度的每一位的最大取值,其值为大于等于1且小于等于8的随机数;初始化粒子种群中每个粒子的速度和位置;通过列表技术得到当前粒子种群中各粒子的位置对应极性下的三值fprm逻辑表达式,按照上述步骤①-2~步骤①-4的方法得到各极性下三值fprm电路的面积与延时;设置粒子群算法的迭代总次数为t,t为大于等于100小于等于500的整数,设定当代迭代次数为变量t,初始化变量t,令变量t=0。

step2:设定极性支配规则:将当前粒子种群中任意两个粒子位置对应的极性记为p1和p2,若p1和p2满足:

则认定p1支配p2,记作p1>p2,此时p1对应的粒子支配p2对应的粒子;当极性p1不被当前粒子种群中其他粒子位置对应的极性支配时,则p1为满足三值fprm电路面积与延时pareto关系的最佳极性之一,pareto最佳极性解集为所有满足pareto关系的最佳极性的集合;

设置一个用于存放满足三值fprm电路面积与延时pareto关系的最佳极性的外部档案库,该外部档案库的大小记为num(rep),num(rep)为大于等于10且小于等于m的整数;

step3:采用极性支配规则将当前粒子群中每个粒子的位置对应的极性分别与其他粒子的位置对应的极性进行比较,统计每个粒子被其他粒子支配的次数,按照粒子被其他粒子支配次数的数量确定每个粒子的非支配级数,被其他粒子支配次数最少的粒子的非支配级数为最小级数,粒子被支配次数增加其非支配级数也逐步增加,被其他粒子支配次数最多的粒子的非支配级数为最高级数,如果有多个粒子被其他粒子支配次数的数量相同,则其非支配级数也相同;统计当前粒子群体中非支配级数最低的粒子数量,若非支配级数最低的粒子数量小于等于外部档案库的规模num(rep),则将所有非支配等级数最低的粒子对应的极性放入外部档案库中,若非支配级数最低的粒子数量大于外部档案库的规模num(rep),则计算每个非支配等级数最低的粒子的位置的拥挤距离,并按照拥挤距离从高到低的顺序选择num(rep)个非支配等级数最低的粒子,将这些选择的粒子位置对应的极性放入外部档案库中;

step4:采用变量t的当前值加1后的值去更新变量t,得到更新后的t,将更新后的t作为当代迭代次数,对粒子种群进行第t次迭代,具体的迭代过程为:

a.从当前粒子种群中随机抽取0.5*m个粒子构成第一个粒子子种群,剩余的粒子构成第二个粒子子种群,其中符号“*”表示乘运算符号;

b.将第一个粒子子种群中第h个粒子的非支配级数与第二个粒子子种群中第h个粒子的非支配级数进行比较,h=1,2,…,0.5*m,具体过程为:

b-1.若两个粒子的非支配级数不同,则按照以下步骤进行处理:

s1.按照以下步骤依次对非支配级数较大的粒子的速度第q位进行变异,q=1,2,…,n,具体步骤为:

s1-1.采用随机函数产生两个大于等于0且小于等于1的随机数,两个随机数分别记为r1和r2;

s1-2.将第t次迭代的惯性权重记为ω(t),采用公式(5)计算:

其中,ωmax表示惯性权重的最大值,其取值范围为大于等于0.7且小于等于1;ωmin表示惯性权重的最小值,其取值范围为大于等于0.1且小于等于0.5;

s1-3.采用公式(6)计算第t次迭代非支配级数较大的粒子速度的第q位的变异值:

其中,公式(6)中,v″hq(t)表示非支配级数较大的粒子的速度的第q位对应的变异值,c1和c2均为学习因子,c1和c2分别为大于等于1且小于等于3的整数,公式(6)中符号ceil()为向下取整符号,表示对进行向下取整操作,保留其整数部分;

如果t=1,则v′hq(t-1)表示非支配级数较大的粒子的初始速度的第q位,shq(t-1)表示非支配级数较小的粒子的初始化位置的第q位,s′hq(t-1)表示非支配级数较大的粒子的初始位置的第q位,表示粒子种群中所有粒子的初始位置的第q位的平均值,

如果t>1,则v′hq(t-1)表示非支配级数较大的粒子在t-1次迭代更新后的速度的第q位,shq(t-1)表示非支配级数较小的粒子在t-1次迭代更新后的位置的第q位,s′hq(t-1)表示非支配级数较大的粒子在t-1次迭代更新后的位置的第q位,表示粒子种群中所有粒子在t-1次迭代更新后的位置的第q位的平均值;

s1-4.如果v″hq(t)大于vmax,则采用vmax更新非支配级数较大的粒子的速度的第q位,如果v″hq(t)小于-vmax,则采用-vmax更新非支配级数较大的粒子的速度的第q位,如果v″hq(t)大于等于-vmax且小于等于vmax,则非支配级数较大的粒子的速度的第q位保持不变,由此完成非支配级数较大的粒子的速度的第q位的第t次迭代更新;

s2.对非支配级数较大的粒子的位置的第q位进行变异,q=1,2,…,n,具体步骤为:

s2-1.采用随机函数生成一大于等于1且小于等于3的随机整数k,采用随机函数生成大于等于0且小于等于1的随机数r3;

s2-2.采用公式(7)计算第t次迭代非支配级数较大的粒子的位置的第q位对应的变异值:

其中,公式(7)中,s′hq(t)表示非支配级数较大的粒子的位置的第q位对应的变异值,v″hq(t)表示在第t次迭代更新后非支配级数较大的粒子的速度的第q位的更新值,n=3,e表示自然对数的底,round(·)表示对的值进行四舍五入操作,取为整数。

s2-3.如果s′hq(t)大于2,则将非支配级数较大的粒子的位置的第q位更新为2,如果s′hq(t)小于0,则将非支配级数较大的粒子的位置的第q位更新为0,如果s′hq(t)大于等于0且小于等于2,则非支配级数较大的粒子的位置的第q位则保持不变,由此完成非支配级数较大的粒子的位置的第q位的第t次迭代更新;

b-2.若两个粒子的非支配等级相同,则设定一个大于等于1且小于等于1的概率常数p',依次按照以下步骤对第一个粒子子种群中第h个粒子与第二个粒子子种群中第h个粒子的位置进行更新,h=1,2,…,0.5*m,具体过程为:

a.随机产生两组随机数序列,第一组随机数序列记为rand1,第二组随机数序列记为rand2,随机数序列rand1和随机数序列rand2内分别包含n个大于等于0且小于等于1的随机数,将rand1中的第z个随机数记为rand1z,将rand2中的第z个随机数记为rand2z,其中z=1,2,…,n;

b.将随机数序列rand1中的第z个随机数rand1z与p'进行比较,如果rand1z大于等于p',则第一个粒子子种群中第h个粒子位置的第z位保持不变;如果rand1z小于p',则对第一个粒子子种群中第h个粒子位置的第z位按照及以下规则进行更行更新:如果第一个粒子子种群中第h个粒子位置的第z位的当前值为0,则将其更新为1;如果第一个粒子子种群中第h个粒子位置的第z位的当前值为1,则将其更新为2;如果第一个粒子子种群中第h个粒子位置的第z位的当前值为2,则将其更新为0;

c.将随机数序列rand2中的第z个随机数rand2z与p'进行比较,如果rand2z大于等于p',则第二个粒子子种群中第h个粒子位置的第z位保持不变;如果rand2z小于p',则对第二个粒子子种群中第h个粒子位置的第z位按照及以下规则进行更行更新:如果第二个粒子子种群中第h个粒子位置的第z位的当前值为0,则将其更新为1;如果第二个粒子子种群中第h个粒子位置的第z位的当前值为1,则将其更新为2;如果第二个粒子子种群中第h个粒子位置的第z位的当前值为2,则将其更新为0;

c.将更新后的第一个粒子子种群和第二个粒子子种群合并,得到更新后的粒子种群;

d.通过列表技术重新得到当前粒子种群中每个粒子的位置对应极性下的三值fprm逻辑表达式,并按照上述步骤①-2~步骤①-4再次得到各极性下三值fprm电路的面积与延时大小;

e.通过快速非支配排序算法计算第t次迭代更新后粒子种群内所有的粒子与当前外部档案库中所有极性对应的粒子作为一个整体来计算其内每个粒子的非支配级数,并将外部档案库中的极性清空,统计当前粒子群体中非支配级数最低的粒子数量,当前粒子群体中非支配级数最低的粒子数量小于等于外部档案库的规模num(rep),则将所有非支配等级数最低的粒子对应的极性放入外部档案库中,若非支配级数最低的粒子数量大于外部档案库的规模num(rep),则计算每个非支配等级数最低的粒子的位置的拥挤距离,并按照拥挤距离从高到低的顺序选择num(rep)个非支配等级数最低的粒子,将这些选择的粒子位置对应的极性放入外部档案库中;

step5:判断t是否等于t,如果等于,则此时外部档案库存储的极性即为满足三值fprm电路面积与延时pareto关系的最佳极性集合,优化结束,如果不等于,则返回步骤step4,进入下一次迭代更新。

实施例二:本实施例与实施例一基本相同,区别仅在于本实施例中,step3中计算初始状态下每个非支配等级数最低的粒子的位置的拥挤距离的具体过程为:

step3-1.将非支配等级数最低的粒子数量记为size(rep);

step3-2.根据每个非支配等级数最低的粒子的位置对应极性下三值fprm电路的面积大小,将这些非支配等级数最低的粒子按照面积从小到大的顺序进行排序;将初始状态排在第a位的非支配等级数最低的粒子的拥挤距离记为distancea(0),a=1,2,…,size(rep);

step3-3.令排在第1位的非支配等级数最低的粒子的拥挤距离distance1(0)=10000,排在第size(rep)位的非支配等级数最低的粒子的拥挤距离distancesize(rep)(0)=10000;

step3-4.采用公式(8)分别计算排在第2位~第size(rep)-1位的非支配等级数最低的粒子的拥挤距离:

其中,g=2,3,…,size(rep)-1,distanceg(0)表示第g个非支配等级数最低粒子的拥挤距离,areag+1(0)表示第g+1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积大小,areag-1(0)表示第g-1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积大小,max(area(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积的最大值,min(area(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的面积的最小值,delayg+1(0)表示第g+1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时大小,delayg-1(0)表示第g-1个非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时大小,max(delay(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时的最大值,min(delay(0))表示当前粒子种群中所有非支配等级数最低粒子的初始位置对应极性下的三值fprm电路的延时的最小值。

本实施例中,步骤e中计算第t次迭代中每个非支配等级数最低的粒子的位置的拥挤距离的具体过程为:

e-1.将非支配等级数最低的粒子数量记为size(rep)1;

e-2.根据每个非支配等级数最低的粒子的位置对应极性下三值fprm电路的面积大小,将这些非支配等级数最低的粒子按照面积从小到大的顺序进行排序;将第t次迭代排在第q位的非支配等级数最低的粒子的拥挤距离记为distanceq(t),q=1,2,…,size(rep)1;

e-3.令排在第1位的非支配等级数最低的粒子的拥挤距离distance1(t)=10000,排在第size(rep)1位的非支配等级数最低的粒子的拥挤距离distancesize(rep)1(t)=10000;

e-4.采用公式(9)分别计算排在第2位~第size(rep)1-1位的非支配等级数最低的粒子的拥挤距离:

其中,g=2,…,size(rep)1-1,distanceg(t)表示在第t次迭代第g个非支配等级数最低粒子的拥挤距离,areag+1(t)表示第g+1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积大小,areag-1(t)表示第g-1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积大小,max(area(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积的最大值,min(area(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的面积的最小值,delayg+1(t)表示第g+1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时大小,delayg-1(t)表示第g-1个非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时大小,max(delay(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时的最大值,min(delay(t))表示当前粒子种群中所有非支配等级数最低粒子的当前位置对应极性下的三值fprm电路的延时的最小值。

本发明的利用粒子群算法的三值fprm电路面积与延时优化(简称modcpso算法)在windows10操作系统下,通过vc6.0编译。程序的硬件环境为intelcorei7-6700hqcpu(2.6ghz),8gram。为了验证本发明的利用粒子群算法的三值fprm电路面积与延时优化在解决三值fprm电路面积与延时优化问题的有效性,将本发明的利用粒子群算法的三值fprm电路面积与延时优化与采用modpso算法(传统的多目标离散粒子群算法)和dpso算法(传统的离散粒子群算法)进行面积与延时优化方法进行对比分析。参数设置如下:本发明的利用粒子群算法的三值fprm电路面积与延时优化和modpso算法均采用多目标优化思想搜索最优解集,外部档案库的规模num(rep)均为20。dpso算法采用加权系数法搜索最佳极性,其面积与延时的权重参数均为0.5。其余参数三个算法相同:学习因子c1=c2=2.0,种群规模m为40,最大迭代次数t为120代,ωmax为0.9、ωmin为0.4,最大飞行速度vmax为4.0,k=2,n=3。

表1给出了modcpso算法、modpso算法以及dpso算法三种算法各自运行benchmark电路获取最佳极性的电路面积和延时。其中,列1表示电路名称,列2表示电路输入变量个数,列3表示dpso算法运行5次最佳极性电路面积的累加值,列4表示dpso算法运行5次最佳极性电路延时的累加值,列5表示modpso算法运行5次最佳极性电路面积的累加值,列6表示modpso算法运行5次最佳极性电路延时的累加值,列7表示modcpso算法运行5次最佳极性电路面积的累加值,列8表示modcpso算法运行5次最佳极性电路延时的累加值,列9表示modcpso算法比dpso算法面积累加值的优化率,列10表示modcpso算法比dpso算法延时累加值的优化率,列11表示modcpso算法比modpso算法面积累加值的优化率,和列12表示modcpso算法比modpso算法延时累加值的优化率,

其计算公式分别为:

其中,area1(delay1)表示dpso算法5次搜索到最佳极性电路面积与延时的累加值,area2(delay2)表示modpso算法5次搜索到最佳极性电路面积与延时的累加值,area3(delay3)表示modcpso算法5次搜索到最佳极性电路面积与延时的累加值。

modpso算法和modcpso算法采用多目标优化方法搜索最佳极性解集,在实验结果比较过程中较难验证算法的优劣性。因此需要对pareto最优解集进行处理,选取一个综合优化电路面积与延时的极性进行结果对比。于是采用归一化机制,计算外部档案库最佳极性解集中每个极性的fitness,并将fitness最小的极性作为最佳极性进行比较,fitness计算公式如下:

其中,number(rep)为外部档案库最佳极性解集中最优解的个数,θ表示外部档案库最佳极性解集中每个极性对应电路面积与延时下标。

表1modcpso算法与其他算法最优极性的实验数据与优化率

从表1测试结果中可以看出,modcpso算法与dpso算法、modpso算法相比,modcpso算法能搜索到更小的面积和更短延时电路的极性。对于newtpla电路,modcpso算法比其他两种算法面积的优化分别为18.99%和17.67%。虽然在misex1电路测试中,modcpso算法搜索到的最佳极性电路面积有所增加,但是就整体测试结果而言,modcpso算法比dpso算法和modpso算法,面积与延时平均优化率分别为33.07和0.22,modpso算法的方差分别为26.21和0.15,modcpso算法的方差分别为15.20和0.13,表现出了modcpso算法良好的鲁棒性。

为了更好地观察modcps算法的搜索性能,将13个测试电路在5次迭代过程中面积与延时的最优解分别进行累加,分析三种算法的进化过程,如图1和图2所示。

从图1和图2中可以看出,dpso算法和modpso算法在早期迭代过程中便已经收敛,陷入了局部最优解,但是modcpso算法还能继续更新近乎。同时modcpso算法比dpso算法和modpso算法能搜索到更有的极性,电路面积与延时更小。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1