matlab GA遺傳演算法

2021-08-15 08:45:33 字數 2053 閱讀 5689

1.ga的呼叫:

2.例:當n = 10時

函式為:

function f = lbw(x)

if x(1)>30 || x(1) 30 || x(2) 30 || x(3) 30 || x(4) 30 || x(5) 30 || x(6) 30 || x(7) 30 || x(8) 30 || x(9) 30 || x(10)

f = 300;

else

s1 = 0;

s2 = 0;

for i = 1 : 10

s1 = s1 + x(i)^2;

s2 = s2 + cos(2 * pi * x(i));

endf = -2 * pi *exp(-0.2 * sqrt(1/10 * s1)) - exp(1/10 * s2) + 2 * pi;

end

.m為:

%呼叫ga遺傳演算法

%generations : 超過800代時停止; stallgenlimit : 超過連續代數300不進化時停止; plotfcns :繪圖函式

options = gaoptimset('generations',800,'stallgenlimit',300,'plotfcns',@gaplotbestf);

%ga(待求函式,未知變數,選擇): 求最小值

[x,f] = ga(@lbw,10,options)

最終結果:

3.ga在求解多約束非線性規劃問題

注:lingo也為首選方法; matlab優化工具箱求解精度不夠,窮舉法效率太低

3.1:例

函式為:

%子函式:適應度函式同時也是目標函式,

function f=ch14_2f(x)

g1=1.5+x(1)*x(2)-x(1)-x(2);

g2=-x(1)*x(2);

if(g1>0|g2>10)

f=100;

else

f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

end

.m為:

%主程式:本程式採用遺傳演算法接力進化,

%將上次進化結束後得到的最終種群作為下次輸入的初始種群

clc;

clear all;

%進化的代數

t=100;

optionsorigin=gaoptimset('generations',t/2);

[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,optionsorigin);

%進行第二次接力進化

options1=gaoptimset('generations',t/2,'initialpopulation',finnal_pop,...

'plotfcns',@gaplotbestf);

[x,fval,reason,output,finnal_pop]=ga(@ch14_2f,2,options1);

bestx=x

bestfval=fval

python遺傳演算法 Python 遺傳演算法實現

關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...

遺傳演算法 python 簡書 遺傳演算法

優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...

遺傳演算法歸納

遺傳演算法 genetic algorithm 是一類借鑑生物界的進化規律 適者生存 優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率化的尋優方法,能自動獲取和指導優化的搜尋空間,自適應地...