슬롯템 속성

소개

슬롯템 속성은 GAMS 슬롯템 환경의 문자열 상수에 대한 액세스를 제공합니다. 이러한 문자열 상수를 슬롯템 접미사라고 합니다. 또한 사용자 기호의 데이터 요소로 사용할 수 있는 속성이 있습니다. 이렇게 하면 액세스할 수 있습니다. 슬롯템의 솔버(설정 요소)에 적용됩니다. 이러한 데이터 요소를 슬롯템 데이터라고 합니다. 두 가지 특수 슬롯템 데이터 속성, 즉powerSetLeft그리고powerSetRight, 3차원 집합의 경우setName(n,s,b)기본 b 및 s 숫자를 사용하는 번호 매기기 슬롯템으로 해석될 수 있는 데이터를 생성합니다. 마지막으로, 슬롯템 속성은 사용자 기호와의 이름 충돌로 인해 컴파일러에 의해 숨겨진 슬롯템 기능에 대한 액세스를 제공할 수 있습니다.

슬롯템 접미사

슬롯템 접미사에는 실행 중 GAMS 슬롯템 환경에 대한 정보가 포함되어 있습니다. 이를 참조하는 방법에는 두 가지가 있습니다.system.suffix그리고%system.suffix%. 여기슬롯템키워드이고.접미사은 슬롯템 접미사의 이름입니다. 전체 목록은 섹션에 나와 있습니다.모든 슬롯템 접미사 목록아래. 참고하세요system.suffix참조실행 시간슬롯템 접미사 버전 및%system.suffix%참조컴파일 시간버전으로 인해 텍스트가 대체됩니다. 실행 시간 슬롯템 접미사는 다음 컨텍스트에서만 사용할 수 있습니다.파일 넣기. 두 버전이 모두 사용되는 다음 예를 고려하세요.

파일 FX;
fx 'lp:' system.LP를 넣으세요;
옵션 lp=구로비;
넣어 / 'lp:' system.LP
넣다 / 'lp:%system.LP%';

컴파일 시간 문자열을 관찰하세요%system.LP%컴파일 시 평가되며 변경되지 않습니다. 그러나 실행 시간 슬롯템 접미사슬롯템.LP실행 시 평가되며 변경됩니다. 처음입니다CPLEX, CPLEX가 기본 LP 솔버이기 때문입니다. 그러면 다음과 같이 변경됩니다.구로비결과적으로실행 시간 명령 옵션 LP=구로비;. 결과넣어파일fx.put다음:

lp:CPLEX
lp:구로비
lp:CPLEX

다음 두 하위 섹션에서 우리는 실행 시간 접미사에 대해 더 자세히 논의할 것입니다.

실행 시간 슬롯템 접미사

실행 시간 슬롯템 접미사는 다음의 컨텍스트에서만 사용됩니다.쓰기 기능 넣기다음과 같은 명령으로put , putclose그리고put_utility. 다음의 간단한 예를 고려하십시오. 파일이 있습니다x.gms그리고dummy.gms, 여기서x.gms다음 줄만 포함합니다:

파일 FX; fx system.version을 넣으세요;

파일dummy.gms다음을 포함합니다:

$exit;

우리는 다음 호출로 이 파일을 실행합니다:

> c:\gams\win64\24.7\gams x.gms action=c s=putVersion

값에 유의하세요c명령줄 매개변수용액션첫 번째 입력 파일만 컴파일되도록 합니다. 결과는에 저장됩니다.작업 파일 putVersion. 그런 다음 다시 시작하고 실행합니다.dummy.gms. 이제 GAMS 출시 버전에 따라넣다파일fx다른 콘텐츠를 갖게 됩니다:

c:\gams\win64\24.7\gams dummy.gms r=putVersion // 콘텐츠가 "GAMS Rev 247"인 put 파일이 생성됩니다.
c:\gams\win64\24.8\gams dummy.gms r=putVersion // 콘텐츠가 "GAMS Rev 248"인 put 파일이 생성됩니다.

반대로, 컴파일 시간 슬롯템 접미사의 값%system.version%컴파일 시 결정됩니다. 파일을 변경한다고 가정해 보겠습니다.x.gms다음 줄을 포함하려면:

파일 FX; fx "%system.version%" 넣기;

파일dummy.gms는 변경되지 않으며 위와 동일한 호출을 사용합니다. 참고하세요넣어파일은 두 버전의 GAMS에 대해 동일한 내용을 갖습니다:

c:\gams\win64\24.7\gams dummy.gms r=putVersion // 콘텐츠가 "GAMS Rev 247"인 put 파일이 생성됩니다.
c:\gams\win64\24.8\gams dummy.gms r=putVersion // 콘텐츠가 "GAMS Rev 247"인 put 파일이 생성됩니다.

컴파일 시간 슬롯템 접미사

컴파일 시간 슬롯템 접미사는 어디에나 배치될 수 있습니다.컴파일 시간 변수다음 코드를 포함하여 의미가 있습니다.조건부 컴파일. 이러한 컴파일 시간 슬롯템 접미사의 인용은 코드에서의 사용에 따라 다릅니다. 다음 예를 고려해보세요.

$set systemDATE %system.date%
"system.date", "%system.date%"를 표시합니다.
$ifi %system.LP% == Xpress $log "LP 솔버는 Xpress입니다."

display 문에 의해 생성된 결과 출력은 다음과 같습니다:

---- 3개 슬롯템.DATE
            11/07/16

모든 슬롯템 접미사 목록

다음 표에는 모든 슬롯템 접미사가 나열되어 있습니다.

슬롯템 접미사설명
빌드코드 슬롯템 빌드 코드
CNS 활성화된 CNS 솔버CNS 모델 유형
컴퓨터 이름 운영 체제 컴퓨터 이름
날짜 작업 날짜
날짜1 작업 날짜 형식
DirSep 파일 이름의 파일 또는 디렉터리 구분 기호
DNLP 활성화된 DNLP 솔버DNLP 모델 유형
경과됨 작업 시작 이후 경과 시간(초)
EMP 활성화된 EMP 솔버EMP 모델 유형
오류 알 수 없는 접미사를 나타내는 데 사용됩니다.
오류레벨 슬롯템 오류 수준
FE 파일 확장자
파일슬롯 운영 체제 이름(MSNTWindows의 경우,유닉스Linux 및 macOS의 경우)
FN 파일 이름
FP 파일 경로
GamsRelease GAMS 출시 번호
GamsReleaseMaint 유지보수 번호 접미사가 포함된 GAMS 릴리스 번호
Gams버전 GAMS 버전 번호
GdxFileNameIn 입력용 GDX 파일 이름, 설정자:put_utility명령gdxin
GdxFileNameOut 출력용 GDX 파일 이름, 다음으로 설정됨put_utility명령gdxout
GString GAMS 슬롯템 감사 문자열(정확한 GAMS 버전이 사용됨)
호스트 플랫폼 호스트 플랫폼
I파일 입력 파일
ILine 현재 소스 라인 번호가 실행 중입니다.
IncLine 파일 라인 포함
IncName 파일 이름 포함
IncParent 파일 상위 포함
IncParentL 파일 상위 줄 번호 포함
IsAlphaBeta 알파 또는 베타 빌드를 나타냅니다.
IsNetworkLicense 1 인스턴스화된 네트워크 라이센스인 경우, 그렇지 않은 경우 0
작업 핸들 마지막 비동기 호출의 작업 핸들
라이센스파일이름 현재 사용되는 라이센스 파일의 파일 이름
라이센스레벨 GAMS 라이선스 수준
라인 소스 코드의 줄 번호
리스트라인 목록 파일의 줄 번호
LP 활성화된 LP 솔버LP 모델 유형
MACA주소 첫 번째 네트워크 어댑터의 MAC 주소
최대 입력 처리할 수 있는 최대 입력 줄 길이
MCP 활성화된 MCP 솔버MCP 모델 유형
메모리 메모리(Mb) 사용 중
MINLP 다음에 대해 활성화된 MINLP 솔버MINLP 모델 유형
MIP 활성화된 MIP 솔버MIP 모델 유형
MIQCP 활성화된 MIQCP 솔버MIQCP 모델 유형
MPEC 활성화된 MPEC 솔버MPEC 모델 유형
NLP 활성화된 NLP 솔버NLP 모델 유형
널 파일 널 파일 이름
O파일 출력(목록) 파일
OPage 출력(목록) 파일의 현재 페이지 번호
페이지 현재 페이지 번호
P파일 현재 넣기 파일
플랫폼 작업 플랫폼(ARM64의 macOS용 DAX, x86_64의 macOS용 DEX, arm64의 Linux용 LAX, x86_64의 Linux용 LEX, Windows용 WEX)
PrLine 목록 페이지의 줄
프로크명 모델 유형 LP MIP 등
Pr페이지 목록 페이지 번호
PutFileName 현재 활성화된 PUT 파일의 파일 이름
QCP 활성화된 QCP 솔버QCP 모델 유형
R날짜 재시작 파일 날짜
ReDirLog 로그 파일에 리디렉션 문자열 추가
R파일 파일 이름 다시 시작
RMINLP 다음에 대해 활성화된 RMINLP 솔버RMINLP 모델 유형
RMIP 다음에 대해 활성화된 RMIP 솔버RMIP 모델 유형
RMIQCP 활성화된 RMIQCP 솔버RMIQCP 모델 유형
RMPEC 활성화된 RMPEC 솔버RMPEC 모델 유형
R시간 파일 시간 다시 시작
S파일 저장 파일 이름
SString 하위 슬롯템(솔버) 감사(마지막으로 사용된 솔버)
탭 문자
T닫기 GAMS를 저장할 시간
TComp 컴파일 시간
TExec 실행 시간
시간 작업 시간
제목 현재 목록 제목
TStart GAMS를 다시 시작할 시간입니다.
UserConfigDir gamsconfig.yaml을 검색한 사용자 쓰기 가능 디렉터리
UserDataDir gamslice.txt 등을 검색하는 사용자 쓰기 가능 디렉터리
사용자 이름 운영 체제 사용자 이름
VerID GAMS 버전 ID
버전 GAMS 컴파일러 버전

모든 슬롯템 접미사를 현재 값과 함께 Put 파일에 인쇄하는 모델은 모델에서 찾을 수 있습니다.[SSUFFIX].

슬롯템 데이터

일부 슬롯템 관련 정보가 단일 문자열에 맞지 않습니다. 이러한 슬롯템 데이터는 GAMS 기호에 저장될 수 있습니다. 이 기호의 슬롯템 데이터는 기호의 데이터 설명에서 액세스할 수 있습니다.allSolvers / system.solverNames /; 설정. 이제 모든 세트로 작업할 수 있듯이 솔버 이름으로 작업할 수 있습니다. 슬롯템 데이터는 내부 세트로 볼 수 있으므로 이 정보를 사용하여 더 복잡한 GAMS 기호를 만드는 데 사용할 수 있습니다. 예를 들면:

순서 설정 / 1*1000 /;
솔버맵 설정(seq,*) / set.seq:system.solverNames /;
매개변수 솔버파(*) / system.solverNames 1 /;

다음은 슬롯템 데이터의 목록과 차원입니다:

슬롯템 데이터차원설명
달러옵션 1 달러 통제 옵션
비어 있음 1 빈 라벨
gams함수 1 내장 함수
gamsParameters 1 명령줄 매개변수
gamsParameterSynonymMap 2 명령줄 매개변수와 동의어 간의 매핑
gamsParameterSynonyms 1 동의어명령줄 매개변수
GUSSModelAttributes 1 다음에 대해 저장된 모델 속성GUSS 시나리오
모델 유형 1 모델 유형, 예: LP, MIP, ...
플랫폼 1 플랫폼 코드
powerSetLeft 3 기본 b 및 s 숫자를 사용한 번호 매기기 슬롯템
powerSetRight 3 기본 b 및 s 숫자를 사용한 번호 매기기 슬롯템
미리 정의된 기호 1 사전 정의된 기호, 예:같은 이름, 진단, ...
setConstants 1 슬롯템 데이터 이름(이 목록)
solverNames 1 솔버 및 도구 이름
solverPlatformMap 2 솔버와 플랫폼 간의 지도
solverTypePlatformMap 3 솔버, 모델 유형 및 플랫폼 간의 지도
슬롯템 접미사 1 슬롯템 접미사

전원 설정

매우 특별한 슬롯템 속성powerSetLeft그리고powerSetRight슬롯템과 관련된 정적 데이터에 대한 액세스를 제공하지 않지만 기존 세트를 기반으로 데이터를 생성합니다.b그리고s. 생성된 이 슬롯템 데이터는 기본 b 및 s 숫자를 사용하는 번호 매기기 슬롯템으로 해석될 수 있습니다. 생성된 총 튜플 수는 다음과 같습니다.전원(카드(b),카드(들)). 결과 집합의 첫 번째 인덱스는 최소한 이 크기를 가져야 합니다. 다음의 작은 예는 다음의 기능을 보여줍니다.powerSetRight:

$set 숫자 3
s / s1*s%digits% /, b / 0,1 / 설정;
$eval nMax 전력(카드(b),카드(들))
n / n1*n%nMax% / 설정
    x(n,s,b) / system.powerSetRight /;
옵션 x:0:0:%digits%; 디스플레이 x;

3자리 숫자를 사용하면 다음과 같은 출력이 표시됩니다.

---- 6개 세트 x
n1.s1.0, n1.s2.0, n1.s3.0
n2.s1.0, n2.s2.0, n2.s3.1
n3.s1.0, n3.s2.1, n3.s3.0
n4.s1.0, n4.s2.1, n4.s3.1
n5.s1.1, n5.s2.0, n5.s3.0
n6.s1.1, n6.s2.0, n6.s3.1
n7.s1.1, n7.s2.1, n7.s3.0
n8.s1.1, n8.s2.1, n8.s3.1

변경 중powerSetRightpowerSetLeft숫자의 순서를 재할당합니다. 따라서 가장 낮은 숫자는 왼쪽에 있습니다.

---- 6 세트 x
n1.s1.0, n1.s2.0, n1.s3.0
n2.s1.1, n2.s2.0, n2.s3.0
n3.s1.0, n3.s2.1, n3.s3.0
n4.s1.1, n4.s2.1, n4.s3.0
n5.s1.0, n5.s2.0, n5.s3.1
n6.s1.1, n6.s2.0, n6.s3.1
n7.s1.0, n7.s2.1, n7.s3.1
n8.s1.1, n8.s2.1, n8.s3.1

숨겨진 기능에 대한 액세스

내장 함수는 키워드가 아니지만 사전 정의된 이름 목록에 저장됩니다. 사용자 프로그램이 사용자 기호에 대해 미리 정의된 함수 이름을 사용하는 경우 GAMS는 원래 함수를 숨깁니다. 예를 들어,

세트 교복 '교복' / 스커트, 블라우스, 블레이저, 양말, 신발 /;
스칼라 난수; 
무작위번호 = 균일(0,1);

GAMS가 예상하기 때문에 두 번째 줄에 컴파일 오류가 발생합니다.유니폼세트가 됩니다. 함수유니폼51368_51568파일 다시 시작) 여기서 이름 바꾸기는 옵션이 아닙니다. 슬롯템 속성을 통해 숨겨진 기능에 접근할 수 있습니다.system.functionName. 따라서 다음은 성공적으로 컴파일되고 실행됩니다.

세트 교복 '교복' / 스커트, 블라우스, 블레이저, 양말, 신발 /;
스칼라 난수; 
무작위번호 = system.uniform(0,1);