導航:首頁 > 源碼編譯 > 遺傳演算法選擇參數

遺傳演算法選擇參數

發布時間:2022-07-24 14:15:01

『壹』 遺傳演算法:matlab中ga函數參數options該怎麼設置

  1. options可以不寫有默認設置。

  2. options是一個結構體要用函數gaoptimset()設置。

  3. options=gaoptimset()然後把options填到ga()裡面。

  4. gaoptimset('屬性名1',數值1,'屬性名2',數值2......)。

常用設置:

『貳』 遺傳演算法求解最優參數問題

步驟4前面的內容也貼上來吧,要不然沒法判斷參數a和b是如何計算滴

『叄』 遺傳演算法的主要步驟

為了使用遺傳演算法來解決優化問題,准備工作分為以下四步[56,57,61]

7.4.1 確定問題的潛在解的遺傳表示方案

在基本的遺傳演算法中,表示方案是把問題的搜索空間中每個可能的點表示為確定長度的特徵串(通常是二進制串)。表示方案的確定需要選擇串長l和字母表規模k。在染色體串和問題的搜索空間中的點之間選擇映射有時容易實現,有時又非常困難。選擇一個便於遺傳演算法求解問題的表示方案經常需要對問題有深入的了解。

7.4.2 確定適應值的度量

適應值度量為群體中每個可能的確定長度的特徵串指定一個適應值,它經常是問題本身所具有的。適應值度量必須有能力計算搜索空間中每個確定長度的特徵串的適應值。

7.4.3 確定控制該演算法的參數和變數

控制遺傳演算法的主要參數有群體規模Pop-Size、演算法執行的最大代數N-Gen、交叉概率Pc、變異概率Pm和選擇策略R等參數。

(1)群體規模Pop-Size。群體規模影響到遺傳演算法的最終性能和效率。當規模太小時,由於群體對大部分超平面只給出了不充分的樣本量,所以得到的結果一般不佳。大的群體更有希望包含出自大量超平面的代表,從而可以阻止過早收斂到局部最優解;然而群體越大,每一代需要的計算量也就越多,這有可能導致一個無法接受的慢收斂率。

(2)交叉率Pc。交叉率控制交叉運算元應用的頻率,在每代新的群體中,有Pc·Pop-Size個串實行交叉。交叉率越高,群體中串的更新就越快。如果交叉率過高,相對選擇能夠產生的改進而言,高性能的串被破壞得更快。如果交叉率過低,搜索會由於太小的探查率而可能停滯不前。

(3)變異率Pm。變異是增加群體多樣性的搜索運算元,每次選擇之後,新的群體中的每個串的每一位以相等的變異率進行隨機改變。對於M進制串,就是相應的位從1變為0或0變為1。從而每代大約發生Pm·Pop-Size·L次變異,其中L為串長。一個低水平的變異率足以防止整個群體中任一給定位保持永遠收斂到單一的值。高水平的變異率產生的實質是隨機搜索。

比起選擇和交叉,變異在遺傳演算法中是次要的,它在恢復群體中失去的多樣性方面具有潛在的作用。例如,在遺傳演算法執行的開始階段,串中一個特定位上的值1可能與好的性能緊密聯系,也就是說從搜索空間中某些初始隨機點開始,在那個位上的值1可能一致地產生適應性度量好的值。因為越好的適應值與串中那個位上的值1相聯系,復製作用就越會使群體的遺傳多樣性損失。當達到一定程度時,值0會從整個群體中的那個位上消失,然而全局最優解可能在串中那個位上是0。一旦搜索范圍縮小到實際包含全局最優解的那部分搜索空間,在那個位上的值0就可能正好是達到全局最優解所需的。這僅僅是一種說明搜索空間是非線性的方式,這種情形不是假定的,因為實際上所有我們感興趣的問題都是非線性的。變異作用提供了一個恢復遺傳多樣性的損失的方法。

(4)選擇策略R。有兩種選擇策略。一是利用純選擇,即當前群體中每個點復制的次數比與點的性能值成比例。二是利用最優選擇,即首先執行純選擇,且具有最好性能的點總是保留到下一代。在缺少最優選擇的情況下,由於采樣誤差、交叉和變異,最好性能的點可能會丟失。

通過指定各個參數Pop-Size、Pc、Pm和R的值,可以表示一個特定的遺傳演算法。

7.4.4 確定指定結果的方法和停止運行的准則

當遺傳的代數達到最大允許代數時,就可以停止演算法的執行,並指定執行中得到的最好結果作為演算法的結果。

基本的遺傳演算法

1)隨機產生一個由固定長度字元串組成的初始群體。

2)對於字元串群體,迭代地執行下述步驟,直到選擇標准被滿足為止。

①計算群體中的每個個體字元串的適應值;

②實施下列三種操作(至少前兩種)來產生新的群體,操作對象的選取基於與適應度成比例的概率。

選擇:把現有的個體串按適應值復制到新的群體中。

交叉:通過遺傳重組隨機選擇兩個現有的子串進行遺傳重組,產生兩個新的串。

變異:將現有串中某一位的字元隨機變異產生一個新串。

3)把在後代中出現的最好適應值的個體串指定為遺傳演算法運行的結果。這一結果可以是問題的解(或近似解)。

基本的遺傳演算法流程圖如圖7-1所示。

『肆』 遺傳演算法有哪些基本運行參數,其值一般設為多少

遺傳演算法在matlab里有兩個函數,分別是ga和gaoptimset,前者用來調用遺傳演算法,後者用來設定遺傳演算法的參數,具體內容可以docga查看,遺傳演算法有哪些參數可以直接在命令窗口輸入gaoptimset查看,祝好。

『伍』 如何用matlab來實現遺傳演算法確定參數范圍啊越詳細越好~~謝謝了

對於遺傳演算法的參數問題,只有推薦值,
比如種群一般取40-100,選擇或復制0.6-0.96,交叉0.6-0.9,變異0.001-0.05.
沒有如何確定的具體辦法。這是世界性問題。

『陸』 matlab遺傳演算法怎麼輸入參數

遺傳演算法工具箱的函數GA基本調用格式如下:
X
=
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub)
其中前兩個參數分別是適應度函數和變數個數,第三、四個參數(A和b)即為線性不等式約束。
你現在需要做的是,增加幾個線性約束條件:
x1
<
x2
x2
<
x3
x3
<
x4
x4
<
x5
不過,有個問題,遺傳演算法等優化工具對不等式約束的要求,都必須是閉集(帶等號的不等式),也就是說,要的是類似下面這樣的約束:
x1
<=
x2
x2
<=
x3
x3
<=
x4
x4
<=
x5

『柒』 遺傳演算法<sup>[1,]</sup>

遺傳演算法,又稱基因演算法(Genetic Algorithm,簡稱GA),也是一種啟發式蒙特卡洛優化演算法。遺傳演算法最早是由Holland(1975)提出,它模擬了生物適者生存、優勝劣汰的進化過程,具有不依賴於初始模型的選擇、不容易陷入局部極小、在反演過程中不用計算偏導數矩陣等優點。遺傳演算法最早由Stoffa和Sen(1991)用於地震波的一維反演,之後在地球物理資料的非線性反演中得到廣泛的應用。GA演算法對模型群體進行追蹤、搜索,即模型狀態通過模型群體傳送,具有比模擬退火法更大、更復雜的「記憶」,潛力更大。

遺傳演算法在反演中的基本思路和過程是:

(1)將生物體看成模型,模型參數看成染色體,有多少個模型的參數就有多少個染色體。對每個模型的參數(染色體)用二進制進行編碼,這個編碼就是基因。

(2)隨機生成一個模型群體(相當於生物的種群),然後在模型群體中進行繁殖,通過母本的選擇、交換和變異等遺傳操作產生下一代,然後保留較好基因,淘汰較差基因。

(3)通過一代一代的繁殖優勝劣汰的進化過程,最後所剩下的種群基本上都是最優的基因,種群趨於一致。所謂群體「一致」,即群體目標函數的方差或標准差很小,或者群體目標函數的均值接近於極值(可能是極大值或極小值),從而獲得非線性反演問題所對應的最優解或近似最優解。

下面以一個實例來簡述遺傳演算法的基本過程。

[例1]設m是正整數,且0≤m≤127,求方程φ(m)=m2的極大值。

這個例子極為簡單,只有一個模型參數,因此只有一條染色體,目標函數的極值是極大值(此例子來自阮百堯課件)。遺傳演算法通過以下7個步驟來實現:

(1)模型參數二進制編碼。

每個模型參數就是一條染色體,把十進制的模型參數表示為二進制,這就是基因。首先確定二進制碼的長度(基因的長度):

2N=[mmax(i)-mmin(i)]/Δm(i) (8.20)

其中:N為第i條染色體基因的長度(也就是第i個模型參數的二進制碼位數);[mmin(i),mmax(i)]為第i個模型參數的取值范圍;Δm(i)為第i個模型參數的解析度。這樣就把模型參數離散化了,它只能按Δm(i)的整數倍變化。基因的長度按下式計算:

地球物理反演教程

其中:c為實數;N為基因長度,是整數;int[ ]為取整函數。上式表示如果c不是整數,那麼基因長度N就是對c取整後加1,這樣保證最小解析度。

基因的編碼按下式進行:

地球物理反演教程

其中:式(8.22)是編碼公式;k為基因編碼的十進制數,是整數;int[ ]為取整函數。把k轉化為二進制就是基因的編碼。解碼是按照式(8.23)進行的。首先把一個基因的二進制編碼轉化為十進制數k,然後按式(8.23)可以計算出第i個模型參數m(i)的十進制值。

例如:電阻率參數ρ(1),它的變化范圍為10~5000Ω·m,解析度為2Ω·m,設當前參數ρ(1)=133Ω·m,按式(8.21)計算得

c=11.28482,N=12

所以二進制基因長度為13位。

利用式(8.22)計算基因編碼k的十進制數:

k=int[(133-10)/2]=61

把它轉化為二進制數為:000000111101。所以ρ(1)=133 的二進制基因編碼為:000000111101。

解碼過程就是把二進制基因編碼變為十進制數k後用式(8.23)計算:

ρ(1)=10+61×2=132(Ω·m)

注意:基因編碼並不是直接把電阻率值變為二進制。此外,133這個值在基因里不會出現,因為解析度是2,所以表示為最接近的132。

對於[例1]問題來說,選解析度為1,0~127用二進制編碼需7位。

(2)產生初始模型種群。

生物繁殖進化需要一定數量的生物體種群,因此遺傳演算法開始時需要一定數量的初始模型。為保證基因的多樣性,隨機產生大量的初始模型作為初始種群,按照上面的編碼方式進行編碼。個體在模型空間中應分布均勻,最好是模型空間各代表區域均有成員。初始模型群體大,有利於搜索,但太大會增加計算量。

為保證演算法收斂,在初始模型群體中,有時候應增加各位都為0和都為1的成員。遺傳演算法就是在這個初始模型種群的基礎上進行繁殖,進化求解的。

對於[例1]問題來說,模型空間是0~127個數字,這樣初始種群最多具有128個個體。為了簡單,隨機選擇4個個體作為初始種群。初始種群的編碼、目標函數值見表8.1。

表8.1 初始種群編碼表

(3)模型選擇。

為了生成新一代模型,需要選擇較優的個體進行配對。生物進化按照自然選擇、優勝劣汰的准則進行。對應地,遺傳演算法按照一定的准則來選擇母本(兩個),然後進行配對繁殖下一代模型,這個選擇稱為模型選擇。模型配對最基本的方法是隨機采樣,用各模型的目標函數值對所有模型目標函數的平均值的比值定義繁殖概率,即

地球物理反演教程

其中:p(mi)為繁殖概率;φ(mi)為第i個模型的目標函數;φAVG為目標函數的平均值。對於極小化問題來說,規定目標函數值高於平均值的不傳代;對於極大化問題來說,反之即可。

就[例1]來說,要求目標函數取極大值,所以規定目標函數小於平均值的模型不傳代,大於它的可以傳代。對第一代,為了防止基因丟失,可先不捨去繁殖概率小的模型,讓它與概率大的模型配對。如:本例中70與56配對,101與15配對產生子代,見表8.2。

表8.2 基因交換表

(4)基因交換。

將配對的兩個親本模型的部分染色體相互交換,其中交換點可隨機選擇,形成兩個新的子代(見表8.2)。兩個染色體遺傳基因的交換過程是遺傳演算法的「繁殖」過程,是母本的重組過程。

為了使染色體的基因交換比較徹底,Stoffa等人提出了一個交換概率px來控制選擇操作的效果。如果px的值較小,那麼交換點的位置就比較靠低位,這時的交換操作基本是低位交換,交換前後模型的染色體變化不是太大。如果px的值較大,那麼交換點的位置就比較靠高位,此時的交換操作可以在較大的染色體空間進行,交換前後模型數值變化可以很大。

在[例1]中:15、101和56、70作為母本通過交換繁殖出子代5、6、111、120。所選擇的基因交換位置見表8.2。有下劃線的,是要交換的基因位置。

(5)更新。

母本模型和子本模型如何選擇保留一定數量作為新的母本,就是模型更新。不同的策略會導致不同的結果。一般而言,若產生的新一代模型較好,則選擇新一代模型而淘汰上一代模型。否則,則必須根據一定的更新概率pu來選擇上一代模型來取代新一代中某些較劣的模型。

經過更新以後,繁殖時對子代再進行優勝劣汰的選擇。對於極大值問題,大於目標函數平均值的子代可以繁殖,小於目標函數平均值的子代不能繁殖。由於新的種群能繁殖的個體數量減小了,所以要多繁殖幾次,維持種群個體的數量保持平衡。

在[例1]中,子代較好,所以完全淘汰上一代模型,完全用子代作為新的母本。選擇子代目標函數最大的兩個模型進行繁殖,分別是111、120。

(6)基因變異。

在新的配對好的母本中,按一定比例隨機選擇模型進行變異,變異操作就是模擬自然界中的環境因素,就是按比較小的變異概率pm將染色體某位或某幾位的基因發生突變(即將0變為1或將1變為0)。

變異操作的作用是使原來的模型發生某些變化,從而成為新的個體。這樣可使群體增加多樣性。變異操作在遺傳演算法中也起著至關重要的作用。實際上,由於搜索空間的性質和初始模型群體的優劣,遺傳演算法搜索過程中往往會出現所謂的「早熟收斂」現象,即在進化過程中早期陷入局部解而中止進化。採用合適的變異策略可提高群體中個體的多樣性,從而防止這種現象的出現,有助於模型跳出局部極值。表8.3為[例1]的基因變異繁殖表。

表8.3 基因變異繁殖表

在[例1]中,用111、120分別繁殖兩次,形成4個子代,維持種群數量平衡。隨機選擇120進行變異,變異的位數也是隨機的。這里把它的第2位進行變異,即從1變為0,繁殖後形成子代為:70、110、121、127。可以看出新的子代比初始種群要好得多,其中甚至已經出現了最優解。如果對於地球物理的極小值問題,我們可以預先設置一個擬合精度,只要在種群中出現一個達到擬合精度的模型就可以終止反演了。

(7)收斂。

重復(3)~(6)的步驟,模型群體經多次選擇、交換、更新、變異後,種群個體數量大小不變,模型目標函數平均值趨於穩定,最後聚集在模型空間中一個小范圍內,則找到了全局極值對應的解,使目標函數最大或最小的模型就是全局最優模型。

對於具有多解性的地球物理反演問題來說,通過這一步有可能找到滿足擬合精度的多個模型,對於實際反演解釋、推斷具有較高的指導意義。

遺傳演算法中的各種概率包括交換概率px、變異概率pm以及更新概率pu,這些參數的選擇與設定目前尚無統一的理論指導,多數都視具體問題而定。Stoffa等(1991)的研究表明,適中的交換概率(px≈0.6)、較小的變異概率(pm≈0.01)和較大的更新概率(pu≈0.9),遺傳演算法的性能較優。

與模擬退火反演演算法相同,遺傳演算法與傳統的線性反演方法相比,該方法具有:不依賴初始模型的選擇、能尋找全局最小點而不陷入局部極小、在反演過程中不用計算雅克比偏導數矩陣等優點。另外,遺傳演算法具有並行性,隨著並行計算和集群式計算機技術的發展,該演算法將會得到越來越廣泛的研究與應用。

但是遺傳演算法作為類蒙特卡洛演算法同樣需要進行大量的正演計算,種群個體數量越大,繁衍代數越多,則計算量越大。所以和前面的最小二乘法相比,速度不是它的優勢。

『捌』 求遺傳演算法的參數

/* 種群大小 */
#define POPSIZE 50

double pc; /* 交叉概率 */
double pm; /* 交換變異概率 */
double pw; /* 反轉變異概率 */
double pn; /* 新增概率 */

pc=0.7;
pm=0.8;
pw = 0.3;
pn = 0.3;

迭代數,忘記了。我從5,到500都跑了一遍。對比了結果。
你可以選擇一個覺得合適就行了

=========================================
遺傳演算法的文獻很多。
你可以去google上面搜。或者去wikipedia上面找找最經典的文獻。其實很簡單。參數的調整,可以用程序來自動尋找。比如迭代次數,我是把迭代次數從5,10,50,100,200,500這些都跑了一遍,最後選擇已經接近收斂的那個就行了。其實遺傳演算法因為是一個通用演算法,所以肯定是比較慢的。如果有heuristic演算法,一般都會比遺傳演算法收斂快很多。

閱讀全文

與遺傳演算法選擇參數相關的資料

熱點內容
紅警3命令與征服蘇聯 瀏覽:405
25歲學習當程序員好嗎 瀏覽:979
autojs源碼解析 瀏覽:717
外分加密是啥意思 瀏覽:681
如何克隆有加密狗的u盤 瀏覽:743
單片機功率電路 瀏覽:566
如何加密隱私安全 瀏覽:596
加密狗登錄界面彈補出來 瀏覽:331
linux遠程x 瀏覽:353
中國最牛程序員是哪個省 瀏覽:846
centos系統自帶源碼 瀏覽:937
用python寫一個猜數字小游戲 瀏覽:271
androidvendorid 瀏覽:634
加密字母並輸出的代碼 瀏覽:58
怎麼安裝樂橙app電腦版 瀏覽:604
遠程啟動騰訊雲伺服器 瀏覽:744
python圖片添加文字 瀏覽:854
python遍歷整個網站 瀏覽:597
伺服器安裝在機櫃的什麼地方 瀏覽:141
阿里雲伺服器需要下載嗎 瀏覽:995