Ⅰ 遺傳演算法有哪些方向
遺傳演算法研究方向主要有以下幾個方面:
1. 遺傳演算法基礎理論研究
在遺傳演算法中,群體規模和遺傳運算元的控制參數的選取 是必要的試驗參數。
遺傳演算法的收斂也是遺傳演算法基礎理論研究方向之一。
2. 遺傳演算法的分類系統
分類系統屬於基於遺傳演算法的機器學習中的一類,包括一個簡單 的基於串規則的並行生成子系統、規則評價子系統和遺傳演算法子系統 。
分類系統被人們越來越多地應用在科學、工程和經濟領域中,是目 前遺傳演算法研究中一個十分活躍的領域。
3. 分布並行遺傳演算法
分布並行遺傳算 法的研究表明,只要通過保持多個群體和恰當控制群體間的相互作用 來模擬並行執行過程,即使不使用並行計算機,也能提高演算法的執行效 率。
4. 遺傳進化演算法
模擬自然進化過程可以產生魯棒的計算機演算法--進化演算法。其餘兩種演算法是進化規劃和進化策略 。
5. 遺傳神經網路
包括連接權、網路結構和學習規則的進化。
Ⅱ 遺傳演算法是什麼
遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。
遺傳演算法(Genetic Algorithms簡稱GA)是由美國Michigan大學的John Holland教授於20世紀60年代末創建的。它來源於達爾文的進化論和孟德爾、摩根的遺傳學理論,通過模擬生物進化的機制來構造人工系統。遺傳演算法作為一種全局優化方法,提供了一種求解復雜系統優化問題的通用框架,它不依賴於問題的具體領域,對優化函數的要求很低並且對不同種類的問題具有很強的魯棒性,所以廣泛應用於計算機科學、工程技術和社會科學等領域。John Holland教授通過模擬生物進化過程設計了最初的遺傳演算法,我們稱之為標准遺傳演算法。
標准遺傳演算法流程如下:
1)初始化遺傳演算法的群體,包括初始種群的產生以及對個體的編碼。
2)計算種群中每個個體的適應度,個體的適應度反映了其優劣程度。
3)通過選擇操作選出一些個體,這些個體就是母代個體,用來繁殖子代。
4)選出的母代個體兩兩配對,按照一定的交叉概率來進行交叉,產生子代個體。
5)按照一定的變異概率,對產生的子代個體進行變異操作。
6)將完成交叉、變異操作的子代個體,替代種群中某些個體,達到更新種群的目的。
7)再次計算種群的適應度,找出當前的最優個體。
8)判斷是否滿足終止條件,不滿足則返回第3)步繼續迭代,滿足則退出迭代過程,第7)步中得到的當前最優個體,通過解碼,就作為本次演算法的近似最優解。
具體你可以到網路文庫去搜索遺傳演算法相關的論文,很多的。
你也可以參考網路里對遺傳演算法的介紹。
Ⅲ 什麼是遺傳演算法
遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。
對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規劃模型:
遺傳演算法式中x為決策
變數,式2-1為目標函數式,式2-2、2-3為約束條件,U是基本空間,R是U的子集。滿足約束條件的解X稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。
遺傳演算法的基本運算過程如下:
a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。
b)個體評價:計算群體P(t)中各個個體的適應度。
c)選擇運算:將選擇運算元作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。
d)交叉運算:將交叉運算元作用於群體。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。遺傳演算法中起核心作用的就是交叉運算元。
e)變異運算:將變異運算元作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。
群體P(t)經過選擇、交叉、變異運算之後得到下一代群體P(t 1)。
f)終止條件判斷:若t=T,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。
遺傳演算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(indivial)組成。每個個體實際上是染色體(chromosome)帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之後,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,並藉助於自然遺傳學的遺傳運算元(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼(decoding),可以作為問題近似最優解。
Ⅳ 遺傳演算法有哪些比較直觀的應用呢
遺傳演算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。
可用於排班、排課、路徑優化、配置優化、生產排程等等優化問題
Ⅳ 能通俗的介紹一下什麼是遺傳演算法嗎
遺傳演算法(Genetic Algorithms or GAs)是基於自然選擇和自然遺傳機制的搜索演算法,它是一種有效的解決最優化問題的方法。遺傳演算法最早是由美國Michigan大學的John Holland和他的同事及學生提出的。類似於自然界演化的基本法則,「適者生存」是遺傳演算法的核心機制,同樣,「復制(reproce)」、「雜交(crossover)」、「變異(mutation)」等自然界的生物演化規則在遺傳演算法中都得到類似的體現。
用遺傳演算法解最優化問題,首先應對可行域中的個體進行編碼,然後在可行域中隨機挑選指定群體大小的一些個體組成作為進化起點的第一代群體,並計算每個個體的目標函數值,即該個體的適應度。接著就像自然界中一樣,利用選擇機制從群體中隨機挑選個體作為繁殖過程前的個體樣本。選擇機制保證適應度較高的個體能夠保留較多的樣本;而適應度較低的個體則保留較少的樣本,甚至被淘汰。在接下去的繁殖過程中,遺傳演算法提供了交叉和變異兩種演算法對挑選後的樣本進行交換和基因突變。交叉演算法交換隨機挑選的兩個個體的某些位,變異運算元則直接對一個個體中的隨機挑選的某一位進行突變。這樣通過選擇和繁殖就產生了下一代群體。重復上述選擇和繁殖過程,直到結束條件得到滿足為止。進化過程最後一代中的最優解就是用遺傳演算法解最優化問題所得到的最終結果。
與其他演算法相比,遺傳演算法主要有以下四個方面的不同: 遺傳演算法所面向的對象是參數集的編碼,而不是參數集本身; 遺傳演算法的搜索是基於若干個點,而不是基於一個點; 遺傳演算法利用目標函數的信息,而不是導數或者其他輔助信息; 遺傳演算法的轉化規則是概率性的,而不是確定性的。
Ⅵ 遺傳演算法的迭代次數是怎麼確定的,與什麼有關
1. 遺傳演算法簡介
遺傳演算法是用於解決最優化問題的一種搜索演算法,演算法的整體思路是建立在達爾文生物進化論「優勝劣汰」規律的基礎上。它將生物學中的基因編碼、染色體交叉、基因變異以及自然選擇等概念引入最優化問題的求解過程中,通過不斷的「種群進化」,最終得到問題的最優解。
2. 遺傳演算法實現步驟
在講下面幾個基於生物學提出的概念之前,首先我們需要理解為什麼需要在最優化問題的求解中引入生物學中的各種概念。
假設我們需要求一個函數的最大值,但這個函數異常復雜以至於無法套用一般化的公式,那麼就會想到:如果可以將所有可能的解代入方程,那麼函數最大值所對應的那個解就是問題的最優解。但是,對於較復雜的函數來說,其可能的解的個數的數量級是我們所無法想像的。因此,我們只好退而求其次,只代入部分解並在其中找到最優解。那麼這樣做的核心就在於如何設定演算法確定部分解並去逼近函數的最優解或者較好的局部最優解。
遺傳演算法就是為了解決上述問題而誕生的。假設函數值所對應的所有解是一個容量超級大的種群,而種群中的個體就是一個個解,接下去遺傳演算法的工作就是讓這個種群中的部分個體去不斷繁衍,在繁衍的過程中一方面會發生染色體交叉而產生新的個體。另一方面,基因變異也會有概率會發生並產生新的個體。接下去,只需要通過自然選擇的方式,淘汰質量差的個體,保留質量好的個體,並且讓這個繁衍的過程持續下去,那麼最後就有可能進化出最優或者較優的個體。這么看來原來最優化問題居然和遺傳變異是相通的,而且大自然早已掌握了這樣的機制,這著實令人興奮。為了將這種機制引入最優化問題並利用計算機求解,我們需要將上述提到的生物學概念轉化為計算機能夠理解的演算法機制。
下面介紹在計算機中這種遺傳變異的機制是如何實現的:
基因編碼與解碼:
在生物學中,交叉與變異能夠實現是得益於染色體上的基因,可以想像每個個體都是一串超級長的基因編碼,當兩個個體發生交叉時,兩條基因編碼就會發生交換,產生的新基因同時包含父親和母親的基因編碼。在交叉過程中或者完成後,某些基因點位又會因為各種因素發生突變,由此產生新的基因編碼。當然,發生交叉和變異之後的個體並不一定優於原個體,但這給了進化(產生更加優秀的個體)發生的可能。
因此,為了在計算機里實現交叉和變異,就需要對十進制的解進行編碼。對於計算機來說其最底層的語言是由二進制0、1構成的,而0、1就能夠被用來表示每個基因點位,大量的0、1就能夠表示一串基因編碼,因此我們可以用二進制對十進制數進行編碼,即將十進制的數映射到二進制上。但是我們並不關心如何將十進制轉換為二進制的數,因為計算機可以隨機生成大量的二進制串,我們只需要將辦法將二進制轉化為十進制就可以了。
二進制轉換為十進制實現方式:
假設,我們需要將二進制映射到以下范圍:
首先,將二進制串展開並通過計算式轉化為[0,1]范圍內的數字:
將[0,1]范圍內的數字映射到我們所需要的區間內:
交叉與變異:
在能夠用二進制串表示十進制數的基礎上,我們需要將交叉與變異引入演算法中。假設我們已經獲得兩條二進制串(基因編碼),一條作為父親,一條作為母親,那麼交叉指的就是用父方一半的二進制編碼與母方一半的二進制編碼組合成為一條新的二進制串(即新的基因)。變異則指的是在交叉完成產生子代的過程中,二進制串上某個數字發生了變異,由此產生新的二進制串。當然,交叉與變異並不是必然發生的,其需要滿足一定的概率條件。一般來說,交叉發生的概率較大,變異發生的概率較小。交叉是為了讓演算法朝著收斂的方向發展,而變異則是為了讓演算法有幾率跳出某種局部最優解。
自然選擇:
在成功將基因編碼和解碼以及交叉與變異引入演算法後,我們已經實現了讓演算法自動產生部分解並優化的機制。接下去,我們需要解決如何在演算法中實現自然選擇並將優秀的個體保留下來進而進化出更優秀的個體。
首先我們需要確定個體是否優秀,考慮先將其二進制串轉化為十進制數並代入最初定義的目標函數中,將函數值定義為適應度。在這里,假設我們要求的是最大值,則定義函數值越大,則其適應度越大。那是否在每一輪迭代過程中只需要按照適應度對個體進行排序並選出更加優秀的個體就可以了呢?事實上,自然選擇的過程中存在一個現象,並沒有說優秀的個體一定會被保留,而差勁的個體就一定被會被淘汰。自然選擇是一個概率事件,越適應環境則生存下去的概率越高,反之越低。為了遵循這樣的思想,我們可以根據之前定義的適應度的大小給定每個個體一定的生存概率,其適應度越高,則在篩選時被保留下來的概率也越高,反之越低。
那麼問題就來了,如何定義這種生存概率,一般來說,我們可以將個體適應度與全部個體適應度之和的比率作為生存概率。但我們在定義適應度時使用函數值進行定義的,但函數值是有可能為負的,但概率不能為負。因此,我們需要對函數值進行正數化處理,其處理方式如下:
定義適應度函數:
定義生存概率函數:
註:最後一項之所以加上0.0001是因為不能讓某個個體的生存概率變為0,這不符合自然選擇中包含的概率思想。
3. 遺傳算例
在這里以一個比較簡單的函數為例,可以直接判斷出函數的最小值為0,最優解為(0,0)
若利用遺傳演算法進行求解,設定交叉概率為0.8,變異概率為0.005,種群內個體數為2000,十進制數基因編碼長度為24,迭代次數為500次。
從遺傳演算法收斂的動態圖中可以發現,遺傳演算法現實生成了大量的解,並對這些解進行試錯,最終收斂到最大值,可以發現遺傳演算法的結果大致上與最優解無異,結果圖如下:
4. 遺傳演算法優缺點
優點:
1、 通過變異機制避免演算法陷入局部最優,搜索能力強
2、 引入自然選擇中的概率思想,個體的選擇具有隨機性
3、 可拓展性強,易於與其他演算法進行結合使用
缺點:
1、 遺傳演算法編程較為復雜,涉及到基因編碼與解碼
2、 演算法內包含的交叉率、變異率等參數的設定需要依靠經驗確定
3、 對於初始種群的優劣依賴性較強
Ⅶ 遺傳演算法,蟻群演算法和粒子群演算法都是什麼演算法
遺傳演算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。
蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。
粒子群演算法,也稱粒子群優化演算法(Particle Swarm Optimization),縮寫為 PSO, 是近年來由J. Kennedy和R. C. Eberhart等[1] 開發的一種新的進化演算法(Evolutionary Algorithm - EA)。PSO 演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。