模拟嫁接技术
模擬嫁接技術(shù):
- 定義
- 嫁接算子及策略
- 剪接算子及策略
- GPOGA算法
- 總結(jié)
定義
收益和代價(jià)
對一棵生成樹 T1,若將某結(jié)點(diǎn)的一條分枝移至另一結(jié)點(diǎn)作為其一條分枝后產(chǎn)生的生成樹為 T2,考察分枝移動前后生成樹的邊長和的變化,則定義收益(gain)和代價(jià)(cost)分別為:
其中x1ij∈ T1, x2ij∈ T2
從上述定義可知,收益和代價(jià)是密切相關(guān)的兩個指標(biāo)。對一棵生成樹T1,在分枝的移動過程中,若收益大于0,則分枝移動后生成樹的邊長和減小,相應(yīng)代價(jià)必小于0;反之亦然。
嫁接:
將生成樹非考察結(jié)點(diǎn)且具有某種優(yōu)良特性的分枝(嫁接枝)接入到非完全生成樹的待考察結(jié)點(diǎn)中,以形成更好生成樹個體(這里指收益大于0)的過程稱為嫁接。
剪接:
將生成樹個體考察結(jié)點(diǎn)的某一分枝(剪接枝)接入到非完全生成樹中另一位置,以形成可行個體或更好個體的過程稱為剪接 。
注意: 嫁接和剪接是兩種完全不同的操作,它們發(fā)生的作用點(diǎn)、機(jī)理、采用的策略及對算法產(chǎn)生的效果完全不同。
沖突及沖突檢測:
在對消除不滿足約束情形進(jìn)行剪接或?qū)哂休^差屬性的分枝進(jìn)行剪接操作的同時(shí),若引起新的不滿足約束的情形稱為沖突。
在剪接過程中引起了沖突,就稱找出這一沖突現(xiàn)象的過程為沖突檢測 。
嫁接算子及策略
步驟:
選取具有優(yōu)良品質(zhì)的嫁接枝需要解決的問題:
為了使嫁接和剪接操作更為有效,對各結(jié)點(diǎn)按其關(guān)聯(lián)結(jié)點(diǎn)構(gòu)成邊的長度進(jìn)行排序,并將排序結(jié)果保存在指針變量pnodesortdis中。
采用基于度排列的編碼方法。設(shè)計(jì)了通過利用度維關(guān)系查找某一結(jié)點(diǎn)的父結(jié)點(diǎn)函數(shù)FindPareNode(par1,par2)及其子結(jié)點(diǎn)的函數(shù)FindChildNode(par1,par2),par1、par2為算法所需參數(shù),它們在較好的情形下時(shí)間復(fù)雜度均為O(1),在最壞的情形下時(shí)間復(fù)雜度為O(n)。
利用度維關(guān)系查找生成樹個體某一結(jié)點(diǎn)的父結(jié)點(diǎn)算法
基本思想:從當(dāng)前位置向前掃描,記錄掃描過的結(jié)點(diǎn)的度值,根據(jù)掃描過的結(jié)點(diǎn)與度值的關(guān)系計(jì)算出其父結(jié)點(diǎn)位置。
偽碼描述如下:
按收益優(yōu)先及度約束控制嫁接策略執(zhí)行嫁接操作,算法的偽碼描述如下:
算法2 (嫁接算法). Input:生成樹個體individual,完全圖邊長矩陣對應(yīng)的二維指針變量edgelen. Output:經(jīng)嫁接操作后新生成的個體newindividual. Begin 設(shè)置所有結(jié)點(diǎn)使用標(biāo)志變量pflagnodeuse為0; 初始化參數(shù)contrpara=dc, i=1,k=1, bflaggrafting=false; while i≤ n do設(shè)置counter=0,結(jié)點(diǎn)i對應(yīng)結(jié)點(diǎn)序號的標(biāo)志pflagnodeuse為1; 由pnodesortdis得到與i 關(guān)聯(lián)的第k個結(jié)點(diǎn)序號inodeassono; 由edgelen得到i 與inodeassono的邊長nodedis; while counter<contrpara &&nk≤ do 求出inodeassono的父結(jié)點(diǎn)assoparenodeno及邊長assonodedis; 計(jì)算邊交換后收益gain=nodedis-assonodedis; if inodeassono不是i的子結(jié)點(diǎn)&& gain>0 then 選擇以inodeassono代表的分枝; 設(shè)置bflaggrafting=true; end if if bflaggrafting=true then 執(zhí)行嫁接操作; counter=counter+1; 設(shè)置結(jié)點(diǎn)inodeassono的標(biāo)志pflagnodeuse為1; 設(shè)置bflaggrafting=flase; end if k=k+1; 由pnodesortdis得到與i 關(guān)聯(lián)的第k個結(jié)點(diǎn)序號inodeassono及位置inodeassopos; 由edgelen得到i 與inodeassono的邊長nodedis; end while i=i+1; end while End嫁接策略
基本思想:對考察結(jié)點(diǎn),若所選關(guān)聯(lián)結(jié)點(diǎn)分枝移至考察結(jié)點(diǎn)前后收益大于0,則該分枝可選為嫁接枝。
優(yōu)點(diǎn):按該策略執(zhí)行嫁接,操作簡便,且總體效果較好。
缺點(diǎn):嫁接后某些結(jié)點(diǎn)的分枝數(shù)可能大大超過給定的度約束值,從而增加剪接的負(fù)擔(dān),需要花費(fèi)較長的CPU時(shí)間。
剪接算子及策略
對嫁接中產(chǎn)生的生成樹可能包含某些結(jié)點(diǎn)不滿足度約束,以及對經(jīng)過基本遺傳算子操作使其具有較差屬性分枝的情形,均要進(jìn)行剪接操作。
步驟:
判斷一條分枝是否在當(dāng)前位置具有最(較)差屬性的依據(jù)為下列兩種情形之一:
剪接策略
基本思想:對考察結(jié)點(diǎn)的所有分枝,若所選分枝移至另一結(jié)點(diǎn)位置后收益大于0,且未引起新不能有效解決的沖突,則該分枝可選為剪接枝,執(zhí)行剪接操作。按該策略執(zhí)行剪接,操作簡便,且花費(fèi)的CPU時(shí)間較小。
基本思想:對考察結(jié)點(diǎn)的所有分枝,在判斷某一分枝是否作為剪接枝時(shí),應(yīng)將邊長信息和位置次序關(guān)系信息同時(shí)進(jìn)行分析。同嫁接策略類似,這是一種較為復(fù)雜的控制策略。
基本思想:當(dāng)不滿足度約束時(shí),若在剪接中出現(xiàn)不能有效解決的沖突,只能按代價(jià)最(較)小化原則進(jìn)行剪接。
GPOGA算法
在基本遺傳算法體系的基礎(chǔ)上,結(jié)合嫁接和剪接算子作用,給出基于嫁接和剪接算子的遺傳算法 (A Genetic Algorithm with Grafting and Pruning Operators, 簡稱GPOGA) 。
算法4 (GPOGA). Input:與所求DCMST問題有關(guān)的數(shù)據(jù)(結(jié)點(diǎn)數(shù),完全圖邊長等),遺傳算法基本控制參數(shù). Output:生成的最好解個體及有關(guān)計(jì)算數(shù)據(jù). Begin 隨機(jī)初始化種群P(0),t=0; 計(jì)算P(0)中個體的適應(yīng)值并按適應(yīng)值排序; while 計(jì)算代數(shù) t ≤ maxgen do j=0; while 新產(chǎn)生個體j<N do 根據(jù)個體的適應(yīng)值隨機(jī)從當(dāng)代種群中選擇兩個父個體,設(shè)為oldindi1和oldindi2; 執(zhí)行雜交操作CrossOver(oldindi1,oldindi2),將產(chǎn)生的新個體保存在newpop[j],newpop[j+1]中; 執(zhí)行交換變異操作SwapMutation(newpop[j])、SwapMutation(newpop[j+1]);將產(chǎn)生的兩個新 個體 復(fù)制到臨時(shí)種群變量數(shù)組temp1[j]和temp1[j+1]中; 執(zhí)行嫁接操作Grafting(newpop[j]), Grafting (newpop[j+1]); 執(zhí)行剪接操作pruning(newpop[j]), pruning (newpop[j+1]); 計(jì)算并評價(jià)temp1[j]、temp1[j+1]、newpop[j]、newpop[j+1]、oldindi1及oldindi2的目標(biāo)值,選 擇兩個較好的個體復(fù)制到newpop[j]及newpop[j+1]中; j=j+2; end while; 計(jì)算新種群newpop 的目標(biāo)值、適應(yīng)值并排序,同時(shí)以oldpop中最好的個體代替newpop中最差的個體; 將newpop種群中個體復(fù)制到oldpop中,計(jì)算其目標(biāo)值、適應(yīng)值并排序; t=t+1; end while; 記錄及輸出結(jié)果. End在算法中采用的選擇策略稱之為 (μ+λ+λ) 選擇,即將隨機(jī)選擇的兩個父個體、由基本遺傳算子交換變異后產(chǎn)生的新個體以及經(jīng)嫁接和剪接后產(chǎn)生的新個體共同參與競爭,以選擇兩個較好的個體進(jìn)入下一代種群。這樣做的原因是因?yàn)榧艚又锌赡軐?dǎo)致退化現(xiàn)象出現(xiàn),因而將交換變異產(chǎn)生的兩個新個體共同參與競爭,以確保算法的收斂性。
上述算法中,也可采用基于適應(yīng)值概率的輪賭盤選擇策略,只要將由基本遺傳算子交叉變異后產(chǎn)生的新個體參與選擇過程,或者將由基本遺傳算子交叉變異后產(chǎn)生的最好個體與當(dāng)前種群的最好個體進(jìn)行比較,選擇較好的個體直接進(jìn)入下一代,就能確保算法以概率1收斂到全局最優(yōu)解。
總結(jié)
度約束最小生成樹(DCMST)問題是一類難解的NP-hard問題,目前尚未有可靠、有效的解決方法。通過對現(xiàn)有方法存在的問題和缺陷進(jìn)行分析,借鑒花草果樹的人工種植和培育技術(shù),設(shè)計(jì)的基于嫁接和剪接算子的遺傳算法(GPOGA),理論分析和實(shí)驗(yàn)數(shù)據(jù)都為算法的正確性和有效性提供了依據(jù)。 GPOGA的三類算子在計(jì)算過程中互為補(bǔ)充,協(xié)同完成優(yōu)化搜索過程,從而使算法的性能優(yōu)越,魯棒性更好。
總結(jié)
- 上一篇: 模拟退火算法求解TSP问题
- 下一篇: Cognitive Inference: