Algorithm之OP:OP之GA遗传算法思路理解相关配图资料
Optimality之GA遺傳算法思路理解相關(guān)配圖資料
?
?
目錄
GA遺傳算法思路理解
GA算法過程
1、總體思路
2、各個步驟
GA算法代碼
1、偽代碼
SGA實例講解
1、求函數(shù)最值
2、求連續(xù)函數(shù)的最值
Matlab的實現(xiàn)之GAOT工具箱
?
?
?
GA遺傳算法思路理解
遺傳算法Genetic Algorithm
?
?
GA算法過程
1、總體思路
2、各個步驟
(1)、編碼
(2)、選擇
(3)、變異
T3、循環(huán)交叉CX
?
?
GA算法代碼
1、偽代碼
Procedure Genetic Algorithmbegint = 0 ;初始化 P(t) ;計算 P(t) 的適應值 ;while (不滿足停止準則) do begint = t+1 ; 從P(t-1)中選擇 P(t) ; %selection重組 P(t) ; % crossover and mutationend end?
SGA實例講解
1、求函數(shù)最值
求函數(shù)f(x)=x^2的最大值,x為自然數(shù)且0≤x≤31。
| 編碼 | 編碼方式:二進制碼 |
| 隨機初始群體 | 種群規(guī)模:4 ? |
| ? | “轉(zhuǎn)盤賭”選擇 一點雜交,二進制變異 ? |
?
?
2、求連續(xù)函數(shù)的最值
求f ( x) = x sin(10π x) + 2.0 ?x ∈ [?1, 2]
| 編碼 | 實數(shù)問題:變量x為實數(shù),如何把z∈[x,y] → {a1,…,aL} ∈{0,1}L {a1,…,aL} ∈{0,1}L 必須可逆(一個表現(xiàn)型對應一個基因型) . 解碼算子:Γ: {0,1}L ?→ [x,y] |
| 染色體長度L決定可行解的最大精度。高精度 ?? ?長染色體(慢進化) ? ? ? ?設定求解精確到6位小數(shù),因區(qū)間長度位2-(-1)=3,則需將區(qū)間分為 3X106等份。因 2097152=221< 3X106≤222=4194304。故編碼 的二進制串長L=22。 比如: ? | |
| 隨機初始化種群 | ? |
| 適應度評估 | 適應函數(shù) 本實例目標函數(shù)在定義域內(nèi)均大于0,且是求函數(shù)最大值, 故直接引用目標函數(shù)作為適應函數(shù): f(s) = f(x) 其中二進制串s對于變量x的值。 s1 =<0000001110000000010000> ? x1= -0.958 973 ? ? ? 適應值: f(s1) = f(x1) =1.078 878 s2=<1110000000111111000101> ? ?? x2= 1.627 888 ? ? ? 適應值: f(s2) = f(x2) = 3.250 650 |
| ? | 選擇操作(“輪盤賭”選擇) ? 交叉操作(單點交叉) 交叉前(父): ? ? ? ? ? s1=<00000 | 01110000000010000> ? ? ? ? ? s2=<11100 | 00000111111000101> 交叉后(子): ? ? ? ? ? s’1=<00000 | 00000111111000101> ? ? ? ? ? s’2=<11100 | 01110000000010000> 適應值:?? ? ? ? ? ? ?f(s’1) = f(-0.998 113) =1.940 865 ? ? ? ? ?f(s’2) = f(1.666 028) = 3.459 245 s’2的適應值比其雙親個體的適應值高。 ? ? |
| 遺傳算法的參數(shù) | 種群規(guī)模: 50 |
| 模擬結(jié)果 | 模擬結(jié)果(最佳個體進化情況) |
3、無約束優(yōu)化問題
| GA編碼 | X=(x1,x2,…,xn)的各個變量可以按二進制編碼方法分別編碼。 對于變量xi 的上、下限約束li≤xi ≤ ui(i=1,2,…,n),依據(jù)解的精度要求(有效位數(shù)) 求得各個變量X=(x1,x2,…,xn)的二進制碼位數(shù)(m1,m2,…,mn),確定方法 類似于SGA實例2, 因此將n個二進制位串順序連接起來,構(gòu)成一個個 體的染色體編碼,編碼的總位數(shù)m=m1+m2+…+mn。 |
| GA解碼 | ?解碼時仍按各個變量的編碼順序分別實現(xiàn)常規(guī)的二進制編碼解碼方法。 ? |
4、約束最優(yōu)化問題
?
?
Matlab的實現(xiàn)之GAOT工具箱
1、核心函數(shù):
(1) [pop]=initializega(num,bounds,eevalFN,eevalOps,options)-----初始種群的 生成函數(shù)
【輸出參數(shù)】
pop-----生成的初始種群
【輸入?yún)?shù)】
num-----種群中的個體數(shù)目
bounds-----代表變量的上下界的矩陣 eevalFN-----適應度函數(shù)
eevalOps-----傳遞給適應度函數(shù)的參數(shù)
options-----選擇編碼形式(浮點編碼或是二進制編碼)與精度,如 [type prec], type-----為1時選擇浮點編碼,否則為二進制編碼
prec-----變量進行二進制編碼時指定的精度,默認[1e-6 1]
(2) [x,endPop,bPop,traceInfo] =ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps,selectFN,…
selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
-------遺傳算法函數(shù)
? 【輸出參數(shù)】
x------求得的最優(yōu)解
endPop------最終得到的種群
bPop------最優(yōu)種群的一個搜索軌跡
traceInfo------每代種群中最優(yōu)及平均個體構(gòu)成的矩陣
? 【輸入?yún)?shù)】
bounds------代表變量上下界的矩陣 evalFN------適應度函數(shù)
evalOps------傳遞給適應度函數(shù)的參數(shù) startPop------初始種群
【輸入?yún)?shù)】
opts------- [epsilon prob_ops display],opts(1:2)等同于initializega的 options參數(shù),第三個參數(shù)控制是否輸出,一般為0。如[1e-6 1 0]
termFN-------終止函數(shù)的名稱,如['maxGenTerm']
termOps-------傳遞個終止函數(shù)的參數(shù),如[100] selectFN-------選擇函數(shù)的名稱,如['normGeomSelect'] selectOps-------傳遞個選擇函數(shù)的參數(shù),如[0.08]
xOverFNs-------交叉函數(shù)名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps-------傳遞給交叉函數(shù)的參數(shù)表,如[2 0;2 3;2 0] mutFNs-------變異函數(shù)表,如['boundaryMutation
multiNonUnifMutation nonUnifMutation unifMutation']
mutOps-------傳遞給交叉函數(shù)的參數(shù)表,如[4 0 0;6 100 3;4 100 3;4 0 0]
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Algorithm之OP:OP之GA遗传算法思路理解相关配图资料的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CUMCM:05B DVD在线租赁
- 下一篇: CUMCM之2006B:2006之B题: