0

SCIP と .zpl 形式を使用して、次の線形プログラムを解こうとしています。

ここに画像の説明を入力

ここで、c、p、および A は次のように定義されます。

ここに画像の説明を入力

私はすでにそれを解決する方法を思いつきました:

param n := 1000;
set N := {1 .. n};
param c[<i> in N] := i/n ;



var p[<i> in N] real >= 0; 
set A := N * N;

set O := {<i,j> in A with i < j};
set D := {<i,j> in A with i == j};
set U := {<i,j> in A with i > j};

param a[<i,j> in O] := 0;
param b[<i,j> in D] := i;
param g[<i,j> in U] := 1;

maximize prob: sum <i> in N : c[i] * p[i];

subto cond2:
     forall <i> in N do
        sum <j> in N with i>= j do 
            if(i ==j) then b[i,j] * p[j] 
                      else g[i,j] * p[j] end <= 1 ;

行列の場合、AI は 3 つのケース (上の三角形が 0、対角線が i、下のトレイングルが 1) を 3 つのパラメーター、つまりパラメーター a、b、および g に分割しました。

3 つのケースすべてを 1 つのパラメーターだけに含めることで、より洗練された解決策があるかどうか疑問に思っていたので、最後の条件については、基本的に 1 つのパラメーターを合計することができます。

4

1 に答える 1