一、非線性規(guī)劃簡介
通過分析問題判斷是用線性規(guī)劃還是非線性規(guī)劃
- 線性規(guī)劃:模型中所有的變量都是一次方
- 非線性規(guī)劃:模型中至少一個變量是非線性
非線性規(guī)劃在形式上與線性規(guī)劃非常類似,但在數(shù)學(xué)上求解卻困難很多
- 線性規(guī)劃有通用的求解準確解的方法(單純形法),一定能求得最優(yōu)解
- 非線性規(guī)劃在數(shù)學(xué)上沒有適合各種問題的通用解法求解嚴格的數(shù)值解
- 但對數(shù)學(xué)建模來說,入門是掌握MATLAB的fmincon函數(shù)求近似解即可
二、適用賽題
本質(zhì)上和線性規(guī)劃一樣,適用于最優(yōu)化,求“怎樣安排”“最大/小”“最優(yōu)”等等。常見收益率、病毒傳播率、經(jīng)濟增長率等涉及變量比值的規(guī)劃問題。
三、模型流程
這里的模型流程是和線性規(guī)劃一樣的。
四、流程解析
1.條件假設(shè)
這個需要具體題目具體分析,有些題目通過一些前提條件假設(shè)可以很好地簡化題目。
2.提取要素
①決策變量
就是提取出題目中的所有變量。
②目標函數(shù)
我們需要求得的值。
③約束條件
通過題目提取出各個變量的范圍。
3.調(diào)用函數(shù)
調(diào)用MATLAB自帶的fmincon函數(shù)
[x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon)
fun | 單獨腳本文件里定義的目標函數(shù)(或者寫在代碼文件末尾,調(diào)用時需加上@) |
x0 | 決策變量的初始值(影響最終結(jié)果) |
A, b | 線性約束的不等式變量系數(shù)矩陣和常數(shù)項矩陣(≤或<) |
Aeq, beq | 線性約束的等式變量系數(shù)矩陣和常數(shù)項矩陣 |
lb, ub | 決策變量的最小取值和最大取值 |
nonlcon | 非線性約束,包括不等式和等式 |
這里對參數(shù)講解
[x, fval] = fmincon(@fun, x0, A, b, Aeq, beq, vlb);
這是一個調(diào)用fmincon函數(shù)的代碼,其中@fun代表調(diào)用本文件中定義的函數(shù),一般函數(shù)寫在文件最后面。x0是一個初始值,可以通過蒙特卡羅法求一個近似解作為初始值。后面的A, b, Aeq, beq, vlb都是和線性規(guī)劃一樣的,因為沒有最大取值和非線性約束就不用寫。
注意:如果有非線性約束,寫法和@fun是一樣的,不過格式有點區(qū)別。
比如現(xiàn)在有非線性約束條件:
x12 - x2 + x32 ≥ 0
x1 + x22 +?x32 ≤ 20
-x1 - x22 + 2 = 0
x2 + 2x32 = 3
那么nonlcon應(yīng)該這樣寫
function [g, h] = fun2(x)
g = [-x(1)^2 + x(2) - x(3)^2;
x(1) + x(2)^2 +?x(2)^2 - 20];
h = [-x(1) - x(2)^2 + 2;
x(2) + 2*x(2)^2 - 3];
end
可以看到不等式都是標準型且右邊都是和0比較了。
具體情況可以去MATLAB官網(wǎng)查詢。文章來源:http://www.zghlxwxcb.cn/news/detail-826842.html
最終解出近似解。文章來源地址http://www.zghlxwxcb.cn/news/detail-826842.html
到了這里,關(guān)于數(shù)學(xué)建模【非線性規(guī)劃】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!