MATLAB求解非線性規(guī)劃_第1頁
MATLAB求解非線性規(guī)劃_第2頁
MATLAB求解非線性規(guī)劃_第3頁
MATLAB求解非線性規(guī)劃_第4頁
MATLAB求解非線性規(guī)劃_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB基礎(chǔ)及求解非線性規(guī)劃經(jīng)濟(jì)管理學(xué)院:李繼紅1 Matlab簡介及操作環(huán)境簡介及操作環(huán)境由美國由美國 DOCTORCLEVER MOLER 于于 1980 年年開始研制并于開始研制并于1984年推出正式版本。年推出正式版本。以后以后陸續(xù)推陸續(xù)推出了出了4.0,4.2和和5.0版本,版本,1999年初推出了功能更年初推出了功能更為強(qiáng)大的為強(qiáng)大的5.3版本,版本,2001年推出年推出6.1版本,版本,2003年年推出了推出了6.5版本。版本。2004年年6月正式推出月正式推出7.0版本。版本。MATLAB是建立在是建立在 C 語言基礎(chǔ)上的高級語言,語言基礎(chǔ)上的高級語言,并建立了自已獨特的語

2、言環(huán)境。并建立了自已獨特的語言環(huán)境。 1.1 Matlab簡介簡介MATLAB(MATrix LABoratory)的基本含義是矩陣實驗室,)的基本含義是矩陣實驗室,它是由美國它是由美國MathWorks公司研制開發(fā)的一套高性能的集數(shù)值計算、信息處理、公司研制開發(fā)的一套高性能的集數(shù)值計算、信息處理、圖形顯示等于一體的可視化數(shù)學(xué)工具軟件。它是建立在向量、圖形顯示等于一體的可視化數(shù)學(xué)工具軟件。它是建立在向量、數(shù)組和矩陣基礎(chǔ)之上的,除了基本的數(shù)值計算、數(shù)據(jù)處理、數(shù)組和矩陣基礎(chǔ)之上的,除了基本的數(shù)值計算、數(shù)據(jù)處理、圖形顯示等功能之外,還包含功能強(qiáng)大的多個圖形顯示等功能之外,還包含功能強(qiáng)大的多個“工具箱

3、工具箱”,如優(yōu)化工具箱(如優(yōu)化工具箱(optimization toolbox)、統(tǒng)計工具箱、樣條)、統(tǒng)計工具箱、樣條函數(shù)工具箱和數(shù)據(jù)擬合工具箱等都是優(yōu)化計算的有力工具。函數(shù)工具箱和數(shù)據(jù)擬合工具箱等都是優(yōu)化計算的有力工具。MATLAB程序設(shè)計語言簡介程序設(shè)計語言簡介MATLAB,Matrix Laboratory的縮寫,是由的縮寫,是由Mathworks公司開公司開發(fā)的一套用于科學(xué)工程計算的可視化高性能語言,具有強(qiáng)大的矩發(fā)的一套用于科學(xué)工程計算的可視化高性能語言,具有強(qiáng)大的矩陣運算能力。陣運算能力。與大家常用的與大家常用的Fortran和和C等高級語言相比,等高級語言相比,MATLAB的語法規(guī)

4、的語法規(guī)則更簡單,更貼近人的思維方式,被稱之為則更簡單,更貼近人的思維方式,被稱之為“草稿紙式的語言草稿紙式的語言”。截至目前,截至目前,MATLAB已經(jīng)發(fā)展到已經(jīng)發(fā)展到12.1版,版, 適用于所有適用于所有32位的位的Windows操作系統(tǒng),操作系統(tǒng), 按按NTFS(NT文件系統(tǒng)文件系統(tǒng))格式下完全安裝約需格式下完全安裝約需 850 MB。MATLAB軟件主要由主包、仿真系統(tǒng)和工具箱三大部軟件主要由主包、仿真系統(tǒng)和工具箱三大部分組成。分組成。 MATLABMATLAB的安裝與卸載的安裝與卸載MATLAB軟件在用戶接口設(shè)計上具有較強(qiáng)的親和力,軟件在用戶接口設(shè)計上具有較強(qiáng)的親和力,其安裝過程比較

5、典型,其安裝過程比較典型, 直接運行光盤中的安裝向?qū)е苯舆\行光盤中的安裝向?qū)е纬绦蛑纬绦騍ETUP.exe, 按其提示一步步選擇即可。按其提示一步步選擇即可。MATLAB自身帶有卸載程序,在其安裝目錄下有自身帶有卸載程序,在其安裝目錄下有uninstall子目錄,運行該目錄下的子目錄,運行該目錄下的uninstall.exe即可;即可; 也可以通過也可以通過Windows系統(tǒng)的安裝卸載程序進(jìn)行卸載。系統(tǒng)的安裝卸載程序進(jìn)行卸載。 MATLABMATLAB的啟動與退出的啟動與退出MATLAB安裝完成后,會自動在安裝完成后,會自動在Windows桌面桌面上生成一個快捷方式,上生成一個快捷方式,

6、它是指向安裝目錄下它是指向安裝目錄下binwin32matlab.exe的鏈接,的鏈接, 雙擊它即可來到雙擊它即可來到MATLAB集成環(huán)境的基本窗口,通常稱之為命令集成環(huán)境的基本窗口,通常稱之為命令窗口。窗口。 MATLAB的退出與普通的退出與普通WIN32的程序一樣,的程序一樣, 值值得一提的是它有一個自身專有的快捷鍵得一提的是它有一個自身專有的快捷鍵Ctrl+Q。 1.2 Matlab的語言環(huán)境的語言環(huán)境1、Matlab的工作視窗的工作視窗/界面界面A、命令窗口、命令窗口 (command window)B、編輯、編輯/調(diào)節(jié)器窗口調(diào)節(jié)器窗口(editor/debugger)C、圖形輸出窗口

7、、圖形輸出窗口(figure)D、simulink集成編程窗口集成編程窗口命令窗口命令窗口提供給用戶使用管提供給用戶使用管理功能的人機(jī)界面理功能的人機(jī)界面主要項目:NewOpenPreferenceSet path編輯窗口編輯窗口提供給用戶編程、閱讀和調(diào)提供給用戶編程、閱讀和調(diào)試程序的窗口試程序的窗口圖形輸出窗口圖形輸出窗口實現(xiàn)圖形的可視化、編輯圖形的注釋和對圖形的編輯實現(xiàn)圖形的可視化、編輯圖形的注釋和對圖形的編輯Simulink窗口窗口應(yīng)用框圖編程的方法,實現(xiàn)對系統(tǒng)的仿真,并應(yīng)用框圖編程的方法,實現(xiàn)對系統(tǒng)的仿真,并以圖形方式表示。以圖形方式表示。圖1.7 Sinulink模塊庫瀏覽器圖1.8

8、 新建Sinulink模型窗口2 Matlab基本特性基本特性MATLAB語言的規(guī)則十分簡單,是一種表達(dá)語言的規(guī)則十分簡單,是一種表達(dá)式語言,其語句格式類似于數(shù)學(xué)式子。式語言,其語句格式類似于數(shù)學(xué)式子。其管理的對象是矩陣,標(biāo)量其管理的對象是矩陣,標(biāo)量(數(shù)量數(shù)量)是作為是作為11的矩陣來處理的。與數(shù)學(xué)術(shù)語一樣,僅有一行的矩陣來處理的。與數(shù)學(xué)術(shù)語一樣,僅有一行或一列的矩陣作為向量來處理?;蛞涣械木仃囎鳛橄蛄縼硖幚?。 2.1 簡單的數(shù)學(xué)運算簡單的數(shù)學(xué)運算在在MATLAB命令窗口中,可以直接輸入數(shù)學(xué)運命令窗口中,可以直接輸入數(shù)學(xué)運算式子并回車,即能夠顯示出計算結(jié)果,例如,算式子并回車,即能夠顯示出計算

9、結(jié)果,例如,輸入:輸入: 4+2-5*6+8/4 顯示結(jié)果為:顯示結(jié)果為: ans = -22其中變量其中變量ans(answer的縮寫的縮寫)為為MATLAB預(yù)設(shè)置預(yù)設(shè)置的一個變量。的一個變量。 另一種方式是把計算所得的值賦給一個另一種方式是把計算所得的值賦給一個MATLAB變量,變量,例如:例如:a1=52a1 = 25又例如:又例如:bz=10+a1bz = 35 這樣創(chuàng)建了兩個這樣創(chuàng)建了兩個MATLAB變量變量a1和和bz,每一個變量都顯,每一個變量都顯示出一個計算結(jié)果。示出一個計算結(jié)果。 2.9 常用的基本數(shù)學(xué)函數(shù)常用的基本數(shù)學(xué)函數(shù) MATLAB中,數(shù)學(xué)公式大多數(shù)可以用數(shù)學(xué)函數(shù)的方中

10、,數(shù)學(xué)公式大多數(shù)可以用數(shù)學(xué)函數(shù)的方式來表示。式來表示。要注意的是,三角函數(shù)的計算只采用弧度的操作,要注意的是,三角函數(shù)的計算只采用弧度的操作,角度必須經(jīng)過弧度的換算才能使用。例如:角度必須經(jīng)過弧度的換算才能使用。例如:sin(90sin(90) ),只能表示為:,只能表示為:sin(pi/2)sin(pi/2),其中,其中pipi為圓為圓周率周率。 2.10 M文件文件 在命令窗口模式下鍵入一行命令立即執(zhí)行,程序在命令窗口模式下鍵入一行命令立即執(zhí)行,程序可讀性差且難以存儲可讀性差且難以存儲編成可存儲的程序文編成可存儲的程序文本本m文件文件M文件名的后綴為文件名的后綴為m。MATLAB語言環(huán)境下

11、能語言環(huán)境下能執(zhí)行的文件是以后綴為執(zhí)行的文件是以后綴為m的文件的文件Matlab本身含有很多本身含有很多.m文件文件2.10.1 M文件文件的編制的編制 1 1、打開編輯窗口、打開編輯窗口2 2、編制一個多項式方程求根的程序:、編制一個多項式方程求根的程序:A=4 5 6 8 % 即即 A=4x3+5x2+6x+8P=roots(A)3 3、存盤(文件名不得與已存在的、存盤(文件名不得與已存在的m m文件相文件相同)同)2.10.2 M文件文件的執(zhí)行的執(zhí)行 在在MATLABMATLAB命令窗口下直接鍵入文件名并按回車鍵即可命令窗口下直接鍵入文件名并按回車鍵即可 2.10.3 M文件文件的打開的

12、打開 2.10.4 M文件文件的編輯修改的編輯修改 2.10.5 M文件文件變量的工作空間變量的工作空間M M文件變量的工作空間就是文件變量的工作空間就是MATLABMATLAB的工作空間。若變量在的工作空間。若變量在MATLABMATLAB工作空間中已存在,其變量的值可以被其他的工作空間中已存在,其變量的值可以被其他的M M文件文件使用。但要特別注意在使用。但要特別注意在MATLABMATLAB工作空間中該變量的大小。工作空間中該變量的大小。 2.10.6 M文件文件的調(diào)試的調(diào)試MATLABMATLAB在執(zhí)行在執(zhí)行M M文件過程中,若一旦發(fā)現(xiàn)有語法錯誤,將在文件過程中,若一旦發(fā)現(xiàn)有語法錯誤,

13、將在MATLABMATLAB命令窗口中顯示其錯誤類型,還指出錯誤的行號,并命令窗口中顯示其錯誤類型,還指出錯誤的行號,并停止程序的執(zhí)行,用戶可以根據(jù)所提供的信息來修改程序。停止程序的執(zhí)行,用戶可以根據(jù)所提供的信息來修改程序。另外,在另外,在MATLABMATLAB編輯編輯/調(diào)試器窗口的工具欄和菜單中,可以通調(diào)試器窗口的工具欄和菜單中,可以通過設(shè)置程序斷點,并使程序單步執(zhí)行來調(diào)試程序,工具欄中過設(shè)置程序斷點,并使程序單步執(zhí)行來調(diào)試程序,工具欄中有有關(guān)調(diào)試程序的圖標(biāo)。有有關(guān)調(diào)試程序的圖標(biāo)。3 數(shù)組、矩陣的基本運算數(shù)組、矩陣的基本運算MATLAB (MATrix LABoratory) 是一種是一種

14、以以矩陣作為基本數(shù)據(jù)結(jié)構(gòu)、以矩陣運算為矩陣作為基本數(shù)據(jù)結(jié)構(gòu)、以矩陣運算為基礎(chǔ)的科學(xué)計算軟件基礎(chǔ)的科學(xué)計算軟件所有變量和數(shù)據(jù)都可看成為矩陣變量和矩陣數(shù)據(jù)。所有變量和數(shù)據(jù)都可看成為矩陣變量和矩陣數(shù)據(jù)。應(yīng)用應(yīng)用MATLAB語言編程時,尤其要注意矩陣的語言編程時,尤其要注意矩陣的向量的維數(shù)問題。標(biāo)量可以看作為向量的維數(shù)問題。標(biāo)量可以看作為11的矩陣。的矩陣。 數(shù)組與矩陣元素的輸入數(shù)組與矩陣元素的輸入 用例子來說明:設(shè)用例子來說明:設(shè)A矩陣為矩陣為33矩陣,其數(shù)據(jù)為:矩陣,其數(shù)據(jù)為: 1 2 3 4 5 6 7 8 9在在MATLAB中,輸入方法有幾種:中,輸入方法有幾種:例例 A=1 2 3;4 5

15、6;7 8 9 也可這樣輸入:也可這樣輸入: A=1, 2 3 4, 5, 6 7 8 9矩陣元素之間可用逗號矩陣元素之間可用逗號, 或空格或空格 隔開,隔開,行與行之間用分號行與行之間用分號;隔開;隔開;語句結(jié)尾:逗號顯示結(jié)果,分號不顯示結(jié)果語句結(jié)尾:逗號顯示結(jié)果,分號不顯示結(jié)果 例例 x=3,4,2;y=6 7 2;z=x*y z = 50 又例又例 z=x*y z = 18 21 6 24 28 8 12 14 4加:加:兩矩陣階數(shù)相同兩矩陣階數(shù)相同 減:兩矩陣階數(shù)相同減:兩矩陣階數(shù)相同 乘:第一個矩陣的列數(shù)等于第二個矩陣的行數(shù),乘:第一個矩陣的列數(shù)等于第二個矩陣的行數(shù),即內(nèi)階數(shù)相等即內(nèi)

16、階數(shù)相等 除:逆陣除:逆陣A A-1-1 invinv(A A),矩陣行列式),矩陣行列式 det(A)det(A),左除,右除,行列式不為,左除,右除,行列式不為0 0 矩陣運算:矩陣運算:4 關(guān)系與邏輯運算關(guān)系與邏輯運算關(guān)系運算:關(guān)系運算: = = =邏輯運算:邏輯運算: & | xor5 向量與多項式向量與多項式在在MATLAB中向量的表達(dá)和一維數(shù)組的表示中向量的表達(dá)和一維數(shù)組的表示形式一致,而多項式也可以用一個行向量來表形式一致,而多項式也可以用一個行向量來表示,即將多項式的系數(shù)按變量的降冪排列。示,即將多項式的系數(shù)按變量的降冪排列。 求 y=x3+2.5x2+x+10=0 的

17、根。p=1 2.5 1 10; % 多項式方程的MATLAB表達(dá)x=roots(p) % root 6 控制流與若干控制命令控制流與若干控制命令控制流語句有三種結(jié)構(gòu):控制流語句有三種結(jié)構(gòu):forfor循環(huán),循環(huán),whilewhile循環(huán),循環(huán),ififelseendelseend,switch-case結(jié)構(gòu)等??刂泼钪饕榻B結(jié)構(gòu)等。控制命令主要介紹breakbreak、pausepause、inputinput、keyboardkeyboard、debugdebug等命令。等命令。 6.1 for for循環(huán)循環(huán) 1、for循環(huán)循環(huán)For循環(huán)可以按指定的次數(shù)重復(fù)執(zhí)行一系列語循環(huán)可以按指定的次

18、數(shù)重復(fù)執(zhí)行一系列語句。句。For循環(huán)的常見結(jié)構(gòu):循環(huán)的常見結(jié)構(gòu):for 變量變量 =表達(dá)式表達(dá)式 循環(huán)語句循環(huán)語句 end如:如:for k=初值初值: 增值增值: 終值終值 這里循環(huán)語句可以是一條或這里循環(huán)語句可以是一條或多條,并且可以是變量的函多條,并且可以是變量的函數(shù)數(shù)li1_6_1.m mzmfor.mclear allN=input(請輸入矩陣的維數(shù) N:);for I = 1:N, for J = 1:N, A(I,J) = 1/(I+J-1); endend在用在用for語句實語句實現(xiàn)多重循環(huán)時,現(xiàn)多重循環(huán)時,for和和end必須必須成對出現(xiàn)!成對出現(xiàn)!例:請分析一下本段程序共循

19、環(huán)多少次?請分析一下本段程序共循環(huán)多少次? % mzmfor2.mfor n=1:5 x(n)=sin(n*pi/10); n=10;end For循環(huán)不能用循環(huán)不能用For循環(huán)內(nèi)新賦值循環(huán)變循環(huán)內(nèi)新賦值循環(huán)變量量n來終止。因此本來終止。因此本段中循環(huán)次數(shù)仍為五段中循環(huán)次數(shù)仍為五次!次! 6.2 while循環(huán)循環(huán) vWhile 循環(huán)以循環(huán)以不定的次數(shù)不定的次數(shù)執(zhí)行一條或多條語句,執(zhí)行一條或多條語句,當(dāng)條件不再滿足時退出循環(huán)。當(dāng)條件不再滿足時退出循環(huán)。While循環(huán)的一般形循環(huán)的一般形式是:式是:vwhile 條件式條件式 語句;語句; endv只要在表達(dá)式里的所有元素為真,就執(zhí)行只要在表達(dá)式

20、里的所有元素為真,就執(zhí)行while和和end 語語句之間的運算式。就是說,只要條件式成立,運算式就會句之間的運算式。就是說,只要條件式成立,運算式就會一再被執(zhí)行。一再被執(zhí)行。While示例示例循環(huán)條件是條循環(huán)條件是條件表達(dá)式的值件表達(dá)式的值為真為真x=input(x=);while x=10 y=x*5 x=x-5end6.3 if-else-end分支語句分支語句 v最簡單的If-else-end結(jié)構(gòu)是:vif 條件式; v 循環(huán)體語句; vendv如果在表達(dá)式中的所有元素為真(非零),那么就執(zhí)行if和end語言之間的語句。6.4 switch-case語句語句 一般switch-case語

21、句格式為:switch numcase n1commandcase n2commandcase n3command.otherwiseCommandli1_6_4.m一一. 繪制二維圖形繪制二維圖形1、簡單的二維繪圖命令(plot)Plot函數(shù)是將各個數(shù)據(jù)點通過連折線的方式來繪制二維圖形的。其格式有以下幾種。plot(y) %繪制向量y的曲線plot(x,y) %繪制縱坐標(biāo)為向量y橫坐標(biāo)為向量x的曲線 %x,y的維數(shù)應(yīng)相同。多條曲線的繪制 plot(x1,y1,x2,y2,)7 數(shù)據(jù)的可視化數(shù)據(jù)的可視化二、繪制三維圖形二、繪制三維圖形1、三維曲線的基本繪圖命令、三維曲線的基本繪圖命令基本格式:

22、基本格式:plot3(x,y,z,s) plot3(x1,y1,z1,s1,x2,y2,z2,s2,) 例:例:t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t);plot3命令將繪制二維圖形的函數(shù)命令將繪制二維圖形的函數(shù)plot的特性擴(kuò)展到三維空間。函的特性擴(kuò)展到三維空間。函數(shù)格式除了包括第三維的信息(比如數(shù)格式除了包括第三維的信息(比如Z方向)之外,與二維函數(shù)方向)之外,與二維函數(shù)plot相同。相同。2.三維網(wǎng)線圖的繪制步驟:1)柵格數(shù)據(jù)點的產(chǎn)生命令:meshgrid(x,y)2)繪制三維網(wǎng)格命令:mesh(x,y,z)繪制三維網(wǎng)線圖程序:x=-8:0.5:

23、8;y=x;X,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;mesh(X,Y,Z)MATLAB求解非線性規(guī)劃第一部分:無約束極值問題第一部分:無約束極值問題 單變量函數(shù)求最小值的標(biāo)準(zhǔn)形式為單變量函數(shù)求最小值的標(biāo)準(zhǔn)形式為 s.t )(minxfx21xxx 函數(shù)函數(shù) fminbnd格式格式 x = fminbnd(fun,x1,x2) %返回自變量返回自變量x在區(qū)間在區(qū)間上函數(shù)上函數(shù)fun取最小值時取最小值時x值,值,fun為目標(biāo)函數(shù)的表達(dá)式字符串為目標(biāo)函數(shù)的表達(dá)式字符串或或MATLAB自定義函數(shù)的函數(shù)柄。自定義函數(shù)的函數(shù)柄。 函數(shù)函數(shù)fmin

24、bnd的算法基于黃金分割法和二次插值法,它要求的算法基于黃金分割法和二次插值法,它要求目標(biāo)函數(shù)必須是連續(xù)函數(shù),并可能只給出局部最優(yōu)解。目標(biāo)函數(shù)必須是連續(xù)函數(shù),并可能只給出局部最優(yōu)解。 x = fminbnd(fun,x1,x2,options) % options為指定優(yōu)化參為指定優(yōu)化參數(shù)選項數(shù)選項 x,fval = fminbnd() % fval為目標(biāo)函數(shù)的最小值為目標(biāo)函數(shù)的最小值 x,fval,exitflag = fminbnd() %xitflag為終止迭代的條為終止迭代的條件件 x,fval,exitflag,output = fminbnd() % output為優(yōu)化信為優(yōu)化信息

25、息 說明說明 若參數(shù)若參數(shù)exitflag0,表示函數(shù)收斂于,表示函數(shù)收斂于x,若,若exitflag=0,表示超過函數(shù)估計值或迭代的最大數(shù)字,表示超過函數(shù)估計值或迭代的最大數(shù)字,exitflag0表示函數(shù)不收斂于表示函數(shù)不收斂于x;若參數(shù);若參數(shù)output=iterations表示迭代次數(shù),表示迭代次數(shù),output=funccount表表示函數(shù)賦值次數(shù),示函數(shù)賦值次數(shù),output=algorithm表示所使用的算法。表示所使用的算法。 例例1 計算下面函數(shù)在區(qū)間計算下面函數(shù)在區(qū)間(0,1)內(nèi)的最小值。內(nèi)的最小值。xexxxxxflogcos)(3 解:解:x,fval,exitflag

26、,output =fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223fval = 0.3974exitflag = 1output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation 主程序為主程序為ex2.m:ex2.m: f=2 f=2* *exp(-x).exp(-x).* *sin(x); sin(x); ex2.mex2.m fplot(f,0,8); % fplot(f,0,8); %作圖語句作圖語句 xmin,ym

27、in=fminbnd (f, 0,8)xmin,ymin=fminbnd (f, 0,8) f1=-2 f1=-2* *exp(-x).exp(-x).* *sin(x);sin(x); xmax,ymax=fminbnd (f1, 0,8) xmax,ymax=fminbnd (f1, 0,8) 二次規(guī)劃可以直接利用二次規(guī)劃可以直接利用 Matlab 來求解。來求解。Matlab 中二次規(guī)劃函數(shù)為:quadprog( )。其調(diào)用格式為x=quadprog(H,C,A,b);x=quadprog(H,C,A,b,Aeq,beq);x=quadprog(H,C,A,b,Aeq,beq,VLB,V

28、UB);x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options);x,fval=quaprog(.);x,fval,exitflag=quaprog(.);x,fval,exitflag,output=quaprog(.);47例3 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t. x1+x22 -x1+2x22 x10, x20 1、寫成標(biāo)準(zhǔn)形式: 2、 輸入命令: H=1 -1; -1 2; c=-2 ;-6;A=1 1; -1 2;b

29、=2;2; Matlab:youh2.m Aeq=;beq=; VLB=0;0;VUB=; x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、運算結(jié)果為: x =0.6667 1.3333 z = -8.2222212121622 11- 1 ),(minxxxxxxzT212100222 11 1 xxxxs.t. 用用MATLAB解無約束優(yōu)化問題解無約束優(yōu)化問題 設(shè)無約束優(yōu)化問題(一元或多元函數(shù))標(biāo)準(zhǔn)形為min( )f x常用格式如下:x=fminunc(fun,x0);或x=fminsearch(fun,x0);x= fminunc (fun,x0,optio

30、ns); 或x=fminsearch(fun,x0, options);x,fval= fminunc (); 或x,fval=fminsearch()x,fval,exitflag=fminunc(); 或x,fval,exitflag=fminsearch();x,fval,exitflag,output= fminunc(); 或x,fval,exitflag,output= fminsearch(); 說明:fminsearch是用單純形法尋優(yōu)。而對于fminunc的算法: (1)fminunc為無約束優(yōu)化提供了大型優(yōu)化和中型優(yōu)化算法,由于options中的參數(shù)LargeScale控制

31、; LargeScale=on(默認(rèn)值),使用大型算法; LargeScale=off(默認(rèn)值),使用中型算法。(2)fminunc為中型優(yōu)化算法的搜索方向提供了4種算法,由options中的參數(shù)HessUpdate控制:HessUpdate=bfgs(默認(rèn)值),擬牛頓法的BFGS公式;HessUpdate=dfp,擬牛頓法的DFP公式;HessUpdate=steepdesc,最速下降法;(3)fminunc為中型優(yōu)化算法的步長以為搜索提供了兩種算法,由options中的參數(shù)LineSearchType控制:LineSearchType=quadcubic(默認(rèn)值),混合的二次和三次多項式插

32、值;LineSearchType=cubicpoly, 三次多項式插值。例例4用Matlab解多元約束優(yōu)化問題212122214102minxxxxxxf有約束極值問題的有約束極值問題的Matlab求解求解一、 一般非線性規(guī)劃一般非線性規(guī)劃標(biāo)準(zhǔn)形為:其中: 均為非線性函數(shù)組成的向量VUBxVLBxCeqxCBeqxAeqbAxxf0)(0)()(min)(),(xCeqxC用Matlab求解上述向題,基本步驟為:(1)首先建立M文件funm,定義目標(biāo)函數(shù)f(x): function ffun(x); ff(x);)(),(xCeqxC (2)若約束條件中有非線性約束: ,則建立M文件nonlc

33、on.m,定義函數(shù):function C,Ceq=nonlcon(x)C=Ceq=3. 建立主程序.非線性規(guī)劃求解的函數(shù)是fmincon,命令的基本格式如下: (1) x=fmincon(fun,X0,A,b) (2) x=fmincon(fun,X0,A,b,Aeq,beq) (3) x=fmincon(fun,X0,A,b, Aeq,beq,VLB,VUB) (4) x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon,options) (6) x,fval=

34、 fmincon(.) (7) x,fval,exitflag= fmincon(.) (8)x,fval,exitflag,output= fmincon(.)輸出極值點M文件迭代的初值參數(shù)說明變量上下限54注意:1 fmincon函數(shù)提供了大型優(yōu)化算法和中型優(yōu)化算法。默認(rèn)時,若在fun函數(shù)中提供了梯度(options參數(shù)的GradObj設(shè)置為on),并且只有上下界存在或只有等式約束,fmincon函數(shù)將選擇大型算法。當(dāng)既有等式約束又有梯度約束時,使用中型算法。2 fmincon函數(shù)的中型算法使用的是序列二次規(guī)劃法。在每一步迭代中求解二次規(guī)劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。3 fmincon函數(shù)可能會給出局部最優(yōu)解,這與初值X0的選取有關(guān)。551、寫成標(biāo)準(zhǔn)形式: s.t. 00546322121xxxx2100 xx22212121212minxxxxf22212121212minxxxxf 2x1+3x2 6 s.t x1+4x2 5 x1,x2 0例5562、先建立M-文件 fun3.m: function f=fun3(x); f

溫馨提示

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

評論

0/150

提交評論