最優化演算法與matlab應用3 最速下降法

2021-10-04 17:29:23 字數 2439 閱讀 4722

最優化演算法與matlab應用3:最速下降法

最速下降法是一種沿著n維目標函式的負梯度方向搜尋最小值的方法。

(1)演算法原理

函式的負梯度表示如下:

搜尋步長可調整ak,通常記為 (第k次迭代的步長)。該演算法利用一維的線性搜尋方法,如二次逼近法,沿著負梯度方向不斷搜尋函式的較小值,從而找出最優解。

(2)演算法步驟

(3)演算法實現

%用最速下降法求最優化解

f3= inline(

'x(1)*(x(1)-5-x(2))+x(2)*(x(2)-4)','x'

);%目標函式

grad=inline(

'[2*x(1)-5-x(2),-x(1)+2*x(2)-4]','x'

); %目標函式的梯度函式

x0 =

[1 4]

;tolx = 1e-4;

tolfun = 1e-9;

maxiter = 100;

dist0=1;

[xo,fo]

= opt_steepest(f3,grad,x0,tolx,tolfun,dist0,maxiter)

執行結果:xo=4.666 4.333 fo=-20.333

function

[xo,fo]

= opt_steepest(f,grad,x0,tolx,tolfun,dist0,maxiter)

% 用最速下降法求最優化解

%輸入:f為函式名 grad為梯度函式

%x0為解的初值 tolx,tolfun分別為變數和函式的誤差閾值

%dist0為初始步長 maxiter為最大迭代次數

%輸出: xo為取最小值的點 fo為最小的函式值

% f0 = f(x(0))

%%%%%%判斷輸入的變數數,設定一些變數為預設值

if nargin < 7

maxiter = 100; %最大迭代次數預設為100

endif nargin < 6

dist0 = 10; %初始步長預設為10

endif nargin < 5

tolfun = 1e-8; %函式值誤差為1e-8

endif nargin < 4

tolx = 1e-6; %自變數距離誤差

end%%%%%第一步,求解的初值的函式值

x = x0;

fx0 = feval(f,x0)

;fx = fx0;

dist = dist0;

kmax1 = 25; %線性搜尋法確定步長的最大搜尋次數

warning = 0;

%%%%%迭代計算求最優解

for k = 1: maxiter

g = feval(grad,x)

; g = g/norm(g)

; %求在x處的梯度方向

%%線性搜尋方法確定步長

dist = dist*2; %令步長為原步長的二倍

fx1 = feval(f,x-dist*2*g)

;for k1 = 1:kmax1

fx2 = fx1;

fx1 = feval(f,x-dist*g)

;if fx0 > fx1+tolfun & fx1 < fx2 - tolfun %fx0 > fx1 < fx2,

den = 4*fx1 - 2*fx0 - 2*fx2;num = den - fx0 + fx2; %二次逼近法

dist = dist*num/den;

x = x - dist*g; fx = feval(f,x)

; %確定下一點

break

;else

dist = dist/2;

endend

if k1 >= kmax1

warning = warning + 1; %無法確定最優步長

else

warning = 0;

endif warning >= 2|

(norm(x - x0)

< tolx&abs(fx - fx0)

< tolfun)

break

; end

x0 = x;

fx0 = fx;

endxo = x; fo = fx;

if k == maxiter

fprintf(

'just best in %d iterations',maxiter)

;end

MATLAB 最優化計算 (二)

matlab 程式設計 1,for start increment end 若預設步長為1,則為 for start end end while condition end 2,matlab 程式 m script m function 字尾均為 m 指令碼檔案中儲存的是可用於自動重複執行的一組命令...

最優化 牛頓優化演算法

本人總結的常用優化演算法pdf版本,主要講解原理 主要包括梯度下降,共軛梯度法 牛頓法,擬牛頓法 信賴域方法,罰函式法。coding utf 8 author uniquez file 牛頓法,基於dfp的擬牛頓法 date 2017 06 24 remark 原方程為 x1 2 2 x2 2 im...

最優化 數值優化演算法

核心思路 對梯度方向做一些修正,使得每次迭代尋找最優點都在可行域的內部進行。我們從可行域內部的某個點開始搜尋,一開始沿著梯度方向進行迭代搜尋,一旦碰到邊界 說明下一步可能會離開可行域 就要扭轉方向,使得搜尋過程始終在可行域的內部進行。當點落在可行域外部時,該怎樣選擇搜尋方向,衍生出了下列的演算法。1...