前不久寫了一個遺傳算法解決論文里邊的問題,忙完了,整理出來,寫在這邊。遺傳算法的簡介,從別的地方轉載過來的。如果對遺傳算法有所了解了,就不要看了,如果是第一次聽說遺傳算法的,不妨進來轉轉。以下將在第二部分寫遺傳算法的數據結構定義,第三部分寫遺傳算法的一系列算子的具體算法,第四部分寫根據風險模型做的改進工作。from URL:http://www.jgchina.com/ednns/ednnsbk/6.2.htm 有刪改遺傳算法的基本概念
遺傳算法的基本思想是基于Darwin進化論和Mendel的遺傳學說的。
Darwin進化論最重要的是適者生存原理。它認為每一物種在發展中越來越適應環境。物種每個個體的基本特征由后代所繼承,但后代又會產生一些異于父代的新變化。在環境變化時,只有那些熊適應環境的個體特征方能保留下來。
Mendel遺傳學說最重要的是基因遺傳原理。它認為遺傳以密碼方式存在細胞中,并以基因形式包含在染色體內。每個基因有特殊的位置并控制某種特殊性質;
所以,每個基因產生的個體對環境具有某種適應性。基因突變和基因雜交可產生更適應于環境的后代。經過存優去劣的自然淘汰,適應性高的基因結構得以保存下
來。
由于遺傳算法是由進化論和遺傳學機理而產生的直接搜索優化方法;故而在這個算法中要用到各種進化和遺傳學的概念。這些概念如下:
一、串(String)
它是個體(Individual)的形式,在算法中為二進制串,并且對應于遺傳學中的染色體(Chromosome)。
二、群體(Population)
個體的集合稱為群體,串是群體的元素
三、群體大小(Population Size)
在群體中個體的數量稱為群體的大小。
四、基因(Gene)
基因是串中的元素,基因用于表示個體的特征。例如有一個串S=1011,則其中的1,0,1,1這4個元素分別稱為基因。它們的值稱為等位基因(Alletes)。
五 、基因位置(Gene Position)
一個基因在串中的位置稱為基因位置,有時也簡稱基因位?;蛭恢糜纱淖笙蛴矣嬎?,例如在串S=1101中,0的基因位置是3?;蛭恢脤谶z傳學中的地點(Locus)。
//以下五到九可以不看
六、基因特征值(Gene Feature)
在用串表示整數時,基因的特征值與二進制數的權一致;例如在串S=1011中,基因位置3中的1,它的基因特征值為2;基因位置1中的1,它的基因特征值為8。
七、串結構空間SS
在串中,基因任意組合所構成的串的集合?;虿僮魇窃诮Y構空間中進行的。串結構空間對應于遺傳學中的基因型(Genotype)的集合。
八、參數空間SP
這是串空間在物理系統中的映射,它對應于遺傳學中的表現型(Phenotype)的集合。
九、非線性
它對應遺傳學中的異位顯性(Epistasis)
//
十、適應度(Fitness)
表示某一個體對于環境的適應程度。
遺傳算法還有一些其它的概念,這些概念在介紹遺傳算法的原理和執行過程時,再進行說明。
遺傳算法的原理
遺傳算法GA把問題的解表示成“染色體”,在算法中也即是以二進制編碼的串。并且,在執行遺傳算法之前,給出一群“染色體”,也即是假設解。然后,把這些
假設解置于問題的“環境”中,并按適者生存的原則,從中選擇出較適應環境的“染色體”進行復制,再通過交叉,變異過程產生更適應環境的新一代“染色體”
群。這樣,一代一代地進化,最后就會收斂到最適應環境的一個“染色體”上,它就是問題的最優解。
一、遺傳算法的目的
典型的遺傳算法CGA(Canonical Genetic Algorithm)通常用于解決下面這一類的靜態最優化問題:
考慮對于一群長度為L的二進制編碼bi,i=1,2,…,n;有
bi∈{0,1}L
(3-84)
給定目標函數f,有f(bi),并且
0<f(bi)<∞
同時
f(bi)≠f(bi+1)
求滿足下式
max{f(bi)|bi∈{0,1}L}
(3-85)
的bi。
很明顯,遺傳算法是一種最優化方法,它通過進化和遺傳機理,從給出的原始解群中,不斷進化產生新的解,最后收斂到一個特定的串bi處,即求出最優解。
遺傳算法的基本原理
長度為L的n個二進制串bi(i=1,2,…,n)組成了遺傳算法的初解群,也稱為初始群體。在每個串中,每個二進制位就是個體染色體的基因。根據進化術語,對群體執行的操作有三種:
1.選擇(Selection)
這是從群體中選擇出較適應環境的個體。這些選中的個體用于繁殖下一代。故有時也稱這一操作為再生(Reproduction)。由于在選擇用于繁殖下一代
的個體時,是根據個體對環境的適應度而決定其繁殖量的,故而有時也稱為非均勻再生(differential reproduction)。
2.交叉(Crossover)
這是在選中用于繁殖下一代的個體中,對兩個不同的個體的相同位置的基因進行交換,從而產生新的個體。
3.變異(Mutation)
這是在選中的個體中,對個體中的某些基因執行異向轉化。在串bi中,如果某位基因為1,產生變異時就是把它變成0;反亦反之。
遺傳算法的原理可以簡要給出如下:
choose an intial population
determine the fitness of each individual
perform selection
repeat
perform crossover
perform mutation
determine the fitness of each individual
perform selection
until some stopping criterion applies
這里所指的某種結束準則一般是指個體的適應度達到給定的閥值;或者個體的適應度的變化率為零。
posted on 2008-06-15 20:19
Wang Feng 閱讀(5646)
評論(2) 編輯 收藏 引用 所屬分類:
Numerical C++