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