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