優(yōu)化的算法有很多種,從最基本的梯度下降法到現(xiàn)在的一些啟發(fā)式算法,如遺傳算法(GA),差分演化算法(DE),粒子群算法(PSO)和人工蜂群算法(ABC)。
舉一個例子,遺傳算法和梯度下降:
梯度下降和遺傳算法都是優(yōu)化算法,而梯度下降只是其中最基礎(chǔ)的那一個,它依靠梯度與方向?qū)?shù)的關(guān)系計算出最優(yōu)值。遺傳算法則是優(yōu)化算法中的啟發(fā)式算法中的一種,啟發(fā)式算法的意思就是先需要提供至少一個初始可行解,然后在預(yù)定義的搜索空間高效搜索用以迭代地改進(jìn)解,最后得到一個次優(yōu)解或者滿意解。遺傳算法則是基于群體的啟發(fā)式算法。
遺傳算法和梯度下降的區(qū)別是:
1.梯度下降使用誤差函數(shù)決定梯度下降的方向,遺傳算法使用目標(biāo)函數(shù)評估個體的適應(yīng)度
2.梯度下降是有每一步都是基于學(xué)習(xí)率下降的并且大部分情況下都是朝著優(yōu)化方向迭代更新,容易達(dá)到局部最優(yōu)解出不來;而遺傳算法是使用選擇、交叉和變異因子迭代更新的,可以有效跳出局部最優(yōu)解
3.遺傳算法的值可以用二進(jìn)制編碼表示,也可以直接實數(shù)表示
遺傳算法如何使用它的內(nèi)在構(gòu)造來算出 α 和 β :
主要講一下選擇、交叉和變異這一部分:
1.選擇運(yùn)算:將選擇算子作用于群體。選擇的目的是把優(yōu)秀(適應(yīng)值高)的個體直接遺傳到下一代。選擇操作是建立在群體中個體的適應(yīng)度評估基礎(chǔ)上的。
2.交叉運(yùn)算:將交叉算子作用于群體。遺傳算法中起核心作用的就是交叉算子。交叉算子是將種群中的個體兩兩分組,按一定概率和方式交換部分基因的操作。將交叉算子作用于群體。遺傳算法中起核心作用的就是交叉算子。例如:(根據(jù)概率選取50個個體,兩兩配對,交換x,y,比如之前兩個是(x1,y1),(x2,y2),之后變成了(x1,y2),(x2,y1))
3.變異運(yùn)算:將變異算子作用于群體。即是對群體中的個體串的某些基因座上的基因值作變動。(x2可能變?yōu)閤2+δ,y1變?yōu)閥1+δ)
種群P(t)經(jīng)過選擇、交叉、變異運(yùn)算之后得到下一代種群P(t+1)。
遺傳算法就是通過對大量的數(shù)據(jù)個體使用選擇、交叉和變異方式來進(jìn)化,尋找適合問題的最優(yōu)解或者滿意解。
遺傳算法參數(shù)的用處和設(shè)置:
1.編碼選擇:通常使用二進(jìn)制編碼和浮點(diǎn)數(shù)編碼,二進(jìn)制適合精度要求不高、特征較少的情況。浮點(diǎn)數(shù)適合精度高、特征多的情況
2.種群:種群由個體組成,個體中的每個數(shù)字都代表一個特征,種群個體數(shù)量通常設(shè)置在40-60之間;迭代次數(shù)通??辞闆r定若計算時間較長可以在100內(nèi),否則1000以內(nèi)都可以。
3.選擇因子:通常有輪盤賭選擇和錦標(biāo)賽選擇,輪盤賭博的特點(diǎn)是收斂速度較快,但優(yōu)勢個體會迅速繁殖,導(dǎo)致種群缺乏多樣性。錦標(biāo)賽選擇的特點(diǎn)是群多樣性較為豐富,同時保證了被選個體較優(yōu)。
4.交叉因子:交叉方法有單點(diǎn)交叉和兩點(diǎn)交叉等等,通常用兩點(diǎn)交叉。交叉概率則選擇在0.7-0.9。概率越低收斂越慢時間越長。交叉操作能夠組合出新的個體,在串空間進(jìn)行有效搜索,同時降低對種群有效模式的破壞概率。
5.變異因子:變異也有變異的方法和概率。方法有均勻變異和高斯變異等等;概率也可以設(shè)置成0.1。變異操作可以改善遺傳算法的局部搜索能力,豐富種群多樣性。
6.終止條件:1、完成了預(yù)先給定的進(jìn)化代數(shù);2、種群中的最優(yōu)個體在連續(xù)若干代沒有改進(jìn)或平均適應(yīng)度在連續(xù)若干代基本沒有改進(jìn);3、所求問題最優(yōu)值小于給定的閾值.