最優(yōu)化方法的Matlab實現(xiàn)(公式(完整版))_第1頁
最優(yōu)化方法的Matlab實現(xiàn)(公式(完整版))_第2頁
最優(yōu)化方法的Matlab實現(xiàn)(公式(完整版))_第3頁
最優(yōu)化方法的Matlab實現(xiàn)(公式(完整版))_第4頁
最優(yōu)化方法的Matlab實現(xiàn)(公式(完整版))_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、v1.0可編輯可修改第九章最優(yōu)化方法的Matlab實現(xiàn)在生活和工作中,人們對于同一個問題往往會提由多個解決方案,并通過各方面的論證從中提取最佳方案。最優(yōu)化方法就是專門研究如何從多個方案中科學合理地提取由最佳方案的科學。由于優(yōu)化問題無所不在,目前最優(yōu)化方法的應用和研究已經(jīng)深入到了生產(chǎn)和科研的各個領域,如土木工程、機械工程、化學工程、運輸調度、生產(chǎn)控制、經(jīng)濟規(guī)劃、經(jīng)濟管理等,并取得了顯著的經(jīng)濟效益和社會效益。用最優(yōu)化方法解決最優(yōu)化問題的技術稱為最優(yōu)化技術,它包含兩個方面的內(nèi)容:1)建立數(shù)學模型即用數(shù)學語言來描述最優(yōu)化問題。模型中的數(shù)學關系式反映了最優(yōu)化問題所要達到的目標和各種約束條件。 2)數(shù)學求

2、解 數(shù)學模型建好以后,選擇合理的最優(yōu)化方法進行求解。最優(yōu)化方法的發(fā)展很快,現(xiàn)在已經(jīng)包含有多個分支,如線性規(guī)劃、整數(shù)規(guī)劃、非線性規(guī)劃、動態(tài)規(guī)劃、多目標規(guī)劃等。概述利用Matlab的優(yōu)化工具箱,可以求解線性規(guī)劃、非線性規(guī)劃和多目標規(guī)劃問題。具體而言,包括線性、非線性最小化,最大最小化,二次規(guī)劃,半無限問題,線性、非線性方程(組)的求解,線性、非線性的最小二乘問題。另外,該工具箱還提供了線性、非線性最小化,方程求解,曲線擬合,二次規(guī)劃等問題中大型課題的求解方法,為優(yōu)化方法在工程中的實際應用提供了更方便快捷的途徑。 9.1.1優(yōu)化工具箱中的函數(shù)優(yōu)化工具箱中的函數(shù)包括下面幾類:1 ?最小化函數(shù)表9-1最

3、小化函數(shù)表函數(shù)描述fgoalattain多目標達到問題fminbnd有邊界的標量非線性最小化fmincon有約束的非線性最小化fminimax最大最小化fminsearch, fminunc無約束非線性最小化fseminf半無限問題linprog線性課題quadprog二次課題2 .方程求解函數(shù)表9-2方程求解函數(shù)表函數(shù)描述線性方程求解fsolve非線性方程求解fzero標量非線性方程求解3 .最小一乘(曲線擬合)函數(shù)表9-3最小二乘函數(shù)表函數(shù)描述線性最小二乘lsqlin有約束線性最小二乘lsqcurvefit非線性曲線擬合Isqnonlin非線性最小二乘Isqnonneg非負線性最小二乘4?

4、實用函數(shù)表9-4實用函數(shù)表函數(shù)描述optimset設置參數(shù)optimget5 ?大型方法的演示函數(shù)表9-5大型方法的演示函數(shù)表函數(shù)描述circustent馬戲團帳篷問題一二次課題molecule用無約束非線性最小化進行分子組成求解optdeblur用有邊界線性最小二乘法進行圖形處理6?中型方法的演示函數(shù)表9-6中型方法的演示函數(shù)表函數(shù)描述bandemo香蕉函數(shù)的最小化dfildemo過濾器設計的有限精度goaldemo目標達到舉例optdemo演示過程菜單tutdemo教程演示5專業(yè)知識分享v1.0可編輯可修改9.1.3參數(shù)設置利用optimset函數(shù),可以創(chuàng)建和編輯參數(shù)結構;利用 optim

5、get函數(shù),可以獲得 o ptions優(yōu)化參 數(shù)。optimget 函數(shù)功能:獲得options優(yōu)化參數(shù)。語法:val = optimget(opti on s,'param')val = optimget(optio ns,'param',default)描述:val = optimget(options,'param')返回優(yōu)化參數(shù) options中指定的參數(shù)的值。只需要用參數(shù)開頭的字母來定義參數(shù)就行了。val = optimget(options,'param',default)若 options 結構參數(shù)中沒有定義指定參數(shù)

6、,則返回缺省值。注意,這種形式的函數(shù)主要用于其它優(yōu)化函數(shù)。舉例:1 .下面的命令行將顯示優(yōu)化參數(shù)options 返回到I my_options結構中:val = optimget(my_optio ns,'Display')2 .下面的命令行返回顯示優(yōu)化參數(shù)options到my_options結構中(就象前面的例子一樣),但如果顯示參數(shù)沒有定義,則返回值'fin al':opt new = optimget(my_optio ns,'Display','fi nal');參見:optimsetoptimset 函數(shù) 功能:創(chuàng)建或編

7、輯優(yōu)化選項參數(shù)結構9專業(yè)知識分享語法:opti ons =optimset('paramT,value1,'param2',value2,.=)optimsetopti ons = optimsetopti ons = optimset(optimf un)opti ons = optimset(oldopts,'param1',value1,.Jopti ons = optimset(oldopts ,n ewopts)描述:opti ons = optimset('paramT,value1,'param2',value2,.

8、)倉 U 建一個稱為options的優(yōu)化選項參數(shù),其中指定的參數(shù)具有指定值。所有未指定的參數(shù)都設置為空矩陣 口(將參數(shù)設置為 口 表示當options傳遞給優(yōu)化函數(shù)時給參數(shù)賦缺省值)。賦值時只要輸入?yún)?shù)前面的字母就行了。optimset函數(shù)沒有輸入輸生變量時,將顯示一張完整的帶有有效值的參數(shù)列表。opti ons = optimset (with no in put argume nts)倉 U 建一個選項結構 options,其中所有的元素被設置為口 。optio ns = optimset(optimfu n)創(chuàng)建一個含有所有參數(shù)名和與優(yōu)化函數(shù)optimfun相關的缺省值的選項結構opti

9、ons。options = optimset(oldopts,'param1',value1,)倉 U 建一個 oldopts 的拷貝,用指定的數(shù)值修改參數(shù)。options = optimset(oldopts,newopts)將已經(jīng)存在的選項結構oldopts 與新的選項結構newopts進行合并。newopts參數(shù)中的所有元素將覆蓋oldopts參數(shù)中的所有對應元素。舉例:1 .下面的語句創(chuàng)建一個稱為options的優(yōu)化選項結構,其中顯示參數(shù)設為iter' , TolFun參數(shù)設置為1e-8:optio ns = optimset('Display'

10、,'iter','Tol Fun ',1e-8)v1.0可編輯可修改2 .下面的語句創(chuàng)建一個稱為options的優(yōu)化結構的拷貝,改變 ToIX參數(shù)的值,將新值保存到opt new參數(shù)中:opt new = optimset(optio ns,'TolX',1e-4);3 .下面的語句返回options優(yōu)化結構,其中包含所有的參數(shù)名和與fminbnd函數(shù)相關的缺省值:opti ons = optimset('fm inbn d')4 .若只希望看到fminbnd函數(shù)的缺省值,只需要簡單地鍵入下面的語句就行了:optimset fmi

11、nbnd或者輸入下面的命令,其效果與上面的相同:optimset('fm inbn d')參見:optimget9.1.4 模型輸入時需要注意的問題使用優(yōu)化工具箱時,由于優(yōu)化函數(shù)要求目標函數(shù)和約束條件滿足一定的格式,所以需要用戶在進行模型輸入時注意以下幾個問題:1 .目標函數(shù)最小化優(yōu)化函數(shù) fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax 和 ls qnonlin 都要求目標函數(shù)最小化,如果優(yōu)化問題要求目標函數(shù)最大化,可以通過使該目標函數(shù)的負值最小化即-f(x)最小化來實現(xiàn)。近似地,對于 quadprog函數(shù)提供-H和

12、-f,對于linprog函數(shù)提供-f。2 .約束非正優(yōu)化工具箱要求非線性不等式約束的形式為C(x) < 0,通過對不等式取負可以達到使大于零的約束形式變?yōu)樾∮诹愕牟坏仁郊s束形式的目的,如C(x) >0形式的約束等價8v1.0可編輯可修改于-Ci(x) <0; C(x) >b形式的約束等價于-C i(x)+b <0專業(yè)知識分享41專業(yè)知識分享3,避免使用全局變量9.1.5 (函數(shù)句柄)函數(shù)中可以用g數(shù)進行函數(shù)調用。 8數(shù)返回指定 MATLA函數(shù)的句柄,其調用格式為 han die = function利用S數(shù)進行函數(shù)調用有下面幾點好處:用句柄將一個函數(shù)傳遞給另一個函

13、數(shù);減少定義函數(shù)的文件個數(shù);改進重復操作;保證函數(shù)計算的可靠性。下面的例子為humps函數(shù)創(chuàng)建一個函數(shù)句柄,并將它指定為fhandle變量。fha ndle = humps;同樣傳遞句柄給另一個函數(shù),也將傳遞所有變量。本例將剛剛創(chuàng)建的函數(shù)句柄傳遞給fminbnd函數(shù),然后在區(qū)間 ,1上進行最小化。x = fminbnd (humps, , 1) x =最小化問題9.2,1單變量最小化921.1 基本數(shù)學原理本節(jié)討論只有一個變量時的最小化問題,即一維搜索問題。該問題在某些情況下可以直接用于求解實際問題,但大多數(shù)情況下它是作為多變量最優(yōu)化方法的基礎在應用,因為進行多變量最優(yōu)化要用到一維搜索法。該問

14、題的數(shù)學模型為:min/ (x IX工<X<X 2其中,x,x1,和x2為標量,f(x)為函數(shù),返回標量。該問題的搜索過程可用下式表達:忑+1二耳+0*言舌其中Xk為本次迭代的值,d為搜索方向,a為搜索方向上的步長參數(shù)。所以一維搜索就是要利用本次迭代的信息來構造下次迭代的條件。求解單變量最優(yōu)化問題的方法有很多種,根據(jù)目標函數(shù)是否需要求導,可以分為兩類,即直接法和間接法。直接法不需要對目標函數(shù)進行求導,而間接法則需要用到目標函數(shù)的導數(shù)。1 ?直接法常用的一維直接法主要有消去法和近似法兩種。(1) 消去法該法利用單峰函數(shù)具有的消去性質進行反復迭代,逐漸消去不包含極小點的區(qū)間,縮小搜索區(qū)

15、間,直到搜索區(qū)間縮小到給定的允許精度為止。一種典型的消去法為黃金分割法(Golden Section Search)。黃金分割法的基本思想是在單峰區(qū)間內(nèi)適當插入兩點,將區(qū)間分為三段,然后通過比較這兩點函數(shù)值的大小來確定是刪去最左段還是最右段,或同時刪去左右兩段保留中間段。重復該過程使區(qū)間無限縮小。插入點的位置放在區(qū)間的黃金分割點及其對稱點上,所以該法稱為黃金分割法。該法的優(yōu)點是算法簡單,效率較高,穩(wěn)定性好。(2)多項式近似法該法用于目標函數(shù)比較復雜的情況。此時尋找一個與它近似的函數(shù)代替目標函數(shù),并用近似函數(shù)的極小點作為原函數(shù)極小點的近似。常用的近似函數(shù) 為二次和三次多項式。二次內(nèi)插涉及到形如下

16、式的二次函數(shù)數(shù)據(jù)擬合問題:叫(a) = a or +ba 十 q其中步長極值為:* -bry 一2a然后只要利用三個梯度或函數(shù)方程組就可以確定系數(shù)a和b,從而可以確定 a得到該值以后,進行搜索區(qū)間的收縮。在縮短的新區(qū)間中,重新安排三點求生下一次的近似極小點a *,如此迭代下去,直到滿足終止準則為止。其迭代公式為:工二1區(qū)/3) +篇/ (吃)十/ (兀)W 2冷/ (可)十冷/ (兀2) +尤2/ (心)其中A =兀;-彳7ij = xixj二次插值法的計算速度比黃金分割法的快,但是對于一些強烈扭曲或可能多峰的函數(shù),該法的收斂速度會變得很慢,甚至失敗。2 ?間接法間接法需要計算目標函數(shù)的導數(shù),

17、優(yōu)點是計算速度很快。常見的間接法包括牛頓切線法、對分法、割線法和三次插值多項式近似法等。優(yōu)化工具箱中用得較多的是三次插值法。三次插值的基本思想與二次插值的一致,它是用四個已知點構造一個三次多項式P3(x),用它逼近函數(shù)f(x),以P3(x)的極小點作為f(x)的近似極小點。一般講,三次插 值法比二次插值法的收斂速度要快些,但每次迭代需要計算兩個導數(shù)值。三次插值法的迭代公式為其中如果函數(shù)的導數(shù)容易求得,一般來說首先考慮使用三次插值法,因為它具有較高的效率。對于只需要計算函數(shù)值的方法中,二次插值法是一個很好的方法,它的收斂速度 較快,尤其在極小點所在區(qū)間較小時尤其如此。黃金分割法則是一種十分穩(wěn)定的

18、方法,并且計算簡單。由于以上原因,Matlab優(yōu)化工具箱中使用得較多的方法是二次插值法、三次插值法、二次、三次混合插值法和黃金分割法。921.2相關函數(shù)介紹fminbnd功能:找到固定區(qū)間內(nèi)單變量函數(shù)的最小值。語法:x = fminbnd(fun, x1,x2)x = fminbnd(fun, x1,x2,opti ons)x = fmi nbn d(fu n,x1,x2,optio ns,P1,P2,.)x,fval = fminbn d()x,fval,exitflag = fminbn d()x,fval,exitflag,output = fminbn d()描述:fminbnd求取固

19、定區(qū)間內(nèi)單變量函數(shù)的最小值。x = fminbnd(fun,x1,x2) 返回區(qū)間x1, x2上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 等)傳輸給目標函數(shù)fun。如果沒有設置 options選項,則令options=。變量:x,fval = fminbnd()返回解x處目標函數(shù)的值x,fval,exitflag = fminbnd()由條件。x,fval,exitflag,output =

20、 fminbn d()返回exitflag值描述fminbnd函數(shù)的退返回包含優(yōu)化信息的結構輸由函數(shù)的輸入變量在表 9-7中進行描述,輸生變量在表 9-8中描述。與fminbn d函數(shù)相關的細節(jié)內(nèi)容包含在 fun,options,exitflag和output等參數(shù)中,如表9-10所不。表9-10參數(shù)描述表參數(shù)描述fun需要最小化的目標函數(shù)。fun函數(shù)需要輸入標量參數(shù)x,返回x處的目標函數(shù)標量值f0可以將fun函數(shù)指定為命令行,如x = fminbnd(inline('sin(x*x)'),xO)M文件、內(nèi)部函數(shù)或 MEX同樣,fun參數(shù)可以是一個包含函數(shù)名的字符串。對應的函數(shù)

21、可以是文件。若fun='myfun',則M文件函數(shù)必須右下面的形式。function f = myfun(x)f = .%計算x處的函數(shù)值。options優(yōu)化參數(shù)選項。你可以用optimset函數(shù)設置或改變這些參數(shù)的值。options參數(shù)有以下幾個選項:Display-顯示的水平。選擇off'不顯不輸出;選擇 iter',顯示每 分迭代過程的輸出;選擇final',顯示最終結果。MaxFunEvals -函數(shù)評價的最大允許次數(shù)。MaxIter -最大允許迭代次數(shù)。ToIX - x處的終止容限。exitflag描述退出條件:>0表示目標函數(shù)收斂于解

22、x處。0表示已經(jīng)達到函數(shù)評價或迭代的最大次數(shù)。<0表示目標函數(shù)不收斂。output該參數(shù)包含卜列優(yōu)化信息:-迭代次數(shù)。-所采用的算法。-函數(shù)評價次數(shù)。算法:fminbnd是一個M文件。具算法基于黃金分割法和二次插值法。文獻1中給生了實現(xiàn)同樣算法的 Fortran程序。局限性:1?目標函數(shù)必須是連續(xù)的。2. fminbnd函數(shù)可能只給由局部最優(yōu)解。3. 當問題的解位于區(qū)間邊界上時,fminbnd函數(shù)的收斂速度常常很慢。此時 ,fmincon函數(shù)的計算速度更快,計算精度更高。4. fminbnd函數(shù)只用于實數(shù)變量。參見:fmin search, fmincon, fminunc, optim

23、set, i nli ne文獻:1 Forsythe, ., . Malcolm, and . Moler, Computer Methods for Mathema ticalComputations, Prentice Hall, 1976.9.2.1.3應用實例例一在區(qū)間(0, 2n)上求函數(shù)sin(x)的最小值:x = fminbn d(si n,0,2*pi)所以區(qū)間(0, 2 n)上函數(shù)sin(x)的最小值點位于 乂=處最小值處的函數(shù)值為:y = sin(x)y =磁盤中該問題的M文件名為例三對邊長為3m的正方形鐵板,在四個角處剪去相等的正方形以制成方形無蓋水槽,問如何剪法使水槽的

24、容積最大假設剪去的正方形的邊長為x,則水槽的容積為f(x) = (3-2x)2x現(xiàn)在要求在區(qū)間(0,)上確定一個X,使最大化。因為優(yōu)化工具箱中要求目標函數(shù)最小化,所以需要對目標函數(shù)進行轉換,即要求.最小化首先編寫M文件:fun cti on f = myfun(x)f = -(3-2*x). A2 * x;然后調用fminbnd函數(shù)(磁盤中M文件名為:x = fmi nbn d(opt21_3o,0,得到問題的解:即剪掉的正方形的邊長為 0.5m時水槽的容積最大 水槽的最大容積計算:y = optim2(x)y =所以水槽的最大容積為 2.0000m 3。9.2.2線性規(guī)劃9.2.2.1 基本

25、數(shù)學原理線性規(guī)劃是處理線性目標函數(shù)和線性約束的一種較為成熟的方法,目前已經(jīng)廣泛應用于軍事、經(jīng)濟、工業(yè)、農(nóng)業(yè)、教育、商業(yè)和社會科學等許多方面。線性規(guī)劃問題的標準形式是:111 111 帆=+* +"ii 兀 i + "12 "+,+ "1"兀"=b“2可 + ”22*2。2 沁” = 2+嗎”2*2 + +曲忌,一片 nonminz =x cjxj/二 1nXauXJ j -lxynoj = i2 /寫成矩陣形式為:min z - CXAX = bx>0其中,0為n維列向量線性規(guī)劃的標準形式要求目標函數(shù)最小化,約束條件取等式,變量

26、非負。不符合這幾個條件的線性模型要首先轉化成標準形。線性規(guī)劃的求解方法主要是單純形法(Simple Method ),該法由Dantzig于1947年提由,以后經(jīng)過多次改進。單純形法是一種迭代算法,它從所有基本可行解的一個較小部分中通過迭代過程選曲最優(yōu)解。其迭代過程的一般描述為:1 ?將線性規(guī)劃化為典范形式,從而可以得到一個初始基本可行解x(0)(初始頂點),將它作為迭代過程的生發(fā)點,其目標值為z(x(0) o2 ?尋找一個基本可行解 x,使z(x)< z(x (0)o方法是通過消去法將產(chǎn)生x(0)的典范形式化為產(chǎn)生 x的典范形式。3?繼續(xù)尋找較好的基本可行解x,x,使目標函數(shù)值不斷改進

27、,即 z(x),z(x)>z(x)。當某個基本可行解再也不能被其它基本可行解改進時,它就是所求的最優(yōu)解。Matlab 優(yōu)化工具箱中采用的是投影法,它是單純形法的一種變種。9.2.2.2 相關函數(shù)介紹lin prog 函數(shù)功能:求解線性規(guī)劃問題。數(shù)學模型:Aeq * x = beqlh<r<其中f, x,b, beq, lb和ub為向量,A和Aeq為矩陣語法:x = lin prog(f,A,b,Aeq,beq)x = lin prog(f,A,b,Aeq,beq,lb,ub)x = lin prog(f,A,b,Aeq,beq,lb,ub,xO)x = lin prog(f,

28、A,b,Aeq,beq,lb,ub,xO,opti ons)x,fval = lin prog(.)x,fval,exitflag = lin prog(.)x,fval,exitflag,output = lin prog(.)x,fval,exitflag,output,lambda = lin prog()描述:x = linprog(f,A,b)求解問題min f*x ,約束條件為 A*x <= b。x = lin prog(f,A,b,Aeq,beq)求解上面的問題,但增加等式約束,即Aeq*x=beq。若沒有不等式存在,則令A=、b=。定義設計變量x的下界lb和上界ub,使x

29、 = linprog(f,A,b,Aeq,beq,lb,ub)得x始終在該范圍內(nèi)。若沒有等式約束,令Aeq=、beq=。x = linprog(f,A,b,Aeq,beq,lb,ub,xO)設置初值為xO。該選項只適用于中型問題,缺省時大型算法將忽略初值。用options指定的優(yōu)化參數(shù)x = linprog(f,A,b,Aeq,beq,lb,ub,xO,options)進行最小化。x,fval = linprog()返回解x處的目標函數(shù)值fvabx,lambda,exitflag = linprog()返回exitflag值,描述函數(shù)計算的退返回包含優(yōu)化信息的輸生變將解x處的拉格朗日乘出條件。

30、x,lambda,exitflag,output = lin prog(.)量 output。x,fval,exitflag,output,lambda = linprog(.)子返回到lambda參數(shù)中。變量:lambda參數(shù)lambda參數(shù)是解x處的拉格朗日乘子。它有以下一些屬性:- lambda的下界。- lambda的上界。- lambda的線性不等式。- lambda的線性等式。其它參數(shù)意義同前。算法:大型優(yōu)化算法大型優(yōu)化算法米用的是 LIPSOL法,該法在進行迭代計算之前首先要進行一系列的預處理。中型優(yōu)化算法linprog函數(shù)使用的是投影法,就象 quadprog函數(shù)的算法一樣。l

31、inprog函數(shù)使用的是一種活動集方法,是線性規(guī)劃中單純形法的變種。它通過求解另一個線性規(guī)劃問題來找到初始可行解。診斷:大型優(yōu)化問題算法的第一步涉及到一些約束條件的預處理問題。有些問題可能導致linprog函數(shù)退由,并顯示不可行的信息。在本例中,exitflag參數(shù)將被設為負值以表示優(yōu)化失敗。若Aeq參數(shù)中某行的所有元素都為零,但Beq參數(shù)中對應的元素不為零,則顯示以下退由信息:Exit ing due to in feasibility: an all zero row in the con strain t matrix does not have a zero in corresp on

32、ding right hand size ent ry-若x的某一個元素沒在界內(nèi),則給由以下退由信息:Exit ing due to in feasibility: objective f*x is unboun ded belo w.若Aeq參數(shù)的某一行中只有一個非零值,則x中的相關值稱為奇異變量。這 里,x中該成分的值可以用 Aeq和Beq算得。若算得的值與另一個約束條件相矛盾,則給由以下退由信息:Exit ing due to in feasibility: Sin gleton variables in equality con stra ints are not feasible.若

33、奇異變量可以求解但其解超由上界或下界,則給由以下退由信息:Exit ing due to in feasibility: sin gleton variables in the equal ity con stra ints are not with in boun ds.9.223應用實例例二生產(chǎn)決策問題某廠生產(chǎn)甲乙兩種產(chǎn)品,已知制成一噸產(chǎn)品甲需用資源A 3噸,資源B 4m3;制成一噸產(chǎn)品乙需用資源 A 2噸,資源B 6mi,資源C 7個單位。若一噸產(chǎn)品甲和乙的經(jīng)濟價值分別為7萬元和5萬元,三種資源的限制量分別為90噸、200需和210個單位, 試決定應生產(chǎn)這兩種產(chǎn)品各多少噸才能使創(chuàng)造的總經(jīng)

34、濟價值最高令生產(chǎn)產(chǎn)品甲的數(shù)量為 Xi,生產(chǎn)產(chǎn)品乙的數(shù)量為 X2。由題意可以建立下面的模 型:max = 7 叫 +5 兀 23耳+ 2勺< 90* 4"十 6 勺 < 2007 北 2 <210 r >0,八2 >0 該模型中要求目標函數(shù)最大化,需要按照Matlab的要求進行轉換,即目標函數(shù)為IninZ = 7 曲一5 工 2首先輸入下列系數(shù):f =卜 7; -5;A = 3 24 60 7;b = 90; 200; 210;lb = zeros(2,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin

35、 prog(f,A,b,lb)x = fval = exitflag =1output =iterations: 5cgiteratio ns: 0 algorithm: 'lips ol' lambda =ineqlin: 3x1 double eqlin: 0x1 doubleupper: 2x1 doublelower: 2x1 double由上可知,生產(chǎn)甲種產(chǎn)品 14噸、乙種產(chǎn)品24噸可使創(chuàng)建的總經(jīng)濟價值最高。最高經(jīng)濟價值為218萬元。exitflag=1表示過程正常收斂于解x處。磁盤中本問題的M文件為例三投資問題某單位有一批資金用于四個工程項目的投資,用于各工程項目時

36、所得到得凈收益(投入資金的百分比)如下表所示:表9-11工程項目收益表工程項目ABCD收益(%1510812由于某種原因,決定用于項目A的投資不大于其它各項投資之和;而用于項目 B和C的投資要大于項目 D的投資。試確定使該單位收益最大的投資分配方案。用Xi、X2、X3和X4分別代表用于項目 A、B、C和D的投資百分數(shù),由于各項目的投資百分數(shù)之和必須等于 100%所以Xl+X2+X3+X4 = 1據(jù)題意,可以建立下面的數(shù)學模型:fmaxz = 0.15X1 +0.1八 2 +0,08八3 +0.12x4Xj _X 3 _X4 < 0X2+X3 -X4=1門+X2 +X3將它轉換為標準形式&

37、#39;miiiZ = -0J5x 1 -OJx2 -0.08X, xj -0.12X4Xj _X3 -X4 <0_X2-X3+X4 <0叼 + 兀 2 + *3 +A*4 =1弓 20j = 12,4然后進行求解:首先輸入下列系數(shù):A = 1 -1 -1 -10 -1-1 1;b = 0; 0;Aeq=1 1 1 1;beq=1;lb = zeros(4,1);然后調用linprog函數(shù):X,fval,eXitflag,output,lambda = lin prog(f,A,b,Aeq,beq,lb) x = fval =eXitflag =可見,四個項目的投資百分數(shù)分別為、和

38、時可使該單位獲得最大的收益。最大收益為13%過程正常收斂。磁盤中本問題的M文件為。例四工件加工任務分配問題某車間有兩臺機床甲和乙,可用于加工三種工件。假定這兩臺機床的可用臺時數(shù)分別為700和800,三種工件的數(shù)量分別為 300、500和400,且已知用三種不同機床加工單位數(shù)量的不同工件所需的臺時數(shù)和加工費用(如表所示),問怎樣分配機床的加工任務,才能既滿足加工工件的要求,又使總加工費用最低表9-12機床加工情況表機床類型單位工作所需加工臺時數(shù)單位工件的加工費用可用臺時數(shù)工件1工件2工件3工件1工件2工件3甲13910700乙11128800設在甲機床上加工工件1、2和3的數(shù)量分別為 Xi、X2

39、和X3,在乙機床上加工工件1、2和3的數(shù)量分別為 X4、X5和X6。根據(jù)三種工種的數(shù)量限制,有X1+X4=300 (對工件 1)X2+X5=500 (對工件 2)X3+X6=400 (對工件 3)再根據(jù)機床甲和乙的可用總臺時限制,可以得到其它約束條件。以總加工費用最少為目標函數(shù),組合約束條件,可以得到下面的數(shù)學模型:niinz = 13-Vj + 9 兀 2 +1 兀 3 +11 尤 4 +12 兀氣+8工6人+工=300*2 + 尤 5 =500工 3 +*6 = 40004可十1.1上2十無3蘭7000JX4 4 L2X5 4 L3800xj x oj = 12 6首先輸入下列系數(shù):f =

40、 13;9;10;11;12;8;A = 1 0 0 00 0 0 ;b = 700; 800;Aeq=1 0 0 1 0 00 1 0 0 1 00 0 1 0 0 1;beq=300 500 400;lb = zeros(6,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin prog(f,A,b,Aeq,beq,lb); x = fval =+004 exitflag =1可見,在甲機床上加工500個工件2,在乙機床上加工 300個工件1、加工400個工件3可在滿足條件的情況下使總加工費最小。最小費用為11000元。收斂正常磁盤中本問

41、題的M文件為例五裁料問題在某建筑工程施工中需要制作10000套鋼筋,每套鋼筋由 2.9m、2.1m和1.5m三種 不同長度的鋼筋各一根組成,它們的直徑和材質不同。目前在市場上采購到的同類鋼筋的長度每根均為7.4m,問應購進多少根7.4m長的鋼筋才能滿足工程的需要首先分析共有多少種不同的套裁方法,該問題的可能材料方案如表9-13所示。表9-13材料方案表下料長度裁料方案編號i(m)12345678211100000210321010130234料頭長度(m)0設以Xi(i=1,2,呂)表示按第i種裁料方案下料的原材料數(shù)量,則可得該何題的數(shù)學模型為:111111A =兀+工2 +工3 +工4 +工

42、§ +兀6 +兀7 +兀82尤1十工2十*3十=10000<2*2 + 尤 3 + 孑工 5 + 2 兀 6 + *7 = 1Xj +X3 + 3X4 + 2X6 + 3X7 + 4X8 =10000首先輸入下列系數(shù):f=1;1;1;1;1;1;1;1;Aeq=2 0 0 0 0 0 0 00 2 1 0 3 2 1 01 0 1 3 0 2 3 4;beq=10000 10000 10000;lb = zeros(8,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin prog(f,口,口,Aeq,beq,lb); x =

43、+003 *fval = +003所以最節(jié)省的情況需要 9167根7.4m長的鋼筋,其中第一種方案使用5000根,第 五種方案使用1667根,第六種方案使用 2500根。磁盤中本問題的M文件為。例六工作人員計劃安排問題8個小時(包括輪流用某晝夜服務的公共交通系統(tǒng)每天各時間段(每4小時為一個時間段)所需的值班人數(shù)如表所示,這些值班人員在某一時段開始上班后要連續(xù)工作 膳時間),問該公交系統(tǒng)至少需要多少名工作人員才能滿足值班的需要表9-14各時段所需值班人數(shù)表班次時間段所需人數(shù)16:00 10:0060210:00 14:0070314:00 18:0060418:00 22:0050522:0C

44、2:002062:00 6:0030設Xi為第i個時段開始上班的人員數(shù),據(jù)題意建立下面的數(shù)學模型v1.0可編輯可修改lUinZ=龍+龍?十*3 +工彳+工§ +尤6>60Xi+X2 >70X2 +X3 >60'X3+X4>50H+E >20X5 +X6 >30弓 n oj = 12 O需要對前面六個約束條件進行形式變換,是不等式為非正不等式。只需要在不等式兩側取負即可。首先輸入下列系數(shù):f=i; i; i; i; i; i;A=-1 0 0 0 0 -1-1 -1 0 0 0 00 -1-1 0 0 00 0 -1-1 0 00 0 0 -

45、1 -1 0 0 0 0 0 -1 -1;b=-60;-70;-60;-50;-20;-30;lb = zeros(6,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin prog(f,A,b,lb);X =43專業(yè)知識分享v1.0可編輯可修改fval =exitflag =1可見,只要六個時段分別安排42人、28人、35人、15人、10人和20人就可以滿足值班的需要。共計 150人。計算收斂。磁盤中本問題的M文件為。例七廠址選擇問題考慮A、B C三地,每地都生產(chǎn)一定數(shù)量的原料,也消耗一定數(shù)量的產(chǎn)品(見表 9 -15 )。已知制 成每噸產(chǎn)品

46、需 3噸原料,各地之間的距離為:A-B: 150km A-C : 100km B-C : 200km假定每萬噸原料運輸1km的運價是5000元,每萬噸產(chǎn)品運輸 1km的運價 是6000元。由于地區(qū)條件的差異,在不 同地點設廠的生產(chǎn)費用也不同。問究竟在哪些地方設廠,規(guī)模多大,才能使總費用最小另外,由于其它條件限制,在B處建廠的規(guī)模(生產(chǎn)的產(chǎn)品數(shù)量)不能超過5萬噸。表9-15 A、B C三地出產(chǎn)原料、消耗產(chǎn)品情況表地點年產(chǎn)原料(萬噸)年銷產(chǎn)品(萬噸)生產(chǎn)費用(萬元/萬噸)A207150B1613120beq=7;13;47專業(yè)知識分享C240100令Xj為由i地運到j地的原料數(shù)量(萬噸),yj為由

47、i地運往j地的產(chǎn)品數(shù)量(萬 噸),i,j=1,2,3 (分別對應 A B、C三地)。根據(jù)題意,可以建立問題的數(shù)學模型(其中目標函數(shù)包括原材料運輸費、產(chǎn)品運 輸費和生產(chǎn)費):muiZ = 75X|2 + 7 丸。j + 50 兀3 + 50Xj +100八*23 + 100-A32+ 150州240八,2 + 210A21 +120八2 + 160 乃 1 + 220 日勺 23” +3 兒 2 十可 2+可 3 - ” 2-工 31 5 203>S1 +3 比 2 -x12-x21 +*23 -廠 2 <163A31 + 3A32 一工 1? 一工 23+ 龍 31 十工 32 2

48、4A11 + 乃 1+J 31 =7J 12+ $3 少=13)21 + 丁 22 S5Aij n = 12 ±,去 jSij AO=123;J 1?2J首先輸入下列系數(shù):f = 75;75;50;50;100;100;150;240;210;120;160;220;A=1 -1 1 -1 0 0 3 3 0 0 0 0-1 1 0 0 1 -1 0 0 3 3 0 00 0 -1 1 -1 1 0 0 0 0 3 30 0 0 0 0 0 0 0 1 1 0 0;b=20;16;24;5;Aeq=0 0 0 0 0 0 1 0 1 0 1 00 0 0 0 0 0 0 1 0 1

49、0 1;lb = zeros(12,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin prog(f,A,b,Aeq,beq,lb);fval =+003exitflag =1要使總費用最小,需要 B地向A地運送1萬噸,A、B、C三地的建廠規(guī)模分別為 7萬噸、5萬噸和8萬噸。最小總費用為 3485元。磁盤中本問題的M文件為。例八確定職工編制問題beq=7;13;v1.0可編輯可修改某廠每日八小時的產(chǎn)量不低于 1800件。為了進行質量控制,計劃聘請兩種不同水平的檢驗員。一級檢驗員的標準為:速度 25件/小時,正確率98%,計時工資4元/小 時

50、;二級檢驗員的標準為:速度 15件/小時,正確率95%,計時工資3元/小時。檢驗 員每錯檢一次,工廠要損失 2元?,F(xiàn)有可供廠方聘請的檢驗員人數(shù)為一級 8人和二級1 0人。為使總檢驗費用最省,該工廠應聘一級、二級檢驗員各多少名設需要一級和二級檢驗員的人數(shù)分別為 Xi名和X2名,由題意可以建立下面的模型:minZ = 40A1 +36A2*1 <8*X2<105x 1+3X2 >45兀 1 >0,X2 >0利用Matlab進行求解之前需要將第三個約束條件進行轉換,兩邊取負以后得到一 5*13 勺 Z5首先輸入下列系數(shù):f = 40;36;A=1 00 1-5 -3;b

51、=8;10;-45;lb = zeros(2,1);然后調用linprog函數(shù):x,fval,exitflag,output,lambda = lin prog(f,A,b,lb); fval =exitflag =1可見,招聘一級檢驗員 8名、二級檢驗員2名可使總檢驗費最省,約為元。計算收 斂磁盤中本問題的M文件為。例九生產(chǎn)計劃的最優(yōu)化問題某工廠生產(chǎn) A和B兩種產(chǎn)品,它們需要經(jīng)過三種設備的加工,其工時如表9-16所 示。設備一、二和三每天可使用的時間分別不超過12、10和8小時。產(chǎn)品A和B的利 潤隨市場的需求有所波動,如果預測未來某個時期內(nèi) A和B的利潤分別為4和3千元/噸,問在那個時期內(nèi),

52、每天應安排產(chǎn)品A、B各多少噸,才能使工廠獲利最大表9-16生產(chǎn)產(chǎn)品工時表產(chǎn)口仃設備一設備二設備三A (小時/噸)334B (小時/噸)432設備每天最多可工作時數(shù)(小時)12108設每天應安排生產(chǎn)產(chǎn)品 A和B分別為X1噸和X2噸,由題意建立下面的數(shù)學模型 :maxZ = 4 兀+3*2巧+4勺< 12<3X1+3八2<W4人!+2八2 <8 八!>0, X2>0 k 首先轉換目標函數(shù)為標準形式:min?=3八2輸入下列系數(shù):f =、4; -3;A=3 43 34 2;b=12;10;8;lb = zeros(2,1);然后調用linprog函數(shù):x,fval

53、,exitflag,output,lambda = lin prog(f,A,b,lb); x = fval =所以,每天生產(chǎn) A產(chǎn)品噸、B產(chǎn)品噸可使工廠獲得最大利潤。磁盤中本問題的 M文件為。9.2.3無約束非線性規(guī)劃問題9.231基本數(shù)學原理無約束最優(yōu)化問題在實際應用中也比較常見,如工程中常見的參數(shù)反演問題。另外,許多有約束最優(yōu)化問題可以轉化為無約束最優(yōu)化問題進行求解。求解無約束最優(yōu)化問題的方法主要有兩類,即直接搜索法(Search method )和梯度法(Gradient method )。直接搜索法適用于目標函數(shù)高度非線性,沒有導數(shù)或導數(shù)很難計算的情況,由于實際工程中很多問題都是非線性的,直接搜索法不失為一種有效的解決辦法。常用的直接搜索法為單純形法,此外還有Hooke-Jeeves搜索法、Pavell共輾方向法等,其缺點是收斂速度慢。在函數(shù)的導數(shù)可求的情

溫馨提示

  • 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

提交評論