遺傳演算法(ga)是一種進化演算法,是模擬達爾文生物演化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法。
遺傳演算法把問題引數編碼為染色體,利用層層迭代的方式進行選擇、交叉以及變異等運算交換種群中染色體資訊,最終生成符合優化目標的染色體。
本文將使用到sheffield遺傳演算法工具箱。sheffield遺傳演算法工具箱是由英國謝菲爾德大學開發的。該工具箱提供了大量的遺傳演算法應用到的m函式,為我們研究遺傳演算法提供了非常多的便捷。
我將在下面通過乙個例項來介紹遺傳演算法的過程。下面的例項是利用遺傳演算法尋找一元函式的最小值。
%% 畫出函式圖
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由定義遺傳演算法引數部分可知,我們將生成的種群包含40個個體,每個個體長度為20,最大遺傳迭代次數為20次。代溝為0.95,交叉概率為0.7,變異概率為0.01。
優化部分為遺傳演算法的核心內容,其中也大量使用謝菲爾德工具箱中提供的m函式,綠色標記即為所使用函式。
crtbp函式
功能:該函式功能為建立初始離散隨機種群。
一般呼叫格式:chrom=crtbp(種群個體數,個體長度)
bs2rv函式
功能:二進位製到十進位制的轉換
一般呼叫格式:phen=bs2rv(chrom,field)
ranking函式
功能:基於排序的適應度分配
一般呼叫格式:fitnv=ranking(objv)
selcet函式
功能:從種群中選擇個體
一般呼叫格式:selch=select('sus',chrom,fitnv,ggap)
recombin函式
功能:重組個體
一般呼叫格式:selch=recombin('recdis',chrom)
mut函式
功能:離散變異運算元
一般呼叫格式:selcch=mut(newchrom,pm)
reins函式
功能:重插入子代到種群
一般呼叫格式:chrom=reins(chrom,selch)
過程可表述為:初代種群通過分配適應度值進行淘汰選擇,再進行重組,再進行變異而得到第二代種群,第二代種群重插入到初代種群而產生新種群。
注:假設資料為二進位制,則在重組中每一列不會產生0或1個數的變化。而變異會使某種群個體中某一長度編碼變化,即某幾個元素由0變1或是由1變0,從而使0和1數量發生變化。重插入指後代種群中某幾個種群直接取代了前代某幾個種群,即發生某一行的全部替代。
執行上述**後可得到結果為:取值點x=1.1497,最小值y=-0.86977
該圖中圈符號為每代最優解,星符號為優化20代後的種群分布。兩者大部分集中在乙個點,該點即為最優解。
該圖為最優解的迭代過程。
MATLAB遺傳演算法之 工具箱實現
標準演算法 遺傳演算法 每次選代產生乙個單點,點的序列逼近乙個優化解 每次迭代產生乙個種群,種群通近乙個優化解 通過確定性的計算在該序列中選擇下乙個點 通過隨機進化選擇計算來選擇下一代種群 遺傳演算法工具有兩種使用方式 以命令列方式呼叫遺傳演算法函式ga。通過使用者圖形介面使用遺傳演算法工具。在命令...
MATLAB 自帶遺傳工具箱之遺傳演算法簡述
matlab 自帶優化工具箱 optimization tool 之遺傳演算法簡述 在命令視窗內一鍵啟動工具箱 對視窗頁面進行解釋 solver 求解器 選擇選擇需要的演算法problem 需要解決的問題 fitness function 需要優化的目標函式,填寫格式 f f為編寫目標函式的檔名 n...
MATLAB 遺傳演算法工具箱的入門使用
最開始是自己編寫的遺傳演算法程式來進行辨識,但是得到的結果有些瑕疵,所以嘗試使用matlab工具箱來做一次。下面是入門使用的方法 matlab版本是201b 在solver後面的下拉框中,選擇遺傳演算法 ga genetic algorithm,下邊分別就遺傳演算法的幾個步驟進行說明。2.fitne...