목차
무료 슬롯 게임형 프로그래밍은 혼합 정수 프로그래밍에 대한 대안적인 모델링 접근 방식입니다. 두 수학적 프로그램 모두 이산형 변수와 연속형 변수를 포함하는 최적화 문제를 모델화합니다. 무료 슬롯 게임형 프로그래밍의 장점은 문제의 고유한 논리 구조를 유지하고 활용하여 이산 선택을 모델링하기 위해 부울 변수 및 무료 슬롯 게임 정의를 사용하여 조합론을 줄이고 완화를 개선한다는 것입니다.
무료 슬롯 게임형 프로그램에는 생산 과정에서 작업 순서 지정, 시간 절약 방식으로 복잡한 프로젝트 구성, 회로에서 최적의 경로 선택 등 다양한 응용 프로그램이 있습니다.
이 섹션에서 우리는 먼저 다음을 제시합니다.수학적 공식22774_22968LogMIP 2.0 사용자 매뉴얼. 섹션 마지막 부분에서는의 구문을 소개하고 논의합니다.접합 프로그램을 위한 EMP 주석.
GAMS EMP의 무료 슬롯 게임형 프로그래밍 개발 및 LogMIP 솔버 연결에 대한 정보는 솔버 JAMS 솔버 매뉴얼의 해당 섹션을 참조하세요.
일반화 무료 슬롯 게임 프로그램(GDP)
GDP에는 부울 및 연속 변수, 개별 선택에 관계없이 충족되어야 하는 대수적 제약 조건, 개별 선택을 나타내는 무료 슬롯 게임, 부울 변수 간의 논리 관계를 포함하는 논리 명제가 있습니다. 수학적으로 GDP의 일반적인 구조는 다음과 같이 표현될 수 있습니다.
\begin방정식* \tag 28
여기서:
- \( f : \mathbb R^n \rightarrow \mathbb R \)은 함수이고, \( x \)는 경계 \(L\) 및 \(U\)가 있는 연속 변수의 벡터입니다.
- \( g : \mathbb R^n \rightarrow \mathbb R^l \)은 전역 제약 조건 세트를 나타냅니다.
- 각 무료 슬롯 게임 \(k \in K\)는 부울 연산자로 연결된 여러 항 \(i \in D_k\)으로 구성됩니다.
또는( \(\bigvee\)). - 각 항 \( i \in D_k\)은 부울 변수 \(Y_ik\)와 부등식 세트 \(r_ik(x) \leq 0 \), \(r_ik : \mathbb R^n \rightarrow \mathbb R^j\)로 구성됩니다. \(Y_ik\)가 true이면 \(r_ik(x) \leq 0 \)이 적용되고, 그렇지 않으면 이러한 제약 조건이 무시됩니다.
- \( \Omega (Y) = \textrmTrue\)는 결합 정규형 \( \Omega (Y) = \bigwedge_t=1,2, \dots, T [\bigvee_Y_jk \in R_t (Y_jk)로 표현된 부울 변수 \(Y_ik\)에 대한 논리 명제입니다. \bigvee_Y_jk \in Q_t (\neg Y_jk)] \), 여기서 각 절 \(t \in 1, \dots, T\)에 대해 \(R_t\)는 부정되지 않은 부울 변수의 하위 집합이고 \(Q_t\)는 부정된 부울 변수의 하위 집합입니다.
주의: 우리는 각 무료 슬롯 게임가 배타적 논리합이라고 가정하므로 각 \(k\)에 대해 정확히 하나의 변수 \(Y_ik\)가 참입니다. 다르게 말하면 논리 제약 조건 \( \underline\bigvee_i \in D_k Y_ik \)이 \( \Omega (Y) = \textrmTrue \)에 포함되어 있다고 가정합니다.
접합 프로그램에는 세 가지 경우가 있습니다: \(f\), \(g\) 및 \(r\) 함수는 선형이고 일부는 비선형이지만 볼록하며 일부는 비선형 및 비볼록입니다. 현재 GAMS EMP는 처음 두 가지 사례만 모델링을 용이하게 합니다.
EMP를 사용한 무료 슬롯 게임형 프로그래밍: 대수적 제약이 없는 예
접합 선택에 관계없이 만족되어야 하는 대수적 제약이 없는 다음의 간단한 예를 고려하십시오:
\begin방정식* \tag 29 \begin배열llr
각각 두 개의 항을 갖는 두 개의 무료 슬롯 게임가 있음을 관찰하십시오. 첫 번째 논리합에서 각 항은 서로 다른 부울 변수에 의해 제어됩니다. 즉, \(Y_1\)이 참인 경우 첫 번째 항이 활성화되고 \(Y_2\)가 참인 경우 두 번째 항이 활성화됩니다. 두 번째 논리합에서는 두 항 모두 부울 변수 \(Y_3\)의 적용을 받습니다. \(Y_3\)이 참인 경우 첫 번째 항이 적용되고 \(Y_3\)이 거짓인 경우 두 번째 항이 적용됩니다.
논리 명제는 \(Y_1\)이 참이고 \(Y_2\)가 거짓이면 \(Y_3\)은 거짓이어야 하며 \(Y_2\)와 \(Y_3\)은 둘 다 참일 수 없음을 의미합니다.
이 예는 다음과 같이 GAMS EMP에서 구현될 수 있습니다:
i / 1*2 / 설정
j / 1*3 /;
양수 변수 x(i), c;
변수 z;
이진변수 y(j);
x.up(i) = 5;
c.up = 7;
방정식 Obj, Eq1, Eq2, Eq3, Eq4, Eq5, Eq6;
대상.. z =e= c + 2*x('1') + x('2');
* 무료 슬롯 게임 방정식
식1.. x('2') - x('1') =l= - 2;
식2..c =l= 5;
식3.. x('2') =g= 2;
식 4..c =l= 7;
방정식 5.. x('1') - x('2') =l= 1 ;
식6.. x('1') =l= 1;
* 논리 명제의 방정식
논리 방정식 LEq1, LEq2, LEq3;
LEq1.. y('1') 및 y('2') 아님 -> y('3') 아님;
LEq2.. y('2') -> y('3')가 아님;
LEq3.. y('3') -> y('2')가 아님;
모델 소형1 / 모두 /;
파일 emp / '%emp.info%' /;
비우다;
$onput
무료 슬롯 게임 y('1') Eq1 Eq2 elseif y('2') Eq3 Eq4
무료 슬롯 게임 y('3') Eq5 else Eq6
$offput
닫다;
옵션 optcr = 0.0;
EMP 최소화 z를 사용하여 small1을 해결합니다.
이 모델에서 부울 변수 \(Y_j\)는 GAMS 이진 변수로 구현되며 논리합의 부등식은 다음과 같이 공식화됩니다.GAMS 방정식, 논리 명제는 다음과 같이 표현됩니다.GAMS 논리 방정식. 모델의 무료 슬롯 게임 구조는 다음과 같이 지정됩니다.EMP 주석파일emp.info. 이 파일에는 두 줄(접합당 한 줄)이 포함되어 있으며 각 줄은EMP 키워드 무료 슬롯 게임그리고 무료 슬롯 게임의 구조와 내용을 지정합니다. 첫 번째 줄 또는 무료 슬롯 게임에서 이진 변수y('1')29936_30028EMP 키워드 elseif새 용어의 시작을 나타내며 여기서는 이진 변수에 의해 관리됩니다.y('2')다음에 나열되고 두 개의 방정식을 포함함Eq3그리고Eq4. 마찬가지로 두 번째 줄에는 이진 변수y('3')두 번째 무료 슬롯 게임의 첫 번째 항을 지배하는 방정식은 다음과 같습니다.Eq5해당 용어에 포함되어 있습니다. 두 번째 항을 지배하는 이진 변수는 단지 다음의 부정이므로y('3'), 키워드그밖에이를 지정하기에 충분하며 다음 방정식이 따릅니다.Eq6두 번째 학기의.
- 참고
- 무료 슬롯 게임를 위한 훨씬 더 복잡한 논리적 구성이 가능합니다. 자세한 내용은 섹션을 참조하세요.무료 슬롯 게임적 프로그래밍을 위한 EMP 구문아래.
마지막으로, 해결 문의 모델 유형은 다음과 같습니다.EMP.
파일의 주석이 제공됨emp.info, 솔버 JAMS는 모델을 MIP(혼합 정수 프로그래밍) 모델로 재구성하여 하위 솔버에 전달합니다. 기본적으로 볼록 껍질 완화가 재구성에 사용되지만 사용자는 큰 M 또는 표시기 제약 조건을 사용하는 재구성을 선택할 수 있습니다. 섹션 참조무료 슬롯 게임적 프로그래밍을 위한 EMP 구문자세한 내용은.
모델 유형 EMP가 사용되는 경우 목록 파일에 일부 추가 정보가 포함되는 것을 관찰하십시오.EMP 요약그리고무료 슬롯 게임 요약특히 유용할 수 있습니다. 예시 모델의 각 목록은 다음과 같습니다.
--- EMP 요약
논리적 제약 = 3
무료 슬롯 게임 = 2
...
...
--- 무료 슬롯 게임 요약
무료 슬롯 게임 1 기간 2가 활성화되었습니다.
무료 슬롯 게임 2 Term 2가 활성화되었습니다.EMP 요약은 논리 제약 조건 및 무료 슬롯 게임의 수를 나열하고 무료 슬롯 게임 요약은 최적의 솔루션에서 어떤 무료 슬롯 게임 조건이 활성화되는지 보고합니다.
EMP를 사용한 무료 슬롯 게임형 프로그래밍: 논리 명제가 없는 예
다음의 간단한 예를 생각해 보십시오:
\begin방정식* \tag 30
이 예에는 논리 명제가 없기 때문에 이진 변수는 위와 같은 GAMS 공식의 방정식에 나타나지 않습니다. 결과적으로 이진 변수는 모델의 일부가 아니며 이러한 변수를 언급하는 모든 EMP 주석 파일은 EMP 솔버에 의해 거부됩니다. 이 문제를 피하기 위해 더미 방정식을 도입하고 이를 EMP 모델에 포함할 수 있습니다. 이렇게 하면 이진 변수가 GAMS 모델의 일부가 됩니다. 해당 코드는 다음과 같습니다.
설정 i / A, B, C /
j / 1*3 /
;
양의 변수 x(i), t;
이진변수 y(j);
변수 z;
방정식 obj, alg1, alg2, alg3,
d1t1, d1t2, d2t1, d2t2, d3t1, d3t2
더미;
obj..z =e= t;
* 일반적인 대수 방정식
alg1..t =g= x('A') + 8;
alg2..t =g= x('B') + 5;
alg3..t =g= x('C') + 6;
* 무료 슬롯 게임 방정식
d1t1.. x('A') - x('C') + 5 =l= 0;
d1t2.. x('C') - x('A') + 2 =l= 0;
d2t1.. x('B') - x('C') + 1 =l= 0;
d2t2.. x('C') - x('B') + 6 =l= 0;
d3t1.. x('A') - x('C') + 5 =l= 0;
d3t2.. x('B') - x('C') =l= 0;
* 더미 방정식
더미.. sum(j, y(j)) =g= 0;
모델 small2 / 모두 /;
파일 emp / '%emp.info%' /;
putclose emp
"접합 y('1') d1t1 else d1t2" /
"접합 y('2') d2t1 else d2t2" /
"접합 y('3') d3t1 else d3t2" /
;
옵션 optcr = 0.0;
EMP 최소화 z를 사용하여 small2를 해결합니다.
더미 방정식을 제외하면 이 공식은 첫 번째 예의 공식과 매우 유사합니다.위.
EMP는 또한 논리 방정식이 없는 모델에 대한 대체 공식, 즉 다음을 사용하는 공식을 지원합니다.암시적 기본값 바이너리 변수. 이러한 변수는 내부적으로 기본 이진 변수로 대체되는 별 기호 '*'로 EMP 주석에 표시됩니다. 이 대체 모델에는 명시적인 이진 변수가 포함되어 있지 않습니다.Y(j)따라서 위 모델에 추가할 수 있는 다음 GAMS 코드에서와 같이 더미 방정식이 생략될 수 있습니다.
모델 small3 '더미 방정식이 필요하지 않음' / small2 - 더미 /;
putclose emp
"접합 * d1t1 else d1t2" /
"접합 * d2t1 else d2t2" /
"무료 슬롯 게임 * d3t1 else d3t2" /
;
EMP 최소화 z를 사용하여 small3을 해결합니다.
무료 슬롯 게임적 프로그래밍을 위한 EMP 구문
EMP가 다음에 대한 무료 슬롯 게임를 작성하기 위해 제공하는 일반 구문EMP 주석파일emp.info다음과 같습니다:
접합 [chull [chull eps] | bigM [큰 M 값] | 인도어]
[NOT] var|* [NOT] equ ELSEIF [NOT] var|* [NOT] equ [ELSE [NOT] equ]그EMP 키워드 무료 슬롯 게임필수입니다. 이는 뒤에 오는 내용이 무료 슬롯 게임임을 나타냅니다. 다음 세 가지 구성은 선택 사항이며 가능한 세 가지 재구성과 관련이 있습니다.철), 빅 M 메소드(빅엠) 또는 표시기 제약 조건(인딕). 시퀀싱 모델에서 참고하세요.[순서]세 가지 옵션이 모두 구현되었습니다. 또한 현재 표시기 제약 조건은 솔버 CPLEX, SCIP 및 XPRESS에 의해서만 처리될 수 있습니다.
- 참고
- 기본적으로 볼록 껍질 재구성 방법이 사용됩니다.
- 각 무료 슬롯 게임에 대해 서로 다른 재구성 방법을 사용할 수 있습니다.
볼록 껍질 재구성의 경우 매개변수 값을 관찰하세요.엡실론선택적으로 지정할 수 있습니다. 이 매개변수는 제약조건 만족 여부를 확인하기 위한 상한이며, 기본값은 0.0001입니다.
큰 M 방법의 경우 값은M선택적으로 지정할 수 있습니다. 의 값M제약조건을 완화할 만큼 충분히 커야 하지만 실행 불가능한 솔루션을 피하기 위해 너무 커서는 안 됩니다. 기본값은 10000입니다.
EMP 키워드 따르기무료 슬롯 게임, 첫 번째 필수 항목은 무료 슬롯 게임를 제어하는 변수의 사양입니다.[아님] var|*. 이는 이진 변수, 부정 이진 변수 또는 ' 기호일 수 있습니다.', 이는 내부적으로 기본 이진 변수로 대체됩니다. ' 기호에 대한 예와 자세한 내용은' 이 맥락에서는 섹션을 참조하세요.EMP를 사용한 무료 슬롯 게임형 프로그래밍: 논리 명제가 없는 예. 더 나아가,equ은 첫 번째 무료 슬롯 게임항이 선택된 경우 충족되어야 하는 GAMS 방정식 이름 세트를 나타냅니다. 구문의 나머지 부분은 설명이 필요합니다.
또는 다음 구문을 사용할 수 있습니다:
기본값 [chull [chull eps] | bigM [큰 M 값] | 인도어] 논리합 [NOT] var|* [NOT] equ ELSEIF [NOT] var|* [NOT] equ [ELSE [NOT] equ]
첫 번째 줄은 선택사항이며 재구성 방법을 지정하는 데 사용됩니다. 두 번째 줄은 재공식화 방식의 지정을 생략한 일반 구문의 첫 번째 공식화와 동일하다. 일부 사용자는 재구성 방법과 무료 슬롯 게임의 사양이 무료 슬롯 게임되어 있으므로 이 대체 구문이 더 명확하다고 생각합니다.
시퀀싱 모델에 추가로[순서]이미 언급한 바와 같이 GAMS EMP 라이브러리에는 무료 슬롯 게임형 프로그래밍을 위한 두 가지 다른 모델이 있습니다: 제조 문제[FOODEMP]그리고 작업 일정 문제[만들기]