構(gòu)上進(jìn)行搜索。
[0043] 在步驟01生成起始編碼矩陣的基礎(chǔ)上,本發(fā)明將需初始化的搜索節(jié)點(diǎn)參數(shù)分為 搜索進(jìn)程參數(shù)與搜索節(jié)點(diǎn)兩類。如圖3所示,為本發(fā)明搜索初始化后的各個(gè)參數(shù)。
[0044] ( 1)編碼矩陣、C4圈數(shù)及C4圈計(jì)數(shù)矩陣初始化 C4圈為本發(fā)明的關(guān)鍵部分,是將編碼矩陣集合構(gòu)造為圖結(jié)構(gòu)的規(guī)則。本發(fā)明用定理證 明編碼矩陣中C4圈數(shù)與編碼矩陣冗余率之間的充分關(guān)系,將表示編碼矩陣冗余率的 轉(zhuǎn)化為C4圈數(shù),簡(jiǎn)化了算法的核心運(yùn)算。
[0045] 將步驟01使用的起始編碼矩陣作為起始搜索節(jié)點(diǎn)的編碼矩陣私計(jì)算其C4圈計(jì)數(shù) 矩陣計(jì)算C4圈計(jì)數(shù)矩陣有如下公式:
其中,6¥_#3(/^>,7為i行和j行之間的C4圈數(shù),為i行和j行之間的并的值。算 法遍歷起始編碼矩陣行中的所有兩行組合,利用上述公式計(jì)算C4圈數(shù)并將之存入C4圈 計(jì)數(shù)矩陣圖4所示即為本實(shí)例的起始搜索節(jié)點(diǎn)的C4圈計(jì)數(shù)矩陣。
[0046] C4圈計(jì)數(shù)矩陣中所有元素之和即為起始搜索節(jié)點(diǎn)的編碼矩陣矩陣C4圈數(shù)d 之后將搜索進(jìn)程的當(dāng)前最優(yōu)C4圈數(shù)和搜索節(jié)點(diǎn)C4圈數(shù)的值設(shè)為 本實(shí)施例中,起始搜索節(jié)點(diǎn)的C4圈數(shù)為9。
[0047] ( 2 )冗余率&⑷初始化 輸入?yún)?shù)左并以此計(jì)算此矩陣的冗余率&(幻并以此初始化當(dāng)前最優(yōu)冗余率 慫如。計(jì)算此矩陣的冗余率&如有如下公式:
其中…,/?人Ki為編碼矩陣中行向量。本實(shí)施例中,左為4,起始矩陣的 為9〇
[0048] ( 3)禁忌步長(zhǎng)初始化 輸入禁忌步長(zhǎng)最大值同時(shí)令當(dāng)前節(jié)點(diǎn)的禁忌步長(zhǎng)本實(shí)施 例中,的值為1。
[0049] (4)冗余率上界初始化 冗余率上界是由Rouayheb和Ramchandran提出,其定義如下: 在(?夂t^DSS上,F(xiàn)RC編碼CV (?匕4 0」的胤成⑷〇如,由下式遞歸得 到:
[0050] 步驟03生成鄰域節(jié)點(diǎn) 生成鄰域節(jié)點(diǎn)為搜索中的核心步驟之一,是運(yùn)行頻率最高的程序。
[0051] 在當(dāng)前節(jié)點(diǎn)上執(zhí)行固定行重列重矩陣交換操作逐一生成鄰域節(jié)點(diǎn),每生成一個(gè)鄰 域節(jié)點(diǎn)時(shí)計(jì)算其編碼矩陣的C4圈數(shù)。固定行重列重矩陣交換操作定義如下: 存在如下兩種2階子方陣之一,
經(jīng)過這種交換,可將其變?yōu)榱硗庖粋€(gè)2階子方陣,稱為交換操作。
[0052] 本步中將逐一生成當(dāng)前節(jié)點(diǎn)的所有鄰域節(jié)點(diǎn)。首先遍歷當(dāng)前搜索節(jié)點(diǎn)的編碼矩陣 #游行中所有兩行組合i,;在得到的每個(gè)i行和J行中遍歷所有2列組合A人即得到 了矩陣_所有2X2子矩陣:
判斷上述子矩陣中是否可執(zhí)行交換操作,若是則執(zhí)行交換操作即生成一鄰域節(jié)點(diǎn),否 則繼續(xù)判斷下一個(gè)子矩陣。
[0053] 若生成的鄰域節(jié)點(diǎn)編碼矩陣的C4圈數(shù)少于當(dāng)前節(jié)點(diǎn)編碼矩陣的C4圈數(shù)則此鄰域 節(jié)點(diǎn)為較優(yōu)節(jié)點(diǎn),執(zhí)行步驟04 ;若生成的鄰域節(jié)點(diǎn)編碼矩陣的C4圈數(shù)等于當(dāng)前節(jié)點(diǎn)編碼矩 陣的C4圈數(shù)則此鄰域節(jié)點(diǎn)為同等節(jié)點(diǎn),執(zhí)行步驟05 ;若生成的鄰域節(jié)點(diǎn)編碼矩陣的C4圈 數(shù)大于當(dāng)前節(jié)點(diǎn)編碼矩陣的C4圈數(shù)則此鄰域節(jié)點(diǎn)為較差節(jié)點(diǎn),直接放棄此節(jié)點(diǎn); 步驟04處理較優(yōu)節(jié)點(diǎn) 較優(yōu)搜索節(jié)點(diǎn)為搜索判斷比當(dāng)前節(jié)點(diǎn)更為接近最優(yōu)解的節(jié)點(diǎn),是算法的主要搜索目 標(biāo)。通過多次迭代尋找較優(yōu)節(jié)點(diǎn),程序即可逐步減少編碼矩陣的C4圈數(shù)量。
[0054] 計(jì)算此較優(yōu)節(jié)點(diǎn)的編碼矩陣&漢人判斷其是否達(dá)到冗余率上界^漢人若其& (?) 等于幻則結(jié)束算法返回此節(jié)點(diǎn)。否則判斷此節(jié)點(diǎn)C4圈數(shù)和是否優(yōu)于搜索進(jìn)程的 當(dāng)前最優(yōu)C4圈數(shù)和&漢人若是則更新之。以此節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn),記錄此節(jié)點(diǎn)的C4圈數(shù)和 等,更新節(jié)點(diǎn)C4圈計(jì)數(shù)矩陣,將其禁忌步長(zhǎng)設(shè)為初始值,迭代執(zhí)行第4步; 如圖5所示為起始搜索節(jié)點(diǎn)產(chǎn)生的較優(yōu)節(jié)點(diǎn)的編碼矩陣。圖5中為起始搜索節(jié)點(diǎn)產(chǎn)生 的3個(gè)不同鄰域節(jié)點(diǎn)編碼矩陣,圖5 (a)中矩陣的C4圈數(shù)為8,圖5 (b)中矩陣的C4圈數(shù) 為7,圖5 (c)中矩陣的C4圈數(shù)為6。
[0055] 步驟05處理同等節(jié)點(diǎn) 同等搜索節(jié)點(diǎn)為搜索判斷與當(dāng)前搜索節(jié)點(diǎn)性能相同的節(jié)點(diǎn),但依然有可能通過此節(jié)點(diǎn) 到達(dá)最優(yōu)解。且隨著搜索的深入,出現(xiàn)鄰域節(jié)點(diǎn)中無較優(yōu)節(jié)點(diǎn)的幾率會(huì)逐漸增高。故同等 節(jié)點(diǎn)是算法的次要搜索目標(biāo)。但由于其數(shù)量較多,禁忌搜索采用禁忌步長(zhǎng)限制其搜索深度, 防止其過多的訪問無用節(jié)點(diǎn)。
[0056] 若當(dāng)前節(jié)點(diǎn)(即生成此同等節(jié)點(diǎn)的搜索節(jié)點(diǎn))的禁忌步長(zhǎng)step大于1,則將此同等 節(jié)點(diǎn)的禁忌步長(zhǎng)設(shè)為step-Ι,記錄此節(jié)點(diǎn)的C4圈數(shù)和等,更新節(jié)點(diǎn)C4圈計(jì)數(shù)矩陣, 以此同等節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn)執(zhí)行第4步;否則直接放棄此鄰域節(jié)點(diǎn); 如圖6為起始搜索節(jié)點(diǎn)產(chǎn)生的同等節(jié)點(diǎn)的編碼矩陣。圖6中為起始搜索節(jié)點(diǎn)產(chǎn)生的3 個(gè)不同鄰域節(jié)點(diǎn)編碼矩陣,其C4圈數(shù)皆為9。
[0057] 步驟06算法結(jié)果 圖7為經(jīng)過多次迭代之后算法輸出的最優(yōu)編碼矩陣。本實(shí)例中,算法運(yùn)行結(jié)果的編碼 矩陣中的C4圈數(shù)為0, 為11,比初始節(jié)點(diǎn)提高了 2。
[0058] 實(shí)施例2 如圖8~16所示,為本發(fā)明基于禁忌搜索的分片復(fù)制碼最優(yōu)冗余率編碼矩陣構(gòu)造方法 的效果說明圖。本實(shí)例中,為了方便實(shí)際應(yīng)用,復(fù)制深度P取實(shí)際中最常使用的2, 3,4三 值;為了方便數(shù)據(jù)對(duì)比,存儲(chǔ)節(jié)點(diǎn)數(shù)η取可整除2, 3, 4的12, 24, 36三值,保證合法參數(shù)的數(shù) 量最多。
[0059] 本實(shí)例中,每個(gè)參數(shù)使用了分別由Srijan Anil和Toni Ernvail提出的兩種不同 的編碼矩陣生成算法生成的編碼矩陣作為起始編碼矩陣。實(shí)例說明,本發(fā)明提出的方法在 任何參數(shù)下,使用完全不同的起始搜索節(jié)點(diǎn)都可得到最優(yōu)解。
[0060] 圖8為在/?=7名P 和左=4青形下,〇取所有合法值的兩種初始解,優(yōu)化解和上界 4(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法得出 的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié)果。 A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率& ft;。
[0061] 圖9為在P 和左=4青形下,β取所有合法值的兩種初始解,優(yōu)化解和上界 4(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法得出 的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié)果。 A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率& ft;。
[0062] 圖10為在/?=萬P 和左=4青形下,Ω取所有合法值的兩種初始解,優(yōu)化解和上 界&(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法 得出的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié) 果。A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率&漢人
[0063] 圖11為在/7=2名P =J和左=4青形下,〇取所有合法值的兩種初始解,優(yōu)化解和上 界&(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法 得出的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié) 果。A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率&漢人
[0064] 圖12為在P =J和左=4青形下,〇取所有合法值的兩種初始解,優(yōu)化解和上 界&(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法 得出的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié) 果。A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率&漢人
[0065] 圖13為在/?=萬P =J和左=4青形下,〇取所有合法值的兩種初始解,優(yōu)化解和上 界&(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法 得出的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié) 果。A和B兩圖中橫坐標(biāo)為參數(shù)d的取值,縱坐標(biāo)為冗余率&漢人 [0066] 圖14為在/?二7名P 左=4青形下,〇取所有合法值的兩種初始解,優(yōu)化解和上 界&(?*之間的對(duì)比。A為使用Srijan Anil的編碼矩陣生成算法作為起始矩陣生成算法 得出的結(jié)果,B為使用Toni Ernvail的編碼矩陣生成算法作為起始矩陣生成算法得出的結(jié) 果。A和B兩圖中橫