遺傳演算法(genetic algorithm,ga)是一種進化演算法,其基本原理是仿效生物界中的「物競天擇、適者生存」的演化法則。遺傳演算法是把問題引數編碼成染色體,再利用迭代的方式進行選擇、交叉以及變異等運算來交換種群中染色體的資訊,最終生成符合優化目標的染色體。
在遺傳演算法中,染色體對應的是資料或陣列,通常是由一維的串結構資料來表示,串上各個位置對應基因的取值。基因組成的串就是染色體,或者稱為基因型個體(individuals)。一定數量的個體組成了群體(population)。群體中個體的數目稱為群體大小(population size),也稱為群體規模。而各個個體對環境的適應程度叫做適應度(fitness)。
遺傳演算法的基本步驟如下:
1.編碼
ga在進行搜尋之前先將解空間的解資料表示成遺傳空間的基因型串結構資料,這些串結構資料的不同組合便構成了不同的點。
2.初始群體的生成
隨機產生n個初始串結構資料,每個串結構資料稱為乙個個體,n個個體構成了乙個群體。ga以這n個串結構資料作為初始點開始進化。
3.適應度評估
適應度表明個體或解的優劣性。不同的問題,適應性函式的定義方式也不同。
4.選擇
選擇的目的是為了從當前群體中選出優良的個體,使它們有機會作為父代為下一代繁殖子孫。遺傳演算法通過選擇過程體現這一思想,進行選擇的原則是適應性強的個體為下一代貢獻乙個或多個後代的概率大。選擇體現了達爾文的適者生存原則。
5.交叉
交叉操作時遺傳演算法中最主要的遺傳操作。通過交叉操作可以得到新一代個體,新個體組合了其父代個體的特性。交叉體現了資訊交換的思想。
6.變異
變異首先在群體中隨機選擇乙個個體,對於選中的個體以一定的概率隨機地改變串結構資料中某個串的值。同生物界一樣,ga中變異發生的概率很小,通常取值很小。
然後再matlab中新增查詢路徑後可以輸入查詢版本命令來驗證安裝是否正確。
測試**:
利用遺傳演算法計算最小值,函式f(x)=sin(10πx)/x,x屬於[1,2]
種群大小
最大遺傳代數
個體長度
代溝交叉概率
變異概率
4020
200.95
0.70.01
clc
clear all
close all
%% 畫出函式圖
figure(1);
hold on;
lb=1;ub=2; %函式自變數範圍【1,2】
ezplot('sin(10*pi*x)/x',[lb,ub]); %畫出函式曲線
xlabel('自變數/x')
ylabel('函式值/y')
%% 定義遺傳演算法引數
nind=40; %個體數目
maxgen=20; %最大遺傳代數
preci=20; %變數的二進位制位數
ggap=0.95; %代溝
px=0.7; %交叉概率
pm=0.01; %變異概率
trace=zeros(2,maxgen); %尋優結果的初始值
fieldd=[preci;lb;ub;1;0;1;1]; %區域描述器
chrom=crtbp(nind,preci); %初始種群
%% 優化
gen=0; %代計數器
x=bs2rv(chrom,fieldd); %計算初始種群的十進位制轉換
objv=sin(10*pi*x)./x; %計算目標函式值
while gen執行結果:
遺傳演算法工具箱求函式極值
這是乙個用ga演算法來求函式極值的例子 clcclear all t 100 optionsorigin gaoptimset generation t 2 x,fval,reason,output,finnal pop ga ch14 2f,2,optionsorigin options1 gao...
MATLAB遺傳演算法之 工具箱實現
標準演算法 遺傳演算法 每次選代產生乙個單點,點的序列逼近乙個優化解 每次迭代產生乙個種群,種群通近乙個優化解 通過確定性的計算在該序列中選擇下乙個點 通過隨機進化選擇計算來選擇下一代種群 遺傳演算法工具有兩種使用方式 以命令列方式呼叫遺傳演算法函式ga。通過使用者圖形介面使用遺傳演算法工具。在命令...
初遇Sheffield遺傳演算法工具箱
安裝參考 安裝 1 解壓gatbx origin.zip,得到doc和src資料夾 2 拷貝src到matlab安裝目錄下的toolbox資料夾中,並將src更名為gatbx 3 開啟toolbox local 目錄下的pathdef.m檔案,在適當位置新增以下兩行 也可addpath code i...