2011-04-12 91 views
0


對於瞭解線性規劃的人來說,這可能是一個相當基本的問題。
在大部分我LP上看到的問題有幾分相似以下換句話說格式制定線性規劃問題

max   3x+4y 
subject to  4x-5y = -34 
       3x-5y = 10  (and similar other constraints) 

所以,我們在目標和約束功能相同數目未知的。

我的問題是我在目標函數中有一個未知變量,在約束函數中有3個未知變量。
問題是這樣

Objective function: min w1 
subject to: 
w1 + 0.1676x + 0.1692y >= 0.1666 
w1 - 0.1676x - 0.1692y >= -0.1666 
w1 + 0.3039x + 0.3058y >= 0.3 
w1 - 0.3039x - 0.3058y >= -0.3 
x + y = 1 
x >= 0 
y >= 0 

如可以看到的,該目標函數僅具有一個未知的未知即W1和約束函數具有3(或讓說2)即W1,Xy
有人可以請指導我如何解決這個問題,尤其是使用R或MATLAB線性編程工具箱。

回答

4

你的目標只涉及w1,但你仍然可以看到它作爲w1,x,y功能,其中w1係數爲1,和x,y的coeffs爲零:

min w1*1 + x*0 + y*0 

一旦你看到這一點,你可以以通常的方式將其制定爲「標準」LP。

2

Prasad是正確的。目標函數中未知數的數量並不重要。您可以查看不存在的未知係數爲零。

這個LP很容易用Matlab的linprog函數求解。欲瞭解更多 關於linprog的詳細信息,請參閱文檔here

% We lay out the variables as X = [w1; x; y] 
c = [1; 0; 0]; % The objective is w1 = c'*X 
% Construct the constraint matrix 
% Inequality constraints will be written as Ain*X <= bin 
%  w1  x  y 
Ain = [ -1 -0.1676 -0.1692; 
     -1 0.1676 0.1692; 
     -1 -0.3039 -0.3058; 
     -1 0.3039 0.3058; 
     ]; 
bin = [ -0.166; 0.166; -0.3; 0.3]; 

% Construct equality constraints Aeq*X == beq 
Aeq = [ 0 1 1]; 
beq = 1; 

%Construct lower and upper bounds l <= X <= u 
l = [ -inf; 0; 0]; 
u = inf(3,1); 

% Solve the LP using linprog 
[X, optval] = linprog(c,Ain,bin,Aeq,beq,l,u); 

% Extract the solution 
w1 = X(1); 
x = X(2); 
y = X(3);