遺傳演算法工程
『壹』 基本的遺傳演算法
在許多實際應用領域,無論是工程技術科學還是社會經濟科學中,都會遇到全局最優化問題[53,56~59,61],這一類問題大多數可以形式化為一個對(S,f)的尋優問題,其中 S⊂R n 是 R n 中的有界集,f∶S→R是 n 維實值函數。所要求解的問題就是要找到一點 x best∈S,使得 f(xbest)是 S 上的全局最優解,可以是極大值或極小值。以極小值為例,即求一點 x min∈S,滿足
含水層參數識別方法
盡管人們對這類問題進行了大量的研究,但得到的成績仍不能令人滿意,目前只能解決一些簡單的問題。對於更復雜的全局最優化問題,通常是利用數值解法,但許多數值解法都不能找到最優解,只是返回一個接近於全局最優的值。
全局最優化數值方法可以分為兩大類:確定性演算法和隨機演算法。在隨機演算法中,最優化步驟在一定程度上依賴於概率事件,它排除了確定性演算法中的一個最大障礙——預先詳細說明一個問題的全部特徵並針對問題的特徵決定演算法應採用的對策。與常規的優化演算法相比,遺傳演算法有可能在更大的范圍內探尋問題潛在的解。確定性演算法沒有用到概率信息。只有當對S上進行窮舉搜索及對f規定附加的假設條件下,演算法才能找到全局最優解。實行窮舉搜索在很多情況下(如實數解)是不可能的,因此多採用對f規定附加的假設條件,這必然影響到最終解的可靠性。在這些演算法中,搜索速度越快的演算法往往意味著需要對f做更多的假設,或者不能保證搜索成功。與此相對照,許多隨機演算法都可以證明在概率意義下漸近收斂到全局最優解,即這些演算法保證以概率1漸近收斂,而且隨機演算法的計算結果一般要優於那些確定性演算法的結果。遺傳演算法就是其中具有代表性的隨機演算法。
常用的遺傳演算法操作有選擇(Selection)、交叉(Crossover)、變異(Mutation)。復制是直接將個體的代碼進行拷貝形成新個體。下面就選擇、交叉與變異操作做一介紹。
7.3.1 選擇過程
選擇過程是以旋轉賭輪Pop-Size次(種群規模,即群體中個體的總個數)為基礎,每次旋轉都為新的種群選擇一個染色體。首先計算出個體i被選擇的概率Pi,優秀的染色體其選擇概率大,然後根據選擇概率的大小將一個圓盤分為Pop-Size個扇形,每個扇形的中心角的大小為2πPi。
每次進行選擇時,先選擇賭輪邊界旁一個不動的參考點,賭輪隨機地轉動,若不動點停留在扇形j內,則選擇個體j。個體的適應值越大,被選擇的概率越大,從而其染色體被遺傳到下一代的概率越大。
賭輪式選擇的特點是對於種群內的所有個體,無論其適應值大小,都有被選擇的機會。適應值大的個體被選擇的概率大,適應值小的個體被選擇的概率小。經過選擇後適應值大的個體在種群中的數目會增加。這正體現了適者生存的原則。
7.3.2 交叉操作
交叉操作是個有組織的、隨機的字元串間的信息交換過程。假設群體G(t)是模式庫。歷史信息以每個模式實例數目的形式存儲於G(t)中。交叉作用產生模式庫中已有模式的新的實例,同時也產生新的模式。簡單的交叉操作分為三步:
(1)從當前群體G(t)中選擇兩個個體結構:A=a1a2…an,B=b1b2…bn;
(2)以交叉概率 Pc 隨機選擇一個整數 x∈{1,2,…,n};
(3)交換A和B中位置x右邊的元素,產生兩個新的個體結構:a1a2…axbx+1…bn和b1b2…bxax+1…an。
7.3.3 變異操作
對於群體G(t)中的每個個體A=a1a2…an,簡單的變異操作過程如下:
1)每個位置的字元變數都有一個變異概率Pm,各位置互相獨立,通過隨機過程選擇發生變異的位置x1,x2,…,xn。
2)產生一個新個體結構 B=a1 a2……an ,其中是從對應位置x 1 的字元變數的值域中隨機選擇的一個取值。類似地,,…,可以同樣得到。
如果每個位置的變異概率等於Pm,那麼模式H(階為o(H))發生一次或多次變異的概率是
含水層參數識別方法
遺傳操作除了有選擇、交叉、變異等運算元外,還有染色體內部復制(Intrachromo-somal plication)、刪除、易位(Translocation)、分異(Segregation)等。
『貳』 大學裡面哪種 自動化專業 要學 遺傳演算法
為什麼一定要學遺傳演算法?
雖然有很多遺傳演算法的書,但遺傳演算法並不是一門很重要的課程。
很多學校只有研究生才會選修遺傳演算法,即便本科時學習,也是簡單過一下。
大多數都是自學的,遺傳演算法的書主要有:《遺傳演算法——理論、應用與軟體實現》、《遺傳演算法與工程設計》、或者結合Matlab講的《MATLAB遺傳演算法工具箱及應用》。
基本上學習遺傳演算法要大三或大四,甚至是研究生階段。很多本科生的畢業論文要求用遺傳演算法來解決實際問題。
但說實話,不管你學哪一個專業,都可以自學遺傳演算法的,它只是一個演算法,不是一門學科。
類似的智能演算法有:模擬退火、蟻群演算法、禁忌搜索、神經網路等。
其他的專業有計算機方面可能會學到遺傳演算法。
你現在只是考大學,沒必要專門為了遺傳演算法而選擇專業。遺傳演算法多數是大四或研究生階段才會接觸到的東西。
當然,如果你參加數學建模競賽,可能會接觸的早一些。
『叄』 我以後要研究遺傳演算法,請問大學讀什麼專業
樓主,我建議是那種電氣工程自動化類的專業。
現在電氣相關專業都需要一門:自動控制系統,他要學MATLAB模擬,這是遺傳演算法的基礎。遺傳演算法需要較高的程序編程能力,GAOP工具箱使用能力,一般的電氣相關專業都有學習。
『肆』 遺傳演算法是什麼
遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。
遺傳演算法(Genetic Algorithms簡稱GA)是由美國Michigan大學的John Holland教授於20世紀60年代末創建的。它來源於達爾文的進化論和孟德爾、摩根的遺傳學理論,通過模擬生物進化的機制來構造人工系統。遺傳演算法作為一種全局優化方法,提供了一種求解復雜系統優化問題的通用框架,它不依賴於問題的具體領域,對優化函數的要求很低並且對不同種類的問題具有很強的魯棒性,所以廣泛應用於計算機科學、工程技術和社會科學等領域。John Holland教授通過模擬生物進化過程設計了最初的遺傳演算法,我們稱之為標准遺傳演算法。
標准遺傳演算法流程如下:
1)初始化遺傳演算法的群體,包括初始種群的產生以及對個體的編碼。
2)計算種群中每個個體的適應度,個體的適應度反映了其優劣程度。
3)通過選擇操作選出一些個體,這些個體就是母代個體,用來繁殖子代。
4)選出的母代個體兩兩配對,按照一定的交叉概率來進行交叉,產生子代個體。
5)按照一定的變異概率,對產生的子代個體進行變異操作。
6)將完成交叉、變異操作的子代個體,替代種群中某些個體,達到更新種群的目的。
7)再次計算種群的適應度,找出當前的最優個體。
8)判斷是否滿足終止條件,不滿足則返回第3)步繼續迭代,滿足則退出迭代過程,第7)步中得到的當前最優個體,通過解碼,就作為本次演算法的近似最優解。
具體你可以到網路文庫去搜索遺傳演算法相關的論文,很多的。
你也可以參考網路里對遺傳演算法的介紹。
『伍』 遺傳演算法有哪些方向
遺傳演算法研究方向主要有以下幾個方面:
1. 遺傳演算法基礎理論研究
在遺傳演算法中,群體規模和遺傳運算元的控制參數的選取 是必要的試驗參數。
遺傳演算法的收斂也是遺傳演算法基礎理論研究方向之一。
2. 遺傳演算法的分類系統
分類系統屬於基於遺傳演算法的機器學習中的一類,包括一個簡單 的基於串規則的並行生成子系統、規則評價子系統和遺傳演算法子系統 。
分類系統被人們越來越多地應用在科學、工程和經濟領域中,是目 前遺傳演算法研究中一個十分活躍的領域。
3. 分布並行遺傳演算法
分布並行遺傳算 法的研究表明,只要通過保持多個群體和恰當控制群體間的相互作用 來模擬並行執行過程,即使不使用並行計算機,也能提高演算法的執行效 率。
4. 遺傳進化演算法
模擬自然進化過程可以產生魯棒的計算機演算法--進化演算法。其餘兩種演算法是進化規劃和進化策略 。
5. 遺傳神經網路
包括連接權、網路結構和學習規則的進化。
『陸』 遺傳演算法與工程優化怎麼樣
日本人寫的書還是比較嚴謹的, 是目前看過的比較好的中文版本. 比某些中文書看更加具有參考價值. 比較有系統性.但是內容偏向基礎,也有具體的工程實例.比較通俗易懂. 翻譯的中文讀起來也是可以的. 前幾章是基礎內容 後面幾張是具體問題的遺傳演算法求解. 有點小貴,印刷質量一般. 參考文獻詳細,方便了我很多引用. 贊一個
『柒』 遺傳演算法都能幹啥啊
遺傳演算法的應用有很多,一般用於解決工程優化問題。像選址問題、排班問題、路線優化、參數優化、函數求極值等等
『捌』 遺傳演算法的現狀
進入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),該運算元在根據兩個母體以及一個額外的個體產生新個體,事實上他的交叉結果與對三個個體用選舉交叉產生的結果一致。同時,文獻還將三者交叉運算元與點交叉、均勻交叉做了比較,結果表明,三者交叉運算元比其餘兩個有更好的性能。
1992年,英國格拉斯哥大學的李耘(Yun Li)指導博士生將基於二進制基因的遺傳演算法擴展到七進制、十進制、整數、浮點等的基因,以便將遺傳演算法更有效地應用於模糊參量,系統結構等的直接優化,於1997年開發了可能是世界上最受歡迎的、也是最早之一的遺傳/進化演算法的網上程序 EA_demo,以幫助新手在線互動式了解進化計算的編碼和工作原理 ,並在格拉斯哥召開第二屆IEE/IEEE遺傳演算法應用國際會議,於2000年組織了由遺傳編程(Genetic Programming)發明人斯坦福的 John Koza 等參加的 EvoNet 研討會,探索融合GA與GP結構尋優,超越固定結構和數值優化的局限性。
國內也有不少的專家和學者對遺傳演算法的交叉運算元進行改進。2002年,戴曉明等應用多種群遺傳並行進化的思想,對不同種群基於不同的遺傳策略,如變異概率,不同的變異運算元等來搜索變數空間,並利用種群間遷移運算元來進行遺傳信息交流,以解決經典遺傳演算法的收斂到局部最優值問題
2004年,趙宏立等針對簡單遺傳演算法在較大規模組合優化問題上搜索效率不高的現象,提出了一種用基因塊編碼的並行遺傳演算法(Building-block Coded Parallel GA,BCPGA)。該方法以粗粒度並行遺傳演算法為基本框架,在染色體群體中識別出可能的基因塊,然後用基因塊作為新的基因單位對染色體重新編碼,產生長度較短的染色體,在用重新編碼的染色體群體作為下一輪以相同方式演化的初始群體。
2005年,江雷等針對並行遺傳演算法求解TSP問題,探討了使用彈性策略來維持群體的多樣性,使得演算法跨過局部收斂的障礙,向全局最優解方向進化。
『玖』 基於DEAP庫的Python進化演算法從入門到入土--(六)多目標遺傳演算法 NSGA-II
在很多實際工程問題中,我們的優化目標不止一個,而是對多個目標函數求一個綜合最優解。例如在物流配送問題中,不僅要求配送路徑最短,還可能需要參與運輸車輛最少等。
多目標優化問題的數學模型可以表達為:
多目標優化問題通常具有如下特點:
對於多目標優化問題,傳統方法是將原問題通過加權方式變換為單目標優化問題,進而求得最優解。該方法具有兩大問題:
遺傳演算法具有多點多方向搜索的特徵,在一次搜索中可以得到多個Pareto最優解,因此更適合求解多目標優化問題。
而當前用於求解多目標優化問題的遺傳演算法一般有兩種思路:
NSGA-II(nondominated sorting genetic algorithm II)是2002年Deb教授提出的NSGA的改進型,這個演算法主要解決了第一版NSGA的三個痛點:
針對這三個問題,在NSGA-II中,Deb提出了快速非支配排序運算元,引入了保存精英策略,並用「擁擠距離」(crowding distance)替代了共享(sharing)。
在介紹NSGA-II的整體流程之前,我們需要先了解快速非支配排序和擁擠距離的定義。
解的支配關系與Pareto最優解
下圖表示了解之間的支配和強支配關系:
下圖表示了一個最小化問題解集中的Pareto最優解和Pareto弱最優解:
快速非支配排序步驟
快速非支配排序就是將解集分解為不同次序的Pareto前沿的過程。
它可以描述為:
DEAP實現
DEAP內置了實現快速非支配排序操作的函數 tools.emo.sortNondominated
tools.emo.sortNondominated(indivials, k, first_front_only=False)
參數:
返回:
擁擠距離的定義
在NSGA II中,為了衡量在同一個前沿中各個解質量的優劣,作者為每個解分配了一個擁擠距離。其背後的思想是 讓求得的Pareto最優解在objective space中盡量分散 。也就有更大可能讓解在Pareto最優前沿上均勻分布。
DEAP實現
DEAP中內置了計算擁擠距離的函數 tools.emo.assignCrowdingDist
tools.emo.assignCrowdingDist(indivials)
參數:
返回:
比較操作
根據快速非支配排序和擁擠距離計算的結果,對族群中的個體進行排序:
對兩個解 ,
在每個迭代步的最後,將父代與子代合為一個族群,依照比較操作對合並後族群中的個體進行排序,然後從中選取數量等同於父代規模的優秀子代,這就是NSGA-II演算法中的精英保存策略。
DEAP實現
DEAP內置了實現NSGA-II中的基於擁擠度的選擇函數 tools.selNSGA2 用來實現精英保存策略:
tools.selNSGA2(indivials, k, nd='standard')
參數:
返回:
這里選用ZDT3函數作為測試函數,函數可表達為:
其Pareto最優解集為
這里為了方便可視化取 。
下圖給出了該函數在Decision Space和Objective Space中的對應:
其pareto最優解在Objective Space中如下圖紅點所示:
將結果可視化:
得到:
可以看到NSGA-II演算法得到的Pareto最優前沿質量很高:最優解均勻分布在不連續前沿的各個線段上;同時在最優前沿以外沒有個體存在。