A. 王慧的研究介紹
1、1992.1~1994.7 短纖維瀝青混凝土加強路面的疲勞壽命與材料的本構關系研究 國家自然科學資金課題 經費3.0萬元,本人為主要參加人;
2、1994.1~1996.12 非赫芝接觸定律及短纖維加強路面材料研究 國家自然科學資金課題 經費5.0萬元,本人為主要參加人;
3、1995.3~1995.6 懷洪新河楊庵橡膠壩可研論證 省水利廳項目 經費10.0萬元,本人擔任壩址總平面圖設計及壩平面、縱斷面設計論證;
4、1996.10~1996.12 青弋江東乾渠花園渡槽充水試驗 宣城地區水電局項目 經費5.9萬元,本人為項目負責人;
5、1999.1~2001.12 水工混凝土的(亞)表層缺陷與磨損關系研究 國家自然科學資金課題 經費13.5萬元,本人為主要參加人;
6、1999.1~2001.2 我國水泥製品發展對策與研究 安徽省公路局項目 經費10.0萬元,本人為主要參加人;
7、1999.9~2000.2 蕪湖市扁擔河堤防加固工程可行性研究 蕪湖市投資公司項目 經費60.0萬元, 本人為項目負責人;
8、2001.1~2003.12 水泥路面發展對策及修築技術研究 安徽省交通廳項目 經費15.5萬元,本人為主要參加人;
9、2004.6~2005.12 斜拉橋檢測方法研究項目 安徽省交通廳項目 10.0萬元 本人為主要參加人;
10、2007.9~2007.12 淮北市中水資源可利用量評價項目 安徽省水文局項目 經費4.5萬,本人為主要參加人;
11、2009.10~2010.9 霍山中小學房屋檢測項目 霍山縣教育局項目 總經費20萬,本人為項目負責人;
12、1010.1~2011.2 抗沖磨混凝土試驗研究 中水十六局項目 經費9.66萬,本人為項目負責人;
13、2009.10~2010.6 駐馬店東高國際住宅結構檢測項目 經費10萬,本人為項目負責人;
14、2009.8~2010.12 大別山水庫群優化調度研究 安徽省水利廳項目 經費40萬,本人為主要參加人;
15、1011.8~2012.6 廬江縣馬槽河湯池鎮河道治理研究 廬江縣項目 經費22.4萬 本人為項目負責人;
16、2011.10~2012.9 沿淮窪地澇災成因研究 水利部淮委項目 經費50萬,本人為技術負責人。 1、發表的論文
(1)混凝土及纖維混凝土的斷裂分析《合肥工業大學學報》1996.4期 獨作;
(2)剪切效應和轉動慣性對基樁動力穩定性的影響《合肥工業大學學報》1996.2期 獨作;
(3)直桿的動力穩定性與結構物樁基的動荷性能《工程力學》1995增刊 第一作者;
(4)混凝土、纖維混凝土裂紋擴展分析 《工業建築》1997.1期 獨作;
(5)短纖維復合材料纖維對基體裂紋的橋聯作用 第九屆全國復合材料學術會議論文集 世界圖書出版公司北京公司出版 1996.8 第二作者;
(6)短纖維對基體微裂紋擴展的阻滯效應分析《復合材料學報》1995.3期 第三作者;
(7)樁周圍地基橫向抗力的有關問題探討《岩土力學與工程》文集 大連理工大學出版 1995.9 第二作者;
(8)短纖維加強混凝土纖維對基體裂紋的橋架作用 全國第五屆纖維水泥與纖維混凝土學術會議論文集 廣東科技出版社 1994.11 第二作者;
(9)瀝青混凝土粘彈性和時溫等效性《復合材料進展》文集 航空工業出版社 1994.3 第三作者;
(10)The Fatigue Life and a Failure Criterion For Short Fiber Composite ISCM/2(北京召開)論文集 北京大學出版社 1992.8 第三作者;
(11)短纖維增強復合材料的裂紋阻滯分析 全國第七屆復合材料學術會議論文集 大連理工大學出版 1992.6 第二作者
(12)Mechanics of Crack Arrest in Short Fiber Reinforced Composite ICCM/9(西班牙馬德里召開)論文集 西班牙科技出版社 1993.7 第四作者;
(13)水工混凝土點測技術的幾點改進措施 《合肥工業大學學報》2000.04期 第一作者;
(14)基於神經網路的水工混凝土沖刷損傷評估 《第11屆華東固體力學學術討論會文集》中國科學技術大學出版社 2001.10 第二作者;
(15)外貼碳纖維增強材料加固混凝土梁的抗彎設計方法《合肥工業大學學報》 2003.03期 第一作者;
(16)外貼碳纖維粘貼界面應力集中《合肥工業大學學報》 2004.04期 第二作者;
(17)結構破壞模糊可靠度計算 《江淮水利科技》2007.2期 第二作者
(18)加速遺傳演算法在水工結構可靠度分析中的應用《合肥工業大學學報》2008.8期 第二作者;
(19)基於MATLAB實現模糊綜合指數法在水質評價中的應用 江淮水利科技 2011.01期 第二作者。
2、編寫教材
《水利水電專業導論》 中國水利水電出版社 2012.1 主編 2009年8月 指導設計作品獲全國首屆水利學科大學生創新設計大賽二等獎(南京)
2011月7月 指導設計作品獲全國第二屆水利學科大學生創新設計大賽一等獎(武漢)
2012月2月 指導設計作品獲第二屆安徽省百所高校百萬大學生創意創新大賽二等獎
B. 什麼是遺傳(要詳細的資料和圖片解說)
摘要
遺傳是指經由基因的傳遞,使後代獲得親代的特徵。遺傳學是研究此一現象的學科,目前已知地球上現存的生命主要是以DNA作為遺傳物質。除了遺傳之外,決定生物特徵的因素還有環境,以及環境與遺傳的交互作用。
[編輯本段]特點
遺傳演算法是一類可用於復雜系統優化的具有魯棒性的搜索演算法,與傳統的優化演算法相比,主要有以下特點:[1]
1、 遺傳演算法以決策變數的編碼作為運算對象。傳統的優化演算法往往直接決策變數的實際植本身,而遺傳演算法處理決策變數的某種編碼形式,使得我們可以借鑒生物學中的染色體和基因的概念,可以模仿自然界生物的遺傳和進化機理,也使得我們能夠方便的應用遺傳操作運算元。
2、 遺傳演算法直接以適應度作為搜索信息,無需導數等其它輔助信息。
3、 遺傳演算法使用多個點的搜索信息,具有隱含並行性。
4、 遺傳演算法使用概率搜索技術,而非確定性規則。
[編輯本段]應用
由於遺傳演算法的整體搜索策略和優化搜索方法在計算是不依賴於梯度信息或其它輔助知識,而只需要影響搜索方向的目標函數和相應的適應度函數,所以遺傳演算法提供了一種求解復雜系統問題的通用框架,它不依賴於問題的具體領域,對問題的種類有很強的魯棒性,所以廣泛應用於許多科學,下面我們將介紹遺傳演算法的一些主要應用領域:
1、 函數優化。
函數優化是遺傳演算法的經典應用領域,也是遺傳演算法進行性能評價的常用算例,許多人構造出了各種各樣復雜形式的測試函數:連續函數和離散函數、凸函數和凹函數、低維函數和高維函數、單峰函數和多峰函數等。對於一些非線性、多模型、多目標的函數優化問題,用其它優化方法較難求解,而遺傳演算法可以方便的得到較好的結果。遺傳與生育
2、 組合優化
隨著問題規模的增大,組合優化問題的搜索空間也急劇增大,有時在目前的計算上用枚舉法很難求出最優解。對這類復雜的問題,人們已經意識到應把主要精力放在尋求滿意解上,而遺傳演算法是尋求這種滿意解的最佳工具之一。實踐證明,遺傳演算法對於組合優化中的NP問題非常有效。例如遺傳演算法已經在求解旅行商問題、 背包問題、裝箱問題、圖形劃分問題等方面得到成功的應用。
此外,GA也在生產調度問題、自動控制、機器人學、圖象處理、人工生命、遺傳編碼和機器學習等方面獲得了廣泛的運用。
[編輯本段]現狀
進入90年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。遺傳演算法的應用研究已從初期的組合優化求解擴展到了許多更新、更工程化的應用方面。兒童孤獨症可能來自遺傳
隨著應用領域的擴展,遺傳演算法的研究出現了幾個引人注目的新動向:一是基於遺傳演算法的機器學習,這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正日益和神經網路、模糊推理以及混沌理論等其它智能計算方法相互滲透和結合,這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究十分活躍。這一研究不僅對遺傳演算法本身的發展,而且對於新一代智能計算機體系結構的研究都是十分重要的。四是遺傳演算法和另一個稱為人工生命的嶄新研究領域正不斷滲透。所謂人工生命即是用計算機模擬自然界豐富多彩的生命現象,其中生物的自適應、進化和免疫等現象是人工生命的重要研究對象,而遺傳演算法在這方面將會發揮一定的作用,五是遺傳演算法和進化規劃(Evolution Programming,EP)以及進化策略(Evolution Strategy,ES)等進化計算理論日益結合。EP和ES幾乎是和遺傳演算法同時獨立發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的只能計算方法,即同遺傳演算法具有相同之處,也有各自的特點。目前,這三者之間的比較研究和彼此結合的探討正形成熱點。
1991年D.Whitey在他的論文中提出了基於領域交叉的交叉運算元(Adjacency based crossover),這個運算元是特別針對用序號表示基因的個體的交叉,並將其應用到了TSP問題中,通過實驗對其進行了驗證。
D.H.Ackley等提出了隨即迭代遺傳爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)採用了一種復雜的概率選舉機制,此機制中由m個「投票者」來共同決定新個體的值(m表示群體的大小)。實驗結果表明,SIGH與單點交叉、均勻交叉的神經遺傳演算法相比,所測試的六個函數中有四個表現出更好的性能,而且總體來講,SIGH比現存的許多演算法在求解速度方面更有競爭力。
H.Bersini和G.Seront將遺傳演算法與單一方法(simplex method)結合起來,形成了一種叫單一操作的多親交叉運算元(simplex crossover),該運算元在根據兩個母體以及一個額外的個體產生新個體,事實上他的交叉結果與對三個個體用選舉交叉產生的結果一致。同時,文獻還將三者交叉運算元與點交叉、均勻交叉做了比較,結果表明,三者交叉運算元比其餘兩個有更好的性能。
國內也有不少的專家和學者對遺傳演算法的交叉運算元進行改進。2002年,戴曉明等應用多種群遺傳並行進化的思想,對不同種群基於不同的遺傳策略,如變異概率,不同的變異運算元等來搜索變數空間,並利用種群間遷移運算元來進行遺傳信息交流,以解決經典遺傳演算法的收斂到局部最優值問題
2004年,趙宏立等針對簡單遺傳演算法在較大規模組合優化問題上搜索效率不高的現象,提出了一種用基因塊編碼的並行遺傳演算法(Building-block Coded Parallel GA,BCPGA)。該方法以粗粒度並行遺傳演算法為基本框架,在染色體群體中識別出可能的基因塊,然後用基因塊作為新的基因單位對染色體重新編碼,產生長度較短的染色體,在用重新編碼的染色體群體作為下一輪以相同方式演化的初始群體。
2005年,江雷等針對並行遺傳演算法求解TSP問題,探討了使用彈性策略來維持群體的多樣性,使得演算法跨過局部收斂的障礙,向全局最優解方向進化。
[編輯本段]一般演算法
遺傳演算法是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型。它的思想源於生物遺傳學和適者生存的自然規律,是具有「生存+檢測」的迭代過程的搜索演算法。遺傳演算法以一種群體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了遺傳演算法的遺傳操作;參數編碼、初始群體的設定、適應度函數的設計、遺傳操作設計、控制參數設定五個要素組成了遺傳演算法的核心內容。 作為一種新的全局優化搜索演算法,遺傳演算法以其簡單通用、魯棒性強、適於並行處理以及高效、實用等顯著特點,在各個領域得到了廣泛應用,取得了良好效果,並逐漸成為重要的智能演算法之一。遺傳演算法是基於生物學的,理解或編程都不太難。下面是遺傳演算法的一般演算法:
��
[編輯本段]創建一個隨機的初始狀態
��初始種群是從解中隨機選擇出來的,將這些解比喻為染色體或基因,該種群被稱為第一代,這和符號人工智慧系統的情況不一樣,在那裡問題的初始狀態已經給定了。
��評估適應度
��對每一個解(染色體)指定一個適應度的值,根據問題求解的實際接近程度來指定(以便逼近求解問題的答案)。不要把這些「解」與問題的「答案」混為一談,可以把它理解成為要得到答案,系統可能需要利用的那些特性。
��繁殖(包括子代突變)
��帶有較高適應度值的那些染色體更可能產生後代(後代產生後也將發生突變)。後代是父母的產物,他們由來自父母的基因結合而成,這個過程被稱為「雜交」。
��下一代
��如果新的一代包含一個解,能產生一個充分接近或等於期望答案的輸出,那麼問題就已經解決了。如果情況並非如此,新的一代將重復他們父母所進行的繁衍過程,一代一代演化下去,直到達到期望的解為止。
��並行計算
��非常容易將遺傳演算法用到並行計算和群集環境中。一種方法是直接把每個節點當成一個並行的種群看待。然後有機體根據不同的繁殖方法從一個節點遷移到另一個節點。另一種方法是「農場主/勞工」體系結構,指定一個節點為「農場主」節點,負責選擇有機體和分派適應度的值,另外的節點作為「勞工」節點,負責重新組合、變異和適應度函數的評估。
[編輯本段]遺傳演算法-基本框架
1 GA的流程圖
GA的流程圖如下圖所示
2 編碼
遺傳演算法不能直接處理問題空間的參數,必須把它們轉換成遺傳空間的由基因按一定結構組成的染色體或個體。這一轉換操作就叫做編碼,也可以稱作(問題的)表示(representation)。
評估編碼策略常採用以下3個規范:
a)完備性(completeness):問題空間中的所有點(候選解)都能作為GA空間中的點(染色體)表現。
b)健全性(soundness): GA空間中的染色體能對應所有問題空間中的候選解。
c)非冗餘性(nonrendancy):染色體和候選解一一對應。
目前的幾種常用的編碼技術有二進制編碼,浮點數編碼,字元編碼,變成編碼等。
而二進值編碼是目前遺傳演算法中最常用的編碼方法。即是由二進值字元集{0, 1}產生通常的0, 1字元串來表示問題空間的候選解。它具有以下特點:
a)簡單易行;
b)符合最小字元集編碼原則;
c)便於用模式定理進行分析,因為模式定理就是以基礎的。
3 適應度函數
進化論中的適應度,是表示某一個體對環境的適應能力,也表示該個體繁殖後代的能力。遺傳演算法的適應度函數也叫評價函數,是用來判斷群體中的個體的優劣程度的指標,它是根據所求問題的目標函數來進行評估的。
遺傳演算法在搜索進化過程中一般不需要其他外部信息,僅用評估函數來評估個體或解的優劣,並作為以後遺傳操作的依據。由於遺傳演算法中,適應度函數要比較排序並在此基礎上計算選擇概率,所以適應度函數的值要取正值.由此可見,在不少場合,將目標函數映射成求最大值形式且函數值非負的適應度函數是必要的。
適應度函數的設計主要滿足以下條件:
a)單值、連續、非負、最大化;
b) 合理、一致性;
c)計算量小;
d)通用性強。
在具體應用中,適應度函數的設計要結合求解問題本身的要求而定。適應度函數設計直接影響到遺傳演算法的性能。
4 初始群體的選取
遺傳演算法中初始群體中的個體是隨機產生的。一般來講,初始群體的設定可採取如下的策略:
a)根據問題固有知識,設法把握最優解所佔空間在整個問題空間中的分布范圍,然後,在此分布范圍內設定初始群體。
b)先隨機生成一定數目的個體,然後從中挑出最好的個體加到初始群體中。這種過程不斷迭代,直到初始群體中個體數達到了預先確定的規模。
[編輯本段]遺傳演算法-遺傳操作
遺傳操作是模擬生物基因遺傳的做法。在遺傳演算法中,通過編碼組成初始群體後,遺傳操作的任務就是對群體的個體按照它們對環境適應度(適應度評估)施加一定的操作,從而實現優勝劣汰的進化過程。從優化搜索的角度而言,遺傳操作可使問題的解,一代又一代地優化,並逼進最優解。
遺傳操作包括以下三個基本遺傳運算元(genetic operator):選擇(selection);交叉(crossover);變異(mutation)。這三個遺傳運算元有如下特點:
個體遺傳運算元的操作都是在隨機擾動情況下進行的。因此,群體中個體向最優解遷移的規則是隨機的。需要強調的是,這種隨機化操作和傳統的隨機搜索方法是有區別的。遺傳操作進行的高效有向的搜索而不是如一般隨機搜索方法所進行的無向搜索。
遺傳操作的效果和上述三個遺傳運算元所取的操作概率,編碼方法,群體大小,初始群體以及適應度函數的設定密切相關。
1 選擇
從群體中選擇優勝的個體,淘汰劣質個體的操作叫選擇。選擇運算元有時又稱為再生運算元(reproction operator)。選擇的目的是把優化的個體(或解)直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的,目前常用的選擇運算元有以下幾種:適應度比例方法、隨機遍歷抽樣法、局部選擇法、局部選擇法。
其中輪盤賭選擇法 (roulette wheel selection)是最簡單也是最常用的選擇方法。在該方法中,各個個體的選擇概率和其適應度值成比例。設群體大小為n,其中個體i的適應度為,則i 被選擇的概率,為
顯然,概率反映了個體i的適應度在整個群體的個體適應度總和中所佔的比例.個體適應度越大。其被選擇的概率就越高、反之亦然。計算出群體中各個個體的選擇概率後,為了選擇交配個體,需要進行多輪選擇。每一輪產生一個[0,1]之間均勻隨機數,將該隨機數作為選擇指針來確定被選個體。個體被選後,可隨機地組成交配對,以供後面的交叉操作。
2 交叉
在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。根據編碼表示方法的不同,可以有以下的演算法:
a)實值重組(real valued recombination)
1)離散重組(discrete recombination);
2)中間重組(intermediate recombination);
3)線性重組(linear recombination);
4)擴展線性重組(extended linear recombination)。
b)二進制交叉(binary valued crossover)
1)單點交叉(single-point crossover);
2)多點交叉(multiple-point crossover);
3)均勻交叉(uniform crossover);
4)洗牌交叉(shuffle crossover);
5)縮小代理交叉(crossover with reced surrogate)。
最常用的交叉運算元為單點交叉(one-point crossover)。具體操作是:在個體串中隨機設定一個交叉點,實行交叉時,該點前或後的兩個個體的部分結構進行互換,並生成兩個新個體。下面給出了單點交叉的一個例子:
個體A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新個體
個體B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新個體
3 變異
變異運算元的基本內容是對群體中的個體串的某些基因座上的基因值作變動。依據個體編碼表示方法的不同,可以有以下的演算法:
a)實值變異;
b)二進制變異。
一般來說,變異運算元操作的基本步驟如下:
a)對群中所有個體以事先設定的編譯概率判斷是否進行變異;
b)對進行變異的個體隨機選擇變異位進行變異。
遺傳演算法導引入變異的目的有兩個:一是使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部隨機搜索能力可以加速向最優解收斂。顯然,此種情況下的變異概率應取較小值,否則接近最優解的積木塊會因變異而遭到破壞。二是使遺傳演算法可維持群體多樣性,以防止出現未成熟收斂現象。此時收斂概率應取較大值。
遺傳演算法中,交叉運算元因其全局搜索能力而作為主要運算元,變異運算元因其局部搜索能力而作為輔助運算元。遺傳演算法通過交叉和變異這對相互配合又相互競爭的操作而使其具備兼顧全局和局部的均衡搜索能力。所謂相互配合.是指當群體在進化中陷於搜索空間中某個超平面而僅靠交叉不能擺脫時,通過變異操作可有助於這種擺脫。所謂相互競爭,是指當通過交叉已形成所期望的積木塊時,變異操作有可能破壞這些積木塊。如何有效地配合使用交叉和變異操作,是目前遺傳演算法的一個重要研究內容。
基本變異運算元是指對群體中的個體碼串隨機挑選一個或多個基因座並對這些基因座的基因值做變動(以變異概率P.做變動),(0,1)二值碼串中的基本變異操作如下:
基因位下方標有*號的基因發生變異。
變異率的選取一般受種群大小、染色體長度等因素的影響,通常選取很小的值,一般取0.001-0.1。
終止條件
當最優個體的適應度達到給定的閥值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設的代數一般設置為100-500代。
[編輯本段]遺傳演算法-求解演算法的特點分析
遺傳演算法作為一種快捷、簡便、容錯性強的演算法,在各類結構對象的優化過程中顯示出明顯的優勢。與傳統的搜索方法相比,遺傳演算法具有如下特點:
a)搜索過程不直接作用在變數上,而是在參數集進行了編碼的個體。此編碼操作,使得遺傳演算法可直接對結構對象(集合、序列、矩陣、樹、圖、鏈和表)進行操作。
b)搜索過程是從一組解迭代到另一組解,採用同時處理群體中多個個體的方法,降低了陷入局部最優解的可能性,並易於並行化。
c)採用概率的變遷規則來指導搜索方向,而不採用確定性搜索規則。
d)對搜索空間沒有任何特殊要求(如連通性、凸性等),只利用適應性信息,不需要導數等其它輔助信息,適應范圍更廣。
[編輯本段]術語說明
由於遺傳演算法是由進化論和遺傳學機理而產生的搜索演算法,所以在這個演算法中會用到很多生物遺傳學知識,下面是我們將會用來的一些術語說明:
一、染色體(Chronmosome)
染色體又可以叫做基因型個體(indivials),一定數量的個體組成了群體(population),群體中個體的數量叫做群體大小。
二、基因(Gene)
基因是串中的元素,基因用於表示個體的特徵。例如有一個串S=1011,則其中的1,0,1,1這4個元素分別稱為基因。它們的值稱為等位基因(Alletes)。
三、基因地點(Locus)
基因地點在演算法中表示一個基因在串中的位置稱為基因位置(Gene Position),有時也簡稱基因位。基因位置由串的左向右計算,例如在串 S=1101 中,0的基因位置是3。
四、基因特徵值(Gene Feature)
在用串表示整數時,基因的特徵值與二進制數的權一致;例如在串 S=1011 中,基因位置3中的1,它的基因特徵值為2;基因位置1中的1,它的基因特徵值為8。
五、適應度(Fitness)
各個個體對環境的適應程度叫做適應度(fitness)。為了體現染色體的適應能力,引入了對問題中的每一個染色體都能進行度量的函數,叫適應度函數. 這個函數是計算個體在群體中被使用的概率。
[編輯本段]參考資料
1.《計算機教育》第10期 作者:王利
2.遺傳演算法——理論、應用與軟體實現 王小平、曹立明著
3.同濟大學計算機系 王小平編寫的程序代碼
參考資料
1. 中新網:英13歲少女患家族遺傳怪病 滿臉皺紋像老人,2010年01月27日
http://www.chinanews.com.cn/gj/gj-ywdd2/news/2010/01-27/2094204.shtml
C. 遺傳演算法的運算過程
遺傳操作是模擬生物基因遺傳的做法。在遺傳演算法中,通過編碼組成初始群體後,遺傳操作的任務就是對群體的個體按照它們對環境適應度(適應度評估)施加一定的操作,從而實現優勝劣汰的進化過程。從優化搜索的角度而言,遺傳操作可使問題的解,一代又一代地優化,並逼近最優解。
遺傳操作包括以下三個基本遺傳運算元(genetic operator):選擇(selection);交叉(crossover);變異(mutation)。這三個遺傳運算元有如下特點:
個體遺傳運算元的操作都是在隨機擾動情況下進行的。因此,群體中個體向最優解遷移的規則是隨機的。需要強調的是,這種隨機化操作和傳統的隨機搜索方法是有區別的。遺傳操作進行的高效有向的搜索而不是如一般隨機搜索方法所進行的無向搜索。
遺傳操作的效果和上述三個遺傳運算元所取的操作概率,編碼方法,群體大小,初始群體以及適應度函數的設定密切相關。 從群體中選擇優勝的個體,淘汰劣質個體的操作叫選擇。選擇運算元有時又稱為再生運算元(reproction operator)。選擇的目的是把優化的個體(或解)直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的,目前常用的選擇運算元有以下幾種:適應度比例方法、隨機遍歷抽樣法、局部選擇法。
其中輪盤賭選擇法 (roulette wheel selection)是最簡單也是最常用的選擇方法。在該方法中,各個個體的選擇概率和其適應度值成比例。設群體大小為n,其中個體i的適應度為,則i 被選擇的概率,為遺傳演算法
顯然,概率反映了個體i的適應度在整個群體的個體適應度總和中所佔的比例。個體適應度越大。其被選擇的概率就越高、反之亦然。計算出群體中各個個體的選擇概率後,為了選擇交配個體,需要進行多輪選擇。每一輪產生一個[0,1]之間均勻隨機數,將該隨機數作為選擇指針來確定被選個體。個體被選後,可隨機地組成交配對,以供後面的交叉操作。 在自然界生物進化過程中起核心作用的是生物遺傳基因的重組(加上變異)。同樣,遺傳演算法中起核心作用的是遺傳操作的交叉運算元。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。通過交叉,遺傳演算法的搜索能力得以飛躍提高。
交叉運算元根據交叉率將種群中的兩個個體隨機地交換某些基因,能夠產生新的基因組合,期望將有益基因組合在一起。根據編碼表示方法的不同,可以有以下的演算法:
a)實值重組(real valued recombination)
1)離散重組(discrete recombination)
2)中間重組(intermediate recombination)
3)線性重組(linear recombination)
4)擴展線性重組(extended linear recombination)。
b)二進制交叉(binary valued crossover)
1)單點交叉(single-point crossover)
2)多點交叉(multiple-point crossover)
3)均勻交叉(uniform crossover)
4)洗牌交叉(shuffle crossover)
5)縮小代理交叉(crossover with reced surrogate)。
最常用的交叉運算元為單點交叉(one-point crossover)。具體操作是:在個體串中隨機設定一個交叉點,實行交叉時,該點前或後的兩個個體的部分結構進行互換,並生成兩個新個體。下面給出了單點交叉的一個例子:
個體A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新個體
個體B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新個體 變異運算元的基本內容是對群體中的個體串的某些基因座上的基因值作變動。依據個體編碼表示方法的不同,可以有以下的演算法:
a)實值變異
b)二進制變異。
一般來說,變異運算元操作的基本步驟如下:
a)對群中所有個體以事先設定的變異概率判斷是否進行變異
b)對進行變異的個體隨機選擇變異位進行變異。
遺傳演算法引入變異的目的有兩個:一是使遺傳演算法具有局部的隨機搜索能力。當遺傳演算法通過交叉運算元已接近最優解鄰域時,利用變異運算元的這種局部隨機搜索能力可以加速向最優解收斂。顯然,此種情況下的變異概率應取較小值,否則接近最優解的積木塊會因變異而遭到破壞。二是使遺傳演算法可維持群體多樣性,以防止出現未成熟收斂現象。此時收斂概率應取較大值。
遺傳演算法中,交叉運算元因其全局搜索能力而作為主要運算元,變異運算元因其局部搜索能力而作為輔助運算元。遺傳演算法通過交叉和變異這對相互配合又相互競爭的操作而使其具備兼顧全局和局部的均衡搜索能力。所謂相互配合.是指當群體在進化中陷於搜索空間中某個超平面而僅靠交叉不能擺脫時,通過變異操作可有助於這種擺脫。所謂相互競爭,是指當通過交叉已形成所期望的積木塊時,變異操作有可能破壞這些積木塊。如何有效地配合使用交叉和變異操作,是目前遺傳演算法的一個重要研究內容。
基本變異運算元是指對群體中的個體碼串隨機挑選一個或多個基因座並對這些基因座的基因值做變動(以變異概率P.做變動),(0,1)二值碼串中的基本變異操作如下:
基因位下方標有*號的基因發生變異。
變異率的選取一般受種群大小、染色體長度等因素的影響,通常選取很小的值,一般取0.001-0.1。 當最優個體的適應度達到給定的閾值,或者最優個體的適應度和群體適應度不再上升時,或者迭代次數達到預設的代數時,演算法終止。預設的代數一般設置為100-500代。
D. 加速遺傳演算法為什麼不穩定了我編了很多回還是不穩定,不知道是怎麼回事了
遺傳演算法本身就是一種隨機搜索演算法,其所得最優值在實際最優值附近波動
而且對於大部分問題,得到最優解的變數組合是可以有多個的
所以每次都會有不同的結果
只要每次運行所得的適應度函數值相差不大,就說明結果是對的,
否則不是運算元的操作方法不當就是遺傳演算法的程序實現過程有表達的錯誤。
E. matlab用遺傳演算法解決TSP的問題,求幫助
把下面的(1)-(7)依次存成相應的.m文件,在(7)的m文件下運行就可以了
(1) 適應度函數fit.m
function fitness=fit(len,m,maxlen,minlen)
fitness=len;
for i=1:length(len)
fitness(i,1)=(1-(len(i,1)-minlen)/(maxlen-minlen+0.0001)).^m;
end
(2)個體距離計算函數 mylength.m
function len=myLength(D,p)
[N,NN]=size(D);
len=D(p(1,N),p(1,1));
for i=1:(N-1)
len=len+D(p(1,i),p(1,i+1));
end
end
(3)交叉操作函數 cross.m
function [A,B]=cross(A,B)
L=length(A);
if L<10
W=L;
elseif ((L/10)-floor(L/10))>=rand&&L>10
W=ceil(L/10)+8;
else
W=floor(L/10)+8;
end
p=unidrnd(L-W+1);
fprintf('p=%d ',p);
for i=1:W
x=find(A==B(1,p+i-1));
y=find(B==A(1,p+i-1));
[A(1,p+i-1),B(1,p+i-1)]=exchange(A(1,p+i-1),B(1,p+i-1));
[A(1,x),B(1,y)]=exchange(A(1,x),B(1,y));
end
end
(4)對調函數 exchange.m
function [x,y]=exchange(x,y)
temp=x;
x=y;
y=temp;
end
(5)變異函數 Mutation.m
function a=Mutation(A)
index1=0;index2=0;
nnper=randperm(size(A,2));
index1=nnper(1);
index2=nnper(2);
%fprintf('index1=%d ',index1);
%fprintf('index2=%d ',index2);
temp=0;
temp=A(index1);
A(index1)=A(index2);
A(index2)=temp;
a=A;
end
(6)連點畫圖函數 plot_route.m
function plot_route(a,R)
scatter(a(:,1),a(:,2),'rx');
hold on;
plot([a(R(1),1),a(R(length(R)),1)],[a(R(1),2),a(R(length(R)),2)]);
hold on;
for i=2:length(R)
x0=a(R(i-1),1);
y0=a(R(i-1),2);
x1=a(R(i),1);
y1=a(R(i),2);
xx=[x0,x1];
yy=[y0,y1];
plot(xx,yy);
hold on;
end
end
(7)主函數
clear;
clc;
%%%%%%%%%%%%%%%輸入參數%%%%%%%%
N=50; %%城市的個數
M=100; %%種群的個數
C=100; %%迭代次數
C_old=C;
m=2; %%適應值歸一化淘汰加速指數
Pc=0.4; %%交叉概率
Pmutation=0.2; %%變異概率
%%生成城市的坐標
pos=randn(N,2);
%%生成城市之間距離矩陣
D=zeros(N,N);
for i=1:N
for j=i+1:N
dis=(pos(i,1)-pos(j,1)).^2+(pos(i,2)-pos(j,2)).^2;
D(i,j)=dis^(0.5);
D(j,i)=D(i,j);
end
end
%%如果城市之間的距離矩陣已知,可以在下面賦值給D,否則就隨機生成
%%生成初始群體
popm=zeros(M,N);
for i=1:M
popm(i,:)=randperm(N);
end
%%隨機選擇一個種群
R=popm(1,:);
figure(1);
scatter(pos(:,1),pos(:,2),'rx');
axis([-3 3 -3 3]);
figure(2);
plot_route(pos,R); %%畫出種群各城市之間的連線
axis([-3 3 -3 3]);
%%初始化種群及其適應函數
fitness=zeros(M,1);
len=zeros(M,1);
for i=1:M
len(i,1)=myLength(D,popm(i,:));
end
maxlen=max(len);
minlen=min(len);
fitness=fit(len,m,maxlen,minlen);
rr=find(len==minlen);
R=popm(rr(1,1),:);
for i=1:N
fprintf('%d ',R(i));
end
fprintf('\n');
fitness=fitness/sum(fitness);
distance_min=zeros(C+1,1); %%各次迭代的最小的種群的距離
while C>=0
fprintf('迭代第%d次\n',C);
%%選擇操作
nn=0;
for i=1:size(popm,1)
len_1(i,1)=myLength(D,popm(i,:));
jc=rand*0.3;
for j=1:size(popm,1)
if fitness(j,1)>=jc
nn=nn+1;
popm_sel(nn,:)=popm(j,:);
break;
end
end
end
%%每次選擇都保存最優的種群
popm_sel=popm_sel(1:nn,:);
[len_m len_index]=min(len_1);
popm_sel=[popm_sel;popm(len_index,:)];
%%交叉操作
nnper=randperm(nn);
A=popm_sel(nnper(1),:);
B=popm_sel(nnper(2),:);
for i=1:nn*Pc
[A,B]=cross(A,B);
popm_sel(nnper(1),:)=A;
popm_sel(nnper(2),:)=B;
end
%%變異操作
for i=1:nn
pick=rand;
while pick==0
pick=rand;
end
if pick<=Pmutation
popm_sel(i,:)=Mutation(popm_sel(i,:));
end
end
%%求適應度函數
NN=size(popm_sel,1);
len=zeros(NN,1);
for i=1:NN
len(i,1)=myLength(D,popm_sel(i,:));
end
maxlen=max(len);
minlen=min(len);
distance_min(C+1,1)=minlen;
fitness=fit(len,m,maxlen,minlen);
rr=find(len==minlen);
fprintf('minlen=%d\n',minlen);
R=popm_sel(rr(1,1),:);
for i=1:N
fprintf('%d ',R(i));
end
fprintf('\n');
popm=[];
popm=popm_sel;
C=C-1;
%pause(1);
end
figure(3)
plot_route(pos,R);
axis([-3 3 -3 3]);
F. 用遺傳演算法求解配送路線優化問題時,交叉率和變異率怎麼設定
以下是問題的詳細回答,文字有些長,請你耐心看希望對你有幫助。
傳演算法可以很好的解決物流配送路徑優化問題。但是由於遺傳演算法交配運算元操作可能會使最好解遺失,所以將遺傳演算法和模擬退火演算法結合來解決這一問題。實驗結果表明:用這種有記憶功能的遺傳模擬退火演算法求解物流配送路徑優化問題,可以在一定程度上解決上述問題,從而得到較高質量的解。
一 物流系統簡介
物流系統是以客戶滿意為目標,根據顧客的要求條件,從生產地到銷售地,在倉儲、包裝、配送、運輸、裝卸等環節有機整合所形成的實物、服務以及信息的流通過程所組成的一個復雜的系統。
物流配送是現代化物流管理中的一個重要環節。它是指按用戶的定貨要求,在配送中心進行分貨、配貨,並將配好的貨物及時送交收貨人的活動。本文討論物流配送中的路徑優化問題,並且通過結合模擬退火演算法來解決遺傳演算法在解決此類問題時的不足。
二 系統模型設計
物流配送路徑優化問題可以按這樣的情況進行描述:從某物流配送中心用多輛配送車輛向多個客戶送貨。每個客戶的位置和貨物需求量一定,每輛車的載重量一定,配送時間一定,其一次配送的最大行駛距離一定。要求合理安排車輛配送路線,使目標函數得到最優。並滿足以下條件:(1)每條配送路徑上各客戶需求量之和不超過配送車輛的載重量;(2)每條配送路徑的長度不超過配送車輛一次配送的最大行駛距離;(3)每次配送的貨物不能超過客 戶要求的時間; (4)每個客戶的需求必須滿足,且只能由一輛配送車送貨。設配送中心需要向k個客戶送貨,每個客戶的貨物需求量是g (i=1,2,…..k),每輛配送車的載重量是q,且g 下面建立此問題的數學模型:c 表示點i到點j的運輸成本,t 表示從i到s所允許的最大時間。配送中心編號為0,各客戶編號為i(i=1,2,….,k),定義變數如下:
x = 1 或 0(其中,當x 等於1時表示車s由i駛向j;0表示沒有該路徑。)。
y = 1 或 0(其中,當y 等於1時表示點i的貨運任務由s車完成;0表示沒有。)。
根據上述變數定義可得到的數學模型如下所示:
min Z = ; (1) ;(2)
= 1或 m(其中,當 i = 1,2,……,k時為1,否則為0。);(3)
= y ,j = 1,2,……,k;s = 1,2,……,m; (4)
= y ,i = 0,1,……,k;s = 1,2,……,m; (5)
t > 0;且t t , j = 1,2……,s-1; (6)
上述模型中,式(2)為汽車容量約束;式(3)保證了每個客戶的運輸任務僅由一輛車完成,而所有運輸任務則由m輛車協同完成;式(4)和式(5)限制了到達和離開某一客戶的汽車有且僅有一輛。式(6)對配送時間做了約束,即物品到達指定地點的時間不能大於其最大允許時間。
上述模型中還要考慮時間問題,即每個客戶對所送物品的時間要求各不相同,故需加入一個時間參數t 。對每個運輸路徑都加上時間參數t (t 的值可由客戶需求中得知,並記錄到資料庫。),在每個規定的時間內(如一個月),優先配送t 值小的物品,每次在用遺傳演算法求解前,遍歷規定時間內的所有t ,按照t 值由小到大排列染色體,然後再求出最優解,根據最優解制定配送方案。
三 引入退火演算法改進求解過程
針對遺傳演算法的一些不足,將模擬退火演算法與之結合,並加入記憶裝置,從而構造了物流配送路徑優化問題的一種有記憶功能的遺傳模擬退火演算法。該演算法的特點是擴大了原有遺傳演算法的搜索鄰域,在一定概率控制下暫時接受一些惡化解。同時利用記憶裝置保證了在一定終止條件下所得的最終解至少是搜索過程中曾得到所有解中的最優解。該演算法通過在常規的遺傳演算法基礎上加入模擬退火運算元和記憶裝置而得到。下面首先介紹此有記憶功能的遺傳模擬演算法的步驟。根據參考文獻[3],給出下面的演算法實現步驟:
STEP1 給定群體規模maxpop,將初始群體按照t 所指定的值進行分塊, k=0;初始溫度t =t ,產生初始群體pop(k),並且初始群體的每個分塊中都具有t 滿足某一屬性的特徵值;對初始群體計算目標值f(i), 找出使函數f (t )最小的染色體i和這個函數值f,記i =i,f =f;其中,f (t )為狀態i在溫度為t 時的目標值。i∈ pop( k),即當代群體中的一個染色體;
STEP2 若滿足結束條件則停止計算,輸出最優染色體i 和最優解f ;否則,在群體pop(k)的每一個染色體i∈ pop(k)的鄰域中隨機選一狀態j∈N( i ),且t 滿足條件要求, 按模擬退火中的接受概率
接受或拒絕j,其中f (t ), f (t )分別為狀態i,j的目標值。這一階段共需maxpop次迭代以選出新群體newpop1;
STEP3 在newpop1(k+1)中計算適應度函數
其中,f 是newpop1(k+1)中的最小值。由適應度函數決定的概率分布從newpop1中隨機選maxpop個染色體形成種群newpop2;
STEP4 按遺傳演算法的常規方法對newpop2進行交叉得到crosspop,再變異得到mutpop;
STEP5 染色體中的每個元素在滿足t 的情況下,且具有較大t 值的元素完成時沒有破壞具有較小t 值進行計算所需條件的情況下,不必按照由小到大的順序進行排列,
STEP6 令pop(k+1)=mutpop,對pop(k+1)計算f (t ),找出使函數f (t )最小的染色體i和這個函數值f,如果f < f ,則令i = i, f =f, t = d(t ),k = k+1, 返回 STEP2。
出於表示簡單,計算機處理方便的目的,對於VRP問題的遺傳演算法編碼通常都採用自然數編碼。上述數學模型的解向量可編成一條長度為k+m+1的染色體(0,i ,i ,…,i ,0,i ,…i ,0,…0,i ,…,i ,0)。在整條染色體中,自然數 i 表示第 j 個客戶。0的數目為m+1個,代表配送中心,並把自然數編碼分為m段,形成m個子路徑,表示由m輛車完成所有運輸任務。這樣的染色體編碼可以解釋為:第一輛車從配送中心出發,經過i ,i ,…,i 客戶後回到配送中心,形成了子路徑1;第2輛車也從配送中心出發,途徑i ,…i 客戶後回到配送中心,形成子路徑2。m輛車依次出發,完成所有運輸任務,構成m條子路徑。
如染色體0123045067890表示由三輛車完成9個客戶的運輸任務的路徑安排:
子路徑1:配送中心→客戶1→客戶2→客戶3→配送中心
子路徑2:配送中心→客戶4→客戶5→配送中心
子路徑3:配送中心→客戶6→客戶7→客戶8→客戶9→配送中心。
為了使演算法收斂到全局最優,遺傳群體應具有一定的規模。但為了保證計算效率,群體規模也不能太大。一般取群體規模取值在10到100之間。
在初始化染色體時,先生成 k 個客戶的一個全排列,再將 m+1 個 0 隨機插入排列中,其中所選的 k 個客戶所要求的時間必須在某一個特定的時間段內,且完成任何一個客戶配送任務時不能破壞完成其他客戶配送任務的條件。需要注意的是必須有兩個 0 被安排在排列的頭和尾,並且在排列中不能有連續的兩個0。這樣構成一條滿足問題需要的染色體。針對此染色體,隨機選擇兩個位置上的元素進行交換,並用演算法對其調整,使其成為新的滿足要求的染色體。交換若干次,直至生成滿足群體規模數的染色體。
在這里,將容量約束式(2)轉為運輸成本的一部分,運輸成本變為:
其中M為一很大的正數,表示當一輛車的貨運量超過其最大載重量時的懲罰系數。M應趨向於無窮大。考慮到計算機處理的問題,參考文獻[6],取M為1000000為宜。將此運輸成本函數作為我們的目標函數。適應度函數採用一種加速適應度函數:
這種適應度函數加速性能比較好,可以迅速改進適應度的值,縮短演算法運行時間。
將每代種群的染色體中適應度最大的染色體直接復制,進入下一代。種群中其他染色體按其適應度的概率分布,採用輪盤賭的方法,產生子代。這樣既保證了最優者可生存至下一代,又保證了其餘染色體可按生存競爭的方法生成子代,使得演算法可收斂到全局最優。選中的染色體按一定的概率—交叉率,產生子代。交叉率在0.6~0.8之間,演算法進化效果較好。
四 試驗數據與比較
實驗數據取自參考文獻[6]。
實驗1,隨機生成1個有8個門店的VRP問題,初始數據如下:
圖1八個門店的需求量及其位置
根據各倉庫的需求量,計算出需要的汽車數:m=[17.82/(0.85*8)]+1=3。採用傳統的遺傳演算法的各運算元,並對其中的交叉運算元進行了改造,取群體規模為20,進化代數為50,應用此程序他費時3s得到的結果為:
而我們的演算法在上面的演算法中加入了一個模擬退火運算元,取初始退火溫度為10,衰減系數取0.85使用第三節所述演算法步驟,在奔騰四的計算機上計算,耗時2s,得結果如下:
實驗2,隨機生成1個有20個門店的VRP問題,初始數據如下:
圖2 20個門店的需求量及其位置
計算得:需6輛車。用參考文獻[6]中的演算法取群體規模100,進化代數分別設為20,50,100,得到的結果不同:
圖3 普通遺傳演算法的實驗結果
而採用本文的演算法,初始退火溫度取10,衰減系數取0.85,在奔騰四的計算機上計算,則結果如下:
圖4 新型演算法的實驗結果
從以上兩個實驗可以看出:採用本文中所述的演算法,要得到相同的結果可以縮短進化代數,從而節約運算時間。而要增加進化代數必然得到更好的結果。
五 結論
用模擬退火演算法與傳統的遺傳演算法相結合來求解物流系統中車輛路徑問題,可以使演算法所需的進化代數明顯減少,問題解可在最短時間內求出。因此在時間特性上有了比較好的改善,耗時較短,獲得了較好的結果。根據參考資料所記載的數據表明,此演算法在解決諸如車輛路徑問題問題確實可行,並有較好的性能。而且隨著問題規模的增大,這種對時間性能的改善效果將更加明顯。這就非常有助於物流企業根據自己的實際情況科學、有效的指定物流決策,降低風險,降低成本,提高經濟效益和自身的競爭力。
參考文獻
[1] 郭耀煌 李軍著,車輛優化調度,成都:成都科技大學,1994
[2] 邢文訓 謝金星編著,現代優化計算方法,北京:清華大學出版社,1999
[3] 郎茂祥,物流配送車輛調度問題的模型和演算法研究,北京:北方交通大學,2002
[4] 郎茂祥 胡思繼,用混和遺傳演算法求解物流配送路徑優化問題的研究,中國管理科學,2002
[5] 李軍 謝秉磊 郭耀煌,非滿載車輛調度問題的遺傳演算法,系統工程理論與實踐,2000
[6] 唐坤,車輛路徑問題中的遺傳演算法設計,東北大學學報(自然科學版),2002
[7] 姜大立 楊西龍 杜文等,車輛路徑問題的遺傳演算法研究,系統工程理論與實踐,1999
[8] 閻慶 鮑遠律,新型遺傳模擬退火演算法求解物流配送路徑問題,計算機科學與發展,2002
G. 基於實數編碼的加速遺傳演算法可以求得理論上的最優解嗎
不可以,現代優化演算法都不可以求得理論上的最優解,只有較優解