소개
이 문서는 요점을 조사하고 그 장점을 편견 없이 독립적으로 평가하는 도구인 GAMS/슬롯 머신에 대해 설명합니다. 즉, 솔루션이 다음과 같은지 확인합니다.정말솔루션. 예를 들어, 솔버가 최적이라고 보고한 솔루션 포인트를 가져와서 원문제 실현 가능성, 쌍대 실현 가능성, 최적성을 검사할 수 있습니다. 슬롯 머신에는 다양한 모드가 있어 GAMS/Base의 입력 지점은 물론 솔버가 GAMS로 다시 전달한 솔루션도 확인할 수 있습니다.
슬롯 머신가 수행한 많은 테스트(아마도 모두!)가 이미 GAMS 해결사에 의해 수행되고 있으므로 슬롯 머신는 어떤 의미에서는 중복됩니다. 그러나 솔버 솔루션을 독립적이고 투명하게 확인하는 기능은 솔버 개발, 테스트 및 디버깅에 매우 유용합니다. 두 개의 서로 다른 솔버에서 반환된 솔루션을 비교할 때도 유용합니다. 마지막으로 슬롯 머신와 같은 도구를 사용하면 솔버로 직접 작업할 때 불가능한 방식으로 다양한 최적 허용오차 및 최적성 기준을 사용하여 솔루션을 검사할 수 있습니다.
GAMS/슬롯 머신는 GAMS 시스템과 함께 자동으로 설치됩니다. 전체 GAMS/Base 라이선스가 없으면 검사관은 학생 또는 데모 모드로 실행됩니다(즉, 소형 모델만 검사합니다).
슬롯 머신법
슬롯 머신는 지원되는 모든 모델 유형과 함께 사용할 수 있습니다. 슬롯 머신는 실제로 문제를 해결하지 않기 때문에 기본 솔버로는 좋은 선택이 아니며 GAMS를 설치할 때 가능한 솔버 기본값 목록에 옵션으로 표시되지 않습니다. 그러나 명령줄을 통해 슬롯 머신를 선택할 수 있습니다.
gams trnsport LP=심사관;
또는 GAMS 옵션 설명을 통해
옵션 LP=심사관;
어딘가 이전에해결성명.
슬롯 머신는 실제 해결사가 아니기 때문에 해결사를 제어하는 일반적인 GAMS 옵션 중 상당수는 이에 영향을 미치지 않습니다. 그러나,sysout옵션은 일반적인 방식으로 해석됩니다.
슬롯 머신에서 수행되는 최적성 검사는 특정 지점에서 수행되는 1차 최적성 검사입니다. 여기에서 이러한 조건과 그것이 암시하는 모든 것에 대한 논의는 중복될 것입니다. 최적화에 대한 좋은 소개 텍스트가 이를 다룰 것입니다. 선형 프로그래밍의 경우 1차 최적성은 전역 최적성을 증명하는 데 필요한 전부입니다. 비선형 프로그래밍의 경우 이러한 조건은 최적성을 위해 필요하거나 충분하지 않을 수도 있습니다. 이는 실현 가능한 집합과 목적의 볼록성 및 제약 조건의 형태에 따라 달라집니다. 정수 프로그래밍 모델의 경우 이러한 검사는 모델에 경계를 추가하여 전역 문제를 로컬 문제로 전환하고 본질적으로 각 이산 변수를 현재 값으로 고정하는 경우에만 의미가 있습니다. 이러한 경계는 슬롯 머신에 의해 자동으로 추가됩니다.
슬롯 머신는 두 가지 기본 작동 모드로 실행됩니다. GAMS/Base에서 솔버로 전달된 입력 포인트를 검사할 수 있고 솔버에서 GAMS로 다시 전달된 포인트를 검사할 수 있습니다. 각 모드는 서로 독립적으로 사용할 수 있습니다. 기본적으로 GAMS에 의해 전달된 초기 "솔루션"을 검사하는 첫 번째 모드에서 작동하지만 GAMS가 고급 기반을 솔버에 전달하고 있음을 나타내는 경우에만 해당됩니다(참조: GAMS 사용자 가이드 및브라티오옵션). 두 번째를 슬롯 머신하려는 경우솔버-체크모드에서는 다음을 슬롯 머신하여 적절한 하위 해결사를 지정할 수 있습니다.하위 해결사옵션(섹션 참조옵션). 그렇지 않은 경우하위 해결사을 선택하면 해결 중인 모델 유형에 대한 기본 솔버가 슬롯 머신됩니다. 대부분의 경우 수행하려는 검사 유형을 정확히 지정하기 위해 옵션 파일을 슬롯 머신하게 됩니다. 옵션 파일 슬롯 머신 규칙은 다음에 설명되어 있습니다.솔버 옵션 파일.
솔루션 포인트: 정의
해결점을 정의할 수 있는 방법에는 여러 가지가 있습니다. 물론 서로 다른 정의로 인해 일반적으로 동일한 점이 생성되지만 정확하게 그렇지 않은 경우도 있습니다. 슬롯 머신는 이러한 사례를 탐색하고 분석하기 위한 것이므로 이러한 정의를 정확하게 만들어야 합니다. 슬롯 머신에서는 다음 네 가지 사항이 정의되고 사용됩니다.
- 그
gamspoint은 GAMS가 슬롯 머신에게 제공하는 입력 포인트입니다. GAMS 입력 지점에는 행과 열의 수준 및 한계 값이 포함됩니다. 검사관은 이를 주어진 대로 정확하게 사용합니다. - 그
초기점은 GAMS가 슬롯 머신에게 제공한 변수 수준(원형 변수) 및 방정식 여백(이중 변수)에 의해 결정됩니다. 이 값은 다음과 같은 용도로 사용됩니다.계산GAMS에서 전달된 값을 사용하는 대신 슬롯 머신의 함수 평가기를 사용하여 방정식 수준 및 가변 한계/비용 절감. - 그
솔루포인트다음과 유사합니다초기점: 변수 수준(원형 변수) 및 방정식 여백(이중 변수)을 슬롯 머신하여계산방정식 수준 및 가변 한계. 슬롯 머신된 변수 수준과 방정식 여백은 하위 해결사에서 반환된 것입니다. - 그
해결 지점은 하위 솔버가 반환한 지점입니다. 하위 해결사는 행과 열에 대한 수준 및 한계 값을 모두 반환합니다. 슬롯 머신는 이를 주어진 대로 정확하게 사용합니다.
수행된 검사
다음 중 하나에서 수행할 수 있는 여러 검사가 있습니다.솔루션 포인트. 기본적으로 슬롯 머신는 적절한 검사를 선택하려고 합니다. 예를 들어, 원문제 단순 솔버가 모델 상태가 최적이 아님을 반환하는 경우 유일하게 확인 가능한 확인은 원문제 변수 및 제약 조건의 실현 가능성입니다. 그러나 GAMS/Base에서 전달된 포인트를 확인할 때는 적절한 확인을 자동으로 선택하는 것이 불가능합니다.
- 원변수 타당성: 모든 원시 변수가 범위 내에 있는지 확인하세요.
- 원초 제약 타당성: 모든 원시 제약 조건이 충족되는지 확인하세요.
- 이중 변수 타당성: 모든 이중 변수가 경계 내에 있는지 확인하세요.
- 이중 제약 타당성: 모든 이중 제약 조건이 충족되는지 확인하세요.
- 원초적 보완 느슨함: 원시 변수와 이중 제약 조건 간의 상보성을 확인하고 비용을 절감합니다.
- 이중 보완 느슨함: 쌍대 변수/방정식 주변과 방정식 여유 사이의 상보성을 확인합니다.
- 평형 조건 상보성: 상보성 모델(MCP, MPEC)에서 방정식/변수 쌍의 상보성을 확인합니다.
위의 검사는 기본 허용오차로 구현됩니다. 이러한 공차는 옵션 파일을 통해 변경할 수 있습니다(섹션 참조).옵션).
위에 언급된 항목을 확인하는 다양한 방법이 있습니다. 예를 들어, 원문제 실현가능성을 확인할 때 잔차의 오류를 측정하기 위해 다양한 노름을 슬롯 머신할 수 있습니다. 현재 우리는 이러한 확인을 수행하는 한 가지 방법만 구현했습니다.
최적화 모델의 경우, 주어진 포인트가 위의 조건 1부터 6까지 얼마나 잘 만족하는지 측정하는 장점 함수를 정의하는 것이 가능합니다. 이러한 함수는 항상 음수가 아니며 해당 값은 주어진 점과 실제 해 사이의 오류를 나타냅니다. 이러한 입력 포인트가 잘 정의된 경우(예: 검사를 위해 단 하나의 포인트만 선택한 경우) 슬롯 머신는 이 포인트에서 장점 함수 값을 계산하여 다음으로 반환합니다.RObj모델 속성.
확장
기본적으로 슬롯 머신는 크기가 조정되지 않은 원본 모델을 검사합니다. 그러나 많은 경우에는 규모 조정을 고려하는 것이 중요합니다. \(x = 3.5\)인 단순 제약 조건 \(x^2 \le 9\)에 대한 행 크기 조정의 효과를 고려하세요. 이 제약 조건에 크고 작은 상수를 곱하면 제약 조건 위반 정도가 비례적으로 변경되지만 실현 가능성까지의 거리는 변경되지 않습니다. 원래 모델에 행 스케일링을 적용하면 이 문제가 해결됩니다.
대부분의 솔버는 모델을 해결하기 전에 모델의 크기를 조정하므로 타당성이나 최적성 검사 및 허용 오차가 확장된 모델에 적용됩니다. 모델 규모를 축소하는 프로세스로 인해 실현 가능성이나 최적성이 손실될 수 있습니다. 솔버가 적용한 스케일에 액세스할 수 없고 동일한 스케일 모델을 정확하게 구성할 수 없더라도 원본을 보는 것보다 슬롯 머신가 스케일링한 모델을 보면 솔버의 성능을 더 잘 이해할 수 있습니다.
슬롯 머신 검사를 수행하기 위해 스케일을 적용하지 않더라도 모델 스케일링이 어떻게 보이는지 보는 것도 흥미롭습니다. 행 스케일이 좋은 범위(예: [.1,100])에 있으면 모델의 스케일이 적절하다는 확신을 가질 수 있습니다. 대조적으로, 행 스케일이 범위 내에 있는 경우[1,1e8]제공된 솔루션의 정확성에 의문을 제기할 수 있습니다.
각 행에 대해 슬롯 머신는 다음과 같이 실제 행 규모를 계산합니다.
\[ \max (\Vert RHS_i \Vert ,\max_j( \Vert A_ij \Vert \cdot \max(1,\Vert x_j \Vert))) \]
이런 식으로 큰 레벨 값을 가진 변수는 큰 스케일 팩터로 이어집니다. 축척 비율을 변수 값과 독립적으로 만들려면 다음 옵션 파일 줄을 슬롯 머신하십시오."AbsXScale 0". 이는 위의 용어 \(\max(1,\Vert x_j \Vert)\)를 \(1\)로 대체합니다.
슬롯 머신자가 적용된 배율 인수의 크기를 제한하기를 원할 수 있으므로 실제 행 배율은 적용된 배율 인수를 얻기 위해 배율 인수 범위에 투영됩니다. 스케일 인수는 행을 스케일 인수로 나누고 해당 라그랑주 승수에 이러한 동일한 인수를 곱하여 스케일링 검사를 수행할 때 적용됩니다. 실제 스케일에 대한 정보는 실제 스케일에 대한 정보가 여전히 출력에 포함되어 슬롯 머신자에게 잠재적인 스케일링 문제에 대한 힌트를 제공합니다.
크기 조정 및 크기 조정되지 않은 검사는 독립적으로 수행됩니다. 기본적으로 크기 조정되지 않은 검사만 수행됩니다. 옵션 파일 라인을 통해 스케일링 검사를 활성화하는 경우"크기 조정 1", 이는 크기 조정되지 않은 검사를 끄지 않습니다. 다음과 같은 옵션 파일 줄이 필요합니다."크기 조정되지 않은 0"크기 조정되지 않은 검사를 끄려면.
옵션
다음 옵션은 GAMS/슬롯 머신의 동작을 제어합니다. 이들 중 다수는 부울(즉, 켜기/끄기) 옵션입니다. 이 경우 0은 꺼짐을 나타내고 0이 아닌 값은 켜짐을 나타냅니다. 옵션 파일을 생성하고 사용하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.해석기 옵션 파일.
일반 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
| absXScale | 축척 계수를 x 값에 종속되게 만들 것인지 여부. 켜져 있으면 배율 인수를 계산할 때 행렬 계수에 max(1,abs(x))를 곱합니다. 꺼져 있으면 행렬 계수가 그대로 슬롯 머신됩니다. 섹션 참조확장. | 1 |
| dumpGamsPoint | GamsPoint를 GAMS 소스 형식의 기본 파일로 덤프할지 여부. | 0 |
| dumpInitPoint | InitPoint를 GAMS 소스 형식의 기본 파일로 덤프할지 여부. | 0 |
| dumpSoluPoint | SoluPoint를 GAMS 소스 형식의 기본 파일로 덤프할지 여부. | 0 |
| dumpSolvPoint | SolvPoint를 GAMS 소스 형식의 기본 파일로 덤프할지 여부. | 0 |
| examineGamsPoint | GamsPoint를 조사할지 여부. | 0 |
| examineInitPoint | InitPoint를 조사할지 여부. 기본적으로 이 옵션은 GAMS/Base가 고급 기준을 통과하면 켜져 있고 그렇지 않으면 꺼집니다. | 자동 |
| 검사SoluPoint | SoluPoint를 검사할지 여부. 기본적으로 이 옵션은 하위 해결사가 선택된 경우 켜져 있고 그렇지 않으면 꺼져 있습니다. | 자동 |
| examineSolvPoint | SolvPoint를 검사할지 여부. 기본적으로 이 옵션은 하위 해결사가 선택된 경우 켜져 있고 그렇지 않으면 꺼져 있습니다. | 자동 |
| fCheckAll | 설정된 경우 모든 확인을 강제로 켜거나 끕니다. | 자동 |
| fCheckATTR | 설정된 경우 모델 속성 확인을 강제로 켜거나 끕니다. | 자동 |
| fCheckDCMP | 설정된 경우 이중 보완 느슨함 검사를 강제로 켜거나 끕니다. | 자동 |
| fCheckDCON | 설정된 경우 이중 제약 타당성 검사를 강제로 켜거나 끕니다. | 자동 |
| fCheckDVAR | 설정된 경우 이중 변수 타당성 검사를 강제로 켜거나 끕니다. | 자동 |
| fCheckPCMP | 설정된 경우 원시 보완 느슨함 검사를 강제로 켜거나 끕니다. | 자동 |
| fCheckPCON | 설정된 경우 원초 제약 조건 타당성 검사를 강제로 켜거나 끕니다. | 자동 |
| fCheckPVAR | 설정된 경우 원시 변수 타당성 검사를 강제로 켜거나 끕니다. | 자동 |
| objvarAutoAdjust | 목적 방정식을 만족하도록 목적 변수를 조정 | 0 |
| perpSys | 솔루션 포인트를 조사하는 동안 출력을 제어합니다. 켜져 있으면 KKT 또는 1차 최적성 조건을 육안으로 쉽게 검사하고 검증할 수 있는 방식으로 포인트를 인쇄하십시오. 첫째, 원시 수준 값과 한계는 감소된 비용 옆에 인쇄됩니다. 다음으로, 이중 수준과 경계가 행 슬랙스 옆에 인쇄됩니다. | 0 |
| returnGamsPoint | GamsPoint를 GAMS/Base에 대한 솔루션으로 반환할지 여부. | 0 |
| returnInitPoint | InitPoint를 GAMS/Base에 대한 솔루션으로 반환할지 여부. | 자동 |
| returnSoluPoint | SoluPoint를 GAMS/Base에 대한 솔루션으로 반환할지 여부. | 자동 |
| returnSolvPoint | SolvPoint를 GAMS/Base에 대한 솔루션으로 반환할지 여부. | 자동 |
| 확장 | 모델의 확장된 버전에 검사를 적용할지 여부. | 0 |
| scaleLB | 적용된 행 스케일의 하한. | 1 |
| scaleUB | 적용된 행 스케일의 상한. | 최대더블 |
| showSlacks | 실패한 검사에 대한 실행 불가능성 또는 슬랙을 명시적으로 표시 | 0 |
| 하위 해결자 | 실행할 하위 솔버를 나타냅니다. 기본적으로 슬롯 머신되는 하위 해결사는 문제의 모델 유형에 대한 기본 하위 해결사입니다. | 자동 |
| subSolverOpt | 하위 솔버에 전달할 optfile 값 | 자동 |
| 추적 | 설정하면 추적 정보가 계산되어 이 파일에 추가됩니다. | 없음 |
| 비조정 | 모델의 원본, 크기 조정되지 않은 버전에 검사를 적용할지 여부. | 1 |