그GDXDIFF도구는 두 개의 슬롯 커뮤니티 파일에서 동일한 이름, 유형 및 치수를 가진 기호의 데이터를 비교하고 차이점을 세 번째 슬롯 커뮤니티 파일에 기록합니다. 요약 보고서가 표준 출력에 기록됩니다.
사용법
gdxdiff 파일1 파일2 diffile 옵션
.슬롯 커뮤니티 파일 확장자는 생략 가능합니다. 전체 경로 이름이 없는 파일은 명령 프롬프트를 사용할 때 현재 디렉터리에 있는 것으로 가정됩니다. GAMS Studio를 사용할 때 이러한 파일은 현재 프로젝트 디렉터리에 있다고 가정합니다.GDXDIFF두 개의 슬롯 커뮤니티 파일의 파일 이름인 두 개의 매개변수가 필요합니다. 선택적인 세 번째 매개변수는 슬롯 커뮤니티 차이 파일의 이름입니다. 세 번째 매개변수가 없으면 차이 파일은 현재 디렉터리의 difffile.슬롯 커뮤니티가 됩니다.
디파일=파일이름(기본값 =diffile.슬롯 커뮤니티)
슬롯 커뮤니티 차이 파일의 선택적 이름입니다.
옵션
호출 시 다음 옵션을 사용할 수 있습니다.GDXDIFF:
| 옵션 | 기본값 | 설명 |
|---|---|---|
| Eps | 0.0 | 비교를 위한 엡실론(절대). |
| RelEps | 0.0 | 비교용 엡실론(상대적). |
| 필드 | 모두 | 단일 하위 필드 지정(l, m, 위로, lo, 이전, 규모) 비교할 변수 또는 방정식. |
| FldOnly | 비활성화 | 선택한 하위 필드에 대한 매개변수로 변수와 방정식을 작성합니다. |
| ID | 모두 | 비교할 슬롯 커뮤니티 파일의 특정 식별자를 정의하십시오. |
| 스킵ID | 없음 | 건너뛸 슬롯 커뮤니티 파일의 특정 식별자를 정의하십시오. |
| DiffOnly | 비활성화 | 변수와 방정식의 차이가 매개변수로 기록되는지 여부를 제어합니다. |
| CmpDefaults | 비활성화 | 기본값 비교를 활성화합니다. |
| CmpDomains | 비활성화 | 기호 도메인 비교를 활성화합니다. |
| 매트릭스파일 | 비활성화 | 슬롯 커뮤니티 형식의 GAMS 매트릭스 파일 비교를 활성화합니다. |
| 무시주문 | 비활성화 | 출력 파일의 크기를 줄이기 위해 입력 파일의 UEL 순서를 무시합니다. |
| SetDesc | Y | 일치하는 집합 요소의 관련 텍스트를 비교하는지 제어합니다. |
옵션에 대한 좀 더 자세한 설명:
비교를 위한 절대적인 차이; 또한 참조숫자 값 비교. 두 값의 차이가 초과되는 경우
Eps차이가 보고됩니다.비교를 위한 상대적 차이; 또한 참조숫자 값 비교. 값이 인 경우
RelEps초과하면 차이가 보고됩니다.지정된 하위 필드는 변수나 방정식이 다른지 결정하는 데 사용되는 유일한 필드입니다. FieldName은 다음 중 하나입니다.
l,m,위,로,이전,규모또는전체.다음과 함께 사용됩니다.필드옵션; 변수와 방정식은 선택한 하위 필드에 대한 매개변수로 기록됩니다. 이 옵션은와 함께 사용할 수 없습니다.DiffOnly및 요구사항필드실제 필드 이름으로 설정되었지만 그렇지 않음
모두.비교를 하나 이상의 기호로 제한합니다. 지정되지 않은 기호는 무시됩니다. 여러 식별자를 다음과 같이 지정할 수 있습니다.
ID=id1 ID=id2또는ID="id1 id2". 사용시GDXDIFFGAMS Studio(도구) 내에서는 이 옵션을 사용할 수 없습니다.비교를 하나 이상의 기호로 제한합니다. 지정된 기호는 무시됩니다. 여러 식별자를 다음과 같이 지정할 수 있습니다.
SkipID=id1 SkipID=id2또는SkipID="id1 id2". 사용시GDXDIFFGAMS Studio(도구) 내에서는 이 옵션을 사용할 수 없습니다.변수와 방정식의 차이는 매개변수로 기록됩니다. 각 매개변수에는 필드 이름을 저장하는 데 사용되는 추가 색인이 있습니다. 다른 필드만 기록됩니다. 이 옵션은와 함께 사용할 수 없습니다.FldOnly.
기본값 비교를 활성화합니다.
기호 도메인 비교를 활성화합니다. 차이점은 diff 파일에 특별히 나열되어 있지 않습니다.
이것은 슬롯 커뮤니티 형식의 GAMS 매트릭스 파일을 비교하는 특수 모드를 활성화합니다. 이는 대부분 내부 사용을 위해 수행됩니다. 사용시
GDXDIFFGAMS Studio(도구) 내에서는 이 옵션을 사용할 수 없습니다.기본적으로 GDXDiff는 입력 파일의 UEL 순서를 유지합니다. 이것이 설정되면 출력 파일의 레코드가 입력 파일과 다른 순서로 표시될 수 있도록 비활성화됩니다. 이렇게 하면 출력 파일의 크기를 줄일 수 있습니다.
세트 요소에 대한 관련 텍스트 비교를 활성화 또는 비활성화합니다.
숫자 값 비교 기준
사용Eps그리고RelEps아래 코드 조각으로 가장 잘 설명됩니다.
AbsDiff := Abs(V1 - V2);
AbsDiff <= EpsAbsolute인 경우
그럼
결과 := 참
그렇지 않으면
EpsRelative > 0.0인 경우
그럼
결과 := AbsDiff / (1.0 + DMin(Abs(V1), Abs(V2))) <= EpsRelative
그렇지 않으면
결과 := 거짓;
difffile의 라벨 해석
동일한 이름, 유형 및 치수를 가진 기호만 비교됩니다. 서로 다른 값을 가진 튜플은 슬롯 커뮤니티 차이 파일에 기록되고 다음 라벨을 사용하여 차이를 설명하기 위해 차원이 추가됩니다.
ins1튜플이 첫 번째 파일에서만 발생함을 나타냅니다.ins2튜플이 두 번째 파일에서만 발생함을 나타냅니다.dif1은 튜플이 두 파일 모두에서 발생함을 나타냅니다. 첫 번째 파일의 값을 포함합니다.dif2은 튜플이 두 파일 모두에서 발생함을 나타냅니다. 두 번째 파일의 값을 포함합니다.
예
두 개의 슬롯 커뮤니티 파일을 비교하고 차이점을 세 번째 슬롯 커뮤니티 파일에 씁니다
다음 예에서는[trn스포츠]모델은 서로 다른 용량 데이터를 사용하여 두 번 해결되었습니다. 슬롯 커뮤니티 파일은 각 실행마다 저장되고 나중에 다음을 사용하여 비교됩니다.GDXDIFF. 선적 변수는 표시 문에 사용되는 새 변수에 로드됩니다. 차이 파일에 사용되는 네 가지 새로운 고유 요소를 소개합니다.
* 데이터를 조작하기 전에 unmodified.슬롯 커뮤니티를 풀고 기록하세요.
z를 최소화하는 lp를 사용하여 전송을 해결합니다.
Execute_unload 'unmodified.슬롯 커뮤니티', a, x;
* 데이터를 조작하고 다시 풀고, Modified.슬롯 커뮤니티에 씁니다.
a('시애틀') = 1.2*a('시애틀');
z를 최소화하는 lp를 사용하여 전송을 해결합니다.
Execute_unload 'modified.슬롯 커뮤니티', a, x;
'gdxdiff 수정되지 않은 수정된 difffile > %system.nullfile%'을 실행합니다.
* 차이점에 대한 데이터를 보관할 기호를 선언합니다.
difftags 설정 / dif1, dif2, ins1, ins2 /;
변수 xdif(i,j,difftags);
매개변수 adif(i,difftags);
Execute_load 'diffile' adif=a, xdif=x;
디스플레이 a, xdif.l;
display 문은 목록 파일에 다음 출력을 생성합니다:
-- 101 PARAMETER 케이스 i 플랜트의 용량
시애틀 420.000, 샌디에고 600.000
---- 101 변수 xdif.L
dif1 dif2
시애틀.뉴욕 50.000 120.000
san-diego.new-york 275.000 205.000또는 다음에서 difffile을 열 수 있습니다.GAMS 스튜디오차이점을 표시합니다.
이 예는 GAMS 데이터 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDXDIFFExample16]참고용.