목차
개요
GDX2ACCESS은 슬롯 무료체험 파일의 내용을 MS Access 파일(MDB 또는 ACCDB 형식)로 덤프하는 도구입니다. 모든 식별자는 데이터베이스에서 자체 테이블을 갖습니다.
- 주의
GDX2ACCESS더 이상 사용되지 않습니다(참조GAMS 40 GDX2ACCESS 출시 노트). 이용해주세요에이전트 SQLWriter 연결대신.
- 참고
- GDX2ACCESS는 Windows에서만 사용할 수 있습니다.
사용법
gdx2access 입력 파일 옵션
inputFile의 .슬롯 무료체험 파일 확장자는 생략될 수 있습니다. 전체 경로 이름이 없는 파일은 명령 프롬프트를 사용할 때 현재 디렉터리에 있는 것으로 가정됩니다. GAMS Studio를 사용할 때 이러한 파일은 현재 프로젝트 디렉터리에 있다고 가정합니다.
옵션
옵션은 [INI]에 지정됩니다(https://en.wikipedia.org/wiki/INI_file) 파일이며 명령줄에 직접 표시되지 않습니다. 기본적으로 gdx2access.exe와 동일한 디렉터리에 있는 gdx2access.ini 파일이 참조됩니다. 이 파일을 사용할 수 없는 경우 프로그램은 기본 설정(아래 표에 나열됨)을 계속 사용합니다.
프로그램이 다른 INI 파일을 사용하도록 지시하는 것도 가능합니다. 이는 다음 형식의 추가 인수를 사용하여 수행됩니다.@iniFile. myIniFile.ini라는 파일에 지정된 옵션에 따라 myFile.슬롯 무료체험의 내용을 MS Access 파일로 덤프하려면 다음 코드를 실행하세요.
gdx2access myFile.슬롯 무료체험 @myIniFile.ini
이 경우, 프로그램은 gdx2access.exe와 동일한 디렉토리에 있는 gdx2access.ini를 읽지 않고 현재 디렉토리에 있는 myIniFile.ini를 읽습니다.
INI 파일은 [설정]과 [디버그]의 두 섹션을 포함할 수 있습니다. 가능한 모든 설정이 포함된 완전한 INI 파일은 다음과 같습니다.
[설정] scrdir=c:\tmp inf=1.0e100 mininf=-1.0e100 EPS=0.0 나=0.0 undf=0.0 스칼라테이블=1 에트플래그=1 슬롯 무료체험베이스 버전=9 [디버그] 방법=5 임계값 개수=5 유지파일=1
위의 값은 일부 옵션의 기본값이 아닙니다!
섹션 [설정]
[설정] 섹션의 옵션에 대한 간단한 설명은 다음과 같습니다:
| 옵션 | 기본값 | 설명 |
|---|---|---|
| scrdir | <창온도> | 임시 스크래치 파일용 디렉토리. |
| inf | 1.0e100 | GAMS 특수값에 사용되는 값+INF. 예시도 참조하세요특수 값 매핑. |
| mininf | -1.0e100 | GAMS 특수값에 사용되는 값-INF. 예시도 참조하세요특수 값 매핑. |
| eps | 0.0 | GAMS 특수값에 사용되는 값eps. 예시도 참조하세요특수 값 매핑. |
| 나 | 0.0 | GAMS 특수값에 사용되는 값NA. 예시도 참조하세요특수 값 매핑. |
| undf | 0.0 | GAMS 특수값에 사용되는 값UNDEF. 예시도 참조하세요특수 값 매핑. |
| 스칼라테이블 | 0 | 가능한 값: 0 또는 1. 1로 설정하면 동일한 유형의 스칼라가 단일 테이블에 결합됩니다. 이 테이블의 이름은 고정되어 있습니다.스칼라파라미터, 스칼라 방정식그리고스칼라변수. 예시도 참조하세요특수 값 매핑. |
| etFlag | 0 | 가능한 값: 0 또는 1. 1로 설정하면 요소 텍스트가 포함된 세트에 대한 텍스트 문자열을 포함합니다. 예시도 참조하세요슬롯 무료체험베이스에 설명 텍스트 쓰기. |
| db버전 | 0 | 출력 슬롯 무료체험베이스의 형식을 지정하십시오. 예시도 참조하세요슬롯 무료체험베이스에 설명 텍스트 쓰기. 0: 현재 기본 형식을 사용하여 슬롯 무료체험베이스를 생성합니다. 9: Microsoft Access 2000(.mdb) 파일 형식으로 슬롯 무료체험베이스를 생성합니다. 10: Microsoft Access 2002-2003(.mdb) 파일 형식으로 슬롯 무료체험베이스를 생성합니다. 12: Microsoft Office Access 2007(.accdb) 파일 형식으로 슬롯 무료체험베이스를 생성합니다. |
섹션 [디버그]
[디버그] 섹션의 옵션에 대한 간단한 설명은 다음과 같습니다:
| 옵션 | 기본값 | 설명 |
|---|---|---|
| 방법 | 5 | Access 슬롯 무료체험베이스에 슬롯 무료체험를 삽입하는 알고리즘을 선택하세요. 1: CSV 파일을 작성하고 TransferText 작업을 사용하여 이를 Access로 읽습니다. 속도는 빠르지만 미국 이외의 언어 설정을 사용할 때 항상 작동하는 것은 아닙니다. 2: 레코드를 추가하려면 recordset.add를 사용하세요. 속도는 느리지만 중간 파일을 사용하지 않습니다. 3: 완전한 파일 사양(schema.ini)으로 탭으로 구분된 파일을 작성하고 ISAM 텍스트 드라이버를 사용하여 슬롯 무료체험를 가져옵니다. 이는 속도가 빠르며 국제 환경에서도 작동합니다. 4: 작은 슬롯 무료체험의 경우 method=2를 사용하고 더 큰 슬롯 무료체험 항목의 경우 method=1을 사용합니다. 5: 작은 슬롯 무료체험의 경우 method=2를 사용하고 더 큰 슬롯 무료체험 항목의 경우 method=3을 사용합니다. |
| 임계값수 | 5 | 방법=4 또는 방법=5를 사용하는 동안 알고리즘을 변경해야 하는 경우. 기본값은 5개 레코드입니다. |
| keepFiles | 0 | 가능한 값: 0 또는 1. 1로 설정하면 프로그램은 중간 스크래치 파일을 삭제하지 않습니다. |
예
소개
우리가 다음의 슬롯 무료체험를 쓰고 싶다고 가정해 보겠습니다.[trn스포츠]30839_31101슬롯 무료체험=trnsport.
gams trnsport 슬롯 무료체험=trnsport lo=2
옵션lo=2GAMS는 로그를 화면에 기록하는 대신 외부 파일(이 경우 trnsport.log)에 저장합니다. 이 시점에서 슬롯 무료체험에 대한 아이디어를 얻기 위해 우리는 다음을 사용합니다.GDXDUMP다음 명령을 실행하여 슬롯 무료체험 파일의 내용을 표시하는 도구:
gdxdump trnsport.슬롯 무료체험 기호
다음을 추가하여GDXDUMP옵션기호, trnsport.슬롯 무료체험에 저장된 모든 데이터가 아닌 목차(아래 표시)만 표시합니다.
* trnsport.슬롯 무료체험의 슬롯 무료체험 덤프 * 사용중인 라이브러리 : C:\GAMS23.3 * 라이브러리 버전: 슬롯 무료체험 라이브러리 2009년 11월 1일 23.3.3 WIN 14596.15043 VIS x86/MS Windows * 파일 버전 : 슬롯 무료체험 라이브러리 2009년 11월 1일 23.3.3 WIN 14596.15043 VIS x86/MS Windows * 제작사 : GAMS Base Module 2009년 11월 1일 23.3.3 WIN 14929.15043 VIS x86/MS Windows * 파일 형식 : 7 * 압축 : 0 * 기호 : 12 * 고유 요소: 5 기호 치수 유형 설명 텍스트 1 a 1 경우에 플랜트 i의 1 Par 용량 2 b 1 시장 j의 액면 수요 3 c 2 Par 운송 비용(케이스당 수천 달러) 4 비용 0 Equ 목적 함수 정의 5 d 2 파 거리(수천 마일) 6 수요 1은 시장 j의 수요를 충족시킵니다. 7 f 0 파 운임(단위: 천 마일당 케이스당 달러) 8 i 1 통조림 공장 세트 9 j 1 세트 시장 10 공급 1 Equ 플랜트 i의 공급 한도를 준수하십시오. 케이스에 11 x 2 Var 배송 수량 12 z 0 Var 총 운송 비용(천 달러)
슬롯 무료체험 파일이 있으면 사용할 수 있습니다.GDX2액세스MDB 또는 ACCDB 파일을 생성합니다. 2007 이전 버전의 MicroSoft Office는 파일 확장자 .mdb를 사용하고, 버전 2007 이상 버전은 파일 확장자 .accdb를 사용합니다. 슬롯 무료체험 파일 trnsport.슬롯 무료체험에 저장된 모든 데이터를 trnsport.mdb resp에 씁니다. 다음 코드를 실행하여 trnsport.accdb를 실행하세요.
gdx2access trnsport.슬롯 무료체험
옵션을 지정하기 위해 이전 명령에서 INI 파일을 참조하지 않았음을 참고하세요. 즉,GDX2ACCESSgdx2access.exe와 동일한 디렉토리에 있는 gdx2access.ini 파일을 참조하거나 파일이 존재하지 않는 경우 도구는 기본 설정을 계속 사용합니다(참조옵션). tnsport.accdb에 기록된 기호의 식별자와 기호당 총 경과 시간을 포함하여 로그에 기록된 정보가 아래에 표시됩니다.
슬롯 무료체험 액세스 ALFA 23Mar10 23.4.0 WIN 16693.16738 VS8 x86/MS Windows
액세스로 C:\GAMS support\settext\temp1.accdb 생성: 0.48초
임시 디렉터리 C:\Users\Paul\AppData\Local\Temp\ 사용
나. 삽입: 0.00초
j. 삽입: 0.00초
가. 삽입: 0.00초
b. 삽입: 0.00초
디. 덤프: 0.00초 로드: 0.05초
에프. 삽입: 0.00초
c. 덤프: 0.00초 로드: 0.05초
x. 덤프: 0.00초 로드: 0.03초
z. 삽입: 0.00초
비용. 삽입: 0.00초
공급. 삽입: 0.02초
수요. 삽입: 0.02초
C:\GAMS support\settext\temp1.accdb -> trnsport.accdb 이름 바꾸기
총 경과 시간: 0.92초MS Access로 열린 결과 ACCBD는 다음과 같습니다.그림 1(매개변수로 제한됨c왼쪽 및 변수x오른쪽).
보시다시피, 모든 식별자는 자체 테이블에 저장됩니다. 다음과 같은 매개변수의 경우c, 값은 value라는 열에 저장되지만,와 같은 변수는x및 방정식에는 수준, 한계, 하한 및 상한 열이 있습니다. 가능한 추가 필드(NLP의 척도, MIP의 우선순위, 확률론적 문제의 단계)는 내보내지지 않습니다. 필요한 경우 슬롯 무료체험 파일을 작성하기 전에 GAMS의 매개변수에 이러한 수량을 할당할 수 있습니다. 여기에 표시된 전체 프로세스는 다음에 설명된 대로 자동화될 수 있습니다.예 1.
기호에 대해 도메인 정보를 사용할 수 없는 경우(예:B아래 코드에서) 각 인덱스 위치는 열을 가져오고 자동으로 자동으로 희미한1, 희미한2 등으로 레이블이 지정됩니다. 도메인 정보를 사용할 수 있는 경우 열은 해당 정보를 사용하지만 이름은 고유하게 유지합니다(예:A아래 코드에서). 아래의 작은 예는 식별자에 오름차순 숫자를 추가하여 (완화된) 도메인 정보를 사용하여 인덱스 위치를 고유하게 만드는 방법을 보여줍니다.
i / i1*i5 / 설정;
별칭(i,j,k);
매개변수 A(i,i,i) '도메인 정보이지만 열 이름은 고유하지 않습니다.';
A(i,j,k) = 균일(0,1);
매개변수 B '도메인 정보 없음' / i1.i1 1, i1.i2 2, i2.i1 3, i2.i2 4 /;
Execute_unload 'AB.슬롯 무료체험', A, B;
'=gdx2access AB.슬롯 무료체험'를 실행합니다.
MicroSoft Access로 열린 결과 슬롯 무료체험베이스 파일은 다음에 표시됩니다.그림 2(매개변수A왼쪽, 매개변수B오른쪽).
예 1 - trnsport.슬롯 무료체험의 콘텐츠 덤프
이 예는 다음 문제를 해결합니다.[trn스포츠]모델 라이브러리에서 모델을 만들고 전체 기호 테이블이 포함된 슬롯 무료체험 파일을 생성합니다. 이 슬롯 무료체험 파일은 Access로 내보내지고 MS Access가 실행되어 결과를 검사합니다. 이는 매우 빠르게 실행되어야 하는 작은 예입니다.
'=gamslib trnsport' 실행;
'=gams trnsport lo=3 슬롯 무료체험=trnsport'를 실행합니다.
'=gdx2access trnsport.슬롯 무료체험'를 실행합니다.
ExecuteTool 'win32.shellExecute trnsport.accdb';
참고:외부 프로그램 앞의 등호는 쉘(예: command.com 또는 cmd.exe)을 거치지 않음을 나타냅니다. 이렇게 하면 외부 프로그램을 찾을 수 없는 경우 안정성이 향상됩니다. 이러한 경우 적절한 오류가 발생합니다. '='가 없으면 이러한 오류가 감지되지 않고 GAMS 모델이 계속됩니다.
'executeTool 'win32.shellExecute trnsport.accdb';` 명령은 ACCDB 파일을 보기 위해 Access를 시작합니다. 여기서는 설치된 Access 버전이 2007 버전만큼 최신 버전이라고 가정합니다. 이전 버전에서는 확장자가 .mdb인 슬롯 무료체험베이스를 생성하며 shellExecute 명령을 다음과 같이 변경해야 합니다.
* 생성된 파일 보기 생성
ExecuteTool 'win32.shellExecute trnsport.mdb';
전체 예는 GAMS 슬롯 무료체험 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDX2ACCESS예1]참고용.
예 2 - 슬롯 무료체험베이스에 설명 텍스트 작성
이 예에서는 슬롯 무료체험 파일에 몇 가지 세트를 작성합니다. 작성된 세트 중 두 개에는 세트 요소에 대한 설명 텍스트가 있습니다. 우리는 옵션을 사용합니다etFlag이 텍스트를 해당 설정 요소와 함께 Access 슬롯 무료체험베이스 파일에 저장합니다. 옵션을 사용하지 않으면 설정된 튜플만 슬롯 무료체험베이스에 저장됩니다.
Access 2007 또는 이후 버전이 설치된 시스템에서 이 예제를 실행하면 이전 버전의 Access에서 읽을 수 없는 .accdb 파일 확장자를 가진 슬롯 무료체험베이스가 생성됩니다. 우리는db버전슬롯 무료체험베이스를 MDB 형식으로 저장하는 옵션입니다. 두 옵션 모두 설정 섹션 내의 사용자 정의 INI 파일에 지정되어야 합니다. 아래 코드의 HowToWrite.ini를 참조하세요.
설정
i / i1 '1', i2 '2', i3 '3', i4 '4' /
j / j1*j4 /
ij(i,j) / i1.j1 '빨간색', i2.(j2,j3) '녹색', i3.(j1,j2) '파란색' /;
$gdxOut example2.슬롯 무료체험
$언로드 i j ij
$슬롯 무료체험아웃
$onEcho >howToWrite.ini
[설정]
에트플래그=1
데이터베이스 버전=10
$offEcho
$call =gdx2access example2.슬롯 무료체험 @howToWrite.ini%
슬롯 무료체험베이스를 열고 세트에서 생성된 테이블을 검사할 때ij, 해당 세트 요소와 함께 저장된 설명 텍스트를 볼 수 있습니다. 설명 텍스트가 포함된 열에는 다음과 같은 라벨이 지정됩니다.SetText자동으로. 열 헤더의 이름은 다음과 같이 바꿀 수 있습니다.예 5 - 필드 이름 바꾸기.
전체 예는 GAMS 슬롯 무료체험 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDX2ACCESS예2]참고용.
예 3 - 대규모 테이블을 슬롯 무료체험베이스에 덤프
이것은 GAMS에서 백만 개의 요소가 있는 매개변수인 대규모 식별자를 생성하는 인위적인 예입니다. 이 매개변수는 나중에 MS Access 슬롯 무료체험베이스로 덤프됩니다. 참고하세요GDX2ACCESS실행은 몇 초 동안 지속됩니다. 결과 슬롯 무료체험베이스 파일의 크기는 약 36MB입니다.
i / i1*i1000 / 설정;
별칭(i,j);
매개변수 p(i,j);
p(i,j) = 균일(-100,100);
Execute_unload 'example3.슬롯 무료체험', p;
'=gdx2access example3.슬롯 무료체험'를 실행합니다.
전체 예는 GAMS 슬롯 무료체험 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDX2ACCESS예3]참고용.
예 4 - 특수 값 매핑
다음과 같은 특수 값을 저장하려면+INF, -INF, eps, NA그리고undf슬롯 무료체험베이스의 숫자 필드에서,GDX2ACCESS매핑을 사용합니다. 이 매핑은 INI 파일을 사용하여 변경할 수 있습니다. 기본값은 다음을 참조하세요.옵션resp. 아래 두 번째 코드의 주석). 다음을 보여주기 위해 GAMS의 각 특수 값에 대한 스칼라를 정의하겠습니다.스칼라테이블추가 옵션. 기본적으로 모든 스칼라는 새 테이블에 기록됩니다. 활성화하여스칼라테이블INI 파일의 옵션을 사용하면 모든 스칼라가 단일 테이블에 함께 저장됩니다.
$onEcho >howToWrite.ini
[설정]
inf=1
최소값=2
EPS=3
나=4
undf=5
스칼라테이블=1
$offEcho
이전에 사용자 정의한 INI 파일 HowToWrite.ini의 사용은 인수로 표시됩니다.@howToWrite.ini내부실행진술.
$onUndf
스칼라
pInf / inf /
mInf / -inf /
엡실론 / 엡실론 /
사용할 수 없음 / 해당 없음 /
정의되지 않음 / undf /;
* 다음을 사용하여 ScalarParameter라는 단일 테이블의 scalars.mdb에 스칼라를 저장합니다.
* 스칼라테이블 옵션
* 특수 값은 기본값으로 변환됩니다.
* INF -> 1.0e100
* -INF -> -1.0e100
* EPS,NA,UNDF -> 0
Execute_unload 'scalars.슬롯 무료체험', pInf, mInf, epsilon, notAvail, 정의되지 않음;
'gdx2access scalars.슬롯 무료체험 @howToWrite.ini'를 실행합니다.
참고$onUndf들어가기 위한 명령undf값은 스칼라 정의 내에서 직접적으로 적용됩니다. GAMS Studio에서 생성된 슬롯 무료체험 파일을 볼 때 특수 값이 표시됩니다(그림은 보다 간결하게 표시하기 위해 5개의 단일 스칼라 대신 실제로 매개변수를 표시합니다).
Access에서 결과 테이블을 보면 특수 값에 대한 매핑이 어떻게 적용되었는지 알 수 있습니다(즉, GAMS 특수 값이 INI 파일에 정의된 사용자 정의 값으로 대체되었습니다):
테이블 이름이 지정됩니다.스칼라파라미터자동으로.
전체 예는 GAMS 슬롯 무료체험 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDX2ACCESS예4]참고용.
예 5 - 필드 이름 바꾸기
GDX2ACCES다음과 같은 이름을 사용합니다i, j, dim1, dim2, 값등. 결과 슬롯 무료체험베이스 파일의 열 헤더에 대해. 어떤 경우에는 이것이 편리하지 않을 수도 있습니다. 더 설명적인 필드 이름이 필요한 경우. 다음 모델에서는 VBscript[1]의 작은 스크립트가 이 작업을 처리하는 방법을 보여줍니다. 스크립트는 열 이름을 바꿉니다.i, j및값테이블에서c에ifrom, jto및운송비. 처음에는 슬롯 무료체험가 정의되어 MicroSoft Access 슬롯 무료체험베이스에 덤프됩니다. access.vbs라는 VBscript는 컴파일 타임에 작성되고 나중에 열 헤더의 이름을 바꾸기 위해 실행 타임에 실행됩니다.
설정
i '통조림 식물' / 시애틀, 샌디에이고 /
j 'markets' / 뉴욕, 시카고, 토피카 /;
매개변수
a(i) '경우에 따라 식물 i의 용량'
/시애틀 350
샌디에이고 600 /
b(j) '경우에 따라 시장 j의 수요'
/ 뉴욕 325
시카고 300
토피카 275 /;
테이블 d(i,j) '거리(천 마일)'
뉴욕 시카고 토피카
시애틀 2.5 1.7 1.8
샌디에고 2.5 1.8 1.4;
스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
매개변수 c(i,j) '케이스당 운송 비용(단위: 수천 달러)';
c(i,j) = f*d(i,j)/1000;
* 슬롯 무료체험 파일로 내보냅니다.
Execute_unload 'c.슬롯 무료체험', c;
* 액세스 데이터베이스로 이동
* 열 이름은 i와 j입니다.
'=gdx2access c.슬롯 무료체험'를 실행합니다.
* 열 이름 바꾸기
'=cscript access.vbs'를 실행합니다.
* 결과 보기
ExecuteTool 'win32.shellExecute c.accdb';
$onEcho > access.vbs
'이것은 VBscript 스크립트입니다
WScript.Echo "스크립트 실행 중: access.vbs"
set oa = CreateObject("Access.Application")
oDAO = oa.DBEngine 설정
Wscript.Echo "DAO 버전: " & oDAO.version
oDB = oDAO.openDatabase("%system.fp%c.accdb") 설정
Wscript.Echo "열림: " & oDB.name
oTable = oDB.TableDefs.Item("c") 설정
Wscript.Echo "테이블:" & oTable.name
' 필드 이름 바꾸기
oTable.Fields.Item("i").name = "ifrom"
oTable.Fields.Item("j").name = "jto"
oTable.Fields.Item("Value").name = "운송 비용"
Wscript.Echo "이름이 변경된 필드"
oDB.닫기
Wscript.Echo "완료"
$offEcho
MS Access로 열린 결과 ACCBD는 다음과 같습니다.그림 6(매개변수c왼쪽의 VBScript를 실행하기 전, 매개변수c오른쪽 열 헤더의 이름을 바꾼 후).
완전한 예는 GAMS 슬롯 무료체험 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[GDX2ACCESS예5]참고용.
참고자료
- VBScript 언어 참조,https://www.vbsedit.com/html/ddfa5183-d458-41bc-a489-070296ced968.asp 2023