Matlab在最優(yōu)化問題中的應用.doc_第1頁
Matlab在最優(yōu)化問題中的應用.doc_第2頁
Matlab在最優(yōu)化問題中的應用.doc_第3頁
Matlab在最優(yōu)化問題中的應用.doc_第4頁
Matlab在最優(yōu)化問題中的應用.doc_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Matlab在最優(yōu)化問題中的應用優(yōu)化理論是一門實踐性很強的學科, 廣泛應用于生產(chǎn)管理、 軍事指揮和科學試驗等各種領域, Matlab 優(yōu)化工具箱提供了對各種優(yōu)化問題的一個完整的解決方案。在數(shù)學上,所謂優(yōu)化問題,就是求解如下形式的最優(yōu)解:Minfun (x)Sub. toC.E.B.C.其中fun (x)稱為目標函數(shù), “ Sub. to”為“subject to”的縮寫,由其引導的部分稱為約束條件。 C.E.表示 ConditionEquations ,即條件方程,可為等式方程,也可為不等式方程。 x ubB.C. 表示 Boundary Conditions ,即邊界條件,用來約束自變量的求

2、解域,以的形式給出。當 C.E. 為空時,此優(yōu)化問題稱為自由優(yōu)化或無約束優(yōu)化問題;當lbC.E.不空時,稱為有約束優(yōu)化或強約束優(yōu)化問題。在優(yōu)化問題中,根據(jù)變量、目標函數(shù)和約束函數(shù)的不同,可以將問題大致分為:·線性優(yōu)化目標函數(shù)和約束函數(shù)均為線性函數(shù)。·二次優(yōu)化目標函數(shù)為二次函數(shù),而約束條件為線性方程。統(tǒng)稱為簡單優(yōu)化。線性優(yōu)化和二次優(yōu)化·非線性優(yōu)化目標函數(shù)為非二次的非線性函數(shù),或約束條件為非線性方程。·多目標優(yōu)化目標函數(shù)并非一個時,稱為多目標優(yōu)化問題。本章將對以上幾類優(yōu)化問題在 Matlab 中的實現(xiàn)作比較詳細的講解。另外還將介紹兩個利用優(yōu)化方法解非線性方程

3、的函數(shù)。通過本章的介紹, 用戶可以不必掌握艱澀的各種優(yōu)化算法而輕易地解決一些常用的最優(yōu)化問題了。10.1 線性規(guī)劃問題線性規(guī)劃問題即目標函數(shù)和約束條件均為線性函數(shù)的問題。其標準形式為:minC xsub. ToAx = bx 0其中 C, b, 0 Rn, A Rm n,均為數(shù)值矩陣, x Rn。若目標函數(shù)為: max C x,則轉換成: min C x。標準形式的線性規(guī)劃問題簡稱為LP( Linear Programming)問題。其它形式的線性規(guī)劃問題經(jīng)過適當?shù)淖儞Q均可以化為此種標準形。線性規(guī)劃問題雖然簡單,但在工農(nóng)業(yè)及其他生產(chǎn)部門中應用十分廣泛。在 Matlab 中,線性規(guī)劃問題由lin

4、prog函數(shù)求解。函數(shù): linprog% 求解如下形式的線性規(guī)劃問題:minf T xxsuch thatAxbAeq xbeqlbxub其中 f, x, b, beq, lb, ub為向量, A, Aeq 為矩陣。格式: x = linprog(f,A,b)x = linprog(f,A,b,Aeq,beq)x = linprog(f,A,b,Aeq,beq,lb,ub)x = linprog(f,A,b,Aeq,beq,lb,ub,x0)x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)x,fval = linprog(.)x,fval,exitfla

5、g = linprog(.)x,fval,exitflag,output = linprog(.)x,fval,exitflag,output,lambda = linprog(.)說明:x = linprog(f,A,b)求解問題min f *x ,約束條件為A*x<=b。x = linprog(f,A,b,Aeq,beq)求解上面的問題,但增加等式約束,即Aeq*x = beq。若沒有不等式存在,則令A = 、 b = 。x = linprog(f,A,b,Aeq,beq,lb,ub)定義設計變量x 的下界 lb 和上界 ub,使得 x 始終在該范圍內(nèi)。若沒有等式約束,令Aeq =

6、、beq = 。x = linprog(f,A,b,Aeq,beq,lb,ub,x0)設置初值為x0。該選項只適用于中型問題,默認時大型算法將忽略初值。x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的優(yōu)化參數(shù)進行最小化。x,fval = linprog(.)返回解x,fval,exitflag = linprog(.)x,fval,exitflag,output = linprog(.)x,fval,exitflag,output,lambdax 處的目標函數(shù)值fval。返回 exitflag值,描述函數(shù)計算的退出條件。返回包含優(yōu)化信

7、息的輸出變量output 。= linprog(.)將解 x 處的 Lagrange 乘子返回到lambda 參數(shù)中。exitflag參數(shù)描述退出條件:· >0 表示目標函數(shù)收斂于解 x 處;· =0 表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù);· <0 表示目標函數(shù)不收斂。output參數(shù)該參數(shù)包含下列優(yōu)化信息:· output .iterations迭代次數(shù);· output .cgiterationsPCG迭代次數(shù) ( 只適用于大型規(guī)劃問題· output .algorithm所采用的算法。lambda 參數(shù)) ;該參數(shù)是

8、解x 處的 Lagrange 乘子。它有以下一些屬性:· lambda.lower lambda 的下界;· lambda.upper lambda 的上界;· lambda.ineqlin lambda 的線性不等式;· lambda.eqlin lambda 的線性等式。例 10-1 求解下列優(yōu)化問題:minf ( x)5x14x26x3sub.tox1x2x3203x12x24x3423x12x2300 x1 , 0 x2 , 0 x3解: 在 Matlab 命令窗口鍵入:>> f=-5;-4;-6;>> A=1 -1 1;

9、3 2 4;3 2 0;>> b=20;42;30;>> lb=zeros(3,1);>> x,fval,exitflag,output,lambda=linprog(f,A,b,lb)Optimization terminated successfully.x =0.000015.00003.0000fval =-78.0000exitflag =1output =iterations: 6cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: 3x1 doubleeqlin: 0x1 doub

10、leupper: 3x1 doublelower: 3x1 double>> lambda.ineqlinans =0.00001.50000.5000>> lambda.lowerans =1.00000.00000.0000lambda 向量中的非零元素表示哪些約束是主動約束。本例中,第2 個和第 3 個不等式約束,第 1 個下界約束是主動約束(如這些解位于約束邊界上)。 exitflag = 1表示過程正常收斂于解 x 處。例 10-2 生產(chǎn)決策問題。A 3 噸,資源 B 4m3;制成一噸產(chǎn)某廠生產(chǎn)甲乙兩種產(chǎn)品,已知制成一噸產(chǎn)品甲需資源品乙需資源 A 2 噸,資源

11、 B 6 m3;資源 C 7 個單位。若一噸產(chǎn)品甲和乙的經(jīng)濟價值分別為7萬元和 5 萬元,三種資源的限制量分別為90 噸、 200 m3 和 210 個單位,試決定應生產(chǎn)這兩種產(chǎn)品各多少噸才能使創(chuàng)造的總經(jīng)濟價值最高?解: 令生產(chǎn)產(chǎn)品甲的數(shù)量為x1,生產(chǎn)產(chǎn)品甲的數(shù)量為x2。由題意可以建立下面的數(shù)學模型:maxz7x15x2sub. to3x12x2904 x16x 22007x2210x10,x 20該模型中要求目標函數(shù)最大化,需要按照Matlab 的要求進行轉換,即目標函數(shù)為minz7x15x2在 Matlab 中實現(xiàn):>> f=-7;-5;>> A=3 2;4 6;0

12、 7;>> b=90;200;210;>> lb=0;0;>> x,fval,exitflag,output,lambda=linprog(f,A,b,lb) Optimization terminated successfully.x = 14.000024.0000fval =-218.0000exitflag =1output =iterations: 5cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: 3x1 doubleeqlin: 0x1 doubleupper: 2x1 dou

13、blelower: 2x1 double由上可知,生產(chǎn)甲種產(chǎn)品14 噸、乙種產(chǎn)品24 噸可使創(chuàng)造的總經(jīng)濟價值最高為218 萬元。 exitflag = 1表示過程正常收斂于解x 處。例 10-3廠址選擇問題??紤] A、 B、 C 三地,每地都出產(chǎn)一定數(shù)量的原料也消耗一定數(shù)量的產(chǎn)品(見下表)。已知制成每噸產(chǎn)品需3 噸原料, 各地之間的距離為:AB:150km,A C:100km,B C:200km。假定每萬噸原料運輸1km 的運價是5000 元,每萬噸產(chǎn)品運輸1km的運價是6000 元。由于地區(qū)條件的差異, 在不同地點設廠的生產(chǎn)費用也不同。問究竟在哪些地方設廠,規(guī)模多大,才能使總費用最???另外,

14、由于其它條件限制,在 B 處建廠的規(guī)模(生產(chǎn)的產(chǎn)品數(shù)量)不能超過5萬噸。A、 B、 C 三地出產(chǎn)原料、消耗產(chǎn)品情況表地點年產(chǎn)原料(萬噸)年銷產(chǎn)品(萬噸)生產(chǎn)費用(萬元/萬噸)A207150B1613120C240100解:令 xij 為由 i 地運到 j 地的原料數(shù)量 (萬噸), yij 為由 i 地運到 j 地的產(chǎn)品數(shù)量 (萬噸), i , j = 1, 2,3(分別對應 A、 B、 C 三地)。根據(jù)題意,可以建立問題的數(shù)學模型(其中目標函數(shù)包括原料運輸費、產(chǎn)品運輸費和生產(chǎn)費用(萬元):minz75x1275x2150x13 50x31120 y22160y31220y 32sub.to3y

15、113y12x12x13x21x313y 213y22x12x21x23x323y313y32x13x23x31x32y11y 21y317y12y22y3213y21y225xij0, i, j1, 2, 3; ijyij0, i1, 2, 3;j1, 2100x23100x32150y11240 y12210y 21201624在 Matlab 中實現(xiàn):>> f=75;75;50;50;100;100;150;240;210;120;160;220;>> A=1-11-100330000-11001-100330000-11-11000033000000001100

16、;>> b=20;16;24;5;>> Aeq=0 0 0 0 0 0 1 0 1 0 1 0 000000010101;>> beq=7;13;>> lb=zeros(12,1);>> x,fval,exitflag,output,lambda=linprog(f,A,b,Aeq,beq,lb) Optimization terminated successfully.x =0.00001.00000.00000.00000.00000.00007.00000.00000.00005.00000.00008.0000fval =3.

17、4850e+003exitflag =1output =iterations: 8cgiterations: 0algorithm: 'lipsol'lambda =ineqlin: 4x1 doubleeqlin: 2x1 doubleupper: 12x1 doublelower: 12x1 double因此,要使總費用最小,需要B 地向 A 地運送 1 萬噸原料, A、B、C 三地的建廠規(guī)模分別為 7 萬噸、 5 萬噸、 8 萬噸。最小總費用為3485 萬元。10.2 非線性規(guī)劃問題10.2.1非線性無約束規(guī)劃問題無約束規(guī)劃由3 個功能函數(shù)fminbnd 、 fminse

18、arch、 fminunc 實現(xiàn)。10.2.1.1 fminbnd函數(shù)函數(shù): fminbnd功能: 求取固定區(qū)間內(nèi)單變量函數(shù)的最小值,也就是一元函數(shù)最小值問題。數(shù)學模型:min f (x)xx1xx2式中, x, x1 和 x2 為標量,f (x) 為函數(shù),返回標量。格式: x = fminbnd(fun,x1,x2)x = fminbnd(fun,x1,x2,options)x = fminbnd(fun,x1,x2,options,P1,P2,.)x,fval = fminbnd(.)x,fval,exitflag = fminbnd(.)x,fval,exitflag,output =

19、fminbnd(.)說明:函數(shù)量值fminbnd求取固定區(qū)間內(nèi)單變量函數(shù)的最小值x = fminbnd(fun,x1,x2)返回 x1, x2區(qū)間上 fun 參數(shù)描述的標量函數(shù)的最小值點x。x = fminbnd(fun,x1,x2,options)用 options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x = fminbnd(fun,x1,x2,options,P1,P2,.)提供另外的參數(shù)P1, P2 等,傳輸給目標fun 。如果沒有設置options選項,則令options = 。x,fval = fminbnd(.)返回解 x 處目標函數(shù)的值。x,fval,exitflag = fminbnd

20、(.)返回 exitflag值描述 fminbnd 函數(shù)的退出條件。x,fval,exitflag,output = fminbnd(.)返回包含優(yōu)化信息的結構輸出。·fun :需要最小化的目標函數(shù)。fun 函數(shù)需要輸入標量參數(shù)x,返回 x 處的目標函數(shù)標f ??梢詫un 函數(shù)指定為命令行,如x = fminbnd (inline (sin (x*x) ), x0)同樣, fun 或 MEX文件。若參數(shù)可以是一個包含函數(shù)名的字符串。對應的函數(shù)可以是fun = myfun,則M文件、內(nèi)部函數(shù)x = fminbnd(myfun,x0)其中M文件函數(shù)myfun.m必須為下面的形式func

21、tion f = myfun (x)f =%計算 x 處的函數(shù)值。·options :優(yōu)化參數(shù)選項。 你可以用optimset函數(shù)設置或改變這些參數(shù)的值。Options參數(shù)有以下幾個選項:· Display顯示的水平。選擇off ,不顯示輸出;選擇iter,顯示每一步迭代過程的輸出;選擇final,顯示最終結果;· MaxFunEvals函數(shù)評價的最大允許次數(shù);· MaxIter最大允許迭代次數(shù);· TolXx處的終止容限。· exitflag :描述退出條件:· >0 表示目標函數(shù)收斂于解 x 處;· 0

22、表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù);· <0 表示目標函數(shù)不收斂。· output :該參數(shù)包含下列優(yōu)化信息:· output .iteratiions迭代次數(shù);· output .algorithm所采用的算法;· output .funcCount函數(shù)評價次數(shù)。注意:( 1)目標函數(shù)必須是連續(xù)的;( 2) fminbnd 函數(shù)可能只給出局部最優(yōu)解;( 3)當問題的解位于區(qū)間邊界上時, fminbnd 函數(shù)的收斂速度常常很慢。 此時,fmincon函數(shù)的計算速度更快,計算精度更高;( 4) fminbnd 函數(shù)只用于實數(shù)變量。例 10

23、-4 在(0, 2 ) 上求函數(shù) sinx 的最小值。解: Matlab 中實現(xiàn):>> x,y_min=fminbnd('sin(x)',0,2*pi)x =4.7124y_min =-1.0000或>> x,y_min=fminbnd(sin,0,2*pi)x = 4.7124y_min =-1.0000例 10-5對邊長為3m 的正方形鐵板,在四個角處剪去相等的小正方形以制成方形無蓋盒子,問如何剪法使盒子容積最大?解: 設剪去的正方形的邊長為x,則盒子容積為f (x) = (3-2x)2 x現(xiàn)在要求在區(qū)間(0, 1.5)上確定 x,使最小化,所以需要

24、對目標函數(shù)進行轉換,即要求在 Matlab 中實現(xiàn):f (x)最大化。因為優(yōu)化工具箱中要求目標函數(shù)-f (x)最小化。>> x,f_min=fminbnd('-(3-2*x)2*x',0,1.5)x = 0.5000f_min = -2.0000或編寫 M文件 Ex1005.m>> x,f_min=fminbnd(Ex1005,0,1.5)x =0.5000f_min =-2.00000.5 m 的正方形,最大容積為 2 m3。即剪去邊長為10.2.1.2 fminsearch函數(shù)函數(shù): fminsearch功能: 求解多變量無約束函數(shù)的最小值。數(shù)學模型

25、:min f ( x)x其中, x 為向量,f (x) 為一函數(shù),返回標量。格式: x = fminsearch(fun,x0)x = fminsearch(fun,x0,options)x = fminsearch(fun,x0,options,P1,P2,.)x,fval = fminsearch(.)x,fval,exitflag = fminsearch(.)x,fval,exitflag,output = fminsearch(.)說明:fminsearch求解多變量無約束函數(shù)的最小值。該函數(shù)常用于無約束非線性最優(yōu)化問題。x = fminsearch(fun,x0)初值為x0,求fu

26、n函數(shù)的局部極小點x。 x0可以是標量、向量或矩陣。x = fminsearch(fun,x0,options)用 options參數(shù)指定的優(yōu)化參數(shù)進行最小化。x = fminsearch(fun,x0,options,P1,P2,.)將問題參數(shù)P1、 P2 等直接輸給目標函數(shù)fun ,將 options參數(shù)設置為空矩陣,作為options參數(shù)的默認值。x,fval = fminsearch(.)將 x 處的目標函數(shù)值返回到fval參數(shù)中。x,fval,exitflag = fminsearch(.)返回 exitflag值,描述函數(shù)的退出條件。x,fval,exitflag,output=

27、fminsearch(.)返回包含優(yōu)化信息參數(shù)output的結構輸出。各變量的意義同前及下面fminunc函數(shù)。注意:( 1)應用 fminsearch函數(shù)可能會得到局部最優(yōu)解;( 2) fminsearch函數(shù)只對實數(shù)進行最小化,即x 必須由實數(shù)組成, f (x) 函數(shù)必須返回實數(shù)。如果 x 為復數(shù),則必須將它分為實數(shù)部和虛數(shù)部兩部分;( 3)對于求解二次以上的問題,fminunc 函數(shù)比 fminsearch函數(shù)有效,但對于高度非線性不連續(xù)問題時,fminsearch函數(shù)更具穩(wěn)鍵性。( 4) fminsearch函數(shù)不適合求解平方和問題,用lsqnonlin函數(shù)更好一些。例 10-6 求

28、2x33x+x2的最小值。1+4x x-10x21212解: 在 Matlab中實現(xiàn)如下:>> f='2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2'>> x0=0,0;>> x,f_min=fminsearch(f,x0)x =1.00160.8335f_min =-3.3241或在 Matlab 編輯器中編輯M文件 Ex1006.m:function f=Ex1006(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;x0=0,0;命令窗口運行:>> x,f

29、_min=fminsearch(Ex1006,x0)x =1.0016 0.8335 f_min =-3.3241運行后結果一致。10.2.1.3 fminunc函數(shù)函數(shù): fminunc功能: 求多變量無約束函數(shù)的最小值。數(shù)學模型:min f (x)x其中,x 為向量,f (x) 為一函數(shù),返回標量。格式:x = fminunc(fun,x0)x = fminunc(fun,x0,options)x = fminunc(fun,x0,options,P1,P2,.)x,fval = fminunc(.)x,fval,exitflag = fminunc(.)x,fval,exitflag,o

30、utput = fminunc(.)x,fval,exitflag,output,grad = fminunc(.)x,fval,exitflag,output,grad,hessian = fminunc(.)說明:fminunc給定初值,求多變量標量函數(shù)的最小值。常用于無約束非線性最優(yōu)化問題。x = fminunc(fun,x0)給定初值x0,求 fun 函數(shù)的局部極小點x。 x0 可以是標量、向量或矩陣。x = fminunc(fun,x0,options)用 optionsx = fminunc(fun,x0,options,P1,P2,.)參數(shù)指定的優(yōu)化參數(shù)進行最小化。將問題參數(shù)P1

31、、P2 等直接輸給目標函數(shù)fun,將options參數(shù)設置為空矩陣,作為options參數(shù)的默認值。x,fval = fminunc(.)將 x 處的目標函數(shù)值返回到fval參數(shù)中。x,fval,exitflag = fminunc(.)返回 exitflag值,描述函數(shù)的退出條件。x,fval,exitflag,output = fminunc(.)返回包含優(yōu)化信息參數(shù)output的結構輸出。x,fval,exitflag,output,grad = fminunc(.)將解x 處 fun函數(shù)的梯度值返回到grad參數(shù)中。x,fval,exitflag,output,grad,hessian

32、= fminunc(.)將 解x處 目 標 函 數(shù) 的Hessian 矩陣信息返回到hessian 參數(shù)中。· fun 變量: 為目標函數(shù)。需要最小化的目標函數(shù)。fun函數(shù)需要輸入向量參數(shù)x,返回 x 處的目標函數(shù)標量值 f 。可以將 fun 函數(shù)指定為命令行,如x = fminunc(inline('norm(x)2'),x0)同樣, fun 或 MEX文件。若函數(shù)可以是一個包含函數(shù)名的字符串。對應的函數(shù)可以是fun = myfun,則M文件、內(nèi)部函數(shù)x = fminunc(myfun,x0)其中M文件函數(shù)myfun.m必須有下面的形式:function f = m

33、yfun (x)f =%計算 x 處的函數(shù)值。若 fun 函數(shù)的梯度可以算得,且options.GradObj設為 on(用下式設定)options = optimset ( GradObj , on )則 fun 函數(shù)必須返回解x 處的梯度向量g 到第二個輸出變量中去。注意,當被調(diào)用的fun函數(shù)只需要一個輸出變量時(如算法只需要目標函數(shù)的值而不需要其梯度值時),可以通過核對 nargout的值來避免計算梯度值functionf, g = myfun (x)f =%計算 x 處的函數(shù)值if nargout > 1%調(diào)用 fun 函數(shù)并要求有兩個輸出變量g =%計算 x 處的梯度值end若

34、 Hessian 矩陣可以求得,并且options. Hessian設為 on,即options = optimset ( Hessian , on )則 fun 函數(shù)必須返回解x 處的 Hessian 對稱矩陣H到第三個輸出變量中去。注意,當被調(diào)用的 fun 函數(shù)只需要一個或兩個輸出變量時(如算法只需要目標函數(shù)的值f 和梯度值 g 而不需要 Hessian 矩陣 H 時),可以通過核對 nargout 的值來避免計算 Hessian 矩陣functionf, g = myfun (x)f =%計算 x 處的函數(shù)值if nargout > 1%調(diào)用 fun 函數(shù)并要求有兩個輸出變量g =

35、%計算 x 處的梯度值if nargout > 2H =%計算 x 處的 Hessian 矩陣end· options 變量: 優(yōu)化參數(shù)選項??梢酝ㄟ^ optimset 函數(shù)設置或改變這些參數(shù)。其中有的參數(shù)適用于所有的優(yōu)化算法, 有的則只適用于大型優(yōu)化問題, 另外一些則只適用于中型問題。首先描述適用于大型問題的選項。這僅僅是一個參考,因為使用大型問題算法有一些條件。對于 fminunc 函數(shù)來說,必須提供梯度信息·LargeScale當設為 on時,使用大型算法,若設為off 則使用中型問題的算法適用于大型和中型算法的參數(shù):·Diagnostics打印最小化

36、函數(shù)的診斷信息· Display顯示水平。選擇 off ,不顯示輸出;選擇 iter ,顯示每一步迭代過程的輸出;選擇 final ,顯示最終結果·GradObj用戶定義的目標函數(shù)的梯度。對于大型問題此參數(shù)是必選的,對于中型問題則是可選項·MaxFunEvals函數(shù)評價的最大次數(shù)·MaxIter最大允許迭代次數(shù)·TolFun函數(shù)值的終止容限· TolX x 處的終止容限只適用于大型算法的參數(shù):· Hessian用戶定義的目標函數(shù)的 Hessian 矩陣·HessPattern用于有限差分的Hessian 矩陣的稀疏

37、形式。若不方便求fun 函數(shù)的稀疏Hessian 矩陣 H,可以通過用梯度的有限差分獲得的H 的稀疏結構(如非零值的位置等)來得到近似的Hessian 矩陣 H。若連矩陣的稀疏結構都不知道,則可以將HessPattern設為密集矩陣,在每一次迭代過程中,都將進行密集矩陣的有限差分近似(這是默認設置)。這將非常麻煩,所以花一些力氣得到Hessian矩陣的稀疏結構還是值得的·MaxPCGIterPCG迭代的最大次數(shù)·PrecondBandWidth PCG 前處理的上帶寬,默認時為零。對于有些問題,增加帶寬可以減少迭代次數(shù)· TolPCG PCG 迭代的終止容限

38、83;TypicalX典型 x 值只適用于中型算法的參數(shù):·DerivativeCheck對用戶提供的導數(shù)和有限差分求出的導數(shù)進行對比·DiffMaxChange變量有限差分梯度的最大變化·DiffMixChange變量有限差分梯度的最小變化·LineSearchType一維搜索算法的選擇· exitflag變量: 描述退出條件:·>0表示目標函數(shù)收斂于解x 處·0表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù)·<0表示目標函數(shù)不收斂· output變量: 該參數(shù)包含下列優(yōu)化信息:·outpu

39、t.iterations迭代次數(shù)·output.algorithm所采用的算法·output.funCount函數(shù)評價次數(shù)·output.cgiterationsPCG迭代次數(shù)(只適用于大型規(guī)劃問題)·output.stepsize最終步長的大?。ㄖ贿m用于中型問題)·output.firstorderopt一階優(yōu)化的度量,解x 處梯度的范數(shù)注意:( 1)目標函數(shù)必須是連續(xù)的。fminunc 函數(shù)有時會給出局部最優(yōu)解;( 2) fminunc函數(shù)只對實數(shù)進行優(yōu)化,即x 必須為實數(shù),而且f (x)必須返回實數(shù)。當 x 為復數(shù)時,必須將它分解為實部和

40、虛部;( 3)在使用大型算法時, 用戶必須在 fun 函數(shù)中提供梯度 (options 參數(shù)中 GradObj 屬性必須設置為 on ) ,否則將給出警告信息;( 4)目前,若在fun 函數(shù)中提供了解析梯度,則options參數(shù) DerivativeCheck不能用于大型算法以比較解析梯度和有限差分梯度。通過將 options參數(shù)的 MaxIter屬性設置為0 來用中型方法核對導數(shù),然后重新用大型方法求解問題;( 5)對于求解平方和問題,fminunc函數(shù)不是最好的選擇,用Isqnonlin函數(shù)效果更佳。例 10-7最小化下列函數(shù):f (x) = 3x221 +2x1x2+x2解: 使用 M文

41、件,創(chuàng)建文件Ex10071.m:function f=Ex10071(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2;然后調(diào)用fminunc 函數(shù)求 1 , 1 附近 f (x)函數(shù)的最小值:>> x0=1,1;>> x,fval=fminunc(Ex10071,x0)Warning: Gradient must be provided for trust-region method;using line-search method instead.> In E:matlab6p1toolboxoptimfminunc.m at line 211Opt

42、imization terminated successfully:Search direction less than 2*options.TolXx =1.0e-008 *-0.75910.2665fval =1.3953e-016下面用提供的梯度g 最小化函數(shù),修改M文件為 Ex10072.m:function f,g=Ex10072(x)f=3*x(1)2+2*x(1)*x(2)+x(2)2;if nargout>1g(1)=6*x(1)+2*x(2);g(2)=2*x(1)+2*x(2);end下面通過將優(yōu)化選項結構options.GradObj設置為 on來得到梯度值。>

43、;> options=optimset('GradObj','on');>> x0=1,1;>> x,fval=fminunc(Ex10072,x0,options) Optimization terminated successfully:First-orderoptimalitylessthanOPTIONS.TolFun,andnonegative/zerocurvature detectedx =1.0e-015 *0.1110-0.8882fval =6.2862e-031例 10-8x1(4x22+2x+1) 的最小值。

44、求函數(shù) f (x) = e1+2x2+4x x212解: 在 Matlab 中實現(xiàn):>>x,fval,exitflag,output=fminunc('exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2 )+2*x(2)+1)',-1,1)Warning: Gradient must be provided for trust-region method;using line-search method instead.> In E:matlab6p1toolboxoptimfminunc.m at line 211 Optimizati

45、on terminated successfully:Current search direction is a descent direction, and magnitude ofdirectional derivative in search direction less than 2*options.TolFun x =0.5000-1.0000fval =1.3028e-010exitflag =1output =iterations: 7funcCount: 40stepsize: 1firstorderopt: 8.1998e-004algorithm: 'medium-

46、scale: Quasi-Newton line search'例 10-9求無約束非線性問題f (x) = 100 (x212212x0 = -1.2, 1-x)+(1-x)解: 在 Matlab 中實現(xiàn):>> x0=-1.2,1;>> x,fval=fminunc('100*(x(2)-x(1)2)2+(1-x(1)2',x0)Warning: Gradient must be provided for trust-region method;using line-search method instead.> In E:matlab6

47、p1toolboxoptimfminunc.m at line 211 Optimization terminated successfully:Current search direction is a descent direction, and magnitude of directional derivative in search direction less than 2*options.TolFun x =1.0000 1.0000 fval =1.9116e-01110.2.2二次規(guī)劃數(shù)學模型:如果某非線性規(guī)劃的目標函數(shù)為自變量的二次函數(shù), 約束條件全是線性函數(shù),就稱這種規(guī)劃為

48、二次規(guī)劃。其數(shù)學模型為min 1 x T Hxf T xx 2A xAeq xbbeq其中,H, A 和Aeq 為矩陣,lbxubf , b , beq , lb , ub 和 x 為向量。函數(shù): quadprog功能: 求解二次規(guī)劃問題。格式: x = quadprog(H,f,A,b)x = quadprog(H,f,A,b,Aeq,beq)x = quadprog(H,f,A,b,Aeq,beq,lb,ub)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,p1,p2,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論