遺傳演算法(ga)是模擬生物在自然環境中的遺傳和精華的過程形成的自適應全域性優化搜尋演算法。通過自然選擇,交叉、遺傳、變異等步驟來產生新一代種群,並逐步使種群精華到包含近似最優解的狀態。
種群是生物進化過程中的乙個集團,表示可行解的集合。
個體是組成種群的單個生命體,表示可行解。
染色體是包含生命體的所有遺傳資訊的集合,表示可行解的編碼。
基因是遺傳資訊的基本的單位,表示可行解編碼的分量。
遺傳編碼將優化變數轉為基因組合的表示形式,常見的有 二進位制編碼、實數編碼、整數編碼等。
適應度即生命體中個體適應度生存的能力。在遺傳演算法中用來評價個體的優劣的數學函式,成為個體適應度函式。
遺傳操作的優選強勢個體的「選擇」,個體之間交換基因產生新個體的「交叉」、個體基因資訊突變產生新個體的「變異」。
用標準遺傳演算法求解函式f(x) = x+10*cos(5*x)+7*sin(4*x)的最小值,其中x的取值範圍【0,10】,該函式是有多個區域性極值的函式,圖形如下:
**如下:
x = 0:0.01:10;
y = x+10*cos(5*x)+7*sin(4*x);
figure
plot(x,y)
grid on
xlabel('x')
ylabel('y')
title('f(x) = x+10*cos(5*x)+7*sin(4*x)');
a = min(y)
使用標準遺傳演算法**如下:
1.初始化種群數目np=50,染色體二進位制編碼長度l=20,最大進化次數g=100,pc=0.8,pm=0.05
2.產生初始種群,將二進位制編碼轉換為十進位制,計算個體適應度值,並歸一化;採用輪盤賭方式進行選擇操作,按照固定交叉、變異概率操作,把歷代最優個體儲存在新種群中,進行下一步遺傳操作。
3.判斷是否滿足終止條件;若滿足。結束。不滿足,繼續迭代。
適應度函式進化曲線如圖所示:
其中:函式值最小y(best) = -12.2896;此時x = 4.3712;迭代次數i = 76;
****如下:
clc ;
clear all;
close all;
%遺傳演算法**
%求函式最小值
np =50;
l = 20;%二進位制編碼
pc = 0.8; %交叉概率
pm = 0.05;%變異概率
g = 100;
xs = 10;%x 範圍
xx = 0;
imax = 1;
f = randi([0,1],np,l); %隨機獲得初始種群
% 遺傳演算法迴圈
for k = 1:g
%將二進位制解碼為定義域範圍內十進位制
for i= 1:np
u = f(i,:);
m = 0;
for j = 1:l
m = u(j)*2^(j-1)+m;
endx(i) = xx +m*(xs - xx)/(2^l -1);
fit(i) = -func(x(i));
endmaxfit = max(fit);
minfit = min(fit);
rr = find(fit == maxfit);
fbest = f(rr(1,1),:);
xbest = x(rr(1,1));
fit = (fit-minfit)/(maxfit - minfit);
sum_fit = sum(fit);
fitvalue = fit./sum_fit;
fitvalue = cumsum(fitvalue);
ms = sort(rand(np,1));
fiti = 1;
newi = 1;
while newi <=np
if(ms(newi))h = legend('f(x) = x+10*cos(5*x)+7*sin(4*x)','location','northeast');
set(h,'fontname','microsft yahei ui','fontsize', 12);
遺傳演算法學習
今天學習遺傳演算法 首先我學習的教程裡的案例是利用遺傳演算法這個群優化演算法來優化bp神經網路的權值和閾值。但它是直接呼叫的工具箱,於是我打算不呼叫工具箱寫乙個詳細點的來加深自己對演算法的理解。原理 簡而言之就是模仿達爾文的演化論,生成種群,通過變異交叉來進化種群,最後得到一群適應度高的優秀種群。我...
Matlab遺傳演算法學習 recint m
看書學習筆記 function newchrom recint oldchrom,xovr identify the population size nind and the number of variables nvar nind,nvar size oldchrom identify the ...
matalb遺傳演算法學習筆記
智慧型演算法及應用 p218遺傳演算法 初始引數 size 80 種群大小為80 g 100 迭代次數100 codel 10 染色體長度10 umax 2.048 變數上限 umin 2.048 變數下限 e round rand size,2 codel 初始隨機種群 主程式 for k 1 1...