2016-12-03 18 views
1

mathprog 메서드를 사용하여 문제를 해결하려고했지만 R을 사용하여 txt 파일을 읽는 중 문제가 발생했습니다.3 개의 매개 변수가있는 Mathprog 텍스트 파일

내가 문제가있는 곳을 알고 있지만 어떻게 해결해야할지 모르겠다. 여기

전체 코드입니다하지만 PARAM a와 PARAM TC 3 개 변수를 사용할 때 문제는 결국입니다 : 내가 R에 읽어 이러한 기능을 사용

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; 

을 :

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

답변

0

아마도 Rglpk이 정상적으로 작동합니다. 내가 보는 것은 잘못된 mathprog-syntax입니다. 제약 조건에서

당신은 두 번 같은 인덱스를 선언되어 있습니다 : 이미 왼쪽 제약 문에 정의 i을하면서

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

은 또한 합계 문에 다시 i을 사용하고 있습니다. 이 표기법을 {ii in I}과 같은 다른 표기법으로 수정 한 다음 u을 참조하면서 적절한 i 또는 ii을 사용하여 수정할 수 있습니다.

3 차원 매개 변수의 정의에 오류가 있습니다. 여기 예제를 보시고 : explanation of the datablock 예제와 그 수행 방법에 대한 설명을보십시오.