進退法1. 演算法原理
進退法是用來確定搜尋區間(包含極小值點的區間)的演算法,其理論依據是:為單谷函式(只有乙個極值點),且為其極小值點的乙個搜尋區間,對於任意,如果,則為極小值的搜尋區間,如果,則為極小值的搜尋區間。
因此,在給定初始點,及初始搜尋步長的情況下,首先以初始步長向前搜尋一步,計算。
(1) 如果
則可知搜尋區間為,其中待求,為確定,後退一步計算,為縮小係數,且,直接找到合適的,使得,從而確定搜尋區間。
(2) 如果
則可知搜尋區間為,其中待求,為確定,前進一步計算,為放大係數,且,知道找到合適的,使得,從而確定搜尋區間。
2. 演算法步驟
用進退法求一維無約束問題的搜尋區間(包含極小值點的區間)的基本演算法步驟如下:
(1) 給定初始點,初始步長,令,,;
(2) 令,置;
(3) 若,則轉步驟(4),否則轉步驟(5);
(4) 令,,,令,轉步驟(2);
(5) 若,則轉步驟(6)否則轉步驟(7);
(6) 令,,,轉步驟(2);
(7) 令,停止計算,極小值點包含於區間
3. 演算法的matlab實現
在matlab中程式設計實現的進退函式為:
功能:用進退法求解一維函式的極值區間。
呼叫格式:
其中,:目標函式;
:初始點;
:初始步長;
:精度;
:目標函式取包含極值的區間左端點;
:目標函式取包含極值的區間又端點。
進退法的matlab程式**如下:
function [minx,maxx]=minjt(f,x0,h0,eps)
%目標函式:f;
%初始點:x0;
%初始步長:h0;
%精度:eps;
%目標函式取包含極值的區間左端點:minx;
%目標函式取包含極值的區間又端點:maxx;
format long;
if nargin==3;eps=1.0e-6;end
x1=x0;k=0;h=h0;
while 1
x4=x1+h; %試探步
k=k+1;
f4=subs(f,findsym(f),x4);
f1=subs(f,findsym(f),x1);
if f4 x2=x1;
x1=x4;
f2=f1;
f1=f4;
h=2*h; %加大步長
else
if k==1
h=-h; %反向搜尋
x2=x4;
f2=f4;
else
x3=x2;
x2=x1;
x1=x4;
break;
end end
endminx=min(x1,x3);
maxx=x1+x3-minx;
format short;
例:取初始點為0,步長為0.1,用進退法求函式的極值區間。
解:在matlab命令視窗中輸入:
syms t;
f=t^4-t^2-2*t+5;
[x1,x2]=minjt(f,0,0.1)
所得結果為:
x1 =
0.3000
x2 =
1.5000
由上面的結果可知的極值點在區間內。
最優化方法的matlab實現
在生活和工作中,人們對於同乙個問題往往會提出多個解決方案,並通過各方面的論證從中提取最佳方案。最優化方法就是專門研究如何從多個方案中科學合理地提取出最佳方案的科學。由於優化問題無所不在,目前最優化方法的應用和研究已經深入到了生產和科研的各個領域,如土木工程 機械工程 化學工程 運輸排程 生產控制 經...
基於MATLAB環境下實現最優化方法
阻尼牛頓法 1 優化設計法 優化設計 optimal design 是現代先進的設計方法,這種設計方法是把數學規劃理論與計算方法應用於實際設計中,按照預定的目標,借助計算機的運算尋求最優設計方案的有關引數,從而獲得最好的技術經濟效果。優化設計反映出人們對於設計規律這一客觀世界認識的深化。設計上的 最...
最優化計算方法
考試時間 120 分鐘 號試題班級學號姓名 一 20分 解釋下列概念 1 凸集,凸規劃 2 線性規劃的基和基本解 3 無約束優化演算法的下降搜尋方向,舉出兩種搜尋方向 4 約束最優化問題的可行解集合或容許解集合 5 共軛方向。二 10分 解答下列問題 1 判斷函式為凸函式或凹函式或嚴格凸函式或嚴格凹...