在生活和工作中,人們對於同乙個問題往往會提出多個解決方案,並通過各方面的論證從中提取最佳方案。最優化方法就是專門研究如何從多個方案中科學合理地提取出最佳方案的科學。由於優化問題無所不在,目前最優化方法的應用和研究已經深入到了生產和科研的各個領域,如土木工程、機械工程、化學工程、運輸排程、生產控制、經濟規劃、經濟管理等,並取得了顯著的經濟效益和社會效益。
用最優化方法解決最優化問題的技術稱為最優化技術,它包含兩個方面的內容:
1) 建立數學模型即用數學語言來描述最優化問題。模型中的數學關係式反映了最優化問題所要達到的目標和各種約束條件。
2) 數學求解數學模型建好以後,選擇合理的最優化方法進行求解。
最優化方法的發展很快,現在已經包含有多個分支,如線性規劃、整數規劃、非線性規劃、動態規劃、多目標規劃等。
9.1 概述
利用matlab的優化工具箱,可以求解線性規劃、非線性規劃和多目標規劃問題。具體而言,包括線性、非線性最小化,最大最小化,二次規劃,半無限問題,線性、非線性方程(組)的求解,線性、非線性的最小二乘問題。另外,該工具箱還提供了線性、非線性最小化,方程求解,曲線擬合,二次規劃等問題中大型課題的求解方法,為優化方法在工程中的實際應用提供了更方便快捷的途徑。
9.1.1 優化工具箱中的函式
優化工具箱中的函式包括下面幾類:
1.最小化函式
表9-1 最小化函式表
2.方程求解函式
表9-2 方程求解函式表
3.最小二乘(曲線擬合)函式
表9-3 最小二乘函式表
4.實用函式
表9-4 實用函式表
5.大型方法的演示函式
表9-5 大型方法的演示函式表
6.中型方法的演示函式
表9-6 中型方法的演示函式表
9.1.3 引數設定
利用optimset函式,可以建立和編輯引數結構;利用optimget函式,可以獲得options優化引數。
● optimget函式
功能:獲得options優化引數。
語法:val = optimget(options,'param')
val = optimget(options,'param',default)
描述:val = optimget(options,'param') 返回優化引數options中指定的引數的值。只需要用引數開頭的字母來定義引數就行了。
val = optimget(options,'param',default) 若options結構引數中沒有定義指定引數,則返回預設值。注意,這種形式的函式主要用於其它優化函式。
舉例:1. 下面的命令行將顯示優化引數options返回到my_options結構中:
val = optimget(my_options,'display')
2. 下面的命令列返回顯示優化引數options到my_options結構中(就象前面的例子一樣),但如果顯示引數沒有定義,則返回值'final':
optnew = optimget(my_options,'display','final');
參見:optimset
● optimset函式
功能:建立或編輯優化選項引數結構。
語法:options = optimset('param1',value1,'param2',value2,...)
optimset
options = optimset
options = optimset(optimfun)
options = optimset(oldopts,'param1',value1,...)
options = optimset(oldopts,newopts)
描述:options = optimset('param1',value1,'param2',value2,...) 建立乙個稱為options的優化選項引數,其中指定的引數具有指定值。
所有未指定的引數都設定為空矩陣(將引數設定為表示當options傳遞給優化函式時給引數賦預設值)。賦值時只要輸入引數前面的字母就行了。
optimset函式沒有輸入輸出變數時,將顯示一張完整的帶有有效值的引數列表。
options = optimset (with no input arguments) 建立乙個選項結構options,其中所有的元素被設定為。
options = optimset(optimfun) 建立乙個含有所有引數名和與優化函式optimfun相關的預設值的選項結構options。
options = optimset(oldopts,'param1',value1,...) 建立乙個oldopts的拷貝,用指定的數值修改引數。
options = optimset(oldopts,newopts) 將已經存在的選項結構oldopts與新的選項結構newopts進行合併。newopts引數中的所有元素將覆蓋oldopts引數中的所有對應元素。
舉例: 1.下面的語句建立乙個稱為options的優化選項結構,其中顯示引數設為'iter',tolfun引數設定為1e-8:
options = optimset('display','iter','tolfun',1e-8)
2.下面的語句建立乙個稱為options的優化結構的拷貝,改變tolx引數的值,將新值儲存到optnew引數中:
optnew = optimset(options,'tolx',1e-4);
3.下面的語句返回options優化結構,其中包含所有的引數名和與fminbnd函式相關的預設值:
options = optimset('fminbnd')
4.若只希望看到fminbnd函式的預設值,只需要簡單地鍵入下面的語句就行了:
optimset fminbnd
或者輸入下面的命令,其效果與上面的相同:
optimset('fminbnd')
參見:optimget
9.1.4 模型輸入時需要注意的問題
使用優化工具箱時,由於優化函式要求目標函式和約束條件滿足一定的格式,所以需要使用者在進行模型輸入時注意以下幾個問題:
1. 目標函式最小化
優化函式fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax和lsqnonlin都要求目標函式最小化,如果優化問題要求目標函式最大化,可以通過使該目標函式的負值最小化即-f(x)最小化來實現。近似地,對於quadprog函式提供-h和-f,對於linprog函式提供-f。
2. 約束非正
優化工具箱要求非線性不等式約束的形式為ci(x)≤0,通過對不等式取負可以達到使大於零的約束形式變為小於零的不等式約束形式的目的,如ci(x)≥0形式的約束等價於- ci(x)≤0;ci(x)≥b形式的約束等價於- ci(x)+b≤0。
3. 避免使用全域性變數
9.1.5 @(函式控制代碼)函式
matlab6.0中可以用@函式進行函式呼叫。@函式返回指定matlab函式的控制代碼,其呼叫格式為:
handle = @function
利用@函式進行函式呼叫有下面幾點好處:
● 用控制代碼將乙個函式傳遞給另乙個函式;
● 減少定義函式的檔案個數;
● 改進重複操作;
● 保證函式計算的可靠性。
下面的例子為humps函式建立乙個函式控制代碼,並將它指定為fhandle變數。
fhandle = @humps;
同樣傳遞控制代碼給另乙個函式,也將傳遞所有變數。本例將剛剛建立的函式控制代碼傳遞給fminbnd函式,然後在區間[0.3,1]上進行最小化。
x = fminbnd (@humps, 0.3, 1)
x = 0.6370
9.2 最小化問題
9.2.1 單變數最小化
9.2.1.1 基本數學原理
本節討論只有乙個變數時的最小化問題,即一維搜尋問題。該問題在某些情況下可以直接用於求解實際問題,但大多數情況下它是作為多變數最優化方法的基礎在應用,因為進行多變數最優化要用到一維搜尋法。該問題的數學模型為:
其中,x,x1,和x2為標量,f(x)為函式,返回標量。
該問題的搜尋過程可用下式表達:
其中xk為本次迭代的值,d為搜尋方向,α為搜尋方向上的步長引數。所以一維搜尋就是要利用本次迭代的資訊來構造下次迭代的條件。
求解單變數最優化問題的方法有很多種,根據目標函式是否需要求導,可以分為兩類,即直接法和間接法。直接法不需要對目標函式進行求導,而間接法則需要用到目標函式的導數。
1.直接法
常用的一維直接法主要有消去法和近似法兩種。
(1)消去法該法利用單峰函式具有的消去性質進行反覆迭代,逐漸消去不包含極小點的區間,縮小搜尋區間,直到搜尋區間縮小到給定的允許精度為止。一種典型的消去法為**分割法(golden section search)。**分割法的基本思想是在單峰區間內適當插入兩點,將區間分為三段,然後通過比較這兩點函式值的大小來確定是刪去最左段還是最右段,或同時刪去左右兩段保留中間段。
重複該過程使區間無限縮小。插入點的位置放在區間的**分割點及其對稱點上,所以該法稱為**分割法。該法的優點是演算法簡單,效率較高,穩定性好。
基於MATLAB環境下實現最優化方法
阻尼牛頓法 1 優化設計法 優化設計 optimal design 是現代先進的設計方法,這種設計方法是把數學規劃理論與計算方法應用於實際設計中,按照預定的目標,借助計算機的運算尋求最優設計方案的有關引數,從而獲得最好的技術經濟效果。優化設計反映出人們對於設計規律這一客觀世界認識的深化。設計上的 最...
整合資源,實現效率最優化
課程資源是指形成課程的要素 與實施課程的基本條件。隱性課程資源一般是指以潛在的 教育的物質環境 精神氛圍等方式存在的對教育教學活動施加影響的課程資源,它包括教師 學生的生活經驗 內在特質 課堂互動資訊 師生的和諧關係及校園的文化氛圍等。隱性課程資源是一種潛在的 易被忽視但又有著巨大教育價值的資源。因...
最優化方法綜述
1.引論 1.1應用介紹 最優化理論與演算法是乙個重要的數學分支,它所研究的問題是討論在眾多的方案中什麼樣的方案最優以及怎樣找出最優方案。這類問題普遍存在。例如,工程設計中怎樣選擇設計引數,使得設計方案滿足設計要求,又能降低成本 資源分配中,怎樣分配有限資源,使得分配方案既能滿足各方面的基本要求,又...