2016-12-03 15 views
1

mathprogメソッドを使用して問題を解決しようとしていますが、Rを使用してtxtファイルを読み込むと問題が発生しています。3つのパラメータを持つMathprogテキストファイル

私はどこに問題があるのか​​知っていると思いますが、解決方法はわかりません。ここで

は、全体のコードですが、私はのparam Aとのparam TCで3つの変数を使用する場合の問題は、最後にあります。

set I; 
/* plants*/ 

set J; 
/* customers*/ 

set T; 
/* types*/ 

set S; 
/* modes*/ 

param pc{i in I, s in S}; 
/* variable production cost */ 

param tc{i in I, j in J, t in T}; 
/* transportation cost */ 

param a{i in I, t in T, s in S}; 
/* quantity of product produced */ 

param b{j in J, t in T}; 
/* transportation cost */ 

var z{i in I, s in S} >= 0; 
/* intensity of the plant */ 

var u{i in I, j in J, t in T} >= 0; 
/* amount of product shipped from plant to costumer*/ 

minimize cost: sum{i in I, s in S} pc[i,s] * z[i,s] + sum{t in T, j in J, i in I} tc[i,j,t] * u[i,j,t]; 

/* production transportation problem */ 

s.t. first{i in I, j in J, t in T}: sum{i in I} u[i,j,t] = b[j,t]; 
/* First Constraint */ 

s.t. second{i in I, j in J, t in T, s in S}: sum{j in J} u[i,j,t] <= sum{s in S} a[i,t,s] * z[i,s]; 
/* Second Constraint */ 

s.t. third{i in I, s in S}: sum{s in S} z[i,s] <= 1; 
/* Third Constraint */ 

s.t. fourth{i in I, s in S}: z[i,s] >= 0; 
/* Fourth Constraint */ 

s.t. fifth{i in I, j in J, t in T}: u[i,j,t] >= 0; 
/* Fifth Constraint */ 

data; 

set I := P1 P2; 

set J := C1 C2 C3 C4 C5; 

set T := T1 T2 T3 T4; 

set S := S1; 

param pc : S1 := 
P1  5000 
P2  7000; 

param tc : P1T1 P1T2 P1T3 P1T4 P2T1 P2T2 P2T3 P2T4:= 
C1 10 15 10 20 10 10 12 12 
C2 20 10 15 10 12 12 10 15 
C3 20 15 10 10 15 10 12 18 
C4 10 10 10 10 10 10 10 10 
C5 5 10 15 20 20 23 21 15; 

param a : S1P1 S1P2 := 
T1 50 100 
T2 150 50 
T3 200 80 
T4 150 200; 

param b : T1 T2 T3 T4 := 
C1 80 100 80 120 
C2 50 100 105 100 
C3 80 105 100 100 
C4 80 50 15 100 
C5 50 100 150 200; 

end; 

私はRでそれを読むためにこれらの機能とそれを使用します。

model.lp <- Rglpk_read_file ("mathprog_file.txt", type = "MathProg", verbose = F) 

答えて

0

おそらくあなたのRglpkはうまく動作します。 私が見ているのは間違ったmathprog構文です。

あなたは二度同じインデックスを宣言しているしている、あなたの制約で

s.t. first{i in I, j in J, t in T}: sum{i in I} u[i,j,t] = b[j,t]; 

左制約文でiがすでに定義されたが、あなたはまた、和文で再びiを使用しています。これを修正するには、{ii in I}のような別の表記法を使用し、次に適切なiまたはiiを使用してuを参照してください。

3次元パラメータの定義にもエラーがあります。ここで例を見てください:explanation of the datablockの例とそれを行う方法の説明。

関連する問題