?? 遺傳算法的發展現狀與應用實例.htm
字號:
,它提出每個個體應當有年齡及生命期的概念并淘汰年齡大于生命期的個體從而使遺傳算法動態的控制了群體數目 ,這種方法可以找出一個接近最小代價的遺傳算法
,同時盡量將群體規模保持在現有水平 ,防止群體規模的指數級增長 ,以降低計算的開銷 .丁承明等提出利用正交試驗法去優化選取 GA控制參數 [2 3
],這種方法利用正交試驗的均衡分散性使得通過較少的試驗次數就可搜索絕大部分參數組合空間 ,而且還可以確定哪個參數對 GA結果影響最顯著
,然后有針對性地進行精確搜索 ,從而使得 GA參數問題得到圓滿解決 .為保證種群的有用多樣性 ,提出動態群法[2 4],即當迭代到一定代數 ,若目標函數的值相同
,則現存種群中的較差的 N個染色體被隨機產生的 N個染色體代替 ,使進化過程中不斷有新個體引入 . [2 5]中用模糊規則對選擇概率和變異概率進行控制
,在線改變其值 ,相應的算例表明 ,有較好的性能<BR>2. 5 遺傳算子<BR> 基本遺傳算法中采用單點交叉算子和簡單的變異算子 .它們操作比較簡單
,計算量小 ,但是在使用過程中有很大的局限性 ,例如 :由于單點交叉破壞模式的概率較小 ,至使搜索到的模式數也較少 ,使算法具有較低的搜索能力 . Feng
etal.對多維連續空間的GA的雜交多樣性進行了分析 ,通過建立相應的數學模型 ,Feng解釋了在多維連續空間和大規模群體中使用均勻雜交算子[2 6
]是如何探索新的解空間區域 .為了使得變異能夠根據解的質量自適應的調整搜索區域 ,從而能較明顯地提高搜索能力 ,提出自適應變異算子[2
7].為了保護適應值較高的模式 ,提出自適應交叉和變異 [2 8],如果遇到適應值較高的模式 ,則通過隨機引入模式外的位而進行保護 .為了克服早熟 ,引入多種群
GA[2 9],不同種群賦以不同的控制參數 ,實現不同的搜索目的 ,通過移民算子聯系各種群 ,通過人工選擇算子保存各種群每個進化代中的最優個體
.為了防止近親繁殖 ,擴大種群的多樣性 ,抑制超長個體的快速繁殖 ,引進近親繁殖算子 ,兩個個體是否為近親可用基因片段的 Hamming距離來判斷 ,距離越大
,則為近親的可能越小 ;為加強局部搜索能力 ,增加漂移算子 ,將染色體各基因片段的后二分之一的基因分別按一定的概率做 1的隨機漂移
,排位越后的基因漂移的概率越大 ,由此產生一定數量的新個體 ,用基因預選機制的小生境技術控制漂移方向 [3 0 ].因為格點法產生的點集能均勻地分布于搜索空間
,并且佳點又是最好的格點 ,所以可以用數論中的佳點集理論設計交叉算子[3 1 ],結果表明它的搜索效果要比純隨機法好 ,而且有效的避免早熟現象
.基于生物免疫性提出的免疫算子 [3 2 ],能夠明顯抑制進化過程中的退化現象 ,減輕 GA后期的波動 ,從而提高了搜索效率和收斂速度 . [3 3 ]中提出的
SRM(self-reproduction)算子增強了種群的多樣性 ,CM(crossove and mutation)算子促進了有利變異的增加
,從而使算法大大節省了存貯空間和運行時間 .采用“尺度收縮”策略的混沌變異算子 [3 4]能明顯的改善群體平均適應值 ,提高算法的性能
,是解決優化問題的有效方法 .<BR>2 . 6 綜合方面<BR>文獻 [3 5]中提出了可分解 /可拼接 GA編碼
,并基于此編碼分別在種群層次和基因層次發展了動態變異和動態選擇操作 ,這種方法很大程度上避免了早熟問題 .增強型 GA[3 6 ]中
,引入了幾個新算子和新的種群遷移策略 ,并用其對模糊邏輯控制器進行設計 ,得到了便于理解的模糊集和模糊規則 .用小波分析中的多尺度分析對
GA中的染色體進行多尺度分解 ,這樣分解后的染色體的長度變短 ,基因交換、變異等遺傳操作更為徹底 ,有效的克服了基因丟失引起的早熟問題 [3
7].小生境技術不僅能夠保證群體中解的多樣性 ,而且具有很強的引導進化能力 ,所以小生境技術的引入 ,提高了 GA處理多峰函數優化問題的能力[3
8].將模擬退火過程引入遺傳算法[3 9],在優選交叉和變異個體的過程中加入一定的“擾動”,以達到保持種群內位串的多樣性和位串之間的競爭機制
,克服了算法易陷于極小點的問題 ,使得搜索沿著全局最優方向進行 .廣義遺傳算法[40 ],它以多點突變操作為主 ,以基因交叉操作為輔
,實現了從一個局部最優狀態到另一個局部最優狀態的轉移 ,使算法獲得全局最優 .為了使 GA用于約束優化 ,提出一種非穩態罰函數 GA[41
],非穩態罰函數是遺傳代數的函數 ,當代數增加時 ,罰函數也隨著增大 ,同時給GA帶來更多的選擇壓力 ,促使 GA找到可行解
.綜合遺傳算法的全局性和神經網絡的并行快速性等特點 ,提出的遺傳神經網絡算法[42 ],可克服遺傳算法最終進化至最優解較慢和神經網絡易陷入局部解的缺陷
,具有較好的全局性和收斂速度 .采用面向對象技術設計了面向對象遺傳算法[43 ],這種方法改變了在傳統的 GA中各個函數之間只有參數的傳遞
,而沒有代碼的繼承性的狀況從概念上提高了軟件的可重用性 ,用戶可以更方便的設計和實現自己的編碼方案和遺傳算子
.變異基遺傳算法[44],采用變異算子進行局部優化搜索 ,并利用隨機初始化技術使算法在局部搜索能力提高的同時仍有可能尋找到全局最優解
.貪婪遺傳算法[45]用在二次分配問題中取得了較好的效果 ,在該算法中引入了新的交叉算子和移民算子 ,保證了種群的多樣性 ;并且通過比賽競爭使得各種群得到進化
,很好的解決了種群多樣性及對個別好個體偏愛之間的矛盾 .<BR>3 遺傳算法的發展動向 (GA' s developmen-tal
trends)<BR>GA在應用方面的豐碩成果 ,使人們對它的發展前景充滿信心 .其主要應用領域在于函數優化 (非線性 ,多模型 ,多目標等 ),機器人學
(移動機器人路徑規劃 ,關節機器人運動軌跡規劃 ,細胞機器人的結構優化等 ),控制 (瓦斯管道控制 ,防避導彈控制 ,機器人控制等 ),規劃 (生產規劃
,并行機任務分配等 ),設計 (VLSI布局 ,通信網絡設計 ,噴氣發動機設計等 ),組合優化 (TSP問題 ,背包問題 ,圖分劃問題等 ),圖象處理
(模式識別 ,特征提取 ,圖象恢復等 ),信號處理 (濾波器設計等 ),人工生命 (生命的遺傳進化等 ).此外遺傳算法的研究出現了幾個引人注目的新動向
:<BR>3 .
1 基于遺傳算法的機器學習<BR>這一新的研究方向把遺傳算法從歷史離散的搜<BR>索空間的優化搜索算法擴展到具有獨特的規則生成功能的嶄新的機器學習算法
.這一新的學習機制對于解決人工智能中知識獲取和知識優化精煉的瓶頸難題帶來了希望 .遺傳算法作為一種搜索算法從一開始就與機器學習有著密切聯系 .分類器系統
CS-1是 GA的創立者 Holland教授等實現的第一個基于遺傳算法的機器學習系統 .分類器系統在很多領域都得到了應用 .例如
,分類器系統在學習式多機器人路徑規劃系統中得到的成功應用 ; Goldberg研究了用分類器系統來學習控制一個煤氣管道仿真系統
;Wilson研究了一種用于協調可移動式視頻攝像機的感知—運動的分類器系統等 .分類器系統在基于遺傳算法的機器學習研究中影響很大
,但具體實現方法和要解決的具體問題有關 .基于遺傳算法的概念學習是近幾年來機器學習領域的一個較為引人注目的研究方向 ,由于概念學習隱含的搜索機制
,使得遺傳算法在概念學習中有用武之地 .目前也有一些嵌入領域知識的基于遺傳算法的機器學習的研究 ,如將概念學習中特有的操作遺傳操作化 ,并顯示出一定的優點
.此外 ,學習分類系統的并行實現在基于遺傳算法的機器學習研究中也占有相當的分量 .<BR>3 .
2 遺傳算法與其他計算智能方法的相互滲透和結合<BR>遺傳算法正日益和神經網絡、模糊推理以及混沌理論等其他智能計算方法相互滲透和結合 ,必能達到取長補短的作用
.近年來在這方面已經取得不少研究成果 ,并形成了“計算智能”的研究領域 ,這對開拓 2 1世紀中新的智能計算技術將具有重要的意義 . GA的出現使神經網絡的訓練
(包括連接權系數的優化、網絡空間結構的優化和網絡的學習規則優化 )有了一個嶄新的面貌 ,目標函數既不要求連續 ,也不要求可微 ,僅要求該問題可計算
,而且它的搜索始終遍及整個解空間 ,因此容易得到全局最優解 .GA與神經網絡的結合正成功的被用于從時間序列的分析來進行財政預算 ,在這些系統中
,訓練信號是模糊的 ,數據是有噪聲的 ,一般很難正確的給出每個執行的定量評價 ,如采用 GA來學習 ,就能克服這個困難 ,顯著提高了系統的性能 .
Muhlenbein分析了多層感知機網絡的局限性 ,并猜想下一代神經網絡將會是遺傳神經網絡 .遺傳算法還可以用于學習模糊控制規則和隸屬度函數
,從而更好地改善模糊系統的性能 .文獻 [46 ]中將模糊邏輯、神經網絡和遺傳算法三者有機的結合起來應用于溫室夏季溫濕度控制中
,實驗結果表明得到了良好的控制效果 .混沌表現出的隨機性是系統內在的隨機性 ,被稱為偽隨機性 ,它在生物進化中起著重要的作用 ,是系統進化與信息之源
.混沌與遺傳算法的結合已有人進行過嘗試 ,如吳新余等[47]采用多種混沌模型構造隨機開關 ,以此控制交叉操作以改進 GA的性能 .文獻 [3 4]中更加直接
,采用混沌序列構造變異算子 ,為遺傳算法的實現開辟了新的途徑 .<BR>3 . 3 并行處理的遺傳算法<BR>并行處理的遺傳算法的研究不僅是遺傳算法本身的發展
,而且對于新一代智能計算機體系結構的研究都是十分重要的 . GA在操作上具有高度的并行性 ,許多研究人員都正在探索在并行機上高效執行 GA的策略
.近幾年也發表了不少這方面的論文 ,研究表明 ,只要通過保持多個群體和恰當地控制群體間的相互作用來模擬并執行過程 ,即使不使用并行計算機
,我們也能提高算法的執行效率 .在并行GA的研究方面 ,一些并行 GA模型已經被人們在具體的并行機上執行了 ;并行 GA可分為兩類 :一類是粗粒度并行
GA,它主要開發群體間的并行性 ,如Cohoon分析了在并行計算機上解圖劃分問題的多群體 GA的性能 ;另一類是細粒度 GA,它主要開發一個群體中的并行性 ,如
Kosak將群體中的每個個體映射到一個連接機的處理單元上 ,并指出了這種方法對網絡圖設計問題的有效性 .<BR>3 .
4 遺傳算法與人工生命的滲透<BR>人工生命是用計算機、機械等人工媒體模擬或構造出的具有自然生物系統特有行為的人造系統 ,人工生命與遺傳算法有著密切的關系
,基于遺傳算法的進化模型是研究人工生命現象的重要理論基礎 .雖然人工生命的研究尚處于啟蒙階段
,但遺傳算法已在其進化模型、學習模型、行為模型、自組織模型等方面顯示出了初步的應用能力 ,并且必將得到更為深入的應用和發展 .人工生命與遺傳算法相輔相成
,遺傳算法為人工生命的研究提供了一個有效的工具 ,人工生命的研究也必將促進遺傳算法的進一步發展 .<BR>3 .
5 遺傳算法與進化規則及進化策略的結合<BR>遺傳算法、進化規則及進化策略是演化計算的三個主要分支
,這三種典型的進化算法都以自然界中生物的進化過程為自適應全局優化搜索過程的借鑒對象 ,所以三者之間有較大的相似性 ;另一方面
,這三種算法又是從不完全相同的角度出發來模擬生物的進化過程 ,分別是依據不同的生物進化背景、不同的生物進化機制而開發出來的 ,所以三者之間也有一些差異
.隨著各種進化計算方法之間相互交流深入 ,以及對各種進化算法機理研究的進展 ,要嚴格地區分它們既不可能 ,也沒有必要
.在進化計算領域內更重要的工作是生物進化機制 ,構造性能更加優良、適應面更加廣泛的進化算法 .<BR>4 結論 <BR>遺傳算法作為一種非確定性的擬自然算法
,為復雜系統的優化提供了一種新的方法 ,并且經過實踐證明效果顯著 .盡管遺傳算法在很多領域具有廣泛的應用價值 ,但它仍存在一些問題
,各國學者一直在探索著對遺傳算法的改進 ,以使遺傳算法有更廣泛的應用領域
.<BR>總之,遺傳算法的未來是非常的美好的,只要我們對它們進行細致的分析,對它的缺點加以改造,優點進行繼承,把它應用到我們的生產當中去,這樣在生產當中還可以對它的缺點進行完善.
</SPAN><BR>
<P class=postfoot>posted on 2004年07月03日 5:53 PM </P></DIV><LINK
href="http://blog.csdn.net/yuanqingfei/Services/Pingback.aspx" rel=pingback><!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://blog.csdn.net/yuanqingfei/articles/33203.aspx"
dc:identifier="http://blog.csdn.net/yuanqingfei/articles/33203.aspx"
dc:title="遺傳算法的發展現狀與應用實例"
trackback:ping="http://blog.csdn.net/yuanqingfei/services/trackbacks/33203.aspx" />
</rdf:RDF>
--><A name=feedback>
<DIV id=comments>
<H3>Feedback</H3>本文尚無評論。 </DIV>
<DIV id=commentform>
<TABLE cellSpacing=1 cellPadding=1 border=0>
<TBODY>
<TR>
<TD width=75>Title</TD>
<TD><INPUT id=PostComment.ascx_tbTitle style="WIDTH: 300px" size=40
value=回復:遺傳算法的發展現狀與應用實例 name=PostComment.ascx:tbTitle></TD>
<TD><SPAN id=PostComment.ascx_RequiredFieldValidator1
style="VISIBILITY: hidden; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
errormessage="Please enter a title"
controltovalidate="PostComment.ascx_tbTitle">Please enter a
title</SPAN></TD></TR>
<TR>
<TD width=75>Name</TD>
<TD><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px" size=40
name=PostComment.ascx:tbName></TD>
<TD><SPAN id=PostComment.ascx_RequiredFieldValidator2
style="VISIBILITY: hidden; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
errormessage="Please enter your name"
controltovalidate="PostComment.ascx_tbName">Please enter your
name</SPAN></TD></TR>
<TR>
<TD>Url</TD>
<TD><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px" size=40
name=PostComment.ascx:tbUrl></TD>
<TD></TD></TR>
<TR>
<TD colSpan=3>Comments <SPAN
id=PostComment.ascx_RequiredFieldValidator3
style="VISIBILITY: hidden; COLOR: red" initialvalue=""
evaluationfunction="RequiredFieldValidatorEvaluateIsValid"
errormessage="Please enter a comment"
controltovalidate="PostComment.ascx_tbComment">Please enter a
comment</SPAN><BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 400px; HEIGHT: 193px" name=PostComment.ascx:tbComment rows=10 cols=50></TEXTAREA></TD></TR>
<TR>
<TD colSpan=3><INPUT id=PostComment.ascx_chkRemember type=checkbox
name=PostComment.ascx:chkRemember><LABEL
for=PostComment.ascx_chkRemember>Remember Me?</LABEL></TD></TR>
<TR>
<TD><INPUT language=javascript id=PostComment.ascx_btnSubmit onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " type=submit value=Submit name=PostComment.ascx:btnSubmit></TD>
<TD colSpan=2><SPAN id=PostComment.ascx_Message
style="COLOR: red"></SPAN></TD></TR></TBODY></TABLE></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2
href="http://scottwater.com/blog" name=Hyperlink1><IMG
src="遺傳算法的發展現狀與應用實例.files/100x30_Logo.gif" border=0></A> <A
id=Footer1_Hyperlink3 href="http://asp.net/" name=Hyperlink1><IMG
src="遺傳算法的發展現狀與應用實例.files/PoweredByAsp.Net.gif" border=0></A> <BR>Copyright ?
yuanqingfei </P>
<SCRIPT language=javascript>
<!--
var Page_Validators = new Array(document.all["PostComment.ascx_RequiredFieldValidator1"], document.all["PostComment.ascx_RequiredFieldValidator2"], document.all["PostComment.ascx_RequiredFieldValidator3"]);
// -->
</SCRIPT>
<SCRIPT language=javascript>
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" && clientInformation.appName.indexOf("Explorer") != -1) {
if ((typeof(Page_ValidationVer) != "undefined") && (Page_ValidationVer == "125"))
ValidatorOnLoad();
}
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
ValidatorCommonOnSubmit();
}
}
// -->
</SCRIPT>
</FORM></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -