무료 슬롯

소개

UW-Madison의 Michael Ferris와 GAMS Development가 공동으로 개발한 GAMS/무료 슬롯 솔버는 상보성 제약 조건의 재구성을 통해 MPEC 및 MCP 모델을 해결합니다. NLP 모델의 결과 시퀀스는 스칼라 \(\mu\)로 매개변수화되고 기존 NLP 솔버로 해결됩니다. 결과 솔루션은 MPEC 또는 MCP 솔루션을 복구하는 데 사용됩니다.

GAMS/무료 슬롯는 다양한 용도로 사용됩니다. 많은 경우 GAMS 내에서 사용할 수 있는 최초의 도구인 MPEC 모델을 해결하는 효과적인 도구입니다. 또한 MPEC 및 MCP 모델을 해결하기 위해 제안된 많은 재구성 전략을 실험하는 방법으로도 사용됩니다. 무료 슬롯(및 테스트할 모델 라이브러리)와 같은 것이 없으면 다양한 재구성 전략에 대한 포괄적이고 철저한 테스트와 비교가 불가능합니다. 이러한 목적을 더 잘 수행하기 위해 무료 슬롯는 개방형 아키텍처를 갖추고 있습니다. 모델 재구성은 NLP 솔버를 통해 솔루션을 위한 GAMS 소스로 작성되므로 이 소스를 보고 원하는 경우 수정할 수 있습니다.

기호에 대한 간략한 설명이 순서대로 되어 있습니다. 무료 슬롯 키워드긍정적은 음수가 아닌 변수를 나타내는 데 사용됩니다. 양수가 아닌 변수와 무료 슬롯 키워드에도 동일하게 적용됩니다.부정.

사용법

GAMS/무료 슬롯는 MPEC와 MCP라는 두 가지 유형의 모델을 해결할 수 있습니다. 무료 슬롯를 기본 MPEC 또는 MCP 솔버로 지정하지 않은 경우 GAMS 모델에서 솔버 문 앞에 다음 문을 사용하세요.

옵션 MPEC=무료 슬롯;  또는 MCP

또한 명령줄을 통해 무료 슬롯를 기본 솔버로 설정할 수도 있습니다:

gams nash MPEC=무료 슬롯 MCP=무료 슬롯

무료 슬롯를 기본 전략 및 공식과 함께 사용할 수 있지만 대부분의 사용자는 옵션 파일을 사용하기를 원할 것입니다(섹션옵션) 가능한 다양한 유형의 재구성에 대해 읽은 후(섹션재공식화). 또한 무료 슬롯 아키텍처에 대한 이해(섹션개방형 아키텍처)는 GAMS 옵션이 처리되는 방식을 이해하는 데 도움이 됩니다. 무료 슬롯는 GAMS 옵션을 사용하지 않지만작업공간, 워크팩터, optcr, optca, 리슬림, iterlim돔림직접적으로 무료 슬롯 하위 해결사에서 사용할 수 있도록 재구성된 모델에서 이러한 옵션을 전달합니다.

재공식화

이 섹션에서는 무료 슬롯 솔버가 MPEC를 NLP로 재구성할 수 있는 다양한 방법을 설명합니다. 설명은 MCP 모델에도 적용됩니다. MCP를 지속적인 목표를 가진 MPEC로 간주하십시오. 재구성 선택 및 각 재구성에 수반되는 보조 선택은 다음 섹션에 설명된 옵션에 의해 제어됩니다.재공식화 옵션 설정이 섹션 전체에서 참조됩니다.

원래 MPEC 모델은 다음과 같이 제공됩니다:

\begin방정식 \tag1

제약조건에 따라

\begin방정식 \tag2

그리고

\begin방정식 \tag3

대부분의 재공식화에서 목적함수(1)은 변경 없이 재구성된 모델에 포함됩니다. 어떤 경우에는 페널티 기능으로 강화될 수도 있습니다. 변수 \(x\)는 일반적으로 상위 수준 변수라고 불리는 반면(상위 수준 최적화 문제와 연관되어 있기 때문에) 변수 \(y\)는 때때로 하위 수준 변수라고 불립니다.

제약사항(2)은 무료 슬롯에 표준 방식으로 지정된 표준 비선형 프로그래밍 제약 조건입니다. 특히, 이러한 제약은 위에 표시된 불평등보다 작을 수도 있고, 불평등보다 크거나 같을 수도 있습니다. 제약 조건은 모든 재구성에 의해 변경되지 않습니다. 이러한 제약 조건은 \(x\)와 \(y\)를 모두 포함하거나 \(x\) 또는 \(y\)만 포함할 수도 있고 문제에 전혀 포함되지 않을 수도 있습니다.

관심 있는 제약조건은 평형 제약조건입니다.(3), 여기서(3)는 \(y \in \mathbfR^m\)이 함수 \(h(x,\cdot)\)와 변수 \(y\)에 대한 (아마도 무한한) 단순 경계를 포함하는 상자 \(\mathbfB\)에 의해 정의된 혼합 상보성 문제(MCP)에 대한 해법임을 나타냅니다. \(a_i \leq y_i \leq b_i\)를 갖는 점 \(y\)는 다음을 해결합니다.(3)각 \(i\)에 대해 다음 중 적어도 하나가 충족되는 경우:

\begin방정식 \tag4

특수 사례로(4), \(a = 0\) 및 \(b = +\infty\)인 경우를 고려하십시오. \(y_i\)는 해에서 결코 \(+\infty\)가 될 수 없으므로(4)비선형 상보성 문제(NCP)로 단순화됩니다.

\begin방정식 \tag5 0 \leq h_i(x,y), 0 \leq y_i \text 및 y_i h_i(x,y) = 0, i=1,\ldots,m \end방정식

즉, \(h\)와 \(y\)는 \(y\)에 수직인 \(h\)를 갖는 음이 아닌 벡터입니다. 이것이 우리의 속기 동기를 부여합니다.(4), "범인 " 기호 \(\perp\):

\begin방정식 \tag6

강제하는 다양한 방법(6)(부드러운) NLP 제약 조건을 사용하여 유지하는 것이 무료 슬롯 솔버의 기초입니다.

이제 설명 목적으로 이 문서 전반에 걸쳐 사용할 간단한 예를 소개합니다:

\[ \begin배열rc

이 문제는 고유한 해 \(x_1 = 0\), \(x_2 = -1\), \(y_1 = 0\), \(y_2 = 1\)를 갖습니다. \(f(x,y) = x_1 + x_2\) 및 \(g(x,y) = x_1^2 + x_2^2 - 1\)은 이 문제에 대한 목적 함수이자 표준 비선형 프로그래밍 제약 조건입니다. 함수 \(h(x,y)\)는 다음과 같이 제공됩니다.

\[ h(x,y) = \왼쪽[ \begin배열c

그리고

\[ a = \왼쪽[ \begin배열c

이 예는 다음과 같이 무료 슬롯 표기법으로 매우 간결하게 작성되었습니다.

$TITLE 간단한 mpec 예

변수 f, x1, x2, y1, y2;
양의 변수 y1;
y2.lo = -1;
y2.up = 1;

방정식 비용, g, h1, h2;

비용.. f =E= x1 + x2;
g.. sqr(x1) + sqr(x2) =L= 1;
h1.. x1 =G= y1 - y2 + 1;
h2.. x2 + y2 =N= 0;

모델 예 / 비용, g, h1.y1, h2.y2 /;
mpec min f를 사용하여 예제를 해결합니다.

방정식에 주목비용\(f\), 제약 조건을 정의하는 데 사용됩니다.g함수 \(g\)를 정의하고 \(h\)는 다음으로 정의됩니다.h1그리고h2. 상보성 제약 조건은 \(h\)와 \(y\) 사이의 직교 관계를 지정하는 표준 무료 슬롯 규칙을 활용합니다.모델성명. "."의 해석 다음을 사용하여 지정된 경계 \(a\) 및 \(b\)에 의존합니다.긍정적, 부정또는lo그리고무료 슬롯의 키워드. 그 이후로 참고하세요h2실제로 제약 조건 \(h_2(x,y) = 0\)이 아닌 함수 \(h_2\)를 지정합니다. 우리는 무료 슬롯 구문을 사용합니다.=N=여기서 이것이 명확하도록 하세요. \(h_1\)과 \(h_2\)에 의해 충족되는 관계는 경계에 의해 결정되므로=G=또한 다음으로 대체될 수 있습니다.=N=h1.

다양한 재구성을 설명하면서(6), \(y\) 변수를 각각 자유 \(\mathcalF\), 하한 \(\mathcalL\), 상한 \(\mathcalU\) 및 이중 경계 \(\mathcalB\) 변수로 분할하는 것이 편리합니다. 즉, 다음과 같습니다.

\[ \mathbfB := \left\ y = (y_\mathcalF,y_\mathcalL,y_\mathcalU,y_\mathcalB) : a_\mathcalL \leq y_\mathcalL,\; y_\mathcalU \leq b_\mathcalU,\; a_\mathcalB \leq y_\mathcalB \leq b_\mathcalB

우리는 (일반성을 잃지 않고) \(a_\mathcalB < b_\mathcalB\)라고 가정합니다. \(a_i = b_i\)이면(6)은 인덱스 \(i\)에 대해 간단하게 유지되며 모델에서 제약조건 \(h_i\) 및 해당(고정) 변수 \(y_i\)를 제거할 수 있습니다. \(y_i \in \mathcalF\)의 변수에 대한 상보성 조건은 단순히 동등성 \(h_i(x,y) = 0\)이므로 이러한 동등 제약 조건은 원본 모델의 NLP 제약 조건 \(g\)으로 직접 동등성으로 이동됩니다. 따라서 무료 슬롯는 \(\mathcalL\) 및 \(\mathcalU\)의 단일 경계 변수와 \(\mathcalB\)의 이중 경계 변수만 처리하면 됩니다. 위의 예에서 \(\mathcalL = \ 1 \\), \(\mathcalU = \emptyset\) 및 \(\mathcalB = \ 2 \\).

제품 재구성

곱셈 재구성은 모두 \(h_i\)와 \(y_i\)의 곱, 또는 \(h_i\)와 동일하게 설정된 일부 보조 또는 여유 변수와 \(y_i\)의 곱을 포함합니다. 기본 요점은 제약 조건이 있다는 것입니다.(3)다음의 평등 및 불평등 시스템과 완전히 동일합니다.

\begin방정식 \tag7

각 내부 곱은 음이 아닌 항, 즉 여유 변수와 변수와 그 경계 사이의 차이의 곱의 합입니다. 이러한 각 제품에서 솔루션을 얻으려면 여유 변수나 해당 보수가 0이어야 합니다. 상보성은 이 두 항의 곱셈에 의해 강제됩니다. 위의 재구성은 옵션을 사용하여 지정됩니다.참조 유형 다중.

이 테마에는 다양한 변형이 있으며 모두 옵션 파일을 통해 지정할 수 있습니다. 모든 내부 곱은 다음과 같이 동일한 방정식에 들어갈 수 있습니다.(7)위 또는 개별 제품으로 나뉩니다(각 \(i \in \mathcalL\cup\mathcalU\)에 대해 하나씩, 각 \(i \in에 대해 2개) \mathcalB\)). 예를 들어 하한 변수와 관련된 상보성 제약 조건에는 \(w_\mathcalL\), \(y_\mathcalL\geq a_\mathcalL\)의 비음성과 다음 대안 중 하나가 포함됩니다.

\[ (y_\mathcalL - a_\mathcalL)^T w_\mathcalL = \sum(i \in \mathcalL (y_i - a_i) w_i = 0 \]

또는

\[ (y_i - a_i) w_i = 0,\; 나는 = 1,\ldots,m \]

이러한 다양한 집계 수준은 옵션을 사용하여 선택됩니다.집계 없음|부분|전체.

모든 내부 제품은 다음과 같습니다.(7)음수가 아닌 항을 포함하면, 내부 곱을 0과 동일하게 설정하거나 실행 가능한 집합을 변경하지 않고 \(\leq\) 0으로 설정할 수 있습니다. 둘 중 하나를 선택하려면 옵션을 사용하세요.제약조건 평등|부등식.

구체적인 예로 옵션 파일을 고려해보세요.

참조 유형 다중
집계 없음
제약 불평등

위의 간단한 예에 적용됩니다. 이러한 옵션 파일은 비선형 프로그래밍 모델을 생성합니다.

\begin방정식 \tag8

기본적으로 단일 모델은 \(\mu\) 값이 \(0\)로 설정되어 생성됩니다. "거의 보완적인" 솔루션으로 시작하여 보완성 격차를 0으로 낮추는 것의 가치를 보여주는 많은 예(예: 내부 포인트 코드, 많은 LP 및 무료 슬롯 패키지, MPEC에 대한 재구성 접근 방식에 대한 공개된 결과)가 있습니다. 이러한 이유로 내부 제품은(7)위의 값은 항상 0 대신 스칼라 \(\mu\)와 동일(또는 \(\leq\))으로 설정됩니다. 기본적으로 \(\mu\)는 0이지만 \(\mu\)를 양수 값으로 시작하는 옵션이 있습니다(예:InitMu 1e-2), 일련의 루프 해결에서 상수 요소만큼 감소합니다(예:NumSolves 4, UpdateFac 0.1), 마지막으로 \(\mu\)의 최종 값을 사용하여 해결합니다(예:최종무 0). 옵션 파일에 다음 줄이 추가되는 경우

초기화 1.0
숫자 4

그런 다음 비선형 프로그램을 5번 연속으로 풀었습니다.(8)이 수행됩니다. 첫 번째는 \(\mu = 1\)을 사용하고 각 후속 해결은 \(\mu\)를 10으로 나누어 계산합니다(이 시퀀스의 이전 모델의 솔루션에서 무료 슬롯 솔버를 시작합니다).

마지막 예로서, 우리는 이러한 옵션의 조합을 사용하여 내부 점 및 장벽 알고리즘이 선호하는 "중앙 경로"를 추적하려고 시도하는 솔루션의 비선형 프로그램 시퀀스를 생성합니다.

참조 유형 다중
제약조건 평등
초기화 1.0
숫자 4를 풀다
업데이트팩 0.1
최종무 1e-6

다음 형식의 6개 비선형 프로그램을 생성합니다.

\[ \begin배열rc

\(\mu = 1,0.1,0.01,0.001,0.0001\) 및 \(1e-6\) 값의 경우.

슬랙스 및 이중 경계 변수

Slack 변수를 사용하면 다음에서 수행된 것처럼 비선형 프로그래밍 모델에 복잡한 비선형 표현식이 나타나는 횟수를 줄일 수 있습니다.(7). 더 간단한 예시를 위해 NCP 제약 조건(5)제약조건과 동일합니다:

\[ w_i = h_i(x,y), 0 \leq w_i, 0 \leq y_i \text 및 y_i w_i = 0, i=1,\ldots,m \]

이 재공식에는 추가 동등 제약 조건과 추가 변수 \(w\)가 있지만 \(h_i\) 표현식은 한 번만 나타납니다. 이 공식이 더 바람직한 경우가 있으며 간단한 옵션이 있습니다.느슨함 없음|긍정적\(w\) 변수의 사용을 제어합니다.

이중 경계 변수가 있는 경우 이 두 가지 여유 옵션은 약간 다르게 작동합니다. 에 대한긍정적경우, 재구성은 다음과 같이 해에서 \(h_i\)의 양수 부분과 음수 부분을 차지하는 두 개의 음이 아닌 변수 \(w_i\) 및 \(v_i\)를 도입합니다.(7). 옵션의 기본값이므로느슨함, 예(8)이 설정에서 단일 및 이중 경계 변수 모두에 발생하는 결과를 보여줍니다.

사건의 경우느슨함 없음, Scholtes는 여유 변수가 필요하지 않은 상보성을 강제하기 위해 곱셈을 사용하는 방법을 제안했습니다.

\begin방정식 \tag9

섹션의 내부 제품과 달리 참고재공식화, 우리는 다음의 불평등 중 하나를 기대할 수 있습니다.(9)은 솔루션에서 바인딩될 가능성이 없습니다(즉, \(h_i\)가 0이 아닌 경우). 따라서 이 재구성에서는 동등성을 사용할 수 없으며 더 나아가 제품을 집계해서는 안 됩니다. 따라서 이 옵션을 사용하면 재구성이 자동으로 추가 옵션을 적용합니다.제약 불평등그리고집계 없음사용자가 충돌하는 옵션을 지정하더라도 이중 경계 변수에 적용됩니다. 따라서 옵션 파일

참조 유형 다중
여유 없음

모델의 결과

\[ \begin배열rc

\(y_1\)과 관련된 상보성 제약 조건은 동등(기본값)인 반면 \(y_2\)와 관련된 제약 조건은 위에 설명된 이유로 불평등이라는 점에 유의하세요.

이중 경계 변수의 경우, 여유 변수에 대해 세 번째 옵션을 사용할 수 있습니다.느슨한 것. 이 경우 하나의 Slack만 도입되며 이 Slack을 사용하면 다음과 같이 재구성된 모델에서 \(h_i\) 함수를 두 번 작성할 필요가 없습니다.

\[ h_i(x,y) \ \ \perp \ \ a_i \leq y_i \leq b_i \iff a_i \leq y_i \leq b_i,\; w_i = h_i(x,y),\; (y_i - a_i) w_i \leq \mu,\; (y_i - b_i) w_i \leq \mu \]

도입된 여유 변수 \(w\)는 자유 변수입니다. 문제를 풀기 전에는 \(w_i\)가 해에서 양수인지 음수인지 알 수 없습니다.

우리는 이 기회를 통해 옵션 메커니즘에 대한 간단한 확장, 즉 단일 및 이중 경계 변수에 대한 옵션을 다르게 설정하는 기능을 소개합니다. 예를 들어 옵션 파일

참조 유형 다중
긍정적인 느슨함

옵션을 설정합니다느슨한 긍정단일 경계 변수 및 옵션에 대한느슨한 것모델을 생성하는 이중 경계 변수에 대한

\[ \begin배열rc

다음과 같은 추가 옵션

초기화 1.0 3.0
숫자 2 해결
업데이트팩 0.1 0.2

단일 및 이중 경계 변수에 대한 \(\mu\) 값을 별도로 제어할 수 있습니다. 이 경우 \(\mu_1\)은 생성된 세 가지 비선형 프로그래밍 모델 각각에서 \(1\), \(0.1\) 및 \(0.01\) 값을 취하는 반면 \(\mu_2\)는 \(3.0\), \(0.6\) 및 \(0.12\) 값을 취합니다.

NCP 기능

NCP 함수는 다음 속성을 가진 함수 \(\phi(r,s)\)입니다:

\[ \phi(r,s) = 0 \Longleftrightarrow r \geq 0, s \geq 0, rs = 0 \]

분명히 NCP 함수의 0을 찾는 것은 \((r,s)\)의 상보성 문제를 해결합니다. 음이 아닌 벡터의 내적을 다음과 같이 바꿀 수 있습니다.(7)인수가 상보적인 쌍인 NCP 함수의 벡터로, 예: \((y_\mathcalL - a_\mathcalL)^Tw_\mathcalL = 0\)은 \(\phi(y_i - a_i,w_i) = 0, i \in \mathcalL\)이 되고 상보성 조건을 처리하는 다른 방법에 도달합니다. NCP 함수는 비음성과 상보성을 모두 강제하므로 비음성을 명시적으로 강제하는 제약 조건은 포함될 수는 있지만 필요하지 않습니다.

NCP 함수의 예에는 min 함수가 포함됩니다.분(r,s)및 Fischer-Burmeister 함수

\[ \phi(r,s) = \sqrtr^2 + s^2 - r - s \]

NCP 함수가 모든 곳에서 음수가 아니어야 한다는 요구 사항은 없습니다(일부 지점에서는 엄격하게 음수일 수 있음). 따라서 옵션 설정에 별 의미가 없습니다.제약; 자동으로 값을 가져옵니다제약조건 평등. NCP 함수는 집계될 수 없으므로집계옵션은 항상 다음으로 설정됩니다.없음.

NCP 함수에 대한 인수는 해법에서 음수가 아니기 때문에 이중 경계 변수의 경우 \(h_i\) 함수를 직접 사용할 수 없습니다. \(h_i\)를 양수 부분과 음수 부분으로 분리하려면 슬랙스 \(w - v = h_i\)를 사용해야 합니다(단, 섹션 참조)이중 경계 변수아래). 슬랙스는 가능해요긍정적또는무료, NCP 기능이 솔루션에서 긍정성을 강제하기 때문입니다. 단일 경계 변수의 경우 여유 공간은 선택 사항이며 다음과 같을 수도 있습니다.긍정적또는무료.

위에 언급된 두 NCP 함수 모두 원점(및 \(\min\) 함수의 경우 \(r=s\) 지점)에서 미분 불가능하다는 문제가 있습니다. 미분 가능한 다양한 평활화된 NCP 함수가 제안되었습니다. 이러한 평활 함수는 \(\mu\)로 매개변수화되며 평활 매개변수가 0에 가까워질수록 실제 NCP 함수에 접근합니다. 예를 들어, Fischer-Burmeister 함수에는 미분 가능성을 보장하는 섭동 \(\mu\)이 포함되어 있습니다.

\begin방정식 \tag10

옵션을 사용하여 이러한 특정 NCP 기능을 선택할 수 있습니다.RefType min|FB|fFB. 마지막 두 가지의 차이점은 다음과 같습니다.RefType FB함수 \(\phi_FB\)를 계산하기 위해 무료 슬롯 코드를 작성하고,RefType fFB는 내부적으로 \(\phi_FB\)를 계산하는 무료 슬롯 내장 함수 NCPFB(r,s,mu)를 사용합니다. 일반적으로 무료 슬롯 내장 함수를 사용하면 내장 함수가 오버플로를 방지하고, 함수를 계산하기 전에 인수의 크기를 조정하고, 특정 입력 범위에 대해 더 정확한 결과를 제공하는 대체 수식을 사용할 수 있으므로 더 잘 작동합니다.

예를 들어 옵션 파일

fFB 참조 유형
여유로운 시간
초기화 1e-2

재공식 생성

\[ \begin배열rc

값은 \(\mu = 0.01\)입니다. 위에서 설명한 옵션을 사용하여 \(\mu\) 값을 줄이는 솔루션 경로를 따르는 것이 가능합니다.

NCP 함수에 대한 두 인수 각각은 해법에서 음수가 아니지만 각 인수에 대해 명시적으로 음이 아닌 제약 조건을 포함하는 옵션이 있습니다. 그러면 옵션에 대한 4가지 값이 생성됩니다.NCPBounds 없음|모든|기능|변수. 여유 공간이 없는 경우 이 옵션은 \(h_i\) 함수를 바인딩할지 여부와 이를 NCP 함수에 포함할지 여부를 제어합니다. \(h_i \geq 0, \phi(h_i,y_i-a_i) = 0\). Slack이 있는 경우 Slack 설정은 NCP 함수에 대한 함수 인수의 바인딩된 설정과 일치해야 합니다. 여기서NCPBounds 없음|변수무료 여유 변수와 일치하며NCPBounds 전체|기능양의 여유 변수와 일치합니다.

따라서 옵션 파일

최소 참조 유형
여유로운 긍정적
NCPBounds 함수

재공식 생성

\[ \begin배열rc

NCPBounds 함수옵션은 NCP 함수에 대한 가변 인수(이 경우 \(y\))에 해당 경계가 명시적으로 적용되지 않음을 의미합니다. 이 비선형 프로그램은 \(\mu\)의 모든 값에 대해 미분 불가능한 제약 조건을 갖는다는 점에 유의해야 합니다. 이러한 이유로 모델은 다음과 같이 구성됩니다.dnlp모델(대신무료 슬롯49156_49174

최소 함수의 부드러운 버전이 Chen과 Mangasarian에 의해 제안되었습니다:

\begin방정식 \tag11

이 함수는 두 인수가 대칭이 아니므로 \(\phi_CM(r,s) \neq \phi_CM(s,r)\). 이러한 이유로 우리는 두 경우를 구별합니다. Fischer-Burmeister 함수 \(\phi_FB\)와 달리 \(\phi_CM\)는 무료 슬롯 코드를 사용하여 계산하는 경우 극한(즉, \(\mu = 0\)의 경우)에 정의되지 않습니다. 그러나 무료 슬롯 내장 NCPCM(r,s,mu)은 이 제한 사례를 내부적으로 처리합니다. 옵션RefType CMxf|CMfx|fCMxf|fCMfx\(\phi_CM\) 함수를 기반으로 재구성을 선택합니다. 다시 말하지만, 마지막 두 가지 선택은 무료 슬롯 내장 함수를 사용합니다.

이중 경계 변수

다중 재구성과 유사함(7), 이중 경계 변수와 일치하는 함수 \(h_i\)를 양수 부분과 음수 부분 \(w_i - v_i =)으로 분할하는 한 NCP 함수를 사용한 재구성은 적절합니다. h_i\). 이를 방지하기 위해 Billups는 이중 경계 사례를 처리하기 위해 NCP 함수 구성을 사용할 것을 제안했습니다.

\begin방정식 \tag12

옵션 사용RefType Bill|fBill이중 경계 변수에 대해 이러한 재구성을 선택합니다. 첫 번째 옵션 값은 명시적인 무료 슬롯 코드로 함수를 작성하고, 두 번째 옵션 값은 무료 슬롯 내장 함수 NCPFB를 사용하여 이를 작성합니다.

페널티 기능

지금까지 논의된 모든 재공식화는 상보성 조건을 제약조건으로 재공식화했습니다. 페널티 매개변수 \(1/\mu\)를 사용하여 목적 함수로 이동하여 이를 처리하는 것도 가능합니다. \(\mu\)가 0으로 갈수록 상보성에 부여되는 상대적 가중치가 증가합니다. 무료 슬롯 제약 조건을 무시하고 원래 MPEC 문제를 다음과 같이 다시 작성할 수 있습니다.

\begin방정식 \tag13

제약조건에 따라

\begin방정식 \tag14

옵션을 사용하여 이 치료를 선택하세요refType 페널티. 옵션집계그리고제약여기의 내부 곱은 모두 집계되고 관련 제약 조건이 없으므로 무시됩니다. 슬랙스를 사용하지 않고도 비슷한 재구성을 할 수 있으므로 옵션은느슨함 없음|긍정적이 재구성 유형과 함께 사용할 수 있습니다.

다음 옵션 파일은의 사용을 보여줍니다.페널티재공식화뿐 아니라 단일 및 이중 경계 변수에 대해 다른 재구성을 사용하는 방법도 나타냅니다.

참조 유형 페널티 다중
여유 없음 *
초기화 1.0
숫자 2 해결
업데이트팩 0.1 0.2

"*" 값은 다음을 허용합니다.느슨함이 경우 기존 값을 사용하는 옵션긍정적. 위에 제공된 간단한 예에 적용하면 이러한 옵션 파일은 비선형 프로그래밍 모델을 생성합니다.

\[ \begin배열rc

페널티 매개변수 \(\mu_1\)는 이중 경계 제약 매개변수 \(\mu_2\)와 별도로 제어됩니다. 다른 옵션과의 일관성을 위해 목표의 페널티 매개변수는 \(1/\mu\)입니다. 즉, \(\mu_1\)이 0에 가까워질수록 페널티가 증가합니다. 옵션initmu에는 값이 하나만 있으므로 단일 및 이중 경계 \(\mu\) 값은 모두 \(1\)로 초기화됩니다. 위의 예에서는 \(\mu_1 = 1, 0.1\) 및 \(0.01\) 및 \(\mu_2 = 1, 0.2\) 및 \(0.04\)를 사용하여 세 가지 풀이가 수행됩니다.

상보성 테스트

어떤 경우에는 재구성된 모델에 대한 솔루션이 원래 MPEC의 상보성 제약 조건을 충족하지 못할 수 있습니다. 재구성에 큰 페널티 매개변수가 사용되는 경우. NLP 솔버에 사용된 솔루션 허용오차는 NLP 모델에서는 작은 오류가 있지만 원래 MPEC에서는 큰 오류가 있는 솔루션을 허용하는 경우도 있습니다. 예를 들어 \(x = f(x) = .001\)이면 NLP 제약 조건 \(xf(x) = 0\)은 NLP 실현 가능성 허용 오차를 충족할 수 있지만 \(x\) 또는 \(f(x)\)가 0이라고 주장하기는 쉽지 않습니다. 무료 슬롯 솔버에는 제안된 솔루션이 실제로 상보성 제약 조건을 충족하는지 확인하는 기능이 포함되어 있습니다. 상보성 격차는 다음을 계산할 때 모든 GAMS MCP 솔버에 공통된 정의를 사용하여 계산됩니다.objval55027_55138테스트톨옵션.

옵션

옵션 파일을 생성하고 사용하는 방법에 대한 자세한 내용은 소개 장을 참조하십시오.솔버 사용법.

대부분의 GAMS 솔버에서는 적어도 솔버에 익숙하지 않은 사람들에게는 옵션 파일 사용을 권장하지 않습니다. 그러나 무료 슬롯의 경우 대부분의 사용자가 처음부터 옵션 파일을 사용하기를 원할 것으로 예상됩니다. 무료 슬롯는 솔버인 동시에 실험을 위한 도구이므로 옵션 파일의 사용이 권장됩니다.

옵션 값은 다양한 유형(예: 문자열, 정수 또는 실수)을 취할 수 있습니다. 아마도 기억해야 할 가장 중요한 옵션은 전혀 가치가 없는 옵션일 것입니다.도움말옵션.도움말사용 가능한 옵션 목록과 함께 가능한 값 및 유용한 텍스트를 인쇄합니다. 옵션 파일은 순차적으로 읽혀지므로 옵션 값을 두 번 설정한 경우 후자의 값이 우선 적용됩니다. 그러나 옵션 값에 대해 일관성 검사가 수행됩니다(예:RefType fBill다음과 함께 사용할 수 없습니다.전체 집계)는 전체 옵션 파일을 읽은 후에 만들어지므로 옵션이 두 번 지정되지 않는 한 다른 옵션이 나타나는 순서는 중요하지 않습니다.

재공식화 옵션 설정

무료 슬롯에는 많은 옵션이 있지만 함께 사용되는 재구성 유형을 정의하는 데 사용되는 작은 5가지 옵션 세트가 있습니다. 중요도 순으로 나열됩니다(우선순위가 가장 높은 항목부터).재공식화 옵션RefType, 느슨함, 제약, 집계그리고NCPBounds옵션. 어떤 경우에는 우선순위가 가장 높은 옵션을 설정합니다.RefType재공식을 완전히 정의하기에 충분합니다(예:RefType 페널티이중 경계 변수의 경우). 그러나 대부분의 경우 우선순위가 낮은 옵션은 재구성을 정의하거나 수정하는 역할을 합니다. 재구성을 정의하기 위해 옵션 파일을 생성할 때 우선순위에 따라 재구성 옵션을 고려하는 것이 유용합니다.

일부 재구성 옵션의 조합이 의미가 없습니다. 예를 들어 두 입력 인수 간의 상보성을 강제하기 위해 NCP 함수를 사용하려면 각 상보 쌍에 대해 별도의 함수가 필요하므로 둘 다 설정합니다.RefType 최소그리고전체 집계일관되지 않습니다. 무료 슬롯는 우선순위를 사용하여 재구성 옵션에 대한 일관성 검사를 구현합니다. 더 높은 우선순위 옵션의 일관된 설정이 주어지면 다음으로 높은 우선순위 옵션이 확인되고 필요한 경우 더 높은 우선순위 항목과 일치하도록 재설정됩니다. 최종 결과는 작업 재구성을 가져오는 일관된 옵션 세트입니다. 무료 슬롯는 사전 및 사후 확인된 재구성 옵션 세트와 변경 사항에 대한 경고 메시지를 인쇄합니다. 무료 슬롯가 일관성이 없다고 생각하는 옵션을 사용하려는 경우 다음을 사용할 수 있습니다.NoCheck옵션: 일관성 검사를 억제합니다.

아래 표의 각 재공식화 옵션은 두 개의 값을 취합니다. 하나는 \(\mathcalL\cup\mathcalU\)의 단일 경계 변수에 대한 것이고 다른 하나는 \(\mathcalB\)의 이중 경계 변수에 대한 것입니다. 하나의 옵션 값이 나타나면 두 옵션 값을 모두 설정합니다. 두 옵션 값을 모두 설정할 때 별표 "*"를 사용하여 변경 사항이 없음을 나타냅니다. 예를 들어 옵션 파일

RefType fCMxf
RefType * fBill

먼저 설정RefTypefCMxf모든 변수 유형에 대해 다음을 재설정합니다.RefTypef빌이중 경계 변수의 경우.

재공식화 옵션

옵션설명기본값
집계제약조건 집계 제어
특정 제약 조건이 집계되는지 여부를 결정합니다. 예: 강요하다w >= 0그리고y >= 0상보적으로 다음 중 하나를 작성할 수 있습니다.w^T y <= 0또는w_i^T y_i <= 0, 모든 i에 대해.
없음: 집계 사용 안 함
부분: 다른 변수와 별도로 이중 경계 변수를 집계
가득찬: 가능한 최대 집계 사용
없음
제약조건동등/부등의 사용을 제어
특정 제약 조건이 등식 또는 부등식을 사용하여 기록되는지 결정합니다. 예: 강요하다w >= 0그리고y >= 0상호적으로 다음 중 하나를 작성할 수 있습니다.w^T y <= 0또는w^T y = 0. 이 옵션은 부호가 양수와 음수가 될 수 없고 해에서 0이어야 하는 수량을 제한할 때만 역할을 합니다.
평등: =E= 제약조건 사용
불평등: =L= 제약조건 사용
평등
NCPBoundsNCP 함수의 인수에 대한 명시적인 경계를 설정합니다.
NCP 함수에 대한 두 인수 중 어느 것을 결정피(r,s)은(는) 음수가 아니도록 명시적으로 제한됩니다. 명시적 제약조건은 제약조건에 의해 부과된 제약사항에 추가됩니다.파이(r,s) = 0, 이는 음이 아님을 의미함r그리고s.
없음: 명시적인 경계 없음
함수: 함수/slack 인수에 대한 명시적 바인딩
변수: 변수 인수에 대한 명시적 바인딩
전체: 함수 및 변수 인수 모두에 대한 명시적 바인딩
없음
RefType재공식화 유형
사용된 재구성 유형을 결정합니다. 우리의 표기법과 설명은 MPEC의 특별한 경우인 NCP에서 따왔습니다: findx >= 0, f(x) >= 0, x^T f(x) = 0.
다중: 내적 <x,f> = 0
: NCP 함수 min(x,f)
CMxf: Chen-Mangasarian NCP 함수, 명시적
CMfx: Chen-Mangasarian NCP 함수, 명시적
fCMxf: Chen-Mangasarian NCP 함수, 내장
fCMfx: Chen-Mangasarian NCP 함수, 내장
FB: Fischer-Burmeister NCP 기능, 명시적
fFB: Fischer-Burmeister NCP 기능, 내장
FB_neg: Fischer-Burmeister NCP 기능이 부정됨, 명시적
fFB_neg: Fischer-Burmeister NCP 기능이 부정됨, 고유
: 이중 경계 변수에 대한 Billups 함수, 명시적
f빌: 이중 경계 변수에 대한 Billups 함수, 내장
페널티: 객관적인 비상보성에 대한 가중 처벌
중앙값: 이중 경계 변수에 대한 중앙값 함수, 명시적
fVUsin: Veelken-Ulbrich NCP 함수(평활 최소), 고유
fVUpow: Veelken-Ulbrich NCP 함수(평활 최소값), 내장
다중
느슨함함수 값에 대한 슬랙스 사용 제어
슬랙스가 기능을 처리하는 데 사용되는지 결정h_i. 단일 경계 변수의 경우 각각에 대해 최대 하나의 여유(자유 또는 양수)를 사용합니다.h_i. 이중 경계 변수의 경우 각각에 대해 여유 공간이 없거나 하나의 여유 공간(필수적으로 무료) 또는 두 개의 여유 공간(무료 또는 양수)을 가질 수 있습니다.h_i.
없음: 바지는 사용되지 않습니다.
무료: 무료 슬랙스가 사용됩니다
긍정적: 음수가 아닌 슬랙스가 사용됩니다.
하나: 이중 경계의 경우 각 h_i에 대해 하나의 여유 여유 시간이 사용됩니다.
긍정적

일반 옵션

옵션설명기본값
모두 해결이전 실패에 관계없이 루프에서 모든 해결을 수행
다중(루프) 해결이 지정된 경우, 기본값은 해결을 얻지 못한 채 종료될 때 후속 해결을 건너뛰는 것입니다. 이 플래그를 설정하면 이전 실패에 관계없이 검사가 제거되고 모든 해결이 완료됩니다.
0
dotGams스칼라 모델에 대한 무료 슬롯 소스 파일 이름자동
dumpValidGDX 파일에 유효한 재구성 옵션을 덤프하고 종료0
equReform오래되어 더 이상 사용되지 않음
범위:0, ...,33}
0
finalMu매개변수 mu의 최종 값
지정된 경우 다음을 사용하여 추가 해결이 수행됩니다.이 값으로 설정하세요. 단일 및 이중 경계 변수에 대해 독립적으로 설정할 수 있습니다.
없음
initmu매개변수 mu의 초기값
비선형 프로그램의 단일 해결이 이 값에 대해 수행됩니다. 참고하세요일부 설정에서는 양수여야 합니다.RefType, 예: 패널티. 단일 및 이중 경계 변수에 대해 독립적으로 설정할 수 있습니다.
0
initSLo문제에 추가된 인공물의 하한값
범위: [-무한대, 무대]
0
initSUp문제에 추가된 인공물의 상한선
범위: [-무한대, 무대]
+inf
NoCheck재공식화 옵션의 일관성을 확인하지 않음0
num해결루프된 해결 수
이것은 다음과 함께 설정되어야 합니다.updateFac옵션이므로값이 연속적으로 낮아집니다.
0
parm파일스칼라 모델 실행을 위한 추가 무료 슬롯 옵션
하위 해결자실행할 하위 해결 프로그램을 제어
이 옵션이 지정되지 않으면 실행할 솔버를 선택하기 위한 일반적인 무료 슬롯 규칙이 사용됩니다.
자동
subSolverOpt하위 해결사에 전달할 optfile 값0
종료스칼라 무료 슬롯 소스 코드 생성 후 종료0
테스트톨MPEC/MCP의 상보성 검사에 대한 허용오차1e-005
updateFacmu에 대한 업데이트 요소
곱하는 요소각 추가 문제가 해결되기 전에numsolves옵션. 단일 및 이중 경계 변수에 대해 독립적으로 설정할 수 있습니다.
범위: [1e-280, 1.0]
1e-1

오래된 equreform 옵션

무료 슬롯의 초기 버전에서 개혁 유형을 설정하는 유일한 방법은 다음을 통해서였습니다.equReform옵션. 각 유효한equReform값은 섹션에서 미리 선택된 옵션 조합을 나타냅니다.재공식화 옵션 설정. 이로 인해 미리 선택되지 않은 조합을 실험하기가 어려워졌습니다. 따라서 섹션의 옵션은재공식화 옵션 설정추가되었습니다. 기본값은equReform옵션의 값은 0이며 사용되지 않습니다. 이전 동작을 얻으려면 다음을 설정하세요.equReform양수 값 - 섹션의 옵션이 강제 적용됩니다.재공식화 옵션 설정무시됩니다. 섹션의 일반 옵션일반 옵션재공식화 유형이 어떻게 선택되든 상관없이 사용됩니다. - viaRefType또는equReform.

옵션설명기본값
equReform 사용된 재구성 유형을 설정하는 오래된 방법입니다.0

허용되는 값equReform그리고 그 의미는 다음 표에 나와 있습니다.

개방형 아키텍처

이 섹션에서는 무료 슬롯 솔버의 아키텍처, 즉 솔버가 구성되는 방식을 설명합니다. 이는 실험을 위해 무료 슬롯를 사용하는 사람이나 무료 슬롯 작동 방식에 대한 세부정보를 알고 싶은 사람에게 유용할 것입니다.

무료 슬롯 솔버의 기반은 원본과 수학적으로 동일한 스칼라 GAMS 모델을 작성하거나 그러한 모델의 선택된 부분을 작성할 수 있는 소프트웨어 라이브러리(GAMS/CONVERT 솔버에도 사용됨)입니다. 이 소프트웨어를 사용하여 무료 슬롯는 섹션의 재구성 전략 중 하나를 사용하여 GAMS NLP 모델을 생성합니다.재공식화. 이 모델에는 많은 새로운 변수 및/또는 방정식이 포함될 수 있지만 원래 모델을 정의하는 (비)선형 표현식도 확실히 포함됩니다. 스칼라 모델이 생성되면 무료 슬롯는 현재 NLP 솔버를 사용하여 GAMS를 호출하여 이 모델을 해결합니다. 옵션parm파일이 GAMS 작업에 추가 옵션을 전달하는 데 사용될 수 있습니다. 모델이 해결된 후 무료 슬롯는 NLP 솔루션을 읽고 여기에서 MPEC 솔루션을 추출한 다음 종료 시 이 MPEC 솔루션을 GAMS에 다시 전달합니다.

이 아키텍처에는 여러 가지 장점이 있습니다. 첫째, 개방성 덕분에 재구성이 수행되는 내용을 정확히 확인하기가 쉽습니다. 중간 스칼라 GAMS 무료 슬롯 모델은 스크래치 디렉터리를 저장하여 실행 후에 사용할 수 있습니다(예: 다음으로 실행).계속=1) 또는dotGams대체 파일 이름을 선택하는 옵션. 이 중간 모델에는 재구성의 모든 세부 사항이 포함되어 있습니다. 상황이 예상대로 작동하지 않는 경우 디버깅에 사용할 수 있습니다. 유사한 재공식화 전략으로 빠르고 더러운 실험을 수행하기 위해 이 파일을 수정하는 것도 가능합니다. 또 다른 장점은 재구성된 모델을 해결하기 위해 연결할 수 있는 다양한 무료 슬롯 솔버입니다. 무료 슬롯 솔버로 실험을 실행하기 위해 무료 슬롯 패키지에 대한 인터페이스를 프로그래밍(및 디버그)할 필요가 없습니다. 기존 GAMS 링크만 있으면 됩니다. 또한 재구성된 MPEC 모델이나 특정 재구성 선택에 더 적합할 수 있는 기본값이 아닌 솔버 옵션을 실험하는 것도 쉽습니다.