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

2 回答 2

4

您的目标仅涉及w1但您仍然可以将其视为 的函数w1,x,y,其中 的系数w1为 1,的系数x,y为零:

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

一旦你看到这一点,你就可以以通常的方式将它制定为“标准”LP。

于 2011-04-12T02:16:49.573 回答
2

普拉萨德是正确的。目标函数中的未知数无关紧要。您可以将不存在的未知数视为系数为零。

linprog使用 Matlab 的函数很容易解决这个 LP 。有关详细信息,请参阅此处linprog的文档。

% 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); 
于 2011-09-15T06:54:02.910 回答