GDXMERGE

프로그램GDXMERGE여러 슬롯 사이트 추천 파일을 단일 슬롯 사이트 추천 파일로 결합합니다. 동일한 이름, 차원 및 유형을 가진 기호는 더 높은 차원의 단일 기호로 결합됩니다. 추가된 차원은 결합된 파일의 파일 이름을 고유 요소로 갖습니다.


사용법

gdxmerge filepattern1 filepattern2 .... filepatternN 옵션

각 파일 패턴은 ?를 사용하여 파일 이름 또는 와일드카드 표현을 나타냅니다. 그리고 *. @filename 형식의 매개변수는 지정된 텍스트 파일의 명령을 처리합니다. 결과는GDXMERGE출력 옵션이 이 기본값을 덮어쓰지 않는 한 실행은 merged.슬롯 사이트 추천라는 파일에 기록됩니다.

.슬롯 사이트 추천 파일 확장자는 생략될 수 있습니다. 전체 경로 이름이 없는 파일은 명령 프롬프트를 사용할 때 현재 디렉터리에 있는 것으로 가정됩니다. GAMS Studio를 사용할 때 이러한 파일은 현재 프로젝트 디렉터리에 있다고 가정합니다.


옵션

다음 옵션을 지정할 수 있습니다:

id=<ident1>, <ident2>... (기본값 = 없음)

기호만 병합ident1, ident2, ...

제외=<ident1>, <ident2>... (기본값 = 없음)

다음을 제외한 모든 기호 병합ident1, ident2`, ...

=<정수>

큰 기호의 크기.

엄격= true|false (기본값 = false)

지정된 입력 파일을 찾을 수 없거나 파일 패턴으로 인해 파일이 없는 경우 프로그램은 오류(0이 아닌 반환 코드)와 함께 종료됩니다. strict가 true로 설정된 경우 이미 존재하는 출력 파일에서도 오류가 발생합니다.

출력=파일이름(기본값 = merged.슬롯 사이트 추천)

선택적 출력 파일 이름.

유형과 차원이 일치하는 모든 기호가 병합됩니다. 매개변수를 지정하여id=ident1병합 프로세스는 지정된 식별자에 대해서만 수행됩니다.제외=ident1은에 지정된 기호를 제외한 모든 기호를 병합해야 함을 나타냅니다.제외목록. 두 가지 옵션이 있습니다.id그리고제외상호 배타적입니다.

기본적으로 프로그램은 모든 슬롯 사이트 추천를 한 번 읽고 merged.슬롯 사이트 추천 파일을 쓰기 전에 모든 데이터를 메모리에 저장합니다.매개변수는 한 번에 하나씩 기록될 기호에 대한 컷오프를 지정하는 데 사용됩니다. 크기를 초과하는 각 기호는 각 슬롯 사이트 추천 파일을 읽어서 처리되며 해당 기호에 대한 데이터만 처리됩니다. 이로 인해 동일한 슬롯 사이트 추천 파일을 여러 번 읽을 수 있지만 대규모 데이터 세트를 병합할 수 있습니다. 컷오프를 계산하는 데 사용되는 공식은 다음과 같습니다.

차원 * totalNumberOfElements.

계산된 값은 변수와 방정식에 대해 두 배가 됩니다.

작성된 기호 외에도 병합 작업 중에 처리된 모든 파일을 나타내는 세트가 슬롯 사이트 추천 파일에 추가됩니다. 세트 이름은Merged_set_1이며, 숫자를 변경하여 고유하게 만들어집니다. 각 세트 요소에 대한 설명 텍스트에는 처리된 슬롯 사이트 추천 파일의 날짜와 시간이 포함됩니다.

참고
  • merged.슬롯 사이트 추천 파일 또는 출력 매개변수로 지정된 파일은 이름이 파일 패턴과 일치하더라도 병합 작업에 절대 사용되지 않습니다.
  • 차원이 20인 기호는 병합할 수 없습니다. 결과 기호는 GAMS에서 허용하는 최대 차원을 초과하는 차원 21을 갖게 되기 때문입니다.


여러 슬롯 사이트 추천 파일 병합

이 예에서 우리는 다음을 해결합니다.[trn스포츠]25920_26084X병합된 파일에서 읽어서 표시됩니다.

$call gamslib trnsport
$call gams trnsport lp=cplex 슬롯 사이트 추천=cplex
$call 게임 trnsport lp=xpress 슬롯 사이트 추천=xpress
$call gams trnsport lp=conopt 슬롯 사이트 추천=conopt
$call gams trnsport lp=미노스 슬롯 사이트 추천=미노스
$call gams trnsport lp=snopt 슬롯 사이트 추천=snopt
$call gdxmerge *.슬롯 사이트 추천

변수 AllX(*,*,*);
$gdxIn merged.슬롯 사이트 추천
$로드 AllX=X
$gdxIn

옵션 AllX:5:1:2;
AllX.L 표시;

display 문은 목록 파일에 다음 출력을 생성합니다:

-- 22 VARIABLE AllX.L 배송 수량 케이스

           시애틀 시애틀 샌디에고 샌디에고
          뉴욕 시카고 뉴욕 토피카

선택 300.00000 325.00000 275.00000
클플렉스 50.00000 300.00000 275.00000 275.00000
미노스 50.00000 300.00000 275.00000 275.00000
스놉트 50.00000 300.00000 275.00000 275.00000
익스프레스 300.00000 325.00000 275.00000

다양한 솔루션이 더 높은 차원의 단일 기호로 결합된다는 점에 유의하세요. 파일 이름(각각 사용된 솔버)은 고유 요소로 추가됩니다.
display 문을 사용하는 대신 GAMS Studio를 사용하여 merged.슬롯 사이트 추천 파일을 표시할 수도 있습니다. 다음 그림은 표시할 변수의 레벨 하위 필드를 선택하고 표시를 배열한 후 merged.슬롯 사이트 추천의 내용을 보여줍니다.

GAMS Studio에 표시된 출력 파일 merge.슬롯 사이트 추천

이 예는 GAMS 데이터 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDXMERGEExample17]참고용.

재귀적으로 슬롯 사이트 추천 파일 병합

일부 사용자는 계층적 방식으로 모델에 대한 데이터 시나리오를 생성하고 결과를 디렉토리 트리에 저장합니다.

시나리오 디렉토리 트리

다음 예는 세 개의 독립적인 시나리오 스칼라를 사용하는 방법을 보여줍니다.a, bc값 포함낮음, 중간높음3*3*3=27개의 시나리오를 생성하려면 이를 디렉토리 트리에 저장하고 재귀적으로 병합하세요. 결과 슬롯 사이트 추천 파일에는 각 시나리오 스칼라에 대해 이 데이터를 피벗 테이블에서 보기에 특히 적합하게 만드는 새로운 차원이 있습니다.

-- 39 PARAMETER p 상품 가격

                               뉴욕 시카고 토피카

a_high.b_high.c_high.report 0.25 0.17 0.14
a_high.b_high.c_low .report 0.20 0.14 0.11
a_high.b_high.c_med .report 0.23 0.15 0.13
a_high.b_low .c_high.report 0.25 0.17 0.14
a_high.b_low .c_low .report 0.20 0.14 0.11
a_high.b_low .c_med .report 0.23 0.15 0.13
a_high.b_med .c_high.report 0.25 0.17 0.14
a_high.b_med .c_low .report 0.20 0.14 0.11
a_high.b_med .c_med .report 0.23 0.15 0.13
a_low .b_high.c_high.report 0.25 0.17 0.14
a_low .b_high.c_low .report 0.20 0.14 0.11
a_low .b_high.c_med .report 0.23 0.15 0.13
...

디렉토리 구조를 생성하고 모든 27개 시나리오에 대한 모델을 실행하는 GAMS 프로그램은 다음과 같습니다.

a,b,c 설정;
매개변수
    ascen(a<) / a_low 0.9, a_med 1.0, a_high 1.1 /
    bscen(b<) / b_low 0.9, b_med 1.0, b_high 1.1 /
    cscen(c<) / c_low 0.9, c_med 1.0, c_high 1.1 /;

루프((a,b,c),
   put_utility 'shell' / 'mkdir ' a.tl:0 '\' b.tl:0 '\' c.tl:0
   put_utility 'exec' / 'gams t.gms lo=2 -idir "%gams.wdir%" -curdir ' a.tl:0 '/' b.tl:0 '/' c.tl:0 ' --a ' ascen(a):3:1 ' --b ' bscen(b):3:1 ' --c ' cscen(c):3:1
);

프로그램은 디렉토리 트리를 생성하고(트리의 탈퇴 노드를 생성하여) 탈퇴 디렉토리로 변경합니다(curDir) 및 GAMS를 호출합니다( 사용iDir시작 위치를 가리킵니다). 프로그램t.gms은의 거의 동일한 사본입니다.[trn스포츠]마지막 몇 줄이 변경된 모델:

* ...
a(i) = %a%*a(i);
b(j) = %b%*b(j);
c(i,j) = %c%*c(i,j);

z를 최소화하는 lp를 사용하여 전송을 해결합니다.

스칼라 tmodelstat; 
tmodelstat = 운송.modelstat;
매개변수 p(j) '상품 가격'; 
p(j) = 수요.m(j);
'test -d 결과 실행 || mkdir 결과';
Execute_unload '결과/입력', a, b, c;
Execute_unload '결과/보고서', x, z, p, tmodelstat;

이 코드는 실행 결과를 슬롯 사이트 추천 파일에 저장합니다.input.슬롯 사이트 추천그리고report.슬롯 사이트 추천결과하위 디렉토리. 프로그램이 27번 실행된 후t.gms디렉토리 트리를 반복적으로 탐색하는 일부 Python 코드를 실행하고 발견된 슬롯 사이트 추천 파일을 병합합니다.결과리프 노드의 폴더는 호출을 통해 트리의 결과를 여과합니다.GDXMERGE각 상위 노드 수준에서. 파이썬 함수os.walk인수 포함하향식=거짓올바른 순서로 나무가 걷는 것을 확인하세요. 전체 예는 모델의 GAMS 모델 라이브러리에서 찾을 수 있습니다.[scenmerge]:

embeddedCode Python:
수입 OS
슬롯 사이트 추천 = -1
os.walk(os.path.normpath(r"C:\Users\test\allscen\ ".rstrip()), topdown=False)의 루트, 디렉토리, 파일의 경우:
  dirs에 '결과'가 있는 경우:
    슬롯 사이트 추천 == -1인 경우:
      슬롯 사이트 추천 = 루트.카운트(os.path.sep) 
      gdr = 루트;
    elif는 슬롯 사이트 추천가 아님 == root.count(os.path.sep):
      raise NameError('트리의 다른 깊이에서 발견된 결과 하위 디렉터리: ' + root + ' 및 ' + gdr)
    cmd = 'cd "' + root + '" && gdxmerge 결과' + os.path.sep + '* 출력=' + root.split(os.path.sep)[-1]
    print('' + root의 결과 병합)
    0이 아닌 경우 == os.system(cmd + '>' + os.devnull):
      raise NameError('실행 중인 문제: ' + cmd)
  elif root.count(os.path.sep) < 슬롯 사이트 추천:
    입력 = ''
    디렉토리의 d에 대해:  
      os.path.isfile(os.path.join(root, d, d + '.gdx'))인 경우:
        입력 = 입력 + ' ' + os.path.join(d, d + '.gdx')
    len(입력)인 경우:
      cmd = 'cd "' + 루트 + '" && gdxmerge' + 입력 + ' 출력=' + root.split(os.path.sep)[-1]
      print('병합' + 입력 + ' in ' + 루트)
      인쇄(cmd)
      0이 아닌 경우 == os.system(cmd + '>' + os.devnull):
        raise NameError('실행 중인 문제: ' + cmd)
print('모두 완료되었습니다. 최종 결과 파일: ' + root.split(os.path.sep)[-1] + '.gdx')
endEmbeddedCode