MATLAB 遺傳演算法工具箱的入門使用

2022-07-17 09:27:14 字數 1770 閱讀 8033

最開始是自己編寫的遺傳演算法程式來進行辨識,但是得到的結果有些瑕疵,所以嘗試使用matlab工具箱來做一次。下面是入門使用的方法(matlab版本是201b):

在solver後面的下拉框中,選擇遺傳演算法:ga-genetic algorithm,下邊分別就遺傳演算法的幾個步驟進行說明。

2.fitness function 適應度函式

在學習遺傳演算法後我們知道中間乙個步驟是需要確定適應度函式,而適應度函式一般是通過目標函式轉換而來,在一些解決函式最大值和最小值的問題中,可以直接把函式輸出作為目標函式和適應度函式。經過測試驗證,在改工具箱中,適應度函式的輸出結果越小標明越準確。下面介紹摩擦力模型及適應度函式:

我要辨識的摩擦力模型為:

需要辨識其中的 a,b,c 和 d 四個引數,通過實驗採集到的實際輸入資料 v 和輸出資料 f。因為工具箱要求的適應度函式是輸出結果趨小的,所以我這裡選擇目標函式為適應度函式,如下:

其中為辨識誤差。

將該目標函式以函式的形式寫到 matlab 的m檔案中,如下:

% 使用遺傳演算法工具箱的適應度函式

function result = steadyfitness(a)

load steadydata.mat;

u = (up+abs(un))/2/4;

fi =u'; % 均勻實驗測得摩擦力的實測值

w = vd'; % 速度輸入值

n = size(w,1);

for i = 1:1:n

f_ga(i) = (a(1)+a(2)*exp(-(w(i)/a(3))^2))*sign(w(i)) + a(4)*w(i);

ji(i) = fi(i) - f_ga(i);

j(i) = 0.5*ji(i)*ji(i);

endresult = sum(j);

end

而後將函式控制代碼 「@steadyfitness" 寫到工具箱介面的 fitness function 後面。

3.number of variables:輸入引數個數

這裡待辨識引數有a,b,c和d這四個,所以這裡填寫 4。

4.bounds:辨識引數的上下界

此處設定為,lower:[0 0 0 0],upper:[0.5 0.5 0.1 0.5]。

5. 點選 start,開始遺傳演算法求解

結束後結果會顯示在 final point中

下圖見完整的配置:

6.利用辨識引數的結果,繪製摩擦力模型

完結。注:matlab工具箱的簡單使用,上述幾個步驟就夠用了,如果要修改預設演算法部分,就要學習遺傳演算法原理,修改工具箱右側的引數。

MATLAB遺傳演算法之 工具箱實現

標準演算法 遺傳演算法 每次選代產生乙個單點,點的序列逼近乙個優化解 每次迭代產生乙個種群,種群通近乙個優化解 通過確定性的計算在該序列中選擇下乙個點 通過隨機進化選擇計算來選擇下一代種群 遺傳演算法工具有兩種使用方式 以命令列方式呼叫遺傳演算法函式ga。通過使用者圖形介面使用遺傳演算法工具。在命令...

MATLAB 自帶遺傳工具箱之遺傳演算法簡述

matlab 自帶優化工具箱 optimization tool 之遺傳演算法簡述 在命令視窗內一鍵啟動工具箱 對視窗頁面進行解釋 solver 求解器 選擇選擇需要的演算法problem 需要解決的問題 fitness function 需要優化的目標函式,填寫格式 f f為編寫目標函式的檔名 n...

MATLAB遺傳演算法工具箱的函式及例項

遺傳演算法 ga 是一種進化演算法,是模擬達爾文生物演化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法。遺傳演算法把問題引數編碼為染色體,利用層層迭代的方式進行選擇 交叉以及變異等運算交換種群中染色體資訊,最終生成符合優化目標的染色體。本文將使用到she...