CN103714211B - 基于移动模式序列与多智能体粒子群的集成电路布图方法 - Google Patents
基于移动模式序列与多智能体粒子群的集成电路布图方法 Download PDFInfo
- Publication number
- CN103714211B CN103714211B CN201310733462.XA CN201310733462A CN103714211B CN 103714211 B CN103714211 B CN 103714211B CN 201310733462 A CN201310733462 A CN 201310733462A CN 103714211 B CN103714211 B CN 103714211B
- Authority
- CN
- China
- Prior art keywords
- make
- intelligent body
- bottomtotop
- order
- agent
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开一种基于模式移动序列与多智能体粒子群的集成电路布图方法,属于物理设计布图规划技术领域。本发明将模式移动序列作为编码方法,将多智能体系统与粒子群算法相结合,用于求解集成电路布图问题,其特征在于:首先根据采用随机生成的方法初始化智能体网格中的每个智能体,然后设计了模式移动序列对每个智能体进行编码,最后设计了邻域竞争算子、粒子群算法、自学习算子对智能体进行优化,验证结果表明,本发明在评定求解集成电路布图问题方法效用的一个重要的方面:求最小矩形包络的面积,有优势,是一种有效的求解集成电路布图问题的方法,还能扩展到求解多目标的集成电路布图问题。
Description
技术领域
本发明涉及物理设计布图规划的一种方法,具体涉及一种基于移动模式序列(moving block sequence,MBS)与多智能体粒子群(multi-agent particle swarmoptimization,MAPSO)的集成电路布图方法。
背景技术
布图规划(floorplanning)是超大规模集成电路(very large scaleintegration,VLSI)物理设计的关键环节,其结果对最终芯片的尺寸和全局互连结构有着重要影响。随着技术的日新月异,芯片设计的复杂度飞速增长,对芯片的尺寸和内部互连性能的要求也越来越高,这使得布图规划的作用尤为重要。针对布图规划问题,已有许多学者应用不同的数学工具提出了多种算法,包括最小分割算法、分级设计方法、解析型算法及随机优化算法等。随机优化算法的基本操作是对每次产生的新解进行评估,保留较优的解。由于它能够针对问题的特点和复杂性进行特定操作,设计灵活,可保证解的最优性,因而受到广泛地关注。
随机优化算法的核心是设计布图表示方法,即设计一种表示布局结果的编码。已有的布图表示方法可分为两大类:二分布图表示(slicing)和非二分布图表示(non-slicing)。二分布图表示通过使用垂直或水平的划分线将布图区域递归二划分为若干子区域,每一子区域有且仅有一个模块。代表方法有二叉树表示、规范波兰表达式方法、规范后缀表达式方法等。这是最简单的一类方法、它的解空间较小,因而求解速度较快。但由于大部分的布图问题都不具有二划分结构,使得其适用范围较小。与此相比,非二分布图表示更具有一般性,也更加灵活,可获得更高的面积利用率和更优的互连性能,因此目前地研究均集中在非二分布图表示方法地设计上。代表方法有序列对、有界分割网格、O-tree、B*-tree、角模块序列、传递闭包图、双生二元序列、角序列等。
对于布图规划问题已研究的算法大都采用模拟退火法,很少采用进化算法优化。这里主要是由于非二分布图表示的搜索空间是非凸的,不利于进化算法,而且存储量也很大。
发明内容
本发明的目的在于针对上述现有方法的不足,提出一种基于移动模式序列与多智能体粒子群的集成电路布图方法。本方法能够解决技术背景中存在的不足,从而得到最优解和最优面积利用率的模块形状信息和移动模式序列。
本发明的技术方案是这样实现地:开始基于移动模式序列与多智能体粒子群的集成电路布图方法,其特征是:至少包括如下步骤:
步骤从101开始;
步骤102:参数设定:BoxRX,BoxTY分别记录已摆放的模块最小矩形包络的右边界和上边界;LeftToRight和BottomToTop是两个数组,分别按从左到右和从下到上的顺序记录已放置好的模块的右边界和上边界,即LeftToRight包含有x、yb、yt,BottomToTop包含有x1、xr、y;Edge//X和Edge//Y分别记录平行于X轴和Y轴的位置信息;Lsize×Lsize为多智能体的网格大小,t为大于或等于0的整数,表示第t代,Lt表示第t代智能体网格,Lt+1/2是Lt和Lt+1间的中间代智能体网格,Bestt是L0,L1,…,Lt中最优的智能体,CBestt是Lt中最优的智能体,sLssize×sLssize为自学习时的多智能体的网格大小,st表示为自学习时多智能体的代数,r1、r2指随机产生的0到1之间的实数,Li,j表示处在智能体网格第i行、第j列的智能体,energy(Li,j)表示智能体Li,j的能量,Po为邻域竞争时的选择变异概率,c1和c2为粒子群算法中的加速因子,W为粒子群算法中线性递减的惯性权重,n为所有微粒的总数;
步骤103:初始化智能体网格L0,更新Best0,采用随机生成满足模块顺序、移动序列号、模块方向的智能体网络,其中模块顺序是所有模块的一个排列,移动序列号是0到3之间的一个整数,模式方向是0或1;
步骤104:循环调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤105:计算适应度函数,并搜索出智能体中的个体极值和全局最好值,令t=0;
步骤106:网格Lt中每个智能体执行邻域竞争算子,得到Lt+1/2,Li,j max表示智能体Li,j邻域中能量最大的智能体,如果energy(Li,j)>energy(Li,j max),则智能体Li,j继续存活在网格上,否则,必须死亡,空出的格点由交换Li,j max的一部分而得到的新智能体占据,占据的方法由循环调用变异算法对每个智能体进行变异;
步骤107:对Lt+1/2中的每个智能体,将粒子群算法作用在其上,进化得到Lt+1,对每个智能体的模块的摆放顺序采用粒子群公式进行变化,对于模块的方向和模块的移动序列号采用单点交叉的方法,当当前代数t为偶数时,它们将和全局最好值的模块的方向和模块的移动序列号进行单点交叉,否则,它们将和个体极值的模块的方向和模块的移动序列号进行单点交叉,得到新的智能体网络;
步骤108:从Lt+1中找出CBestt+1;
步骤109:将自学习算子作用在CBestt+1上,由CBestt+1循环调用变异产生新智能体sLssize×sLssize,变异方法与步骤106中的变异方法相同,ssize是自学习时智能体的大小,若智能体sLi,j满足自学习条件,不断执行将邻域竞争算子和粒子群算法作用在新产生的智能体sLi,j上,邻域竞争算子和粒子群算法分别与步骤106和步骤107中的邻域竞争算子和粒子群算法相同,直到自学习算子结束,即达到自学习时的最大代数,将自学习结束后得到的全局最优值赋值给CBestt+1;
步骤110:如果energy(CBestt+1)>energy(Bestt),则直接进入步骤111;否则,转向步骤112;
步骤111:把CBestt+1的值赋予Bestt+1,转向步骤113;
步骤112:把Bestt的值赋予Bestt+1,把Bestt的值赋予CBestt+1;
步骤113:如果不满足终止准则,即没有达到最大进化代数,令t自加1,转向步骤106;否则,转向步骤114;
步骤114:结束基于移动模式序列与多智能体粒子群的集成电路布图方法。
所述步骤104,包括如下步骤:
步骤201:开始调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤202:初始化每个模块的左下角坐标为(0,0),令
步骤203:i←1;
步骤204:令j←i-1;若(MMi=0),转步骤205;若(MMi=1),转步骤207;若(MMi=2),令 并转步骤209;若(MMi=3), 并转步骤217;
步骤205:令若Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤205;
步骤206:令并转步骤225;
步骤207:令若Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤207;
步骤208:令并转步骤225;
步骤209:令若j≥0且Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤209;
步骤210:若j≥0,则令CoverLeftX←BottomToTop[j].xl,j←j-1;
步骤211:若j≥0且则转步骤212;否则,令j←i-1并转步骤213;
步骤212:令若Edge//X上覆盖BottomToTop[j],BottomToTop[j].xl<CoverLeftX,则令CoverLeftX←BottomToTop[j].xl;令j←j-1,并转步骤211;
步骤213:令若j≥0且Edge//Y非右覆盖LeftToRight[j],则令j←j-1并转步骤213;
步骤214:若j≥0,则令CoverRightX←LeftToRight[j].x;否则,令CoverRightX←0;
步骤215:若(CoverRightX≥CoverLeftX)或者(CoverRightX<CoverLeftX)且则令CanMove←False;否则,令CanMove←True;
步骤216:若CanMove=True,则令j←i-1并转步骤209;否则,转步骤225;
步骤217:令 若j≥0且Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤217;
步骤218:若j≥0,则令CoverBottomY←LeftToRight[j].yb,j←j-1;
步骤219:若j≥0且则转步骤220;否则,令j←i-1并转步骤221;
步骤220:令若Edge//Y上覆盖BottomToTop[j]且(LeftToRight[j].yb<CoverBottomY),则令CoverBottomY←LeftToRight[j].yb;令j←j-1,并转步骤219;
步骤221:令若j≥0且Edge//X非右覆盖BottomToTop[j],则令j←j-1并转步骤221;
步骤222:若j≥0,则令CoverTopY←BottomToTop[j].y;否则,令CoverTopY←0;
步骤223:若(CoverTopY≥CoverBottomY)或者(CoverTopY<CoverBottomY)且则令CanMove←False;否则,令CanMove←True;
步骤224:若CanMove=True,则令j←i-1并转步骤217;否则,转步骤225;
步骤225:若则令若则令
步骤226:令
步骤227:若j>0且(LeftToRight[j].x<LeftToRight[j-1].x),则令转步骤227;否则令j←i;
步骤228:若j>0且(BottomToTop[j].y<BottomToTop[j-1].y),则令转步骤228;否则令i←i+1;
步骤229:若(i<n),则转步骤204;否则,转向步骤230;
步骤230:结束基于移动模式序列的编码。
所述的步骤106,包括如下步骤:
输入:Li,j max(P)=(m0,m1,…,mn-1);输出:Li,j(P)=(c0,c1,…,cn-1);
Swap(x,y)表示交换x和y的取值,U(0,1)为0-1均匀分布的随机数,Random(n,i)是0,1,…,n-1中的一个随机整数且不等于i;
步骤301:开始进行变异算子;
步骤302:令Li,j(P)←Li,j max(P),i←0;
步骤303:若U(0,1)<Po,转向步骤304;否则,转向步骤306;
步骤304:令l←Random(n,i);
步骤305:Swap(ci,cl);
步骤306:令i←i+1;
步骤307:若i<n,则转步骤303;否则,转步骤308;
步骤308:结束变异算子。
所述的步骤107,包括如下步骤:
步骤401:开始粒子群算法进行优化;
步骤402:初始化,令i←0;
步骤403:计算每个智能体的适应度值;
步骤404:并找出个体极值和全局最优值;
步骤405:根据如下粒子群公式的方程对微粒的速度和位置进行进化:
Vid(t+1)=W×Vid(t)+c1×r1×(Pid(t)-xid(t))+c2×r2×(Pgd(t)-xid(t))
xid(t+1)=xid(t)+Vid(t+1)
其中Vid(t)表示第t代的第i个个体的速度,Pid(t)表示第t代的第i个个体的个体极值,Pgd(t)表示第t代的第i个个体的全局最优值,xid(t)表示第t代的第i个个体的微粒的个体值;
步骤406:对每个智能体中的微粒计算适应度值,更新个体极值和全局最优值,具体规则是:用它的适应度值xid和个体极值Pid比较,如果xid的适应度值大于Pid的适应度值,则用xid替换Pid;对每个粒子,用它的适应度值xid和全局最优值Pgd比较,如果xid的适应度值大于Pgd的适应度值,则用xid替换Pgd;
步骤407:令i←i+1;
步骤408:如果满足结束条件就转步骤409,其中,所述结束条件为误差足够好或i>n-1;否则,转向步骤405;
步骤409:结束粒子群算法的优化。
本发明与现有的技术相比具有以下优点:1)本发明基于一种新的非二分布图表示方法——移动模式序列,使得它的搜索空间是凸的,为进化算法中交叉算子地设计提供了平台,并且移动模式序列所需的存储量与已有方法相比更小;任何一个布局都可以通过迭代的向左和向下移动模块而得到左下紧布局,且所得到的左下紧布局的面积不会大于原始布局的面积,因此本发明用的移动模式序列的方法可以保证所得的布局为左下紧布局;2)本发明将多智能体系统与粒子群算法相结合,设计了一种基于移动模式序列的多智能体粒子群算法的集成电路布图方法,多智能体粒子群算法是基于智能体对环境感知与反作用的能力提出的一种优化算法,它的主要特点是种群规模小,收敛速度快,算法的稳定性高。该算法用智能体网格替代种群形式进化,每个智能体只能感知局部环境,一个智能体与其邻域发生作用后便将其信息传给了它们,在这种方式下,信息将渐渐扩散到整个智能体网格,智能体网格的模型更接近于真正的自然进化机制;粒子群优化是一种新兴的基于群体智能的启发式全局搜索算法,粒子群优化算法通过粒子间的竞争和协作以实现在复杂搜索空间中寻找全局最优点,它具有易理解、易实现、全局搜索能力强等特点。该算法能够得到更好的布图结果;3)本发明在评定求集成电路布图方法的一个重要的方面:求解到矩形包络的面积最小,有优势,是一种有效的求解集成电路布图方法的方法。
仿真实验结果表明,本发明提出的基于移动模式序列的多智能体粒子群算法的集成电路布图方法能够有效地求解集成电路布图问题。
附图说明
图1基于移动模式序列的多智能体粒子群算法的集成电路布图方法的主流程图;
图2智能体网格示意图;
图3模块初始位置示意图;
图4智能体基于移动模式序列编码的流程图;
图5智能体邻域竞争算子中的变异算子的算法流程图;
图6智能体粒子群算法的流程图;
图7基于移动模式序列与多智能体粒子群的集成电路布图方法仿真结果显示图;
具体实施方式
本发明研究的集成电路布图问题是指在移动模式序列要求达到所有模块都处于左下紧的情况下,将所有的模块全部摆放在第一象限,并且要求它们之间不会出现重叠,使包围所有模块的包络的面积达到最小。集成电路布图问题分为很多种,本发明求解的单目标,硬矩形模块的集成电路布图问题,目标是使包络的面积最小,并对两个标准问题库MCNC和GSRC的数据集进行测试。
如图1所示,
主流程图步骤特征是:
步骤101:开始基于移动模式序列与多智能体粒子群的集成电路布图方法;
步骤102:参数设定:BoxRX,BoxTY分别记录已摆放的模块最小矩形包络的右边界和上边界;LeftToRight和BottomToTop是两个数组,分别按从左到右和从下到上的顺序记录已放置好的模块的右边界和上边界,即LeftToRight包含有x、yb、yt,BottomToTop包含有x1、xr、y;Edge//X和Edge//Y分别记录平行于X轴和Y轴的位置信息;Lsize×Lsize为多智能体的网格大小,t为大于或等于0的整数,表示第t代,Lt表示第t代智能体网格,Lt+1/2是Lt和Lt+1间的中间代智能体网格,Bestt是L0,L1,…,Lt中最优的智能体,CBestt是Lt中最优的智能体,sLssize×sLssize为自学习时的多智能体的网格大小,st表示为自学习时多智能体的代数,r1、r2指随机产生的0到1之间的实数,Li,j表示处在智能体网格第i行、第j列的智能体,energy(Li,j)表示智能体Li,j的能量,Po为邻域竞争时的选择变异概率,c1和c2为粒子群算法中的加速因子,W为粒子群算法中线性递减的惯性权重,n为所有微粒的总数;
步骤103:初始化智能体网格L0,更新Best0,采用随机生成满足模块顺序、移动序列号、模块方向的智能体网络,其中模块顺序是所有模块的一个排列,移动序列号是0到3之间的一个整数,模式方向是0或1;
步骤104:循环调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤105:计算适应度函数,并搜索出智能体中的个体极值和全局最好值,令t=0;
步骤106:网格Lt中每个智能体执行邻域竞争算子,得到Lt+1/2,Li,j max表示智能体Li,j邻域中能量最大的智能体,如果energy(Li,j)>energy(Li,j max),则智能体Li,j继续存活在网格上,否则,必须死亡,空出的格点由交换Li,j max的一部分而得到的新智能体占据,占据的方法由循环调用变异算法对每个智能体进行变异;
步骤107:对Lt+1/2中的每个智能体,将粒子群算法作用在其上,进化得到Lt+1,对每个智能体的模块的摆放顺序采用粒子群公式进行变化,对于模块的方向和模块的移动序列号采用单点交叉的方法,当当前代数t为偶数时,它们将和全局最好值的模块的方向和模块的移动序列号进行单点交叉,否则,它们将和个体极值的模块的方向和模块的移动序列号进行单点交叉,得到新的智能体网络;
步骤108:从Lt+1中找出CBestt+1;
步骤109:将自学习算子作用在CBestt+1上,由CBestt+1循环调用变异产生新智能体sLssize×sLssize,变异方法与步骤106中的变异方法相同,ssize是自学习时智能体的大小,若智能体sLi,j满足自学习条件,不断执行将邻域竞争算子和粒子群算法作用在新产生的智能体sLi,j上,邻域竞争算子和粒子群算法分别与步骤106和步骤107中的邻域竞争算子和粒子群算法相同,直到自学习算子结束,即达到自学习时的最大代数,将自学习结束后得到的全局最优值赋值给CBestt+1;
步骤110:如果energy(CBestt+1)>energy(Bestt),则直接进入步骤111;否则,转向步骤112;
步骤111:把CBestt+1的值赋予Bestt+1,转向步骤113;
步骤112:把Bestt的值赋予Bestt+1,把Bestt的值赋予CBestt+1;
步骤113:如果不满足终止准则,即没有达到最大进化代数,令t自加1,转向步骤106;否则,转向步骤114;
步骤114:结束基于移动模式序列与多智能体粒子群的集成电路布图方法。
如图4所示,
所述的步骤104,包括如下步骤:
步骤201:开始调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤202:初始化每个模块的左下角坐标为(0,0),令
步骤203:i←1;
步骤204:令j←i-1;若(MMi=0),转步骤205;若(MMi=1),转步骤207;若(MMi=2),令 并转步骤209;若(MMi=3), 并转步骤217;
流程第一部分
步骤205:令若Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤205;
步骤206:令并转步骤225;
流程第二部分
步骤207:令若Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤207;
步骤208:令并转步骤225;
流程第三部分
步骤209:令若j≥0且Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤209;
步骤210:若j≥0,则令CoverLeftX←BottomToTop[j].xl,j←j-1;
步骤211:若j≥0且则转步骤212;否则,令j←i-1并转步骤213;
步骤212:令若Edge//X上覆盖BottomToTop[j],BottomToTop[j].xl<CoverLeftX,则令CoverLeftX←BottomToTop[j].xl;令j←j-1,并转步骤211;
步骤213:令若j≥0且Edge//Y非右覆盖LeftToRight[j],则令j←j-1并转步骤213;
步骤214:若j≥0,则令CoverRightX←LeftToRight[j].x;否则,令CoverRightX←0;
步骤215:若(CoverRightX≥CoverLeftX)或者(CoverRightX<CoverLeftX)且则令CanMove←False;否则,令CanMove←True;
步骤216:若CanMove=True,则令j←i-1并转步骤209;否则,转步骤225;
流程第四部分
步骤217:令 若j≥0且Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤217;
步骤218:若j≥0,则令CoverBottomY←LeftToRight[j].yb,j←j-1;
步骤219:若j≥0且则转步骤220;否则,令j←i-1并转步骤221;
步骤220:令若Edge//Y上覆盖BottomToTop[j]且(LeftToRight[j].yb<CoverBottomY),则令CoverBottomY←LeftToRight[j].yb;令j←j-1,并转步骤219;
步骤221:令若j≥0且Edge//X非右覆盖BottomToTop[j],则令j←j-1并转步骤221;
步骤222:若j≥0,则令CoverTopY←BottomToTop[j].y;否则,令CoverTopY←0;
步骤223:若(CoverTopY≥CoverBottomY)或者(CoverTopY<CoverBottomY)且则令CanMove←False;否则,令CanMove←True;
步骤224:若CanMove=True,则令j←i-1并转步骤217;否则,转步骤225;
流程第五部分
步骤225:若则令若则令
步骤226:令
步骤227:若j>0且(LeftToRight[j].x<LeftToRight[j-1].x),则令转步骤227;否则令j←i;
步骤228:若j>0且(BottomToTop[j].y<BottomToTop[j-1].y),则令转步骤228;否则令i←i+1;
步骤229:若(i<n),则转步骤204;否则,转向步骤230;
步骤230:结束基于移动模式序列的编码。
如图5所示,
所述的步骤106,包括如下步骤:
输入:Li,j max(P)=(m0,m1,…,mn-1);输出:Li,j(P)=(c0,c1,…,cn-1);
Swap(x,y)表示交换x和y的取值,U(0,1)为0-1均匀分布的随机数,Random(n,i)是0,1,…,n-1中的一个随机整数且不等于i;
步骤301:开始进行变异算子;
步骤302:令Li,j(P)←Li,j max(P),i←0;
步骤303:若U(0,1)<Po,转向步骤304;否则,转向步骤306;
步骤304:令l←Random(n,i);
步骤305:Swap(ci,cl);
步骤306:令i←i+1;
步骤307:若i<n,则转步骤303;否则,转步骤308;
步骤308:结束变异算子。
如图6所示,
所述的步骤107,包括如下步骤:
步骤401:开始粒子群算法进行优化;
步骤402:初始化,令i←0;
步骤403:计算每个智能体的适应度值;
步骤404:并找出个体极值和全局最优值;
步骤405:根据如下粒子群公式的方程对微粒的速度和位置进行进化:
Vid(t+1)=W×Vid(t)+c1×r1×(Pid(t)-xid(t))+c2×r2×(Pgd(t)-xid(t))
xid(t+1)=xid(t)+Vid(t+1)
其中Vid(t)表示第t代的第i个个体的速度,Pid(t)表示第t代的第i个个体的个体极值,Pgd(t)表示第t代的第i个个体的全局最优值,xid(t)表示第t代的第i个个体的微粒的个体值;
步骤406:对每个智能体中的微粒计算适应度值,更新个体极值和全局最优值,具体规则是:用它的适应度值xid和个体极值Pid比较,如果xid的适应度值大于Pid的适应度值,则用xid替换Pid;对每个粒子,用它的适应度值xid和全局最优值Pgd比较,如果xid的适应度值大于Pgd的适应度值,则用xid替换Pgd;
步骤407:令i←i+1;
步骤408:如果满足结束条件就转步骤409,其中,所述结束条件为误差足够好或i>n-1;否则,转向步骤405;
步骤409:结束粒子群算法的优化。
本发明没有详细叙述的部分属于本行业的公知的常用手段,这里不一一叙述。
本发明的效果可以通过以下仿真实验进行验证:
1.实验运行环境和条件设置
实验运行的环境:处理器为Intel(R)Core(TM)i3 CPU 550@3.2GHz 3.19GHz,内存为3.05GB,硬盘为1T,操作系统为Microsoft windows XP Professional 2002,编程环境为Visual C++6.0。
实验条件设置:实验中测试了常用的两个标准问题集,一个是MCNC问题集,这个问题集应用非常广泛,它只有5个硬矩形模块布图问题和5个软矩形模块布图问题,其中规模最大的问题也只有49个模块;另一个是GSRC问题集,它的问题规模从10个模块到300个模块,能够测试算法对大规模问题的性能。本发明中测试了单目标、硬矩形模块的实例集。实验中智能体网格的大小Lsize×Lsize设计为8×8,最大进化代数为1000,学习时的智能体网格大小sLssize×sLssize设计为4×4,自学习的时候智能体的最大进化代数为20,邻域竞争算子中的变异概率Po为0.4,加速因子c1、c2均为2,惯性权值W为从0.9-0.4线性递减的数,线性递减公式为:
2.实验内容和结果分析
本实验采用基于移动模式序列与多智能体粒子群的集成电路布图方法对MCNC问题集和GSRC问题集中的硬矩形模块进行了测试,考虑到算法的随机性,求解问题集中的每个问题时,重复运行10次,其测试结果如表1所示,每个问题运行一次时的面积利用率的计算方式如下:
表1
考虑到问题中所有实例的最优解是用各种不同的方法求解得到的,从表1的实验结果可看出本发明提出的方法是很有效的,对于apte、xerox、hp、n10a,n10b、n10c找到最优面积利用率的可能性比较高,对于ami33、ami49,本发明找到最优面积利用率的可能性较低,是因为这两个问题集的规模比较大,搜索空间大,而程序所设计的运行次数1000代,虽然运行速度很快,但是不能搜索到最优面积利用率。其仿真结果如附图7所示。
为了进一步说明本发明的算法的性能,下面将本发明的算法求解MCNC数据集的结构与已有的O-tree、Enhanced O-tree、B*-tree算法进行比较,比较的结果如表2所示。
表2
从以上实验结果可以看出,本发明是一种有效的布图方法,将移动模式序列与多智能体粒子群算法相结合求解集成电路布图问题是一个创新点,对发展其它算法求解集成电路布图问题有很好的指导作用。
Claims (4)
1.一种基于移动模式序列与多智能体粒子群的集成电路布图方法,其特征是:至少包括如下步骤:
步骤从101开始;
步骤102:参数设定:BoxRX,BoxTY分别记录已摆放的模块最小矩形包络的右边界和上边界;LeftToRight和BottomToTop是两个数组,分别按从左到右和从下到上的顺序记录已放置好的模块的右边界和上边界,即LeftToRight包含有x、yb、yt,BottomToTop包含有x1、xr、y;Edge//X和Edge//Y分别记录平行于X轴和Y轴的位置信息;Lsize×Lsize为多智能体的网格大小,t为大于或等于0的整数,表示第t代,Lt表示第t代智能体网格,Lt+1/2是Lt和Lt+1间的中间代智能体网格,Bestt是L0,L1,…,Lt中最优的智能体,CBestt是Lt中最优的智能体,sLssize×sLssize为自学习时的多智能体的网格大小,st表示为自学习时多智能体的代数,r1、r2指随机产生的0到1之间的实数,Li,j表示处在智能体网格第i行、第j列的智能体,energy(Li,j)表示智能体Li,j的能量,Po为邻域竞争时的选择变异概率,c1和c2为粒子群算法中的加速因子,W为粒子群算法中线性递减的惯性权重,n为所有微粒的总数;
步骤103:初始化智能体网格L0,更新Best0,采用随机生成满足模块顺序、移动序列号、模块方向的智能体网络,其中模块顺序是所有模块的一个排列,移动序列号是0到3之间的一个整数,模式方向是0或1;
步骤104:循环调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤105:计算适应度函数,并搜索出智能体中的个体极值和全局最好值,令t=0;
步骤106:网格Lt中每个智能体执行邻域竞争算子,得到Lt+1/2,Li,j max表示智能体Li,j邻域中能量最大的智能体,如果energy(Li,j)>energy(Li,j max),则智能体Li,j继续存活在网格上,否则,必须死亡,空出的格点由交换Li,j max的一部分而得到的新智能体占据,占据的方法由循环调用变异算法对每个智能体进行变异;
步骤107:对Lt+1/2中的每个智能体,将粒子群算法作用在其上,进化得到Lt+1,对每个智能体的模块的摆放顺序采用粒子群公式进行变化,对于模块的方向和模块的移动序列号采用单点交叉的方法,当当前代数t为偶数时,它们将和全局最好值的模块的方向和模块的移动序列号进行单点交叉,否则,它们将和个体极值的模块的方向和模块的移动序列号进行单点交叉,得到新的智能体网络;
步骤108:从Lt+1中找出CBestt+1;
步骤109:将自学习算子作用在CBestt+1上,由CBestt+1循环调用变异产生新智能体sLssize×sLssize,变异方法与步骤106中的变异方法相同,ssize是自学习时智能体的大小,若智能体sLi,j满足自学习条件,不断执行将邻域竞争算子和粒子群算法作用在新产生的智能体sLi,j上,邻域竞争算子和粒子群算法分别与步骤106和步骤107中的邻域竞争算子和粒子群算法相同,直到自学习算子结束,即达到自学习时的最大代数,将自学习结束后得到的全局最优值赋值给CBestt+1;
步骤110:如果energy(CBestt+1)>energy(Bestt),则直接进入步骤111;否则,转向步骤112;
步骤111:把CBestt+1的值赋予Bestt+1,转向步骤113;
步骤112:把Bestt的值赋予Bestt+1,把Bestt的值赋予CBestt+1;
步骤113:如果不满足终止准则,即没有达到最大进化代数,令t自加1,转向步骤106;否则,转向步骤114;
步骤114:结束基于移动模式序列与多智能体粒子群的集成电路布图方法。
2.根据权利要求1所述的一种基于移动模式序列与多智能体粒子群的集成电路布图方法,其中所述步骤104包括如下步骤:
步骤201:开始调用基于移动模式序列的算法对智能体网格中每个智能体进行编码;
步骤202:初始化每个模块的左下角坐标为(0,0),令
步骤203:i←1;
步骤204:令j←i-1;若(MMi=0),转步骤205;若(MMi=1),转步骤207;若(MMi=2),令 并转步骤209;若(MMi=3), 并转步骤217;
步骤205:令若Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤205;
步骤206:令并转步骤225;
步骤207:令若Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤207;
步骤208:令并转步骤225;
步骤209:令若j≥0且Edge//X非上覆盖BottomToTop[j],则令j←j-1并转步骤209;
步骤210:若j≥0,则令CoverLeftX←BottomToTop[j].xl,j←j-1;
步骤211:若j≥0且则转步骤212;否则,令j←i-1并转步骤213;
步骤212:令若Edge//X上覆盖BottomToTop[j],BottomToTop[j].xl<CoverLeftX,则令CoverLeftX←BottomToTop[j].xl;令j←j-1,并转步骤211;
步骤213:令若j≥0且Edge//Y非右覆盖LeftToRight[j],则令j←j-1并转步骤213;
步骤214:若j≥0,则令CoverRightX←LeftToRight[j].x;否则,令CoverRightX←0;
步骤215:若(CoverRightX≥CoverLeftX)或者(CoverRightX<CoverLeftX)且则令CanMove←False;否则,令CanMove←True;
步骤216:若CanMove=True,则令j←i-1并转步骤209;否则,转步骤225;
步骤217:令 若j≥0且Edge//Y非上覆盖LeftToRight[j],则令j←j-1并转步骤217;
步骤218:若j≥0,则令CoverBottomY←LeftToRight[j].yb,j←j-1;
步骤219:若j≥0且则转步骤220;否则,令j←i-1并转步骤221;
步骤220:令若Edge//Y上覆盖BottomToTop[j]且(LeftToRight[j].yb<CoverBottomY),则令CoverBottomY←LeftToRight[j].yb;令j←j-1,并转步骤219;
步骤221:令若j≥0且Edge//X非右覆盖BottomToTop[j],则令j←j-1并转步骤221;
步骤222:若j≥0,则令CoverTopY←BottomToTop[j].y;否则,令CoverTopY←0;
步骤223:若(CoverTopY≥CoverBottomY)或者(CoverTopY<CoverBottomY)且则令CanMove←False;否则,令CanMove←True;
步骤224:若CanMove=True,则令j←i-1并转步骤217;否则,转步骤225;
步骤225:若则令若则令
步骤226:令
步骤227:若j>0且(LeftToRight[j].x<LeftToRight[j-1].x),则令j←j-1,转步骤227;否则令j←i;
步骤228:若j>0且(BottomToTop[j].y<BottomToTop[j-1].y),则令j←j-1,转步骤228;否则令i←i+1;
步骤229:若(i<n),则转步骤204;否则,转向步骤230;
步骤230:结束基于移动模式序列的编码。
3.根据权利要求1所述的一种基于移动模式序列与多智能体粒子群的集成电路布图方法,其中所述的步骤106包括如下步骤:
输入:输出:Li,j(P)=(c0,c1,…,cn-1);
Swap(x,y)表示交换x和y的取值,U(0,1)为0-1均匀分布的随机数,Random(n,i)是0,1,…,n-1中的一个随机整数且不等于i;
步骤301:开始进行变异算子;
步骤302:令Li,j(P)←Li,j max(P),i←0;
步骤303:若U(0,1)<Po,转向步骤304;否则,转向步骤306;
步骤304:令l←Random(n,i);
步骤305:Swap(ci,cl);
步骤306:令i←i+1;
步骤307:若i<n,则转步骤303;否则,转步骤308;
步骤308:结束变异算子。
4.根据权利要求1所述的一种基于移动模式序列与多智能体粒子群的集成电路布图方法,其中所述的步骤107包括如下步骤:
步骤401:开始粒子群算法进行优化;
步骤402:初始化,令i←0;
步骤403:计算每个智能体的适应度值;
步骤404:并找出个体极值和全局最优值;
步骤405:根据如下粒子群公式的方程对微粒的速度和位置进行进化:
Vid(t+1)=W×Vid(t)+c1×r1×(Pid(t)-xid(t))+c2×r2×(Pgd(t)-xid(t))
xid(t+1)=xid(t)+Vid(t+1)
其中Vid(t)表示第t代的第i个个体的速度,Pid(t)表示第t代的第i个个体的个体极值,Pgd(t)表示第t代的第i个个体的全局最优值,xid(t)表示第t代的第i个个体的微粒的个体值;
步骤406:对每个智能体中的微粒计算适应度值,更新个体极值和全局最优值,具体规则是:用它的适应度值xid和个体极值Pid比较,如果xid的适应度值大于Pid的适应度值,则用xid替换Pid;对每个粒子,用它的适应度值xid和全局最优值Pgd比较,如果xid的适应度值大于Pgd的适应度值,则用xid替换Pgd;
步骤407:令i←i+1;
步骤408:如果满足结束条件就转步骤409,其中,所述结束条件为误差足够好或i>n-1;否则,转向步骤405;
步骤409:结束粒子群算法的优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733462.XA CN103714211B (zh) | 2013-12-24 | 2013-12-24 | 基于移动模式序列与多智能体粒子群的集成电路布图方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733462.XA CN103714211B (zh) | 2013-12-24 | 2013-12-24 | 基于移动模式序列与多智能体粒子群的集成电路布图方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103714211A CN103714211A (zh) | 2014-04-09 |
CN103714211B true CN103714211B (zh) | 2016-08-17 |
Family
ID=50407182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310733462.XA Active CN103714211B (zh) | 2013-12-24 | 2013-12-24 | 基于移动模式序列与多智能体粒子群的集成电路布图方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103714211B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679326B (zh) * | 2017-10-10 | 2019-07-09 | 宁波大学 | 一种二值fprm电路面积与延时综合优化方法 |
CN108233778B (zh) * | 2018-01-19 | 2020-05-12 | 中国科学院合肥物质科学研究院 | 一种多智能单元串并联展收机构协同控制优化方法 |
CN111157002B (zh) * | 2019-12-30 | 2022-09-23 | 西安电子科技大学 | 基于多智能体进化算法的飞行器3d路径规划方法 |
TWI741760B (zh) * | 2020-08-27 | 2021-10-01 | 財團法人工業技術研究院 | 學習式生產資源配置方法、學習式生產資源配置系統與使用者介面 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375895A (zh) * | 2010-08-09 | 2012-03-14 | 中国科学院微电子研究所 | 一种自动构建器件模型参数优化提取过程的方法 |
US8437558B1 (en) * | 2009-10-08 | 2013-05-07 | Hrl Laboratories, Llc | Vision-based method for rapid directed area search |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112369B2 (en) * | 2009-02-11 | 2012-02-07 | The United States Of America As Represented By The Secretary Of The Navy | Methods and systems of adaptive coalition of cognitive agents |
-
2013
- 2013-12-24 CN CN201310733462.XA patent/CN103714211B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8437558B1 (en) * | 2009-10-08 | 2013-05-07 | Hrl Laboratories, Llc | Vision-based method for rapid directed area search |
CN102375895A (zh) * | 2010-08-09 | 2012-03-14 | 中国科学院微电子研究所 | 一种自动构建器件模型参数优化提取过程的方法 |
Non-Patent Citations (1)
Title |
---|
多智能体进化模型和算法研究;钟伟才;《中国优秀博硕士学位论文全文数据库(博士)<信息科技辑>》;20050615(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103714211A (zh) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107103113B (zh) | 面向神经网络处理器的自动化设计方法、装置及优化方法 | |
CN107330214A (zh) | 基于离散化与启发式进化算法的空间布局优化方法 | |
CN105740644B (zh) | 一种基于模型学习的清洁机器人最优目标路径规划方法 | |
CN103714211B (zh) | 基于移动模式序列与多智能体粒子群的集成电路布图方法 | |
CN106527381B (zh) | 一种面向并行批处理机动态调度的快速评估方法 | |
CN107025518A (zh) | 一种电动汽车充电站规划方法及装置 | |
CN114896937A (zh) | 一种基于强化学习的集成电路布局优化方法 | |
CN107092255A (zh) | 一种基于改进遗传算法的多移动机器人路径规划方法 | |
CN106680669A (zh) | 基于二进制混合算法的配电网故障区段定位方法 | |
CN105956663A (zh) | 异形零件下料的并行排样优化方法 | |
CN107632590B (zh) | 一种基于优先级的底事件排序方法 | |
CN104123684B (zh) | 一种计及网损和可靠性的配电网经济性重构方法 | |
CN110426637A (zh) | 一种基于神经网络的电池故障诊断方法及装置 | |
CN104504468A (zh) | 基于三维移动模式序列与密母算法的三维装箱方法 | |
CN108364069A (zh) | 一种基于遗传算法的机器人焊接路径规划方法 | |
CN103714384B (zh) | 基于移动模式序列与遗传禁忌的集成电路的布图方法 | |
CN103679271B (zh) | 基于Bloch球面坐标及量子计算的碰撞检测方法 | |
CN105512752A (zh) | 一种城市公共服务设施选址方法 | |
CN113935237A (zh) | 一种基于胶囊网络的输电线路故障类型判别方法及系统 | |
CN104536831B (zh) | 一种基于多目标优化的多核SoC软件映射方法 | |
CN108875936A (zh) | 求解三维空间内任意两个多面体间的最近距离的方法 | |
CN105955927A (zh) | 基于分解-并行遗传算法的约束优化算法 | |
Huang et al. | Mobile robot path planning based on improved genetic algorithm | |
CN108734349A (zh) | 基于改进遗传算法的分布式电源选址定容优化方法及系统 | |
CN106503793B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |