原理:我也懶得去了解了,反正不怎麼用到
學習:推薦看部落格
使用形態:
下面模板的輸入:
max x1 + 14* x2 + 6*x3
s . t . x1 + x2 + x3 <= 4
x1<= 2
x3 <= 3
3*x2 + x3 <= 6
x1,x2,x3 >= 0
我們可以得到其鬆弛形式:
max x1 + 14*x2 + 6*x3
s.t. x1 + x2 + x3 + x4 = 4
x1 + x5 = 2
x3 + x6 = 3
3*x2 + x3 + x7 = 6
x1 , x2 , x3 , x4 , x5 , x6 , x7 ≥ 0
時間複雜度o(knm),k為常數,n為變數個數,m為關係數
#include using namespace std;
vector> matrix;
double z;
setp;
size_t cn, bn;
bool pivot(pair&p)//返回0表示所有的非軸元素都小於0
for( size_t i = 0 ; i < c.size(); i++ )//在非軸元素中找最大的c
}if( cmax < 0 )
double bmin = int_max;
for( size_t i = 1 ; i < bn ; i++ )
}p = make_pair(x, y);
for( set::iterator it = p.begin() ; it != p.end() ; it++)
for( size_t i = 0 ; i < bn && i != x; i++ )}}
}void solve()
cout<::iterator it="p.begin();" p.end>
cout<>cn>>bn;
for( size_t i = 0 ; i < bn ; i++ )
matrix.push_back(vectmp);
}for( size_t i = 0 ; i < bn-1 ; i++ )
solve();
}//複雜度o(knm),k為常數,n為變數個數,m為關係數
///glpk input:
///* variables */
//var x1 >= 0;
//var x2 >= 0;
//var x3 >= 0;
///* object function */
//maximize z: x1 + 14*x2 + 6*x3;
///* constrains */
con1: x1 + x2 + x3 <= 4;
con2: x1 <= 2;
con3: x3 <= 3;
con4: 3*x2 + x3 <= 6;
//end;
///myinput:
/*8 5
1 14 6 0 0 0 0 0
1 1 1 1 0 0 0 4
1 0 0 0 1 0 0 2
0 0 1 0 0 1 0 3
0 3 1 0 0 0 1 6
*//
線性規劃 單純形法
線性規劃是求乙個線性多項式的最值。線性規劃有兩種形式 1.標準型 不等式型 2.鬆弛型 除了非負約束,其他都是等式變數名稱 在res x y z中。1.基本變數,基本變數是res。2.非基本變數,如x,y,z。單純形法 適用於鬆弛型。單純形法是不斷通過迭代來增大最大值。達到無法更新時,就是最大值。這...
線性規劃 單純形法
單純形法 x method 單純形法的思路總結 其它情況 參考文獻 目標函式是線性的,約束條件是線性等式或不等式,每個變數都取實數值.minimize ct xsubject to ax bx 0 begin text c x text a x b x geq 0 end minimize subj...
從線性規劃到單純形法的求解
首先來看線性規劃的標準問題 mins.t ct xax b,xi 0 a rm n,x rn,c rn 且要求 ra nk a m a 是行滿秩矩陣 下面是一些基本概念的定義 設 b 為 a中任意非奇異的 m m 階子矩陣 b 0 則稱 b 為此規劃的乙個基,令 b pj1 p jm 下標 對應的記...