목차
소개
슬롯 머신 처리는 모든 모델링 응용프로그램에서 매우 중요합니다. 숫자의 품질과 숫자가 사용되는 지능은 응용 프로그램의 성공 여부를 결정하는 데 있어 적어도 모델의 논리만큼 중요할 수 있습니다. GAMS는 정보 입력, 조작 및 결과 보고를 위한 완전한 기능 세트를 갖도록 설계되었습니다. 이번 장에서는 슬롯 머신 입력에 집중하겠습니다. 장매개변수를 사용한 슬롯 머신 조작슬롯 머신 조작을 소개하고 논의합니다. 보고에 대한 자세한 내용은 장을 참조하세요.GAMS 출력, 표시문, Put 작성 시설및GAMS 슬롯 머신 교환(GDX).
매우 중요한 원칙 중 하나가 슬롯 머신에 관한 모든 논의에 동기를 부여할 것입니다.
- 참고
- 슬롯 머신는 가장 기본적인 형식으로 입력되어야 하며 각 슬롯 머신 항목은 한 번만 입력되어야 합니다.
이 원칙을 채택하는 데에는 두 가지 이유가 있습니다. 숫자는 변경될 것이 거의 확실하며, 변경된 경우 가능한 한 쉽고 안전하게 변경하는 프로세스를 만들고 싶습니다. 우리는 또한 다른 사람들이 쉽게 읽고 이해할 수 있도록 모델을 만들고 싶습니다. 슬롯 머신 양을 가능한 한 작게 유지하는 것이 확실히 도움이 될 것입니다. 모든 슬롯 머신 변환은 GAMS 표현에 명시적으로 표시되므로 연구 결과를 재현할 수 있고 독자에게 슬롯 머신 조작 중에 만들어진 모든 가정을 보여줍니다. 또 다른 장점은 모델을 실행하거나 변경하는 데 필요한 모든 것이 하나의 프로그램에 포함되어 있어 한 곳에서 다른 곳으로 또는 한 기계에서 다른 기계로 쉽게 이동할 수 있다는 것입니다.
이 장에서는 슬롯 머신 유형을 다룹니다.매개변수. 다른 슬롯 머신 유형은 섹션을 참조하세요.슬롯 머신 유형 및 정의. 슬롯 머신:매개변수은 스칼라, 목록 지향 또는 2차원 이상의 슬롯 머신의 세 가지 기본 형식으로 입력할 수 있습니다. 이러한 각 형식에 대해 GAMS는 별도의 키워드를 제공합니다.
| 키워드 | 설명 |
|---|---|
| 스칼라 | 단일(스칼라) 슬롯 머신 항목. |
| 매개변수 | 하나 이상의 세트에 대해 정의된 목록 지향 슬롯 머신. |
| 슬롯 머신 | 슬롯 머신 지향 데이터는 두 개 이상의 차원을 포함해야 합니다. |
표 1:매개변수, 스칼라 및 슬롯 머신
용어에 유의하세요.매개변수는 슬롯 머신 유형과 키워드라는 두 가지 방식으로 사용되므로 볼 수도 있습니다.스칼라그리고슬롯 머신특수 형식으로매개변수. 각 슬롯 머신 입력 형식은 다음 섹션에서 소개되고 논의됩니다. 장의 마지막에는 특수 슬롯 머신 유형약어소개되었습니다.
- 참고
- 기본적으로 모든 입력 형식의 매개변수는 한 번만 초기화될 수 있으며 그 후에는 할당문을 사용하여 슬롯 머신를 수정해야 합니다. 이는 달러 제어 옵션을 사용하여 변경할 수 있습니다.$onMulti.
- 이 장에서는 선언할 전체 구문을 설명합니다.매개변수선택적 초기화가 포함되어 있습니다. 따라서 선언 시 슬롯 머신를 초기화하는 것이 가능하지만 슬롯 머신베이스나 스프레드시트와 같은 다른 소스에서 슬롯 머신를 읽는 경우가 많습니다. 이에 대한 자세한 내용은 해당 장에서 확인할 수 있습니다.다른 응용 프로그램과의 슬롯 머신 교환.
스칼라
그 스칼라문은 차원이 0인 GAMS 매개변수를 선언하고 (선택적으로) 초기화하는 데 사용됩니다. 이는 연관된 세트가 없으므로 매개변수와 연관된 숫자가 정확히 하나라는 것을 의미합니다.
구문
일반적으로 a의 구문은스칼라GAMS 선언은 다음과 같습니다:
스칼라[s] 스칼라_이름 [텍스트] [/숫자_값/]
스칼라_이름 [텍스트] [/숫자_값/] ;
키워드스칼라[들]이것은 다음을 나타냅니다.스칼라진술 및scalar_name는 GAMS의 스칼라 내부 이름입니다.식별자. 선택사항설명 텍스트스칼라 및 선택 사항을 설명하는 데 사용됩니다.숫자_값다음 값으로 할당됨scalar_name. 숫자_값고정된 숫자 또는 다음과 같이 주어질 수 있습니다.지속적인 평가. 또는 특수 슬롯 머신 유형약어값으로 사용될 수 있습니다. 약어에 대한 자세한 내용은 섹션을 참조하세요.약어.
하나의 스칼라 명령문에 하나 이상의 스칼라가 선언될 수 있다는 점에 유의하십시오. 항목은 쉼표나 줄 끝으로 구분되어야 합니다. 설명 텍스트 및 선택 방법에 대한 조언은scalar_name, 튜토리얼 보기좋은 코딩 관행.
스칼라 문에서는 스칼라를 선언할 수 있지만 초기화할 수는 없다는 점에 유의하세요. 다음 예시에 설명된 것처럼 나중에 값을 할당할 수도 있습니다.
예시적인 예
스칼라
rho "할인율" / .15 /
irr "내부 수익률"
life "생산 단위의 재정적 수명" / 20 /;
위의 명령문이 초기화됩니다.로그리고생명하지만 아님irr. 나중에 다른 스칼라 문을 사용하여 초기화할 수 있습니다.irr또는 할당문을 사용하여 값을 제공할 수 있습니다.
irr = 0.07;
일반적인 스칼라 할당 및 매개변수 할당에 대한 자세한 내용은 섹션을 참조하세요.할당별 슬롯 머신 입력.
매개변수
매개변수 형식하나 또는 여러 세트에 걸쳐 색인화할 수 있는 목록 지향 슬롯 머신를 입력하는 데 사용됩니다.
구문
일반적으로 a의 구문은매개변수GAMS 선언은 다음과 같습니다:
매개변수[s] param_name[(index_list)] [text] [/ 요소 [=] 숫자_값
,요소 [=] 숫자_값 /]
,param_name[(index_list)] [text] [/ 요소 [=] 숫자_값
,요소 [=] 숫자_값 /] ;
키워드매개변수[들]이것은 매개변수 명령문임을 나타냅니다.param_name는 GAMS 매개변수의 내부 이름입니다.식별자. 매개변수는 다음에서 지정될 수 있는 하나 이상의 세트에 대해 정의될 수 있습니다.index_list. 선언의 인덱스 목록 지정은 선택 사항입니다. 그러나 명확성을 이유로 이를 지정하고 도메인 확인을 활성화하는 것이 대부분 권장됩니다. 도메인 확인에 대한 자세한 내용은 섹션을 참조하세요.도메인 확인. 선택사항설명 텍스트매개변수를 설명하는 데 사용됩니다.
매개변수 초기화에는 각각 레이블 또는 레이블 튜플과 값으로 구성된 슬롯 머신 요소 목록이 필요합니다.요소은 정의 세트의 요소이거나 정의 세트가 두 개 이상인 경우 정의 세트 요소의 조합입니다. 참조된 세트 요소는 매개변수가 색인된 세트에 속해야 합니다. 마지막으로,숫자_값은 세트 요소 또는 요소 튜플에 의해 정의된 레코드에 할당된 값입니다. 고정된 숫자 또는 다음과 같이 주어질 수 있습니다.지속적인 평가. 또는 특수 슬롯 머신 유형약어값으로 입력될 수 있습니다. 약어에 대한 자세한 내용은 섹션을 참조하세요.약어.
- 참고
- a의 기본값
매개변수0입니다.
목록의 시작과 끝 부분에는 슬래시를 사용해야 하며, 여러 슬롯 머신 요소가 한 줄에 나열되는 경우에는 쉼표를 사용해야 합니다. 등호 또는 공백은 레이블 튜플을 연관된 값과 분리합니다. 매개변수는 a에 사용된 것과 유사한 구문으로 정의될 수 있습니다.설정. 설명 텍스트 및 매개변수 이름 선택 방법에 대한 조언은 튜토리얼을 참조하세요.좋은 코딩 관행.
- 참고
- 여러 매개변수가 하나의 매개변수 명령문에 선언될 수 있습니다.
예시
다음 예는 매개변수 명령문을 보여줍니다. 다음에서 수정되었습니다.[MEXSS]. 예제를 더 명확하게 만들기 위해 집합 정의도 표시합니다. 집합 정의에 대한 자세한 내용은 장을 참조하세요.세트 정의.
설정 "강철 공장" / hylsa monterrey
힐삽 푸에블라 /
j "시장" / mexico-df, 몬테레이, 과달라하 /;
매개변수
dd(j) "수요 분포"
/ 멕시코-df 55,
과달라하 15 /;
매개변수에 대한 인덱스 사양dd연관된 슬롯 머신 벡터가 있을 것임을 의미합니다. 하나의 숫자는 세트의 모든 구성원에 해당합니다.j. 숫자는 집합을 지정하는 방식과 매우 유사한 형식으로 선언과 함께 지정됩니다. 이 간단한 경우에는 레이블, 공백 구분 기호, 값이 차례로 옵니다. 값에는 모든 법적 숫자 입력 형식이 허용됩니다. GAMS의 숫자 형식에 대한 자세한 내용은 하위 섹션을 참조하세요.숫자. 기본 슬롯 머신 값은 0입니다. 이후몬테레이슬롯 머신 목록에서 제외되었습니다. 해당 값은dd('몬테레이')은 0입니다. 세트와 마찬가지로 줄 끝에 쉼표는 선택사항입니다.
또한 다음 예와 같이 여러 슬롯 머신 요소를 쉼표로 구분하여 한 줄에 나열할 수도 있습니다.
매개변수
a(i) / 시애틀 = 350, 샌디에고 = 600 /
b(i) / 시애틀 2000, 샌디에고 4500 /;
매개변수가 세트에 대해 정의되고 세트의 모든 요소에 동일한 값이 할당되면 다음 표기법을 바로가기로 사용할 수 있습니다.
매개변수 param_name[(set_name)] [text] /(#|set.)set_name 숫자_값/;
여기세트은 예약어이고set_name은 이전 세트 선언문에서 선언된 세트의 이름입니다. 대신에설정합니다.다음을 사용할 수도 있습니다#서명. 다음 인위적인 예는 이 표기법을 보여줍니다.
j /j1, j2/ 설정;
매개변수 hh(j) /set.j 10/
gg /#j 10/;
다음에 해결됩니다.hh('j1') = hh('j2') = gg('j1') = gg('j2') = 10.
- 참고
- 기본적으로 선언 시 빈 매개변수를 정의하는 것은 불가능합니다. 이는 달러 제어 옵션을 사용하여 변경될 수 있습니다.$onEmpty, 다음 예에 표시된 대로:
Set i / 시애틀, 샌디에고 /;
$onEmpty
매개변수
a(i) / /;
초기화됩니다a('시애틀')그리고a('샌디에고')to 0. 따라서 다음과 같지 않습니다.
Set i / 시애틀, 샌디에고 /;
매개변수
a(i);
여기,a선언되었지만 초기화되지 않았으므로(아직 정의되지 않음) 이를 읽으려고 하면 오류가 발생합니다.
더 높은 차원을 위한 매개변수 슬롯 머신
매개변수는 여러 차원을 가질 수 있습니다. 현재 허용되는 최대 크기 수는 다음을 참조하세요.크기. 매개변수 명령문을 통한 목록 지향 슬롯 머신 초기화는 더 높은 차원의 슬롯 머신로 쉽게 확장될 수 있습니다. 1차원 사례의 각 줄에 나타나는 레이블은 더 높은 차원의 레이블 튜플로 대체됩니다. \(n\)-튜플의 요소는로 구분됩니다.점 (.) 다차원 집합의 경우와 같습니다.
다음 예는 더 높은 차원에 대한 매개변수 슬롯 머신의 사용을 보여줍니다.
매개변수
급여(직원, 관리자, 부서)
/ 앤더슨 .머피 .toy = 6000
헨드리 .스미스 .toy = 9000
호프만 .morgan .cosmetics = 8000 /;
세트에 대한 논의에서 소개한 별표와 괄호로 묶인 목록을 사용하는 모든 메커니즘도 여기에서 사용할 수 있습니다. 자세한 내용은 섹션을 참조하세요.다차원 세트. 아래는 전체 슬롯 머신 포인트의 아주 작은 부분이 초기화되는 인위적인 예입니다. 동일한 라벨 조합(또는 라벨-튜플)이 슬롯 머신 목록에 두 번 이상 나타나면 GAMS는 오류를 표시합니다.
행 설정 / row1*row10 /
열 / 열1*열10 /;
매개변수
a(행, 열)
/ (행1, 행4) . col2*col7 12
행10 . 열 10 17
행1*행7 . 열10 33 /;
이 예에서는 12개 요소row1.col2에row1.col7그리고row4.col2에row4.col7모두 단일 요소인 12에서 초기화됩니다.row10.col10at 17, 그리고 일곱 가지 요소rows1.col10에row7.col10at 33. 나머지 80개 요소(총 100개 중)는 기본값인 0으로 유지됩니다. 이 예는 희소 슬롯 머신 구조에 대한 간결한 초기화 또는 정의를 제공하는 GAMS의 기능을 보여줍니다.
슬롯 머신
슬롯 머신 형식 데이터는 슬롯 머신 문을 사용하여 GAMS에서 선언되고 초기화될 수 있습니다. 2차원 이상의 매개변수의 경우 이는 목록 기반 접근 방식보다 더 쉽고 간결한 데이터 입력 방법을 제공합니다. 왜냐하면 최소한 작은 슬롯 머신에서는 각 레이블이 한 번만 나타나기 때문입니다.
구문
일반적으로 a의 구문은슬롯 머신GAMS 선언다음과 같습니다:
슬롯 머신 table_name[(index_list)] [텍스트] [EOL
요소 요소 EOL
요소 숫자_값 숫자_값 EOL
요소 숫자_값 숫자_값 EOL] ;
키워드슬롯 머신이것은 다음을 나타냅니다.슬롯 머신선언 및슬롯 머신_이름는 GAMS 슬롯 머신의 내부 이름입니다.식별자. 매개변수 이름 뒤에는index_list. 에서index_list슬롯 머신이 정의된 세트가 지정됩니다. 선언의 인덱스 목록 지정은 선택 사항입니다. 그러나 대부분의 경우 명확성을 위해 이를 지정하고 도메인 확인을 활성화하는 것이 좋습니다. 도메인 확인에 대한 자세한 내용은 섹션을 참조하세요.도메인 확인. 선택사항설명 텍스트슬롯 머신을 설명하는 데 사용되며 그 뒤에는EOL"줄 끝", 줄 바꿈을 의미합니다.요소은 구동 세트 중 하나의 요소입니다. 자세한 내용은 아래를 참조하세요.숫자_값은 해당 요소 조합과 연관된 항목의 값입니다. 고정된 숫자 또는 다음과 같이 주어질 수 있습니다.지속적인 평가. 또는 특수 슬롯 머신 유형약어값으로 사용될 수 있습니다. 약어에 대한 자세한 내용은 섹션을 참조하세요.약어. 설명 텍스트 및 선택 방법에 대한 조언은슬롯 머신_이름, 튜토리얼 보기좋은 코딩 관행.
- 주의
- 기본적으로 슬롯 머신 문은 자유 형식이 아닌 GAMS 언어의 유일한 문입니다. 이는 달러 제어 옵션을 사용하여 변경될 수 있습니다.$onDelim.
- 슬롯 머신에 있는 모든 항목의 상대적 위치는 중요합니다. 이것은 줄 끝인 유일한 문입니다. (EOL)에는 의미가 있습니다. 숫자 표 항목의 문자 위치는 열 머리글의 문자 위치와 겹쳐야 합니다.
- 열 섹션은 한 줄에 맞아야 합니다.
- 행을 형성하는 값의 순서는 같은 줄에 있어야 합니다.
- 행의 요소 정의는 두 줄 이상에 걸쳐 있을 수 있습니다.
- 특정 열은 전체 슬롯 머신에 한 번만 나타날 수 있습니다.
간단한 슬롯 머신을 만드는 규칙은 간단합니다. 헤더 라인의 구성요소는 다음과 같습니다.
키워드 - 식별자 - index_list - 텍스트
참고하세요index_list그리고텍스트선택사항입니다.레이블은 슬롯 머신 값을 포함하는 직사각형 그리드를 매핑하기 위해 상단과 왼쪽에 사용됩니다. 라벨의 순서는 중요하지 않지만 도메인 확인이 지정된 경우(예:index_list슬롯 머신 선언의 첫 번째 줄에 제공됨) 각 레이블은 연관된 세트의 레이블과 일치해야 합니다. 라벨은 반복되어서는 안 되지만 해당 숫자가 모두 0이거나 필요하지 않은 경우에는 생략할 수 있습니다. 하나 이상의 공백이 모든 라벨과 데이터 항목을 구분해야 합니다. 빈 항목은 기본값(0)이 해당 라벨 조합과 연결된다는 것을 의미합니다.
- 참고
- 슬롯 머신에는 최소 2차원이 있어야 합니다. 현재 허용되는 최대 크기 수는 다음을 참조하세요.차원.
- 그
슬롯 머신문은 다음으로 종료될 수도 있습니다.;첫 번째 줄에 있으므로 슬롯 머신를 입력하지 않습니다. 이 경우 매개변수슬롯 머신_이름선언되었지만 초기화되지는 않았습니다. - 반대
세트,스칼라및매개변수문, 하나의 식별자만 초기화될 수 있습니다.슬롯 머신문장, 여러 개가 선언될 수 있지만.
예시적인 예
다음 예에서는 간단한 슬롯 머신이 제시됩니다. 다음에서 수정되었습니다.[코펫], 관련 세트 정의도 제공됩니다.
"식물"로 설정
/인촌, 울산, 여수 /
m "생산적 단위"
/ atmos-dist "대기압 증류 장치"
steam-cr "스팀 크래커"
방향족 "방향족 단위"
하이드로딜 "하이드로탈알킬화기" /;
표 ka(m,i) "생산 단위의 초기 캡(연간 100톤)"
인천 울산 여수
대기압 거리 3702 12910 9875
스팀-cr 517 1207
방향족 181 148
하이드로딜 180
;
이 예에서 행 라벨은 세트에서 그려집니다.m그리고 세트의 열에 있는 것들i. 각 행의 슬롯 머신는 해당 열 제목 아래에 정렬됩니다. 지정되지 않은 항목에는 기본값 0이 할당됩니다.
- 참고
- 숫자가 어느 열에 속하는지 확실하지 않은 경우 GAMS는 오류 메시지로 항의하고 모호한 항목을 표시합니다.
- 주의
- 탭을 사용하는 경우 특별한 주의가 필요합니다. GAMS 명령줄 옵션탭인탭 간격을 제어합니다. 이 간격은 편집기에 표시되는 간격과 다를 수 있으므로 눈에 보이는 정렬은 GAMS가 실제로 사용하는 정렬과 다를 수 있습니다.
계속되는 슬롯 머신
슬롯 머신에 너무 많은 열이 있어서 한 줄에 다 들어갈 수 없다면, 맞지 않는 열은 추가 줄에 계속될 수 있습니다. 설명하기 위해 동일한 예를 사용합니다.
표 ka(m,i) "생산 단위의 초기 상한(연간 100톤)"
인천 울산
atmos-dist 3702 12910
스팀-CR 517
방향족 181
하이드로딜 180
+ 요수
atmos-dist 9875
스팀-cr 1207
방향족 148
;
중요한 아이템은 플러스입니다'+'위에 서명행 레이블과 슬롯 머신의 계속되는 부분에 있는 열 레이블 왼쪽에 있습니다. 다음을 제외하고 행 레이블이 중복되었습니다.하이드로리얼관련 데이터가 없으므로 제외되었습니다. 슬롯 머신은 필요한 만큼 계속될 수 있습니다.
2차원 이상의 슬롯 머신
슬롯 머신은 2개 이상의 차원을 가질 수 있습니다. 현재 허용되는 최대 크기 수는 다음을 참조하세요.차원. 보통과 같이 점은 인접한 라벨을 구분하는 데 사용되며 행이나 열 위치에 사용될 수 있습니다. 행 왼쪽에 있는 레이블은 인덱스 목록의 첫 번째 세트에 해당하고, 각 열 머리글 오른쪽에 있는 레이블은 마지막 세트에 해당합니다. 분명히, 인덱스 목록에 세트가 있으므로 슬롯 머신의 각 숫자와 연관된 레이블의 수가 동일해야 합니다.
최상의 레이아웃은 정의 세트의 크기와 슬롯 머신 양에 따라 다릅니다. 슬롯 머신를 구성하고 검사하는 가장 직관적으로 만족스러운 방법을 제공해야 합니다. 대부분의 사람들은 행을 가로질러 숫자를 살펴보는 것보다 열을 살펴보는 것이 더 쉽습니다. 그러나 행에 추가 라벨을 붙이면 정보 밀도가 높아진다는 장점이 있습니다.
다음 예는 다음에서 수정됨[마르코]는 차원이 2개 이상인 슬롯 머신의 사용을 보여줍니다.
ci "상품: 중급" 설정
/나프타 “나프타”
dist "증류물"
경유 "경유"/
cr "상품: 원유"
/ mid-c "중앙 대륙"
w-tex "웨스트-텍사스" /
q "중간제품의 속성"
/ 밀도, 황 /;
슬롯 머신 속성(ci, cr, q) "혼합 속성"
밀도 황
나프타. mid-c 272 .283
나프타. w-텍스 272 1.48
거리 중반-c 292 .526
거리 w-텍스 297 2.83
가스 오일. 중반 295 .98
가스 오일. w-텍스 303 5.05
;
슬롯 머신속성또한 아래와 같이 배치될 수 있습니다:
슬롯 머신 속성(ci,cr,q) "혼합 속성"
w-tex.density mid-c.density w-tex.sulfur mid-c.sulfur
나프타 272 272 1.48 .283
거리 297 292 2.83 .526
경유 303 295 5.05 .98
;
압축 슬롯 머신
집합 논의에서 소개된 별표와 괄호로 묶인 목록을 사용하는 모든 메커니즘도 여기에서 사용할 수 있습니다. 이러한 메커니즘에 대한 자세한 내용은 섹션을 참조하세요.다차원 세트. 다음 예에서는 반복되는 열이나 행을 별표와 괄호 안의 목록으로 압축할 수 있는 방법을 보여줍니다. 집합 구성원은 표시되지 않지만 쉽게 유추할 수 있습니다.
슬롯 머신 업그레이드(strat,size,tech)
small.tech1 small.tech2 Medium.tech1 Medium.tech2
전략-1 .05 .05 .05 .05
전략-2 .2 .2 .2 .2
전략-3 .2 .2 .2 .2
전략-4 .2 .2
슬롯 머신 업그레이드x(strat,size,tech) "슬롯 머신 작성의 대체 방법"
기술1*기술2
전략-1.(소,중) .05
전략-2*전략-3.(소형,중형) .2
전략-4.중간 .2;
긴 행 라벨 처리
적절한 수의 열을 수용하기 위해 슬롯 머신의 두 번째 또는 세 번째 줄에서 행 레이블을 계속할 수 있습니다. 구분 기호는 점 뒤에 와야 하며 불완전한 행 레이블 튜플을 포함하는 각 줄의 나머지 부분은 비어 있어야 합니다.
다음 예는 다음에서 수정됨[인더스]은 설명을 위해 사용됩니다. 이 슬롯 머신에는 실제로 9개의 열과 많은 행이 있습니다. 여기서는 연속된 행 레이블 튜플을 보여주기 위해 작은 부분만 재현했습니다.
슬롯 머신 수확량 (c,t,s,w,z) "작물 수확량 (에이커당 미터톤)"
nwfp pmw
밀.(소, 세미 기계).la-식물.
(무거움, 1월) .385 .338
밀.(소, 세미 기계).la-식물. 빛 .506 .446
밀.(소, 세미 기계).la-식물. 표준 .592 .524
밀.(수소, 세미 기계).(qk-harv, 표준).
(무거움, 1월) .439 .387
지속적인 평가
고정된 숫자 값 대신 상수 표현식을 사용하여 슬롯 머신 문의 매개변수에 값을 할당할 수도 있습니다. 슬롯 머신 문에 사용되는 상수 표현식의 구문은 다음에 설명된 GAMS 구문을 따릅니다.매개변수를 사용한 슬롯 머신 조작, 그러나 아래에 요약된 것처럼 스칼라 값과 GAMS 내장 함수의 하위 집합으로 제한됩니다.
- 실수만
- 왼쪽에서 오른쪽으로 평가
- 연산자 우선순위:
- ^ **
- * /
- + - 이진 및 단항
- < <= = <> >= > LE LE EQ NE GE GT
- 아님
- 그리고
- OR XOR EQV IMP
- 참조기능지원되는 기능 목록
슬롯 머신 문에서 사용될 때 상수 표현식은 대괄호 [ ] 또는 중괄호 쌍으로 묶어야 합니다. 해당 괄호 안의 공백은 자유롭게 사용할 수 있습니다. 다음은 간단한 예입니다.
스칼라 x "PI 절반" / [pi/2] /
e "유명한 숫자" / [ exp( 1 ) ] /;
매개변수 y "데모" / USA.(높음,낮음) [1/3]
USA.중간 1/4 /;
할당별 슬롯 머신 입력
할당문을 사용하여 슬롯 머신를 입력할 수도 있습니다. 섹션에서 과제를 자세히 소개하고 논의합니다.할당 명세서. 이 섹션은 간략한 전망이며 이미 선언된 매개변수에 값이 할당되는 방법을 보여줍니다. 일반 할당문의 형식은 다음과 같습니다.
매개변수_이름[(index_list)] = 표현식;
여기매개변수_이름이전에 스칼라, 매개변수 또는 슬롯 머신 문에서 선언된 매개변수의 이름입니다.index_list제어 인덱스를 나타내며 세트 또는 세트, 레이블 또는 레이블 튜플 또는 이들의 조합을 포함할 수 있습니다.표현숫자, 수치 표현 또는 약어일 수 있습니다. 숫자 표현식에 대한 자세한 내용은 섹션을 참조하세요.표현.
다음 예는 슬롯 머신 입력에 할당이 사용되는 방법을 보여줍니다.
j /j1, j2, j3/ 설정;
스칼라 a1;
스칼라 a2 /11/;
매개변수 cc(j),
bc(j) /j2 22/;
a1 = 10;
a2 = 5;
cc(j) = bc(j)+10;
cc("j1") = 1;
스칼라a1이(가) 선언되었지만 첫 번째 스칼라 문에서 초기화되지 않았습니다. 첫 번째 할당에서는 값 10이 할당됩니다. 스칼라a2은 두 번째 스칼라 문에서 초기화되고 이 값은 두 번째 할당에서 5로 변경됩니다. 원본 슬롯 머신는 유지되지 않습니다. 매개변수 설명에서 매개변수cc(j)선언되었지만 초기화되지 않았으며 매개변수bc(j)다음에 대해서만 초기화됩니다.j2. 이는 다음을 의미합니다.bc('j2') = 22그리고bc('j1') = bc('j3') = 0, 기본값입니다. 이제 세 번째 할당에서 매개변수를 설정합니다.cc(j)그리고 세트의 모든 요소에 할당j매개변수의 값bc(j)더하기 10. 그래서 우리는cc('j2') = 32그리고cc('j1') = cc('j2') = 10. 이 예에서는 세트j에는 3개의 요소만 있으므로 동시에 3개의 할당만 이루어집니다. 그러나 집합 요소의 수가 100,000과 같이 크다고 가정하면 각 요소에 단 하나의 할당 문으로 값이 할당됩니다. 마지막으로,의 값cc('j1')이 1로 변경되었습니다.
위의 예에서 할당은 하나의 특정 세트 요소 또는 전체 세트를 참조하는 것을 관찰하십시오. 세트의 일부에만 할당하는 것도 가능합니다. 부분 집합 참조에 대한 메커니즘은 섹션에서 논의됩니다.할당에서 도메인 제한. 부분 세트 참조가 있는 할당에서 새 값이 할당되지 않은 세트 요소는 이전 값을 유지합니다. 이는 기본값, 매개변수나 슬롯 머신 문의 값, 이전 계산의 결과일 수 있다는 점을 기억하세요.
약어
약어는 문자열을 값으로 사용할 수 있는 특수 슬롯 머신 유형입니다. 약어는 다음과 같습니다.아니요 숫자 값문자열로만 처리됩니다.
구문
약어에 대한 선언은 집합 또는 매개변수 선언과 유사합니다. 기본 형식은 다음과 같습니다.
약어[s] 약어_이름 [텍스트] , 약어_이름 [텍스트];
키워드약어[들]이것은 다음을 나타냅니다.약어문장 및acronym_name은 GAMS의 내부 약어 이름입니다.식별자. 선택사항설명 텍스트는 약어를 설명하는 데 사용됩니다. 설명 텍스트 및 선택 방법에 대한 조언은acronym_name, 튜토리얼 보기좋은 코딩 관행.
하나의 약어 선언문에 두 개 이상의 약어가 선언될 수 있다는 점에 유의하십시오. 항목은 쉼표나 줄 끝으로 구분되어야 합니다. 간단한 예가 이를 보여줍니다.
약어 월요일, 화요일, 수요일, 목요일, 금요일;
약어 사용법
두문자어는 스칼라, 매개변수 및 슬롯 머신 명령문에서 데이터로 사용될 수 있습니다. 매개변수 문의 약어에 대한 예는 다음과 같습니다.
기계 설정 / m-1*m-5 / ;
약어
월요일, 화요일, 수요일, 목요일, 금요일;
매개변수
종료(기계)
/m-1 화요일
m-2 수요일
m-3 금요일
m-4 월요일
m-5 목요일 /;
아래 예와 같이 할당에 두문자어를 사용할 수도 있습니다. 과제에 대한 자세한 내용은 섹션을 참조하세요.할당 명세서.
약어 월요일, 화요일, 수요일, 목요일, 금요일;
스칼라 dayOfWeek;
dayOfWeek = 수요일;
참고하세요숫자덧셈이나 뺄셈과 같은 연산은 약어로 허용되지 않습니다. 두문자어에는 숫자 값이 없으므로 이러한 작업은 의미가 없습니다.
두문자어가 사용될 수 있는 또 다른 상황은 논리적 조건입니다. 논리적 조건에 대한 자세한 내용은 장을 참조하세요.조건식, 할당 및 방정식. 이는 다음 예에 나와 있습니다.
약어 월요일, 화요일, 수요일, 목요일, 금요일;
스칼라 dayOfWeek
근무시간 /6/;
dayOfWeek = 수요일;
workHours$(dayOfWeek <> 금요일) = 8;
두문자어에는 항등 및 부등 연산자만 사용할 수 있습니다. 두문자어에는 숫자 값이 없으므로 덧셈, 나눗셈과 같은 다른 연산은 의미가 없습니다.
약어는 GAMS에만 적용되므로 다른 시스템과 슬롯 머신를 교환할 때 처리하기 어렵습니다. 사용자는 원래 매개변수에 있는 두문자어에 해당하는 값을 갖는 추가 색인이 있는 동적 세트로 두문자어가 포함된 매개변수를 대체하는 경우가 많습니다. 위의 기계 종료 슬롯 머신는 다음과 같이 2차원 세트를 통해 표현될 수 있습니다.
기계 설정 / m-1*m-5 /
평일 / 월요일, 화요일, 수요일, 목요일, 금요일 /
폐쇄(기계,평일)
/m-1.화요일
m-2.수요일
m-3.금요일
m-4.월요일
m-5.목요일 /;
요약
이 장에서는 다음을 사용하여 매개변수를 선언하고 초기화합니다.스칼라, 매개변수및슬롯 머신문이 논의되었습니다. 장매개변수를 사용한 슬롯 머신 조작할당문을 사용하여 이 슬롯 머신를 어떻게 변경할 수 있는지 설명합니다.