matlab自帶遺傳演算法工具箱效能太差,因此採用外部工具箱來實現,具體安裝方法請參考其他答案。
%% matlab_gatbx_test.m
%遺傳演算法求f(x)=x*sin(10*pi*x)+2.0,在[-1,2]上的最大值
figure(1);
fplot(@(variable)variable.*sin(10*pi*variable)+2.0,[-1,2]); %畫出函式曲線
%定義遺傳演算法引數
nind=40; %個體數目(number of individuals)
maxgen=25; %最大遺傳代數(maximum number of generations)
preci=20; %變數的二進位制位數(precision of variables)
ggap=0.9; %代溝(generation gap)說明子代與父代的重複率為0.1
trace=zeros(maxgen,2); %尋優結果的初始值
fieldd=[20;-1;2;1;0;1;1]; %區域描述器(build field descriptor),第2、3行為自變數的下界和上界
chrom=crtbp(nind, preci); %定義初始種群 % 此時為2進製
gen=0; %代計數器
variable=bs2rv(chrom, fieldd); %計算初始種群的十進位制轉換 轉為10進製
objv=shang(variable); %計算目標函式值
while gen其中目標函式需要另存乙個m檔案
function z=shang(x) % 目標函式的核心部分(即預設了優化目標的純函式)
z=x(:,2).*sin(2*pi*x(:,1))+x(:,1).*cos(2*pi*x(:,2));
end
多引數辨識方法如下
%% matlab_gatbx_test.m
figure(1);
%畫出函式曲線
lbx1=-2;ubx1=2; %函式自變數x1範圍
lbx2=-2;ubx2=2;%函式自變數x2範圍
ezmesh('x2*sin(2*pi*x1)+x1*cos(2*pi*x2)',[lbx1,ubx1,lbx2,ubx2],50); %畫出函式曲線
hold on;
%定義遺傳演算法引數
nind=40; %個體數目(number of individuals)
maxgen=50; %最大遺傳代數(maximum number of generations)
preci=20; %變數的二進位制位數(precision of variables)
ggap=0.9; %代溝(generation gap)說明子代與父代的重複率為0.1
px=0.7; %交叉概率
pm=0.01; %變異概率
trace=zeros(maxgen,2); %尋優結果的初始值
fieldd=[20 20; %% 子串長度
lbx1 lbx2; %% 下界
ubx1 ubx2 ; %% 上界
1 1; %% 編碼方式 1 二進位制 0 格雷編碼
0 0; %% 0 算數刻度 1 對數刻度
1 1; %% 是否包含下邊界 0 不包含 1 包含
1 1]; %% 是否包含上邊界 0 不包含 1 包含
%區域描述器(build field descriptor),第2、3行為自變數的下界和上界
chrom=crtbp(nind, preci*2); %定義初始種群 % 此時為2進製
gen=0; %代計數器
variable=bs2rv(chrom, fieldd); %計算初始種群的十進位制轉換 轉為10進製
objv=shang(variable); %計算目標函式值
while gen如果要進行應用,需要將上述中所有 shang() 改為你自己的函式
遺傳演算法的matlab實現
遺傳演算法是一種全域性最優化演算法,是運用了演化論優勝劣汰原理的隨機化搜尋方法。前些日子,在進行畢業設計的相關研究中,我接觸到了遺傳演算法,用其對乙個五元非線性函式進行最優化搜尋。平台使用的是matlab,主要使用的是謝菲爾德大學的matlab遺傳演算法工具箱。具體程式如下 clc clear al...
遺傳演算法(GA)的matlab實現
一 task 二 實現過程 1.編碼與解碼 編碼 在編碼之前需要確定求解的精度,設定求解的精度為小數點後六位,即10 6。這樣可以將每個自變數x的解空間劃分為 1 0 10 6 1000000個等分。使n滿足 1 0 10 6 2 n 1,這裡n表示使上式成立的最小整數,即表示自變數x的基因串的長度...
遺傳演算法及matlab簡單實現
遺傳演算法的實現 遺傳演算法的一次迭代稱為一代,每一代都有一組解。新的一組解不但可以有選擇的保留一些適度值高的舊的解,而且可以包括一些由其它解結合得到的新解。最初的一組解 初始群體 是隨機生成的,之後的每組解由遺傳操作生成。每個解都通過乙個與目標函式相關的適應度函式給予評價,通過遺傳過程不斷重複,達...