2011-04-12 95 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);