線性規(guī)劃--北太天元學(xué)習(xí)15
我們?cè)诒碧煸飳W(xué)習(xí)了線性方程組的求解,實(shí)際上我們已經(jīng)做好了線性規(guī)劃的準(zhǔn)備。 線性規(guī)劃是高中的一部分,線性規(guī)劃的內(nèi)容請(qǐng)大家看課本內(nèi)容。 簡單的說,就是我們要求變量 x_1 , x_2,? ... , x_n 的某個(gè)值,使得目標(biāo)函數(shù) f(x_1, ... , x_n) = c_1 x_1 + ... + c_n x_n 取的最小值, 其中 c_1, ..., c_n 是給定的常數(shù), x_1, ... , x_n 同時(shí)還要滿足約束
r_{l_1} <= a_{1,1} x_1 + ... + a_{1,n} x_n <= r_{u_1}
...
r_{l_m} <=a_{m,1} x_1 + ... + a_{m,n} x_n <= r_{u_m}
和???? c_{u_i} <= x_i <= c_{u_i} , i = 1, ... , n .
有時(shí)候還要加上某些 x_i 是整數(shù)的額外約束。

我們還是以一個(gè)具體的例子來講

在高中的時(shí)候,我們僅僅學(xué)習(xí)了兩個(gè)變量的情形,此時(shí)可以用畫圖法來求解,但是即使只有兩個(gè)變量,求解也不是一個(gè)容易的事情,特別還要求所求的變量取整數(shù)的情形。我用北太天元演示一下畫圖法
在演示的過程中,我用了 area 畫圖,area的一個(gè)例子如下

具體的畫圖法求解線性規(guī)劃問題的內(nèi)容見視頻,整個(gè)過程是枯燥無味的,到了視頻的最后幾分鐘你會(huì)發(fā)現(xiàn)使用北太天元的插件,求解是那么的輕松,從而你可以把你的聰明智慧用在數(shù)學(xué)建模上,而是在枯燥無味的求解上。
附上最后求解該問題的北太天元腳本代碼:
load_plugin("optimization"); %加載插件
%設(shè)置求解參數(shù),可以不變
opts = struct();
opts.Display = 'off';
%線性規(guī)劃問題的目標(biāo)函數(shù) f = -80 x_{1} -120 x_{2} 用下面的 f = [-80, -120] 表示
f = [-80, -120];
% 兩個(gè)不等式約束
A = sparse([0.1 0.2; 2 1]);
rl = [];
ru = [90; 600];?
%自變量的上界和下界
cl = [0; 0]; %下界
cu = [inf, inf]; %上界, 對(duì)上界沒有約束
intcon = [1, 2]; %整數(shù) , 指明第1個(gè)和第2個(gè)變量只能取整數(shù)
%求解
[x, output] = intlinprog_hgs(f, intcon, A, rl, ru, cl, cu, opts)
% x 是目標(biāo)函數(shù)最小值點(diǎn)
% output.val 是目標(biāo)函數(shù)的最小值, 目標(biāo)函數(shù)的最小值也可以用f*x 獲得