0


これは、線形計画法を知っている人にとっては非常に基本的な質問かもしれません。
私が LP で見た問題のほとんどは、次の形式に多少似ています。

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

つまり、目的関数と制約関数に同じ数の未知数があります。

私の問題は、目的関数に未知の変数が 1 つ、制約関数に未知の変数が 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

ご覧のとおり、目的関数には 1 つの未知数、つまり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

プラサドは正しいです。目的関数の未知数の数は重要ではありません。存在しない未知数をゼロ係数として表示できます。

この LP は、Matlab のlinprog関数を使用して簡単に解決できます。詳細については、こちら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 に答える