定義:如果目標函式或約束條件中至少有乙個是非線性函式時的最優化問題就叫做非線性規劃問題。
一般形式:
min f ( x )
gi( x ) ≥ 0 , i = 1,2,…,m;
hj( x ) ≥ 0 , j = 1,2,…,m;
其中 x = ( x1 , x2 ,…, xn )t ∈ en ,f ,gi,hj 是定義在 en 上的實值函式。
其他情況:求目標函式的最大值或約束條件為小於等於零的情況,都可通過取其相反數化為上述一般形式。
解的定義:
把滿足問題一般形式中條件的解 x 稱為可行解(或可行點),所有可行點的集合稱為可行集(或可行域)記為 d ,即 d =
設 x* ∈ d ,若存在 σ>0 ,使得對一切 x∈ d 且 || x - x* ||<σ,都有 f ( x* ) < f ( x ),則 x* 是 f ( x ) 在d上的區域性極小值點(區域性最優解)。特別地當 x ≠ x* 時,若 f ( x* ) < f ( x ) ,則稱x*是 f ( x ) 在d上的嚴格區域性極小值點(嚴格區域性最優解)。
設 x* ∈ d ,對任意的 x ∈ d ,都有 f ( x* ) < f ( x ) ,則稱x是f(x)在d上的全域性極小值點(全域性最優解)。特別地當 x ≠ x* 時,若 f ( x* ) < f ( x ) ,則稱x是 f ( x ) 在d上的嚴格全域性極小值點(嚴格全域性最優解)。
罰函式法
罰函式法基本思想是通過構造罰函式把約束問題轉化為一系列無約束最優化問題,進而用無約束最優化方法去求解.這類方法稱為序列無約束最小化方法.簡稱為sumt法.
sumt外點法
對於一般的非線性規劃,可設:t ( x , m ) = f ( x ) + m ∑ [ min ( 0 , gi ( x ) ) ]2 + m ∑ [ hj ( x ) ]2,即將非線性優化問題轉化為無約束問題 min t ( x , m )。
其中 t ( x , m ) 稱為罰函式,m 稱為罰因子,帶 m 的項稱為罰項,這裡的罰函式只對不滿足約束條件的點實行懲罰:當 x ∈ d 時,滿足各 gi( x ) ≥ 0 , hj( x ) ≥ 0 ,故罰項 = 0,不受懲罰。當 x ∉ d 時,必有 的約束條件,故罰項 > 0,要受懲罰。
罰函式法的缺點是:每個近似最優解 xk 往往不是容許解,而只能近似滿足約束,在實際問題中這種結果可能不能使用;在解一系列無約束問題中,計算量太大,特別是隨著 mk 的增大,可能導致錯誤.sumt內點法
設集合d0 = ≠ 空集,d0 是可行域內所有嚴格內點的集合。
構造障礙函式 i ( x , r ) = f ( x ) + r∑ lngi ( x ) ,其中 r∑ lngi ( x ) 為障礙項,r 為障礙因子,這樣問題就轉化成一系列求極值問題。
近似規劃法
近似規劃法的基本思想:將目標函式和約束條件近似為線性函式,並對變數的取值範圍加以限制,從而得到乙個近似線性規劃問題,再用單純形法求解之,把其符合原始條件的最優解作為解的近似.每得到乙個近似解後,都從這點出發,重複以上步驟,這樣,通過求解一系列線性規劃問題,產生乙個由線性規劃最優解組成的序列,經驗表明,這樣的序列往往收斂於非線性規劃問題的解。
演算法步驟:
給定初始可行點 x1 = ,步長限制 σj
1 ( j = 1,…,n ),步長縮小係數 β ∈ ( 0 , 1 ),允許誤差 ε ,令k=1;
在點 xk 處,將 f ( x ),gi( x ),hj( x ) 按泰勒級數展開並取一階近似,得到近似線性規劃問題:
min f ( x ) ≈ f ( xk ) + ▽ f ( xk )t ( x - xk )
gi( x ) ≈ gi ( xk ) + ▽ gi ( xk )t ( x - xk ) ≥ 0
hj( x ) ≈ hj ( xk ) + ▽ hj ( xk )t ( x - xk ) = 0
在上述近似線性規劃問題的基礎上增加一組限制步長的線性約束條件。因為線性近似通常只在展開點附近近似程度較高,故需要對變數的取值範圍加以限制,所增加的約束條件是:| xj - xj
k | ≤ σj
k求解該線性規劃問題,得到最優解 ;
檢驗 xk+1 點對原約束是否可行。若對原約束可行,則轉步驟5;否則,縮小步長限制,令 σj
k = β σj
k ,返回步驟3,重解當前的線性規劃問題。
判斷精度:若 | σj
k | < ε,則點 xk+1 為近似最優解;否則,令 σj
k+1 = σj
k ,k=k+1,返回步驟2。
二次規劃
標準型為:
min z = 1/2xthx + ct x
ax ≤ b,aeq * x = beq,vlb ≤ x ≤vub
常用格式如下:
1. x = quadprog ( h, c, a, b);
2. x = quadprog ( h, c, a, b, aeq, beq);
3. x = quadprog ( h, c, a, b, aeq, beq, vlb, vub);
4. x = quadprog ( h, c, a, b, aeq, beq, vlb, vub, x0);
5. x = quadprog ( h, c, a, b, aeq, beq, vlb, vub, x0, options);
6. [x, fval] = quadprog (...) ;
7. [x, fval, exitflag] = quadprog (...);
8. [x, fval, exitflag, output] = quadprog (...);
一般非線性規劃
標準型為:
min f ( x )
ax ≤ b,aeq * x = beq,g (x) ≤ 0,ceq ( x )= 0,vlb ≤ x ≤vub
首先建立m檔案fun.m,定義目標函式 f (x) ,若約束條件中有非線性約束:g(x) 或 ceq ( x ) = 0,則建立m檔案nonlcon.m定義函式 g (x ) 與 ceq ( x )。
常用格式如下:
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] = fmincon(...)
7. [x, fval, exitflag] = fmincon(...)
8. [x, fval, exitflag, output] = fmincon(...)
fmincon函式提供了大型優化演算法和中型優化演算法。預設時,若在fun函式中提供了梯度(options引數的gradobj設定為』on』),並且只有上下界存在或只有等式約束,fmincon函式將選擇大型演算法。當既有等式約束又有梯度約束時,使用中型演算法。fmincon函式的中型演算法使用的是序列二次規劃法。在每一步迭代中求解二次規劃子問題,並用bfgs法更新拉格朗日hessian矩陣。
fmincon函式可能會給出區域性最優解,這與初值x0的選取有關。
數學建模 非線性規劃
2014年4月17日 規劃方法是建模中的常用手段。那麼顯然要人有我優了,非線性規劃就是乙個不錯的加分點。下面介紹幾種常用的非線性規劃技巧 這裡要說一下無約束法,規劃問題的困難在於求解,特別是約束比較奇怪的。於是在比賽中把有約束的規劃問題轉換成無約束的規劃問題就成了乙個大大的加分點。另外dfp之類的包...
數學建模 非線性規劃
如果目標函式或約束條件中包含非線性函式,則稱這種規劃問題為非線性規劃問題,簡寫為np。二次規劃是非線性規劃中的特例,由於二次規劃有通用的解法,所以單獨討論,而其他的非線性規劃問題沒有通用的解法。在matlab中,非線性規劃的數學模型可以寫為下面的形式 mi nf x st.ax b aeq x be...
數學建模之非線性規劃
如果目標函式或約束條件中包含非線性函式,就稱這種規劃問題為非線性規劃問 題。非線性規劃目前還沒有適於各種問題的一般演算法,各個方法都有自己特定的適用範圍。一般形式 matlab 中非線性規劃的數學模型寫成以下形式 其中 f x 是標量函式,a,b,aeq,beq是相應維數的矩陣和向量,c x ceq...