我們常常需要用到線性規劃來幫助我們解決日常生活當中的實際問題,比如說你家裡有三個小孩abc,在家做飯突然發現沒有鹽,醬油和醋了,你三個小孩自告奮勇取購買,為了不打擊孩子的積極性,你決定讓乙個孩子負責一項食品的購買,假如知道了三個小孩分別購買每項食品的時間,如何使得總時間最小(指派問題)?可以看出線性規劃十分重要。
觀察約束條件發現約束條件分為三類,乙個是變數x1和x2之間線性約束即約束1和2以及3,另乙個是變數x1和x2最值的約束。總結得到標準的線性規劃如下圖所示
那麼就可以根據約束條件編寫**,**如下所示
clc
clear
close allc=[
2;3;
5];a=
[-2,
5,-1
;1,3
,1];
b=[-10
;12];
aeq=[1
,1,1
];beq=7;
x=linprog
(-c,a,b,aeq,beq,
zeros(3
,1))
;%linprog函式用法
value=c'*x;
主要的難點在於把數學模型轉化為標準格式以及linprog函式的用法
正如引言舉得例子,可以先把矩陣表示出來,用c表示,假定c矩陣
c=[1 2 3;
5 4 6;
2 5 3]
c矩陣中cij表示第i個小孩買第j個物品所用的時間,c矩陣每一列減去最小值得到c1,這樣做的實際意思也就是去購買就j個物品的那個小孩用的時間最短
c1=[0 0 0;
4 2 3;
1 3 0]
從c1矩陣可以看出第乙個孩子去購買所有的物品都是最短時間,第三個孩子購買第三個物品是最短時間。c1矩陣每一行減去最小值得到c2,這樣做的實際意思也就是得到第i個小孩購買那個物品用的時間最短。
c2=[0 0 0;
2 0 1;
1 3 0]
由於c1中用部分行中存在0元素,0元素所在的行中的元素不變,這時候從c2中就可以看出來第乙個小孩購買第乙個,第二個小孩購買第二個,第三個小孩購買第三個用的時間最短。
1.linprog函式是重點內容,不同約束下的linprog要會用
2. 指派問題的**還沒有寫,要完善
數學建模演算法與程式. 司守奎
數學建模學習線性規劃問題
其中 c 和 x 為 n 維列向量,a aeq 為適當維數的矩陣,b beq 為適當維數的列向量。基本函式形式為 linprog c,a,b 它的返回值是向量 x 的值。還有其它的一些函式呼叫形 式 在 matlab 指令窗執行 help linprog 可以看到所有的函式呼叫形式 如 x,fval...
數學建模 非線性規劃
2014年4月17日 規劃方法是建模中的常用手段。那麼顯然要人有我優了,非線性規劃就是乙個不錯的加分點。下面介紹幾種常用的非線性規劃技巧 這裡要說一下無約束法,規劃問題的困難在於求解,特別是約束比較奇怪的。於是在比賽中把有約束的規劃問題轉換成無約束的規劃問題就成了乙個大大的加分點。另外dfp之類的包...
數學建模 非線性規劃
如果目標函式或約束條件中包含非線性函式,則稱這種規劃問題為非線性規劃問題,簡寫為np。二次規劃是非線性規劃中的特例,由於二次規劃有通用的解法,所以單獨討論,而其他的非線性規劃問題沒有通用的解法。在matlab中,非線性規劃的數學模型可以寫為下面的形式 mi nf x st.ax b aeq x be...