日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模拟嫁接技术

發布時間:2024/7/5 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟嫁接技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模擬嫁接技術:

    • 定義
    • 嫁接算子及策略
    • 剪接算子及策略
    • GPOGA算法
    • 總結

定義

收益和代價
對一棵生成樹 T1,若將某結點的一條分枝移至另一結點作為其一條分枝后產生的生成樹為 T2,考察分枝移動前后生成樹的邊長和的變化,則定義收益(gain)和代價(cost)分別為:

其中x1ij∈ T1, x2ij∈ T2
從上述定義可知,收益和代價是密切相關的兩個指標。對一棵生成樹T1,在分枝的移動過程中,若收益大于0,則分枝移動后生成樹的邊長和減小,相應代價必小于0;反之亦然。

嫁接:
將生成樹非考察結點且具有某種優良特性的分枝(嫁接枝)接入到非完全生成樹的待考察結點中,以形成更好生成樹個體(這里指收益大于0)的過程稱為嫁接。

剪接:
將生成樹個體考察結點的某一分枝(剪接枝)接入到非完全生成樹中另一位置,以形成可行個體或更好個體的過程稱為剪接 。

注意: 嫁接和剪接是兩種完全不同的操作,它們發生的作用點、機理、采用的策略及對算法產生的效果完全不同。

沖突及沖突檢測:
在對消除不滿足約束情形進行剪接或對具有較差屬性的分枝進行剪接操作的同時,若引起新的不滿足約束的情形稱為沖突。
在剪接過程中引起了沖突,就稱找出這一沖突現象的過程為沖突檢測 。

嫁接算子及策略

步驟:

  • 根據結點及其關聯結點的邊長信息,選擇具有優良品質的嫁接枝;
  • 將選擇的嫁接枝重新接入,以形成更好的生成樹個體,即嫁接后收益大于0。
  • 選取具有優良品質的嫁接枝需要解決的問題:

  • 如何利用邊結點及其關聯結點的邊長信息
    為了使嫁接和剪接操作更為有效,對各結點按其關聯結點構成邊的長度進行排序,并將排序結果保存在指針變量pnodesortdis中。
  • 求任意結點的父結點及子結點關系
    采用基于度排列的編碼方法。設計了通過利用度維關系查找某一結點的父結點函數FindPareNode(par1,par2)及其子結點的函數FindChildNode(par1,par2),par1、par2為算法所需參數,它們在較好的情形下時間復雜度均為O(1),在最壞的情形下時間復雜度為O(n)。
  • 利用度維關系查找生成樹個體某一結點的父結點算法
    基本思想:從當前位置向前掃描,記錄掃描過的結點的度值,根據掃描過的結點與度值的關系計算出其父結點位置。
    偽碼描述如下:

    算法1 (檢索某一結點位置nodepos的父結點位置parvpos算法). Input:生成樹個體individual,考察結點位置nodepos. Output:考察結點nodepos的父結點位置parvpos. Begin 初始化參數:degreesum=0,counter=0,parvpos=nodepos; 根據輸入的個體individual,得到其結點維individual.chrom1和度維individual.chrom2; if parvpos=1 then return 1; end if parvpos=parcpos-1,counter=counter+1; degreesum=degreesum+individual.chrom2[parvpos]; if parv>1 then degreesum=degreesum-1; end if while degreesum<counter do parvpos=parcpos-1,counter=counter+1; degreesum=degreesum+individual.chrom2[parvpos]; if parv>1 then degreesum=degreesum-1; end if end while 返回parvpos; End

    按收益優先及度約束控制嫁接策略執行嫁接操作,算法的偽碼描述如下:

    算法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,則指移動后代價最小的分枝。
  • 算法3 (剪接算法). Input:生成樹個體Individual,完全圖邊長矩陣對應的二維指針變量edgelen. Output:經剪接操作后新生成的可行個體newindividual. Begin 初始化剪接參數,設置iprunflag,iprunneedflag為false, 設置初始位置i=1; while I ≤ n do取當前結點度值nodegree; if nodegree大于給定的度約束值degreecons then 設置剪接標志iprunflag為true; end if 求解i的子結點,結果保存在指針變量pichild中; while pichild非空 do 尋找具有最差屬性的子結點selectchildnode分枝 if 收益為大于0且iprunflag為false then if 檢測無沖突 then 設置剪接操作標志iprunneedflag為true; else if 沖突能有效解決 設置剪接操作標志iprunneedflag為true; end if end if end if if iprunflag or iprunneedflag為true then 執行剪接操作; iprunneedflag= false; else break; end if if 剪接插入位置小于當前位置 then 指針回溯; end if 取當前位置度值nodedegree; if 當前位置度值nodegree小于等于degreecons then 設置iprunflag為flase; end if end while i=i+1; end while End

    剪接策略

  • 收益優先剪接策略
    基本思想:對考察結點的所有分枝,若所選分枝移至另一結點位置后收益大于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的三類算子在計算過程中互為補充,協同完成優化搜索過程,從而使算法的性能優越,魯棒性更好。

    總結

    以上是生活随笔為你收集整理的模拟嫁接技术的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。