一种基于融合算法的高效软硬件划分方法与流程

文档序号:15200161发布日期:2018-08-19 10:44阅读:140来源:国知局

本发明涉及一种软硬件划分方法。特别是涉及一种基于融合算法的高效软硬件划分方法。



背景技术:

1、现有技术的软硬件划分

一个处理器的架构由硬件处理单元和软件处理单元共同组成。软硬件划分就是任务集中的子任务分别分配给软件或者硬件来执行。不同的分配方案会达到不同的执行效果,软硬件划分的目标就是找到最佳的软硬件划分方案从而获得最好的性能。软硬件划分问题是一个np-hard问题,对于n个节点的任务,待划分的任务集可以用dag图来表示。如图1所示,其中nodei是第i个任务节点,si,hi和ai分别表示节点i的软件执行时间,硬件执行时间和硬件面积需求,ci,j表示节点i和节点j之间的通信时间,若节点i和节点j之间不存在依赖关系,则ci,j=0。

对于n个任务节点的软硬件划分问题,其划分方案(即问题的解)可以表示为一个n维向量x,x=[x1,x2,x3…xn]。其中xi等于0或1,表示任务节点i的实现方式,0表示用软件实现,1表示用硬件实现。以所有任务节点的执行时间以及各节点之间的通信时间之和t(v)作为寻优目标,以硬件面积和asum作为约束条件,则其数学模型描述如式(1)所示,其中arealimit代表其硬件面积约束的大小:

min:

subjectto:

2、原始混洗蛙跳算法在软硬件划分上的应用

混洗蛙跳算法(shuffledfrogleapalgorithm,sfla)是一种群体智能优化算法,算法过程主要模仿青蛙种群的觅食行为。当用sfla求解软硬件划分问题时,一只青蛙的位置对应着一个解,即一个软硬件划分方案。以软硬件划分问题的目标函数作为解的适应度函数,评价当前解的好坏。混洗蛙跳算法通过对种群中青蛙位置的迭代更新,使得种群中每只青蛙所对应的解的质量不断提升,最终获得一个最优或接近最优的软硬件划分方案。算法主要步骤如下:

(1)设置青蛙种群规模m、分组数g、算法终止条件等参数。

(2)随机获取数量为m的符合约束条件的解,即初始化种群中所有m个青蛙的位置。

(3)迭代更新开始,所有青蛙进行分组。首先将青蛙按照适应度函数值由好到坏进行排序,然后按照顺序将青蛙依次分配到g个组中。

(4)对分组后的青蛙进行组内寻优,由组内最差青蛙向组内最优青蛙所在的位置进行一次跳跃,如果跳跃后的位置优于跳跃前,则用新位置代替旧位置,并进入步骤(7),否则,进行下一步。

(5)进行全局寻优,组内最差青蛙向整个种群中最优青蛙的位置进行一次跳跃,如果跳跃后的位置优于跳跃前,则用新位置代替旧位置,并进入步骤(7),否则,进行下一步。

(6)进行随机生成。随机生成一个新的位置代替组内最差青蛙现在的位置。

(7)待各组中的最差青蛙位置依次更新完成后,将青蛙重新混洗,一次迭代完成。

(8)判断是否达到算法终止条件,若是,则输出当前种群的最优青蛙位置即为求得的软硬件划分方案,否则回到步骤(3)开始下一轮的迭代更新。

3.现有技术的贪婪算法

贪婪算法(greedyalgorithms,gra)是一种最简单的启发式算法,在对问题进行求解时,贪婪算法根据收益函数,做出当前状态下的最优选择。贪婪算法具有易实现,效率高等特点,但是贪婪算法所求得的解通常是局部最优解,因此在软硬件划分中不常被采用。

原始的混洗蛙跳算法具有较强的全局寻优能力,但是在迭代过程中会出现大量无效迭代,从而使得算法执行时间增长。贪婪算法全局寻优能力不强,但是在算法终止前的每次迭代均能够找到一个更优的解,算法时间较短。



技术实现要素:

本发明所要解决的技术问题是,提供一种在求解软硬件划分问题时可以在更短的时间内获得与原始混洗蛙跳算法相同质量的解,从而满足动态任务对软硬件划分算法实时性要求的基于融合算法的高效软硬件划分方法。

本发明所采用的技术方案是:一种基于融合算法的高效软硬件划分方法,包括如下步骤:

1)初始化参数,包括初始化青蛙种群规模m,分组数g,硬件面积约束lim;

2)初始化青蛙种群,包括对于由n个任务节点组成的任务集,首先生成m个符合硬件面积约束条件的青蛙位置坐标,即m个解,解的质量对应青蛙位置的适应度,每个解为0、1组成的n维向量;

3)迭代更新开始,计算当前出现的连续无效迭代次数;

4)判断连续无效迭代次数是否大于设定的最大连续无效迭代阈值,是,则执行步骤5),否则,跳至步骤7);

5)找出当前青蛙种群中的最优解sbest以及最差解sworst,并运行贪婪算法;

6)若当前青蛙种群的最差解sworst的适应度优于最优解sbest的适应度,即通过贪婪算法找到了更优的解,则进行步骤7),否则,跳至步骤12);

7)对m个青蛙进行分组,得到g组子种群;

8)进行组内寻优,使组内最差位置的青蛙向组内最优位置的青蛙跳跃从而获得新的位置;青蛙跳跃后所获得的新的位置如果符合硬件面积约束条件且比原来的位置更优,则组内寻优成功,用新的位置代替原来的位置,并进入步骤11),否则,进入步骤9);

9)进行全局寻优,使组内最差位置的青蛙向着全局最优位置的青蛙进行跳跃,从而获得新的位置;青蛙完成跳跃之后获得的新位置如果满足硬件面积约束条件且比原来的位置更优,则全局寻优成功,用新的位置代替原来的位置,并进入步骤11),否则,进入步骤10);

10)随机生成一个青蛙位置,即随机生成一个新的满足硬件面积约束条件的位置来代替组内的最差青蛙位置;

11)所有青蛙重新混洗,即将分组后的青蛙种群混合并重新按照适应度由好到坏排序,一次迭代更新完成,返回步骤3)开始下一轮迭代;

12)算法终止,输出当前的最优解作为软硬件划分方案。

步骤3)所述的无效迭代是指:本轮迭代未能够搜索到比上一轮更优的解;所述的连续无效迭代次数是指连续多次迭代中,均未能搜索到质量比上一轮更优的解。

步骤5)所述的贪婪算法包括:

(1)以青蛙当前种群中的最优解sbest作为贪婪算法的初始解sori,即sori=sbest;sori是一个n维向量,sor是向量每一维的值;

(2)分别改变初始解sori的向量每一维的值,获得n个新解,第i个新解

(3)判断所述n个新解是否满足硬件面积约束条件,将满足硬件面积约束条件的新解保留下来,然后计算保留下来的新解的适应度值,将n个新解中适应度最好的解sbest记录下来;

(4)如果所述的解sbest的适应度好于初始解sori的适应度,则用sbest代替sori,即sori=sbest,并回到第(2)步继续迭代;否则,进入第(5)步;

(5)用初始解sori替代当前青蛙种群的最差解sworst,即sworst=sori,贪婪算法结束,进入步骤6)。

步骤7)所述的分组包括:计算m个青蛙的适应度,并按照适应度由好到坏对m个青蛙进行排序,根据排序后的顺序将所有的青蛙分成g组,排在第1位的青蛙分到第1组,排在第2位的青蛙分到第2组…排在第g位的青蛙分到第g组,排在g+1位的青蛙重新分到第1组,依此类推。

步骤8)所述的组内寻优采用如下公式进行:

s'gw=sgw+rand×step×(sgb-sgw)

其中,s'gw表示g组内最差青蛙跳跃后的位置,即搜索到的新的解;sgw表示g组内最差青蛙跳跃前的初始位置;sgb表示第g组最优青蛙的最优位置;rand是一个o到1之间的随机数,step为搜索步长。

步骤9)所述的全局寻优采用如下公式:

s'gw=sgw+rand×step×(sb-sgw)

其中,s'gw表示g组内最差青蛙跳跃后的位置,即搜索到的新的解;sgw表示g组内最差青蛙跳跃前的初始位置;sb表示全局最优青蛙位置;rand是一个o到1之间的随机数,step为搜索步长。

本发明的一种基于融合算法的高效软硬件划分方法,是一种求解效率更高的融合算法。本发明的方法将原始的混洗蛙跳算法与贪婪算法相融合,通过在混洗蛙跳算法出现一定数量的连续无效迭代时采用贪婪算法跳出无效迭代,以及在采用贪婪算法依旧不能找更优解的情况下及时终止整个算法这两个途径有效提升了算法效率。

附图说明

图1是软硬件划分问题dag图。

具体实施方式主

下面结合实施例和附图对本发明的一种基于融合算法的高效软硬件划分方法做出详细说明。

本发明的一种基于融合算法的高效软硬件划分方法,将混洗蛙跳算法和贪婪算法结合起来,提出了一种融合算法并将其应用于软硬件划分。本发明的方法在混洗蛙跳算法出现一定数量的连续无效迭代之后采用贪婪算法跳出无效迭代,并在采用贪婪算法依旧不能找到更优解的情况下及时终止整个算法,从而有效提升了算法效率。

本发明的一种基于融合算法的高效软硬件划分方法,包括如下步骤:

1)初始化参数,包括初始化青蛙种群规模m,分组数g,硬件面积约束lim;

2)初始化青蛙种群,包括对于由n个任务节点组成的任务集,首先生成m个符合硬件面积约束条件的青蛙位置坐标,即m个解(因为一只青蛙的位置对应一个解,以下所提到的解与青蛙位置的含义相同),解的质量对应青蛙位置的适应度,每个解为0、1组成的n维向量;

3)迭代更新开始,计算当前出现的连续无效迭代次数(inv_num);所述的无效迭代是指:本轮迭代未能够搜索到比上一轮更优的解;所述的连续无效迭代次数是指连续多次迭代中,均未能搜索到质量比上一轮更优的解。

4)判断连续无效迭代次数是否大于设定的最大连续无效迭代阈值(inv_max),是,则执行步骤5),否则,跳至步骤7);

5)找出当前青蛙种群中的最优解sbest以及最差解sworst,并运行贪婪算法;所述的贪婪算法包括:

(1)以青蛙当前种群中的最优解sbest作为贪婪算法的初始解sori,即sori=sbest;sori是一个n维向量,sor是向量每一维的值;

(2)分别改变初始解sori的向量每一维的值,获得n个新解,第i个新解

(3)判断所述n个新解是否满足硬件面积约束条件,将满足硬件面积约束条件的新解保留下来,然后计算保留下来的新解的适应度值,将n个新解中适应度最好的解sbest记录下来;

(4)如果所述的解sbest的适应度好于初始解sori的适应度,则用sbest代替sori,即sori=sbest,并回到第(2)步继续迭代;否则,进入第(5)步;

(5)用初始解sori替代当前青蛙种群的最差解sworst,即sworst=sori,贪婪算法结束,进入步骤6)。

6)若当前青蛙种群的最差解sworst的适应度优于最优解sbest的适应度,即通过贪婪算法找到了更优的解,则进行步骤7),否则,跳至步骤12);

7)对m个青蛙进行分组,得到g组子种群;所述的分组包括:

计算m个青蛙的适应度,并按照适应度由好到坏对m个青蛙进行排序,根据排序后的顺序将所有的青蛙分成g组,排在第1位的青蛙分到第1组,排在第2位的青蛙分到第2组…排在第g位的青蛙分到第g组,排在g+1位的青蛙重新分到第1组,依此类推。

8)进行组内寻优,使组内最差位置的青蛙向组内最优位置的青蛙跳跃从而获得新的位置;青蛙跳跃后所获得的新的位置如果符合硬件面积约束条件且比原来的位置更优,则组内寻优成功,用新的位置代替原来的位置,并进入步骤11),否则,进入步骤9);

所述的组内寻优采用如下公式进行:

s'gw=sgw+rand×step×(sgb-sgw)(1)

其中,s'gw表示g组内最差青蛙跳跃后的位置,即搜索到的新的解;sgw表示g组内最差青蛙跳跃前的初始位置;sgb表示第g组最优青蛙的最优位置;rand是一个o到1之间的随机数,step为搜索步长。

9)进行全局寻优,使组内最差位置的青蛙向着全局最优位置的青蛙进行跳跃,从而获得新的位置;青蛙完成跳跃之后获得的新位置如果满足硬件面积约束条件且比原来的位置更优,则全局寻优成功,用新的位置代替原来的位置,并进入步骤11),否则,进入步骤10);

所述的全局寻优采用如下公式:

s'gw=sgw+rand×step×(sb-sgw)(2)

其中,s'gw表示g组内最差青蛙跳跃后的位置,即搜索到的新的解;sgw表示g组内最差青蛙跳跃前的初始位置;sb表示全局最优青蛙位置;rand是一个o到1之间的随机数,step为搜索步长。

10)随机生成一个青蛙位置,即随机生成一个新的满足硬件面积约束条件的位置来代替组内的最差青蛙位置;

11)所有青蛙重新混洗,即将分组后的青蛙种群混合并重新按照适应度由好到坏排序,一次迭代更新完成,返回步骤3)开始下一轮迭代;

12)算法终止,输出当前的最优解作为软硬件划分方案。

在相同的求解质量下本本发明的一种基于融合算法的高效软硬件划分方法较原始算法在求解时间上缩短程度如表1所示。

表1融合算法与原始混洗蛙跳算法性能对比

下面给出最佳实施例

具体参数设置如下:

青蛙种群规模m=25,分组数g=5,以arealimit作为硬件面积的约束值。设置最大连续无效迭代阈值inv_max=50。以所有任务节点的执行时间与节点间通信时间和t(v)作为适应度函数。对于节点数为n的待划分任务,以0和1组成的n维向量表示青蛙的位置坐标,即一个解。运用于软硬件划分的具体步骤如下:

1、初始化参数。初始化青蛙种群规模m=25,分组数g=5,硬件面积约束arealimit等参数。

2、初始化青蛙种群。对于n个任务节点组成的任务集,首先生成25个符合约束条件的青蛙位置坐标,即25个解(因为一只青蛙的位置对应一个解,以下所提到的解与青蛙位置的含义相同)。每个解为0、1组成的n维向量。

3、迭代更新开始,计算当前出现的连续无效迭代次数inv_num。无效迭代的定义为本轮迭代未能搜索到比上一轮迭代更优的解。连续无效迭代次数inv_num的定义为在连续的inv_num次迭代中,均未能搜索到更优的解。

4、判断inv_num是否大于最大无效迭代阈值50,若是,则执行第5步,否则,则跳至第7步。

5、运行贪婪算法。

5.1找出青蛙当前种群中的最优解sbest以及最差解sworst。以青蛙当前种群中的解sbest作为贪婪算法的初始解sori,即sori=sbest。根据解的定义,sori是一个n维向量,

5.2分别改变初始解的每一维向量的值,获得n个新的解。如第i个新的解

5.3判断这n个新的解是否满足约束条件,将满足约束条件的解保留下来,然后计算这些保留下来的解的适应度,将适应度最好的解sbest记录下来。

5.4如果sbest的适应度好于sori的适应度,则用sbest代替sori,即sori=sbest,并回到步骤5.2继续迭代。否则,进入5.5。

5.5用sori替代青蛙当前种群的最差解sworst,即sworst=sori。

6、若sworst的适应度优于sbest,即通过贪婪算法找到了更优的解,则进行第7步,否则,跳至第12步。

7、对种群中的解进行分组。计算25个解的适应度值,并按照适应度由好到坏进行排序,根据排序后的顺序将所有解分成5组,排在第1位的解分到第1组,排在第2位的解分到第2组…排在第5位的解分到第5组,排在6位的解重新分到第1组,依此类推。

8、进行组内寻优。组内最差青蛙向组内最优青蛙跳跃从而获得新的解。组内寻优采用公式(1),青蛙跳跃后所获得的解如果满足约束条件且比原来的解更优,则组内寻优成功,用新的解代替原来的解,并进入第11步,否则,进入第9步;

9、进行全局寻优。组内最差青蛙向着全局最优青蛙位置进行跳跃,全局寻优采用公式(2)。青蛙完成跳跃之后的获得的新解如果满足约束条件且比原来的解更优,则全局寻优成功,用新的解代替原来的解并进入第11步;否则,进入第10步;

10、随机生成一个解。随机生成一个新的满足约束条件的解来替换组内的最差解。

11、所有青蛙重新混洗,一次迭代更新完成。进入第3步开始下一轮迭代。

12、算法终止,输出当前种群的最优解作为软硬件划分方案。

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