<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

基于改進混洗蛙跳算法的軟硬件劃分方法與流程

文檔序號:11677366閱讀:243來源:國知局

技術領域:

本發明涉及系統軟硬件協同設計中的軟硬件劃分技術,涉及到群智能優化算法應用于軟硬件劃分時的算法改進。



背景技術:

1、軟硬件劃分問題描述。

軟硬件劃分即決定任務集中的子任務由硬件實現還是由軟件實現。軟硬件劃分過程可以理解成一個尋優的過程,通過軟硬件劃分方法從眾多的劃分方案中找出最優的方案,從而使得系統平臺的性能更好地發揮。軟硬件劃分可以用一個二元組g=<v,e>表示。其中v={v0,v1,…vk,…vn}是代劃分任務節點的集合,任務規模數為n,vk表示第k個任務節點,e={(vk,vl),ek,l|vk,vl∈v}表示兩個任務節點vk與vl之間存在數據依賴關系且其兩者之間的通信時間為ek,l。

每個節點vk的屬性如式(1)所示:

vk=<i,ty(k),ts,th,ah,…>(1)

其中i代表節點的識別號,ty(k)={sw,hw}代表節點vk有軟件sw和硬件hw兩種實現方式,ts代表節點的任務節點的軟件執行時間,th代表任務節點的硬件執行時間,ah表示任務硬件實現時所需硬件面積。在大多數研究中,通常將所有任務節點的執行時間以及各節點之間的通信時間之和t(v)作為尋優目標,以硬件面積和a作為約束條件,則其數學模型描述如式(2)所示,其中arealimit代表其硬件面積約束的大小:

min:

subjectto:

a=∑ah(ty(k)=hw)≤arealimit

針對單軟件+單硬件系統平臺,n個任務節點的軟硬件劃分方案可以用一個0,1組成的n維向量表示。其0表示任務節點用軟件實現,1表示任務節點用硬件實現。如方案[0,1,1,0...]表示任務節點0用軟件實現,任務節點1用硬件實現,任務節點2用硬件實現,任務節點3用軟件實現......。

2、傳統的混洗蛙跳算法在軟硬件劃分上的應用。

混洗蛙跳算法(shuffledfrogleapalgorithm,sfla)是一種新型群體智能優化算法,其思想來源于青蛙群體的遷移和覓食行為。軟硬件劃分是一個在所有劃分方案中尋找最優劃分方案的過程,即在解空間中尋找最優的解,是一個最優化問題。混洗蛙跳算法作為一種優化算法,以種群中青蛙的位置坐標對應解空間中的解,以青蛙的跳躍作為對最優解的搜索,因此混洗蛙跳算法可以用作求解軟硬件劃分問題。

混洗蛙跳算法應用于軟硬件劃分時以種群中一只青蛙的位置坐標對應解空間中的一個可行解,即一種軟硬件劃分方案;以軟硬件劃分方案對應的所有子任務執行時間與任務間通信時間和t(v)作為適應度函數,用來評判青蛙位置坐標的好壞;以青蛙跳躍變換位置坐標的過程對應搜索最優解的過程;以所有迭代結束后最優青蛙的位置坐標作為算法輸出解,即要尋找的最優軟硬件劃分方案。主要步驟如下:首先確定青蛙種群規模m、分組數g、約束條件lim、最大迭代次數itermax等參數。然后隨機獲數量為m的可行解,即初始化種群中所有m個青蛙的位置,然后進入迭代過程。迭代由分組、更新、混洗三部分組成。在分組過程中,首先根據每只青蛙的適應度函值由好到壞對解進行排序,排序后的青蛙依次被分配到g個組中,即排在第1位的青蛙分到第1組,第2位青蛙分到第2組......依次類推,當青蛙分到最后一組后再從第1組開始繼續分,直到所有青蛙均被分組完成;在更新過程中,首先由組內最差青蛙向組內最優青蛙所在的位置進行一次跳躍,如果跳躍后的位置優于跳躍前,則用新位置代替舊位置,否則,組內最差青蛙向整個種群中最優青蛙的位置進行一次跳躍,如果跳躍后的位置優于跳躍前,則用新位置代替舊位置,如果依舊沒有獲得更優的位置,則隨機生成一個位置代替組內最差青蛙現在的位置;待各組中的最差青蛙位置依次更新完成后,將青蛙重新混洗,一次迭代完成。按照這種方式進行反復循環,直到迭代達到最大次數itermax或算法終止條件時,輸出最優青蛙的位置作為最佳軟硬件劃分方案。



技術實現要素:

為克服現有技術的不足,本發明旨在提出一種改進的軟硬件劃分方法,用于軟硬件協同設計中。主要針對混洗蛙跳算法應用于軟硬件劃分時收斂速度慢并且有可能陷入局部最優等問題進行改進,提出一種比原始蛙跳算法性能更好的軟硬件劃分算法。本發明采用的技術方案是,基于改進混洗蛙跳算法的軟硬件劃分方法,步驟如下:

(1)初始化青蛙種群規模m,分組數g,硬件面積約束lim參數,確定算法最大迭代次數itermax以及算法終止條件,初始化當前迭代次數iter=0,對于節點數為n的待劃分任務,首先生成m個符合約束條件的青蛙位置坐標,每個位置為0、1組成的n維向量;

(2)根據青蛙分組數g以及任務節點數n,確定g個等距離的中心坐標,用中心坐標集合l表示,l={l1,l2,…lg,…,lg},其中lg即為第g組的中心坐標,lg是一個n維向量,表示為lg=[lg1,lg2,…,lgn,…,lgn],其中lgn為向量中第n位的值;

(3)迭代更新開始,計算m只青蛙的位置坐標所對應的適應度值,并按照適應度由好到壞對青蛙進行排序,排序后的青蛙種群用集合f表示,f={f1,f2,…,fm,…fm},fm表示排序后的第m只青蛙所在的位置坐標,fm是一個n維向量,fm=[fm1,fm2,…,fmn,…,fmn]其中fmn表示向量中第n位的值;

(4)按照排序的順序依次計算每只青蛙位置坐標到每個中心坐標的距離,根據計算結果,將青蛙依次分配到距離最近的中心坐標所對應的未飽和的組。fm與lg之間的距離dm,g的計算公式如式(3)所示,

(5)根據公式(4)計算每一組青蛙在本次迭代中所對應的組內最大跳躍次數ml,第g組青蛙在第iter代更新時對應的組內最大跳躍次數用mlg(iter)表示。

其中pg(iter)用于表示第g組所在區域在iter次迭代時代出現最優解的可能性大小,pg(0)的值為0,r為一個常數,g為青蛙的分組數,mlg(iter-1)表示第g組青蛙在第iter-1代的實際跳躍次數,然后進行組內尋優,每組內最差青蛙向組內最優青蛙所在位置進行跳躍,青蛙位置坐標更新公式如公式(5)所示,其中x'gw表示g組內最差青蛙跳躍后的位置坐標,xgw表示g組內最差青蛙跳躍前的位置坐標,xgb表示第g組最優青蛙的位置坐標,rand是一個隨機數。

x'gw=xgw+rand*(xgb-xgw)(5)

青蛙跳躍后的位置坐標對應的劃分方案如果滿足硬件面積約束且比跳躍前位置的適應度值更優,則青蛙組內尋優成功,用新的位置坐標代替原始位置,并直接進入步驟(8);否則,青蛙組內尋優失敗,判斷本組內青蛙的實際跳躍次數是否達到最大跳躍次數ml,如果沒有,則再次向著組內最優青蛙進行跳躍;如果本組青蛙跳躍次數達到最大跳躍次數且沒有尋優成功,則進行步驟(6);

(6)組內最差青蛙向著全局最優青蛙位置進行跳躍,更新公式如式(6)所示,其中xb表示全局最優青蛙位置坐標:

x'gw=xgw+rand*(xb-xgw)(6)

青蛙完成跳躍之后的位置坐標對應的劃分方案如果滿足硬件面積約束且比原始位置的適應度值更優,則青蛙向全局最優青蛙跳躍成功,用新的位置代替原始位置;否則,進入步驟(7);

(7)隨機生成一個新的滿足硬件面積約束條件的位置坐標代替組內最差青蛙的位置坐標;

(8)所有青蛙重新混洗,一次迭代更新完成,當前迭代次數iter加1,判斷是否達到最大迭代次數itermax以及是否達到算法終止條件,若是,則進入步驟(9),否則,回到步驟(3)開始下一輪迭代;

(9)輸出最優青蛙的位置坐標即為最佳軟硬件劃分方案。

本發明的特點及有益效果是:

本發明通過對混洗蛙跳算法應用于軟硬件劃分時的分組方式以及更新方式這兩點所存在的問題進行了改進,有效的提升了算法的收斂速度以及全局尋優能力,使得改進后的算法求解質量以及收斂速度相比于原始算法得到了較好的提升。針對50到1000節點的不同的任務規模,改進算法較原始算法在算法運行時間以及求解質量上的提升程度如表1所示。

表1改進混洗蛙跳算法較原始算法性能對比

附圖說明:

圖1算法改進前后分組方式示意圖。

分組方式的改進如圖1所示,以9只青蛙的種群為例,假設這9只青蛙根據適應度排序后為x1,x2,x3,x4,x5,x6,x7,x8,x9,其中x1代表第1只青蛙的位置坐標,x2代表第2只青蛙的位置坐標......假設x1,x2,x3處于區域z1,x4,x5,x6處于區域z2,x7,x8,x9處于區域z3。按照原始算法中依照適應度值排序后的順序依次分組的分組方式,分組結果為圖1(a)所示,細實線連接為a組,虛線連接為b組,粗實線連接為c組。按照改進后算法依照到中心坐標距離的分組方式,分組結果為圖1(b)所示,其中每個區域中間部分即為本發明設置的l1,l2,l3這幾個中心坐標。根據到坐標的距離,x1,x2,x3被分到a組,x4,x5,x6被分到b組,x7,x8,x9被分到c組。可以看出,本發明采用的方法可以將分布在同一片區域的青蛙分到同一組中。

具體實施方式:

1、本發明圍繞原始蛙跳算法應用于軟硬件劃分時存在的兩點問題進行改進。

(1)在分組階段,假設種群中共有9只青蛙,分成三組,按適應度函數值排序結束之后的青蛙分別表示為x1,x2,...,x9,其中x1代表第1只青蛙的位置坐標,x2代表第2只青蛙的位置坐標......則按照原始算法的分組方式,分到a組青蛙為x1,x4,x7;分到b組青蛙為x2,x5,x8;分到c組青蛙為x3,x6,x9。a、b、c三組的組內最優青蛙分別是x1,x2,x3,根據原始算法更新方式可知,每組最差青蛙將分別向著x1,x2,x3所在的位置跳躍。但是,如果青蛙x1,x2,x3分布在空間中的同一片區域z1上,x4,x5,x6分布于同一片區域z2上,x7,x8,x9分布于同一片區域z3上。那么按照原始算法的更新方式,因為每組中最優的青蛙都在z1區域,所以所有青蛙都將向著區域z1中的青蛙跳躍,即最優解的搜索將向著區域z1進行收斂。這樣很容易使解陷入局部最優,不利于全局搜索。

針對這一問題,本發明改變了原始算法的分組方式,首先在解空間中根據分組數g以及任務節點數n確定g個等距離的n維向量坐標,坐標集合用l表示,l={l1,l2,…lg,…,lg},然后將lg作為第g組的中心坐標,lg=[lg1,lg2,…,lgn,…,lgn],其中lgn為向量中第n位的值。然后將種群中所有m只青蛙依據適應度函數進行排序,排序后的青蛙種群用集合f表示,f={f1,f2,…,fm,…fm},fm是一個n維向量,fm=[fm1,fm2,…,fmn,…,fmn]其中fmn表示向量中第n位的值。最后按照排序的順序依次計算每只青蛙到每個中心坐標的距離,根據計算結果,將青蛙依次分配到距離最近的中心坐標所對應的組。fm與lg之間的距離dm,g的計算公式如式(3)所示,

此外,為保證每組青蛙數量相同,在分組時當距離青蛙最近的坐標所對應的那一組青蛙數量達到飽和時,則需要根據距離將青蛙分配到其他數量未飽和的組。

按照改進后的分組方法,上文假設的9只青蛙的分組情況將變成:分到a組的青蛙為x1,x2,x3;分到b組的青蛙為x4,x5,x6;分到c組的青蛙為x7,x8,x9。跟據分組情況可以看出,處在同一片區域的青蛙將被成功地分到一組中,既z1區域中的青蛙被分到a組,z2區域中的青蛙被分到b組,z3區域中青蛙被分到c組。a、b、c三組的組內的最優青蛙將變成x1,x4,x7,這樣就有效避免了所有青蛙都向著x1,x2,x3所在的z1區域進行跳躍,從而有利于青蛙種群在全局各個區域進行尋優。

(2)在更新階段,所有組內最差青蛙向其組內最優青蛙跳躍的次數只有一次。但是,由于不同的區域最優解出現的概率不同。所以,在最優解出現概率較大的區域,應允許青蛙在一次跳躍尋優失敗后,有更多跳躍的機會。

針對這一問題,本發明為每組青蛙在組內尋優時設置最大跳躍次數ml,第g組青蛙在第iter代更新時對應的組內最大跳躍次數可表示為mlg(iter)。在更新時,g組最差青蛙在向g組最優青蛙完成一次跳躍后,若未獲得更優的位置且實際跳躍次數小于最大跳躍次數時,g組最差青蛙可以繼續向組內最優青蛙跳躍;否則,若g組內最差青蛙獲得更優位置或實際跳躍次數達到最大跳躍次數時,g組最差青蛙終止跳躍。mlg(iter)的計算公式如式(4)所示

其中pg(iter)用于表示第g組所在區域在iter次迭代時代出現最優解的可能性大小。pg(0)的值為0,r為一個常數,g為青蛙的分組數,mlg(iter-1)表示第g組青蛙在第iter-1代的實際跳躍次數。

2、本發明的改進混洗蛙跳算法運用于軟硬件劃分的具體參數設置如下:

青蛙種群規模m=20,分組數g=4,算法最大迭代次數itermax=1500,算法終止條件為連續200次無效迭代。以硬件面積約束arealimit作為約束條件。以所有任務節點的執行時間與節點間通信時間和t(v)作為評估函數。對于節點數為n的待劃分任務,以0和1組成的n維向量表示青蛙的位置坐標,即一個軟硬件劃分方案,運用于軟硬件劃分的具體步驟如下:

(1)初始化青蛙種群規模m=20,分組數g=4,當前迭代次數iter=0,算法最大迭代次數itermax=1500,算法終止條件為連續200次無效迭代。以硬件面積約束arealimit作為約束條件。以所有任務節點的執行時間與節點間通信時間和t(v)作為評估函數。對于節點數為n的待劃分任務,首先生成m個符合約束條件的青蛙位置,每個位置為一個0和1組成的n維向量,對應一個可行解,即一個軟硬件劃分方案。

(2)根據青蛙分組數g以及任務節點數n,首先確定g個等距離的n維向量l={l1,l2,…,lg}作為每組對應的中心坐標。

(3)迭代更新開始,計算m只青蛙的位置所對應的適應度值,并按照適應度值由好到壞對青蛙進行排序。

(4)從排序后的第一只青蛙開始,按照公式(3)依次計算每只青蛙到各個中心坐標l的距離,根據計算結果將青蛙分配到距離最近的那個坐標所在的未飽和組,當最后一只青蛙分組完成后,進入下一步驟,對每組中的最差青蛙位置進行更新。

(5)根據公式(4)計算每組青蛙在本次迭代中所對應的組內最大跳躍次數ml,然后進行組內尋優,組內最差青蛙向組內最優青蛙所在位置進行跳躍,更新公式如公式(5)所示,其中x'gw表示g組內最差青蛙跳躍后的位置,xgw表示g組內最差青蛙跳躍前的位置,xgb表示第g組最優青蛙的位置,rand是一個隨機數。

x'gw=xgw+rand*(xgb-xgw)(5)

青蛙跳躍后的位置如果滿足硬件面積約束且比原始算法的適應度值更優,則青蛙組內尋優成功,用新的位置代替原始位置,并直接進入步驟(8)。否則,青蛙組內尋優失敗,判斷本組內青蛙跳躍次數是否達到最大跳躍次數ml,如果沒有,則再次向著組內最優青蛙進行跳躍。如果本組青蛙跳躍次數達到最大跳躍次數且沒有尋優成功,則進行步驟(6)。

(6)組內最差青蛙向著全局最優青蛙進行跳躍,更新公式如式(6)所示,其中xb表示全局最優青蛙。

x'gw=xgw+rand*(xb-xgw)(6)

青蛙完成跳躍之后的位置如果滿足硬件面積約束且比原始位置的適應度值更優,則青蛙向全局最優青蛙跳躍成功,用新的位置代替原始位置。否則。進入步驟(7)。

(7)隨機生成一個新的滿足硬件面積約束條件的位置代替組內最差青蛙的位置。

(8)所有青蛙重新混洗,一次迭代更新完成。當前迭代次數iter加1,判斷是否達到最大迭代次數itermax以及是否達到算法終止條件,若是,則進入步驟(9),否則,回到步驟(3)開始下一輪迭代。

(9)輸出最優青蛙所在的位置即為最佳軟硬件劃分方案。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影