슬롯 머신로 집합: 슬롯 머신가 지정된 집합

소개

슬롯 머신는 장에 소개되어 있습니다.슬롯 머신 정의. 일반적으로 GAMS의 슬롯 머신는 정렬되지 않은 레이블 모음으로 간주됩니다. 그러나 다중 기간 계획 모델과 같은 일부 상황에서는 일부 슬롯 머신를 시퀀스인 것처럼 처리해야 합니다. 이 장에서 우리는 다음과 같은 개념을 확립할 것이다.명령됨 슬롯 머신그리고 우리는 그들의 특별한 기능과 관련 작업을 다룰 것입니다.

정렬된 슬롯 머신가 필요한 예에는 연결된 서로 다른 기간의 조건을 명시적으로 나타내는 경제 모델, 도시의 그리드 표현에서와 같이 공식화에 인접한 영역의 표현이 필요할 수 있는 위치 문제, 일정 문제 및 ' 형식의 방정식으로 자본 재고를 모델링하는 프로그램이 포함됩니다.기간 말의 주식 \(n\)은 기간 말의 주식 \(n-1\)에 \(n\) 기간의 순이익을 더한 값과 같습니다.'.

참고
기간의 시퀀스를 포함하는 모델이 종종 호출됩니다.동적 모델, 시간이 지남에 따라 조건이 어떻게 변하는지 설명하기 때문입니다. 이 단어의 사용동적불행히도 다음과 관련하여 사용된 의미와는 다른 의미를 갖습니다.동적 슬롯 머신, 하지만 이것은 불가피한 일입니다.

정렬된 슬롯 머신와 정렬되지 않은 슬롯 머신

특정 1차원 집합은 마치 시퀀스인 것처럼 처리될 수 있습니다. 해당 슬롯 머신는 주문해야 하며정적. 1차원 집합은 집합의 요소 정의 또는 초기화가 다음의 슬롯 머신에 해당하는 경우 슬롯 머신가 지정됩니다.라벨GAMS 항목 슬롯 머신.

참고
  • GAMS 입력 슬롯 머신는 개인이 입력한 슬롯 머신입니다.라벨명시적으로 또는 약칭을 사용한 결과로 GAMS 프로그램에 처음 나타남별표 표기법.
  • 단순화를 위해 정적이고 슬롯 머신가 있는 세트를 종종 다음과 같이 지칭합니다.슬롯 머신 주문.

GAMS는 다음을 유지합니다고유 요소하나 이상의 세트에서 요소로 사용되는 모든 라벨이 나열되는 목록입니다. 한 세트의 요소 슬롯 머신는 고유 요소 목록의 요소 슬롯 머신와 동일합니다. 이는 레이블 중 일부가 이전 정의에서 사용된 경우 세트의 슬롯 머신가 보이는 것과 다를 수 있음을 의미합니다. 달러 제어 옵션을 사용하면 라벨의 내부 GAMS 슬롯 머신를 볼 수 있습니다.$onUELlist. 이 지시어는 다음과 같은 맵을 생성합니다.컴파일 출력목록 파일의. 목록 파일 및 일반적인 GAMS 출력에 대한 자세한 내용은 장을 참조하세요.GAMS 출력. 경험상 좋은 규칙은 사용자가 슬롯 머신를 주문하기를 원하고 슬롯 머신의 라벨이 아직 사용되지 않은 경우 주문된다는 것입니다.

아래 예에서는 슬롯 머신가 있는 세트와 슬롯 머신가 없는 세트와 슬롯 머신를 보여주는 지도를 보여줍니다. 입력은 다음과 같습니다:

$onUEL목록
t1 설정 / 1987, 1988, 1989, 1990, 1991 /
       t2 / 1983, 1984, 1985, 1986, 1987 /
       t3 / 1987, 1989, 1991, 1983, 1985 / ;

라벨에 유의하세요"1987"는 GAMS에 표시되는 첫 번째 라벨입니다. 슬롯 머신의 초기화 목록에서 마지막 라벨로 다시 나타납니다.t2. 이는 집합을 의미합니다.t2is아님주문 및 사용 시도t2이 장의 뒷부분에 소개된 작업과 같이 슬롯 머신를 암시하는 문맥에서는 오류 메시지가 발생합니다. 세트를 관찰하십시오.t3다음의 모든 구성원과 마찬가지로 명령을 받습니다.t3이전에 GAMS 프로그램에 등장했으며 정의에 나열된 슬롯 머신와 동일합니다.t3.

고유한 요소 목록아래는 항목 슬롯 머신(중요한 것)와 라벨을 사전 슬롯 머신로 정렬하여 얻은 정렬 슬롯 머신를 보여줍니다. 왼쪽의 한 자리 숫자는 해당 줄의 첫 번째 라벨의 일련 번호입니다.

일반 Al g e b a i c 모델링 시스템
고유한 요소 목록

참가 슬롯 머신의 고유 요소
    1 1987년 1988년 1989년 1990년 1991년 1983년
    7 1984년 1985년 1986년

정렬된 슬롯 머신의 고유 요소
    1 1983년 1984년 1985년 1986년 1987년 1988년
    7 1989 1990 1991

세트 선언을 프로그램 시작 부분에 더 가깝게 이동하여 세트를 항상 주문할 수 있습니다. 이러한 제한 사항을 염두에 두고 다음 섹션에서 슬롯 머신가 지정된 세트와 함께 사용할 수 있는 작업을 계속하겠습니다.

슬롯 머신 정렬

고유한 요소의 입력 슬롯 머신 외에 정렬된(알파벳순) 슬롯 머신도 있다는 점에 유의하세요. 정렬된 슬롯 머신(정렬된 집합 또는 정렬되지 않은 집합의)를 얻으려면 특별하게 사전 정의된 2차원 집합정렬된UEL(*,*)사용할 수 있습니다. 설정된 다음 예를 고려하십시오.j알파벳순으로 정렬된 형식으로 보고됩니다.

j/c, a, b, 1, 2, 11 / 설정;
디스플레이 j;
별칭(*,u);
파일 주문 /ordered.txt/;
loop(SortedUels(u,j), put order j.tl:0 ' ');
putclose를 주문했습니다.

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

---- 2슬롯 머신j

c, a, b, 1, 2, 11

예상대로,표시문슬롯 머신의 요소를 표시j입장 슬롯 머신에서아님알파벳순으로. 그러나 요소는 파일에 알파벳 슬롯 머신로 나열됩니다.주문.txt. 또한 알파벳순 정렬은 다음과 같은 슬롯 머신로 이어진다는 점에 유의하세요.11선행2.

1 11 2 a b c

위의 예에서u별칭은유니버설 슬롯 머신. 외부 파일 작성에 대한 소개는넣다, 장 참조Put 글쓰기 시설.

오드 및 카드 운영자

섹션에 명시된 대로라벨장에서GAMS 프로그램, GAMS의 라벨에는 숫자 값이 없습니다. 사용된 예는 '1986' 1986이라는 숫자 값과 ' 라벨이 없습니다.01' ' 라벨과 다릅니다.1'. 이 섹션에서는 두 가지 연산자를 소개합니다 -ord그리고카드- 슬롯 머신에 적용될 때 정수 값을 반환합니다. 반환된 정수 값은 라벨의 숫자 값을 나타내지는 않지만 동일한 목적으로 사용될 수 있습니다.

참고
GAMS는 일부를 제공합니다문자열 조작확장을 통한 기능카드그리고ord문자열에서도 작업할 수 있는 연산자.

Ord 연산자

운영자ord집합에서 구성원의 상대적 위치를 반환합니다.

주의
기본적으로 연산자ord정적이고 슬롯 머신가 있는 1차원 집합에만 사용할 수 있습니다.

일부 예에서는 사용법을 보여줍니다.

t "기간" 설정 / 1985*1995 / ; 
매개변수 값(t) ;
값(t) = ord(t);

위 명령문의 결과로 값은발('1985')1이 될 것입니다.발('1986')2가 될 것입니다.

일반적인 용도ord분석적으로 지정된 방식으로 증가하는 수량을 나타내는 벡터를 설정하는 것입니다. 예를 들어, 기준 기간에 한 국가의 인구가 5,600만 명이고 인구가 연간 1.5%의 비율로 증가하고 있다고 가정합니다. 그러면 다음 해의 인구는 다음과 같이 계산될 수 있습니다.

인구(t) = 56*(1.015**(ord(t) - 1)) ;

GAMS에서 일반적인 행렬 연산을 시뮬레이션하는 것이 유용한 경우가 많습니다. 2차원 매개변수의 첫 번째 인덱스는 편리하게 행을 나타낼 수 있고, 두 번째 인덱스는 열과 슬롯 머신가 필요합니다. 아래 예는 행렬의 위쪽 삼각형을 행 인덱스와 열 인덱스를 더한 것과 동일하게 설정하고 대각선과 아래쪽 삼각형을 0으로 설정하는 방법을 보여줍니다.

설정 i "행 및 열 레이블" / x1*x10 /;
별칭(i,j);
매개변수 a(i,j) "일반 정사각 행렬";
a(i,j) $ (ord(i) < ord(j)) = ord(i) + ord(j);

할당문에서 논리적 조건에 유의하세요.(ord(i) < ord(j))상위 삼각형 항목에 대한 할당을 제한합니다. GAMS의 논리적 조건 및 조건부 할당에 대한 자세한 내용은 섹션을 참조하세요.논리적 조건그리고조건부 할당각각.

슬롯 머신는 운영자를 위해 주문되어야 한다는 엄격한 요구 사항에 유의하십시오.ord사용하려면 다음을 사용하여 완화할 수 있습니다.달러 통제 옵션부름offOrder. 이전 섹션의 예시를 다시 살펴보는 다음 줄을 고려하세요.

$off주문
t1 설정 / 1987, 1988, 1989, 1990, 1991 /
          t2 / 1983, 1984, 1985, 1986, 1987 /;
매개변수 p(t2);
p(t2) = ord(t2);
디스플레이 p;

위에서 설명했듯이 슬롯 머신t2is아님명령했습니다. 따라서 다음을 사용하여ord(t2)모델 어딘가에서 일반적으로 오류 메시지와 함께 프로그램이 종료됩니다. 그러나 달러 제어 옵션의 경우offOrder활성, 슬롯 머신t2주문된 것처럼 처리되며표시문다음 출력을 생성합니다:

-- 6 매개변수 p
1987년 1.000, 1983년 2.000, 1984년 3.000, 1985년 4.000, 1986년 5.000

이것은 어떤 상황에서는 유용할 수 있지만 이 옵션에는 대가가 따릅니다. 왜냐하면 시스템이 이상하고 잘못된 공식과 데이터 슬롯 머신를 진단할 수 없기 때문입니다. 슬롯 머신를 주문해야 한다는 엄격한 요구 사항이 있습니다.ord연산자는 다음을 통해 다시 켤 수 있습니다.onOrder.

카드 운영자

운영자카드슬롯 머신의 요소 수를 반환합니다.

참고
운영자카드정적 및 동적 세트, 슬롯 머신가 지정된 세트 및 슬롯 머신가 지정되지 않은 세트 등 모든 세트와 함께 사용할 수 있습니다.

다음 예는 그 사용법을 보여줍니다:

t "기간" 설정 / 1985*1995 /;
스칼라 s;
s = 카드(t);
디스플레이 s;

참고하세요s설정 이후 값 11이 할당됩니다t11개의 요소가 있습니다.

일반적인 용도카드예를 들어 변수를 수정하기 위해 마지막 기간에만 일부 조건을 지정하는 것입니다. 다음과 같은 인위적인 예를 생각해 보세요.

c.fx(t)$(ord(t) = 카드(t)) = 수요(t);

논리적 조건에 유의하세요(ord(t) = 카드(t))슬롯 머신의 마지막 요소에 대한 할당을 제한합니다.티:다른 구성원에게는 할당이 이루어지지 않았습니다.t. 변수를 수정하는 이 방법의 장점c그 회원은t안전하게 변경될 수 있으며 이 문은 항상 수정됩니다.c마지막 요소에 대해. GAMS의 논리적 조건 및 조건부 할당에 대한 자세한 내용은 섹션을 참조하세요.논리적 조건그리고조건부 할당각각.

지연 및 선도 연산자

지연 및 선도 연산자는 다음을 연관시키는 데 사용됩니다.현재주문한 슬롯 머신의 구성원이전또는다음집합의 구성원입니다. GAMS는 두 가지 형태의 시차 및 선행 연산자(선형 및 순환)를 제공하며 다음과 같이 요약됩니다.표 1. 아래 표에 참고하세요.t주문된 슬롯 머신의 구성원이며n은 양의 정수입니다.

작동기호설명
선형 지연t-n 집합에서 상대 위치가 다음과 같은 슬롯 머신 집합의 요소를 참조합니다.ord(t)-n.
선형 리드t+n 집합 내 상대 위치가 다음과 같은 슬롯 머신 집합의 요소를 나타냅니다.ord(t)+n.
원형 지연t--n 다음과 동일t - n, 여기서만 집합의 첫 번째 요소가 집합의 마지막 요소 앞에 오는 것으로 가정하여 요소의 원을 형성합니다.
원형 리드t++n 다음과 같습니다t + n, 여기서만 집합의 마지막 요소 뒤에 집합의 첫 번째 요소가 오는 것으로 가정하여 요소의 원을 형성합니다.

표 1:선형 및 순환 지연 및 선도 연산자

유일한 차이점은 다음과 같습니다.선형그리고원형지연 및 선두 연산자는 끝점을 처리하는 방법입니다.선형연산자는 슬롯 머신가 지정된 집합의 첫 번째 구성원 이전과 마지막 구성원 뒤에 구성원이 없다고 가정합니다. 이러한 가정으로 인해 실제로는 존재하지 않는 세트 요소가 참조될 수 있습니다. 따라서 사용자는 엔드포인트 처리에 대해 신중하게 생각해야 합니다. 선형 지연 및 리드 연산자가 있는 모델에는 이를 처리하기 위한 특별한 예외 처리 논리가 필요합니다. 다음 두 섹션에서는 이러한 연산자가 일반적으로 사용되는 할당 및 방정식의 맥락에서 GAMS에서 이 문제를 처리하는 방법을 설명합니다. 선형 시차 및 선행 연산자는 일련의 연도(예: 1990~1997년)처럼 반복되지 않는 기간을 모델링하는 데 유용합니다.

원형지연 및 선두 연산자는 구성원의 순환 슬롯 머신를 형성하기 위해 집합의 첫 번째 구성원과 마지막 구성원이 인접해 있다고 가정합니다. 이는 '를 의미합니다.첫 번째--1' '에 대한 참조입니다.마지막' 그리고 '마지막++2' '와 같습니다첫 번째++1'. 모든 참조 및 할당이 정의됩니다. 순환성의 가정은 연중 몇 달이나 하루 중 몇 시간과 같이 반복되는 기간을 모델링하는 데 유용합니다. 1월을 12월의 다음 달로 생각하는 것은 자연스러운 일입니다. 농업 농장 예산 모델과 인력 스케줄링 모델은 순환 리드가 자연스럽게 발생하는 애플리케이션의 예입니다.

참고
  • GAMS는 선형 지연 및 선두 연산자를 구별할 수 있습니다.'-'그리고'+'에서산술 연산자문맥에 따라. 모호함을 피하기 위해 GAMS는 산술 연산자와 지연 및 선행 연산자를 혼합하는 것을 허용하지 않습니다. 예를 들어,i+1+1허용되지 않지만 쓰기i+(1+1)작동할 겁니다.
  • 지연(또는 선행) 값을 관찰하십시오.n은 명시적인 상수일 필요는 없습니다. 정수로 평가된다면 임의의 표현식일 수 있습니다. 그렇지 않으면 오류 메시지가 생성됩니다. 부정적인 결과는 의미의 전환을 유발합니다(예: 지연에서 선두로).

지연 및 선행 연산자가 다음과 함께 사용되는 경우에 주의하세요.정렬되지 않음설정하면 프로그램이 오류 메시지와 함께 종료됩니다. 슬롯 머신 주문에 대한 엄격한 요구 사항은 달러 제어 옵션을 통해 완화될 수 있습니다.오프주문. 지시문인 경우$off주문이 추가됩니다. 슬롯 머신가 지정되지 않은 집합 뒤에 오는 줄은 슬롯 머신가 지정된 것처럼 처리되므로 지연 및 선행 연산자를 함께 사용할 수 있습니다. 이는 어떤 상황에서는 유리할 수 있지만 시스템이 이상하고 잘못된 공식과 데이터 세트를 진단할 수 없기 때문에 이 옵션에는 대가가 따릅니다. 지연 및 선두 연산자를 사용하기 위해 세트를 주문해야 하는 엄격한 요구 사항은 다음을 통해 다시 켤 수 있습니다.onOrder.

다음 두 하위 섹션에서는 각각 할당문과 방정식에서 지연 및 선행 연산자 사용에 대한 몇 가지 예시를 제공합니다.

과제의 지연 및 리드

지연 및 선두 연산자를 사용할 수 있습니다.할당 문. 할당의 오른쪽에 지연 또는 선행 연산자를 사용하는 것을 a라고 합니다.참조, 왼쪽에서의 사용을 an이라고 합니다.과제그리고 할당 도메인의 정의를 포함합니다. 참조 및 할당 뒤에 있는 개념은 지연 및 선행 연산자의 선형 및 원형 형태에 동일하게 유효합니다. 그러나 이 경우 존재하지 않는 요소가 참조되지 않기 때문에 순환 지연 및 선행 연산자의 경우 참조와 할당 간의 구별의 중요성이 뚜렷하지 않습니다.

참고
존재하지 않는 요소에 대한 참조는 기본값 0이 사용되는 반면, 존재하지 않는 요소에 할당을 시도하면 할당이 이루어지지 않습니다.

먼저 설명하겠습니다선형44557_44638원형연산자의 형식입니다.

과제의 선형 지연 및 선도 연산자 - 참조

지연 연산자가 할당 문의 오른쪽에 사용되는 다음 예를 고려하십시오:

t "시간 슬롯 머신" 설정 / y-1987*y-1991 /;
매개변수 a(t), b(t);
a(t) = 1986 + ord(t);
b(t) = -1;
b(t) = a(t-1);
옵션 소수 = 0;
a, b를 표시;

참고하세요옵션 설명문에서 소수점 이하 자릿수를 억제합니다.표시문.

-- 7 매개변수 a
y-1987 1987, y-1988 1988, y-1989 1989, y-1990 1990, y-1991 1991

---- 7 매개변수 b
y-1988 1987, y-1989 1988, y-1990 1989, y-1991 1990

예상대로 매개변수 값에 유의하세요.a1987년, 1988년부터 1991년까지의 라벨에 해당합니다."y-1987", "y-1988"등등. 매개변수를 관찰하세요.b은 다음 할당의 결과를 명확하게 볼 수 있도록 \(-1\)로 초기화됩니다. 마지막 할당에서 지연 연산자를 참고하세요.'-'는 오른쪽에 사용되며 그 결과는b다음 값과 동일함a에서이전기간. 첫 번째 요소와 마찬가지로 이전 마침표가 없는 경우,"y-1987", 값 0이 할당되어 이전 값 \(-1\)을 대체합니다(매개변수의 0 값은 표시되지 않음).

할당의 선형 지연 및 선두 연산자 - 할당

이전 예의 다음 변형을 고려하십시오. 여기서는 할당문의 왼쪽에 선행 연산자가 사용됩니다.

t "시간 슬롯 머신" 설정 / y-1987*y-1991 / ;
매개변수 a(t), c(t) ;
a(t) = 1986 + ord(t) ;
c(t) = -1;
c(t+2) = a(t) ;
옵션 소수 = 0;
디스플레이 a, c ;

이전과 마찬가지로,옵션 설명소수점 이하 자릿수를 억제합니다.표시문.

-- 7 매개변수 a
y-1987 1987, y-1988 1988, y-1989 1989, y-1990 1990, y-1991 1991

---- 7 매개변수 c
y-1987 -1, y-1988 -1, y-1989 1987, y-1990 1988, y-1991 1989

임무a이전 하위 섹션에 설명되어 있습니다. 매개변수에 유의하세요.c은 \(-1\)로 초기화됩니다. 할당은c왼쪽의 수석 운영자와 관련된 작업에는 특별한 주의가 필요합니다. 이 할당이 어떻게 이루어지는지 단계별로 자세히 설명하는 것이 가장 좋습니다. 각 회원에 대해t슬롯 머신대로 다음 구성원을 찾으세요.c다음과 연결됨t+2. 존재하는 경우 해당 값을 값으로 바꿉니다.a(t). 그렇지 않은 경우(라벨과 마찬가지로)"y-1990"그리고"y-1991") 할당하지 마세요. 슬롯 머신의 첫 번째 멤버t이다"y-1987"따라서 첫 번째 할당은c("y-1989")다음 값을 취함a("y-1987"), 즉 1987년입니다. 할당된 내용이 전혀 없습니다.c("y-1987")그리고c("y-1988"): 이 두 개는 이전 값 \(-1\)을 유지합니다.

할당의 순환 지연 및 선두 연산자

다음 예는 할당 문에서 순환 지연 및 선행 연산자의 사용을 보여줍니다.

슬롯 머신 s "계절" / 봄, 여름, 가을, 겨울 /;
매개변수 값 / 봄 10, 여름 15, 가을 12, 겨울 8 /
          지연(들)
          리드발(들);
시차(들) = -1 ;
lagval(s) = val(s--2) ;
리드발(들) = -1 ;
Leadval(s++1) = val(s) ;
옵션 소수 = 0;
표시 값, 지연 값, 리드 값;

이전과 마찬가지로,옵션 설명에서 소수점 이하 자릿수를 억제합니다.표시문. 결과는 아래와 같습니다.

----- 10 매개변수 값

봄 10, 여름 15, 가을 12, 겨울 8

---- 10 매개변수 지연값

봄 12, 여름 8, 가을 10, 겨울 15

---- 10개 매개변수 리드발

봄 8, 여름 10, 가을 15, 겨울 12

예제 매개변수에서lagval동안 참조용으로 사용됩니다.리드발할당에 사용됩니다. 순환 지연 및 선행 연산자의 경우 존재하지 않는 요소를 참조하지 않습니다. 따라서 참조와 할당의 차이는 중요하지 않습니다. 위 예의 다음 두 문에 유의하세요.

lagval(s) = val(s--2) ;
리드발(s++1) = 발(s) ;

다음과 동일함

lagval(s++2) = 값(s) ;
리드발(들) = 발(s--1) ;

참조 및 할당의 사용이 효과에 차이 없이 반전되었습니다.

방정식의 시차와 선도

이전 섹션에서 확립된 원칙은 아주 자연스럽게 다음과 같이 이어집니다.방정식 정의. ' 왼쪽으로 지연 또는 리드..' 기호는 방정식 정의 영역의 수정입니다. 선형 형식으로 인해 하나 이상의 개별 방정식이 억제될 수 있습니다. 방정식 본문의 지연 또는 선행 연산(' 오른쪽)..' 기호)는 참고사항입니다. 연관된 라벨이 정의되지 않으면 용어가 사라집니다.

참고
모든 지연 및 선두 피연산자는 다음과 같아야 합니다.외인성. 자세한 내용은 섹션을 참조하세요.방정식 정의의 함수.

다음 두 하위 섹션에서 우리는 다음의 사용을 설명하는 예를 제공할 것입니다.선형정의 영역과 참조용으로 각각 수정하기 위한 방정식의 지연 및 선행 연산자 형식입니다. 마지막 하위 섹션에서 우리는원형방정식의 지연 및 선행 연산자.

방정식의 선형 지연 및 선도 연산자 - 도메인 제어

다음의 간단한 인위적인 다중 기간 예를 고려하십시오. 우리는 완전한 것을 지정합니다모델사용자가 문제를 해결하고 더 자세히 탐색하도록 권장합니다.

t / t1*t5 / 설정
          t첫번째(t);
매개변수 i(t) / #t 1 /;
스칼라 k0 / 3.00 /;

tfirst(t) = yes$(ord(t) = 1);

변수 k(t), z;
k.fx(tfirst) = k0;

방정식 kk(t), 더미;
더미.. z =e= 0;
kk(t+1).. k(t+1) =e= k(t) + i(t);

모델 m /all/;
옵션 리미트 = 10;
lp min z를 사용하여 m을 푼다;

방정식에 주목kk슬롯 머신에 대해 선언됨t, 그러나 도메인을 통해 정의되었습니다.(t+1). 따라서 생성될 첫 번째 방정식은 다음과 같습니다.

k('t2') =e= k('t1') + i('t1');

변수의 값에 유의하세요k('t1')스칼라 값으로 고정됩니다.k0. 의 마지막 요소에 대해 관찰하십시오.t, 용어k(t+1)이 정의되지 않았으므로 방정식이 생성되지 않습니다. 방정식 정의 영역에서 지연 또는 선행 연산자가 사용되는 경우,방정식 목록생성된 방정식이 의도한 방정식인지 확인하는 데 유용한 도구가 될 수 있습니다.

kk(t2).. - k(t1) + k(t2) =E= 1 ; (LHS = 0, INFES = 1****)
kk(t3).. - k(t2) + k(t3) =E= 1 ; (LHS = 0, INFES = 1****)
kk(t4).. - k(t3) + k(t4) =E= 1 ; (LHS = 0, INFES = 1****)
kk(t5).. - k(t4) + k(t5) =E= 1 ; (LHS = 0, INFES = 1 ****)

요약하자면, 정의 영역의 선두 연산자는 존재하지 않는 변수에 대한 참조가 없도록 생성된 제약 조건의 수를 제한했습니다.

방정식에서 선형 지연 연산자의 사용을 보여주는 보다 현실적인 모델을 보려면 최적 경제 성장 모델의 예를 참조하세요.[램지].

방정식의 선형 지연 및 선행 연산자 - 참조

이전 하위 섹션에서 우리는 방정식을 작성하는 방법을 보여주었습니다.kk변수 수정과 함께 도메인 제어를 위한 리드 연산자 사용k(t첫 번째)k0. 대체 공식은 다음의 수정을 무시할 수 있습니다.k(t첫번째)그리고 지연 연산자와 달러 조건을 사용방정식의도메인정의는 제한되지 않습니다:

kk(t).. k(t) =e= k(t-1) + i(t-1) + k0$tfirst(t);

슬롯 머신의 첫 번째 요소에 대해 참고t약관k(t-1)그리고i(t-1)정의되지 않아 사라집니다. 조건항이 없으면 결과 방정식은 다음과 같습니다.

k('t1') =e= 0;

그러나 이것은 다음과 같이 다른 결과를 가져올 것입니다.k('t1')다음 값으로 설정되지 않습니다.k0더 이상. 그러므로조건식 k0$t첫 번째(t)추가되었습니다. 이 공식에서 방정식이 생성되는 것을 관찰하십시오.모두기간, 방정식이 억제되지 않습니다.

일반적으로 마지막 예와 같이 참조 연산자로 지연 및 선행 연산자를 사용하거나 도메인 제어에서 선택하는 것은 종종 취향의 문제입니다.

방정식의 순환 지연 및 선도 연산자

순환 지연 및 선두 연산자의 경우 도메인 제어에서의 사용과 참조 사용 간의 차이는 방정식이나 항이 억제되지 않기 때문에 중요하지 않습니다. 다음의 인위적인 예를 고려해보세요.

슬롯 머신 s "계절" / 봄, 여름, 가을, 겨울 /;

가변 제품 "매 시즌 생산되는 제품의 양"
         avail(s) "매 시즌마다 이용 가능한 상품의 양"
         Sell(s) "매 시즌 판매된 상품의 양";

방정식 matbal(s);

matbal(s).. avail(s++1) =e= avail(s) + produ(s) - 판매됨;

이 예에서는 4개의 개별 방정식이 생성됩니다. 아래에 나열되어 있습니다.

avail('여름') =e= avail('봄') + produ('봄') - Sell('봄');
avail('가을') =e= avail('여름') + produ('여름') - Sell('여름');
avail('겨울') =e= avail('가을') + produ('가을') - Sell('가을');
avail('봄') =e= avail('겨울') + produ('겨울') - Sell('겨울');

슬롯 머신의 마지막 요소에 대해 참고s용어사용 가능(s++1)다음으로 평가됨이용 가능('봄'). 이 용어는 잘 정의되어 있으므로 사라지지 않습니다. 마찬가지로, 다음 행과 같이 정의 영역에서 순환 리드 연산자를 사용하면 위와 동일한 4개의 방정식이 생성되고 방정식이 억제되지 않습니다.

matbal(s++1).. avail(s++1) =e= avail(들) + 제품(들) - 판매됨;

요약

이 장에서는 슬롯 머신 집합의 개념을 소개했습니다. 다음을 포함하여 이 문제를 다루는 GAMS의 모든 기능ord그리고카드연산자, 지연 및 선두 연산자의 선형 및 원형 형태가 자세히 설명되었습니다.