샷 (S지원 중HyperplaneO최적화Toolkit)은 혼합 정수 비선형 프로그래밍 문제(MINLP)에 대한 결정론적 솔버입니다.
원래 슬롯 머신은 볼록 MINLP 문제에만 사용하도록 의도되었지만 이제는 전역 최적성을 보장하지 않고 경험적 방법으로 비볼록 MINLP 문제를 해결하는 기능도 포함합니다. 슬롯 머신은 특정 비볼록 문제 유형을 전역 최적성으로 해결할 수도 있습니다.
슬롯 머신은 주로 Andreas Lundell(핀란드 Åbo Akademi 대학교)과 Jan Kronqvist(영국 Imperial College London)에 의해 개발되었습니다. 자세한 내용은 [을 참조하세요.125, 121, 111, 112, 120].
슬롯 머신은 다음을 사용하는 GAMS 방정식을 지원합니다.내장 함수: abs, cos, cvPower, div, exp, log, log10, log2, pi, power, rPower, sin, sqr, sqrt, vcPower.
알고리즘
슬롯 머신은 지지 초평면 또는 절단 평면을 생성하여 비선형 실행 가능 집합의 더 긴밀한 다면체 근사치를 반복적으로 생성하는 것을 기반으로 합니다. 이러한 선형화된 문제는 혼합 정수 선형 프로그래밍(MIP) 솔버를 사용하여 해결됩니다. GAMS/슬롯 머신은 GAMS/CPLEX 라이선스가 사용 가능한 경우 CPLEX를 사용하고, 그렇지 않으면 CBC를 사용합니다. Gurobi의 라이선스가 있는 사용자도 가능합니다.선택MIP 해결사로서의 구로비. CPLEX 또는 Gurobi를 사용하는 경우 하위 문제에는 2차 및 이중선형 비선형성이 직접 포함될 수도 있습니다.
외부 근사 문제에 대한 솔루션은 원래 문제가 볼록한 경우 최적의 값에 대한 이중 경계(즉, 최소화 문제를 해결할 때 하한)를 제공합니다. 문제가 볼록하지 않은 경우 전역 최적 솔루션으로의 수렴이 보장될 수 없습니다(그러나 특정 클래스의 문제에서는 달성될 수 있습니다. [ 참조)121]).
최적 값에 대한 원시 경계(즉, 최소화 문제를 해결할 때의 상한)를 얻기 위해 슬롯 머신은 다음 휴리스틱을 활용합니다.
- 정수 변수가 유효한 값으로 고정된 비선형 프로그래밍(NLP) 문제를 해결합니다. 이는를 호출하여 수행됩니다.NLP 해결사, 이는 다음 중 하나인 Ipopt입니다.슬롯 머신 NLP 해결사또는 슬롯 머신 자체.
- MIP 솔버의 솔루션 풀에서 원래 MINLP 문제의 비선형 제약 조건을 충족하는 포인트에 대한 솔루션을 확인합니다.
- 루트 검색을 수행함으로써.
때종료 기준상대적 또는 절대적 목표 간격에 대한 허용 오차 또는 시간 제한이 충족된 것처럼 슬롯 머신은 종료되고 현재 원시 솔루션을 GAMS로 반환합니다. 원래 문제가 볼록하고 슬롯 머신이 목표 격차를 줄일 수 있다면 이는 문제에 대한 전역 최적 솔루션입니다. 볼록하지 않은 경우 일반적으로 그러한 해를 찾을 수 있다는 보장이 없습니다. 그러나 슬롯 머신은 항상 원초 솔루션 외에도 모델 속성의 솔루션에 대한 유효한 이중 경계를 반환합니다.객체, 그렇지 않은 경우Model.Convexity.AssumeConvex활성화되었습니다.
사용법
슬롯 머신 사용을 지정하기 위해 GAMS 프로그램 내에서 다음 명령문을 사용할 수 있습니다.
옵션 MINLP = 슬롯 머신; 또는 MIQCP
위 문은 Solve 문 앞에 나타나야 합니다. GAMS 설치 중에 슬롯 머신이 기본 MINLP 또는 MIQCP 솔버로 지정된 경우 위 명령문은 필요하지 않습니다.
슬롯 머신 옵션 지정
GAMS/슬롯 머신은 GAMS 매개변수를 지원합니다리슬림, iterlim, 노들림, optcr, optca, 컷오프및스레드.
옵션은 슬롯 머신 옵션 파일로 지정할 수 있습니다. 슬롯 머신 옵션 파일은 한 줄에 하나의 옵션 또는 설명으로 구성됩니다. 별표(*)을 줄 시작 부분에 추가하면 전체 줄이 무시됩니다. 그렇지 않으면 해당 줄은 등호()로 구분된 옵션 이름과 값으로 해석됩니다.=) 및 임의의 공백(공백 또는 탭).
슬롯 머신opt 파일의 작은 예는 다음과 같습니다:
Dual.CutStrategy = 1 Dual.MIP.Solver = 2 Output.Console.DualSolver.Show = true
GAMS/슬롯 머신이 확장 지지 초평면(EHP) 방법 대신 확장 절단 평면(ECP) 방법을 사용하도록 하고 MIP 솔버를 CBC로 변경하며 이중 경계를 계산하는 솔버(일반적으로 MIP 솔버)의 출력을 표시할 수 있습니다.
- 주의
- 슬롯 머신에서는 문서에 지정된 이름을 정확하게 사용하여 옵션을 지정해야 합니다. 즉, 대소문자 구분도 중요합니다.
슬롯 머신 옵션 목록
다음에서는 모든 슬롯 머신 옵션의 자세한 목록을 제공합니다.
솔버 출력
이 설정은 솔버에서 사용자에게 표시되는 출력의 양과 내용을 제어합니다.
하위 해결사 기능
이 설정을 사용하면 슬롯 머신에서 사용되는 다양한 하위 솔버를 보다 직접적으로 제어할 수 있습니다.
이중 전략
이 설정은 슬롯 머신의 이중 전략, 즉 ESH 또는 ECP 알고리즘을 활용하는 다면체 외부 근사의 다양한 기능을 제어합니다.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| Dual.CutStrategy | 듀얼 컷 전략 0: ESH 1: ECP | 0 |
| Dual.ESH.InteriorPoint.CuttingPlane.IterationLimit | 최소최대 절단 평면 솔버의 반복 제한 범위: 1, ..., 무한대 | 100 |
| Dual.ESH.InteriorPoint.CuttingPlane.IterationLimitSubsolver | 최소화 하위 솔버의 반복 제한 범위: 0, ..., 무한대 | 100 |
| Dual.ESH.InteriorPoint.UsePrimalSolution | 원초적 솔루션을 인테리어 포인트로 활용 0: 아니요 1: 새로 추가 2: 기존 교체 3: 평균 사용 | 1 |
| Dual.HyperplaneCuts.MaxPerIteration | 반복당 추가할 최대 초평면 수 범위: 0, ..., 무한대 | 200 |
| Dual.HyperplaneCuts.ObjectiveRootSearch | 목적 루트 검색을 사용하는 경우 0: 항상 1: If볼록 2: 절대로 | 1 |
| Dual.MIP.InfeasibilityRepair.IterationLimit | 원시 목적값 개선 없이 해결된 실현 불가능한 문제의 최대 개수 범위: 0, ..., 무한대 | 100 |
| Dual.MIP.NumberOfThreads | MIP 솔버에서 사용할 스레드 수: 0: 자동 범위: 0, ..., 999 | 슬롯 머신 스레드 |
| 이중.MIP.Presolve.Frequency | MIP 사전 해결 호출 시기 0: 없음 1: 한 번 2: 항상 | 1 |
| Dual.MIP.SolutionLimit.ForceOptimal.Iteration | 최적의 MIP 솔루션을 강제하기 위한 이중 바인딩 업데이트가 없는 반복 범위: 0, ..., 무한대 | 10000 |
| Dual.MIP.SolutionLimit.IncreaseIterations | MIP 솔루션 제한 사이의 최대 반복 횟수 증가 범위: 0, ..., 무한대 | 50 |
| Dual.MIP.SolutionLimit.Initial | 초기 MIP 솔루션 제한 범위: 1, ..., 무한대 | 1 |
| 이중.MIP.SolutionPool.Capacity | 솔루션 풀의 최대 솔루션 수 범위: 0, ..., EAT | 100 |
| 듀얼.MIP.솔버 | 사용할 MIP 솔버 0: 단지 1: 구로비 2: MBC | Cplex(라이센스가 있는 경우), 그렇지 않은 경우 Cbc |
| Dual.ReductionCut.MaxIterations | 원시 개선 없이 원시 절단 감소의 최대 수 범위: 0, ..., EAT | 20 |
| Dual.ReductionCut.Strategy | 사용할 축소 컷 전략 0: 분수 1: 황금비율 | 0 |
| 이중.이완.빈도 | LP 문제 해결 빈도: 0: 비활성화 범위: 0, ..., 무한대 | 0 |
| Dual.Relaxation.IterationLimit | 처음에 해결해야 할 완화된 LP 문제의 최대 개수 범위: 0, ..., 무한대 | 200 |
| Dual.Relaxation.MaxLazyConstraints | 단일 트리 전략의 완화된 솔루션에 추가할 최대 지연 제약 조건 수 범위: 0, ..., 무한대 | 0 |
| Dual.TreeStrategy | 사용할 주요 전략 0: 다중 트리 1: 단일 트리 | 1 |
| Dual.ESH.InteriorPoint.CuttingPlane.ConstraintSelectionFactor | 절단 평면을 생성하기 위해 위반된 제약 조건의 비율 범위: [0, 1] | 0.25 |
| Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceAbs | LP와 라인서치 목표 사이의 절대 종료 허용오차 범위: [0, ] | 1 |
| Dual.ESH.InteriorPoint.CuttingPlane.TerminationToleranceRel | LP와 라인서치 목표 간의 상대적 종료 허용오차 범위: [0, ] | 1 |
| Dual.ESH.InteriorPoint.CuttingPlane.TimeLimit | 최소최대 솔버의 시간 제한 범위: [0, ] | 10 |
| Dual.ESH.InteriorPoint.MinimaxObjectiveLowerBound | 최소최대 목적변수의 하한값 범위: [-무한대, 0] | -1e+12 |
| Dual.ESH.InteriorPoint.MinimaxObjectiveUpperBound | 최소최대 목적변수의 상한 범위: 실제 | 0.1 |
| Dual.ESH.Rootsearch.ConstraintTolerance | 개별 초평면을 추가하지 않을 경우에 대한 제약 허용 오차 범위: [0, ] | 1e-08 |
| Dual.HyperplaneCuts.ConstraintSelectionFactor | 지원 초평면/절단 평면을 생성하기 위해 위반된 제약 조건의 비율 범위: [0, 1] | 0.5 |
| Dual.HyperplaneCuts.MaxConstraintFactor | 이 요소와 최대값의 곱보다 큰 값을 가진 제약 조건에 대해 루트 검색이 수행되었습니다. 범위: [1e-06, 1] | 0.1 |
| Dual.MIP.CutOff.InitialValue | 사용할 초기 컷오프 값 범위: 실제 | 슬롯 머신 컷오프 |
| Dual.MIP.CutOff.Tolerance | 객관적 컷오프 값에 대한 추가 허용오차(실행 불가능한 하위 문제를 방지하기 위해) 범위: 실제 | 1e-05 |
| Dual.MIP.InfeasibilityRepair.TimeLimit | 실행 불가능한 문제 해결 시 시간 제한 범위: [0, ] | 10 |
| Dual.MIP.NodeLimit | 단일 트리 전략에서 MIP 솔버에 사용할 노드 제한 범위: [0, ] | 슬롯 머신 노들림 |
| Dual.MIP.OptimalityTolerance | MIP 솔버의 최적화를 위한 감소된 비용 허용 범위 범위: [1e-09, 0.01] | 1e-06 |
| Dual.MIP.SolutionLimit.ForceOptimal.Time | 최적의 MIP 솔루션을 강제하기 위한 이중 바인딩 업데이트가 없는 시간 범위: [0, ] | 1000 |
| Dual.MIP.SolutionLimit.UpdateTolerance | MIP 솔루션 제한을 업데이트할 시기에 대한 제약 허용치 범위: [0, ] | 0.001 |
| Dual.ReductionCut.ReductionFactor | 컷오프 값을 줄이는 데 사용되는 요소 범위: [0, 1] | 0.001 |
| Dual.Relaxation.TerminationTolerance | 초기 LP 문제 해결 시 시간 제한 범위: 실제 | 0.5 |
| Dual.Relaxation.TimeLimit | 초기 LP 문제 해결 시 시간 제한 범위: [0, ] | 30 |
| Dual.ESH.InteriorPoint.CuttingPlane.Reuse | 메인 이중 모델에서 유효한 절단면 재사용 범위: 부울 | 0 |
| Dual.ESH.Rootsearch.UniqueConstraints | 반복당 제약조건당 하나의 초평면만 허용 범위: 부울 | 0 |
| Dual.ESH.Rootsearch.UseMaxFunction | 최대 기능에 대해 루트 검색을 수행하고 그렇지 않으면 개별 제약 조건에 대해 수행 범위: 부울 | 0 |
| Dual.HyperplaneCuts.Delay | 최적의 MIP 솔루션 이후에만 모델에 초평면 컷 추가 범위: 부울 | 1 |
| Dual.HyperplaneCuts.SaveHyperplanePoints | 생성된 초평면 목록에 포인트를 저장할지 여부 범위: 부울 | 0 |
| Dual.HyperplaneCuts.UseIntegerCuts | 이진 문제에 대해 실현 불가능한 정수 조합에 대한 정수 컷 추가 범위: 부울 | 0 |
| Dual.MIP.CutOff.UseInitialValue | 초기 컷오프 값 사용 범위: 부울 | 1, 만약에컷오프설정됨 |
| Dual.MIP.InfeasibilityRepair.IntegerCuts | 정수 절단의 타당성 복구 허용 범위: 부울 | 1 |
| Dual.MIP.InfeasibilityRepair.Use | 볼록하지 않은 문제에 대한 실행 불가능성 복구 전략 활성화 범위: 부울 | 1 |
| Dual.MIP.Presolve.RemoveRedundantConstraints | 중복 제약 조건 제거(presolve에 의해 결정됨) 범위: 부울 | 0 |
| Dual.MIP.Presolve.UpdateObtainedBounds | MIP 모델에 대한 경계 업데이트(presolve에서) 범위: 부울 | 1 |
| Dual.MIP.UpdateObjectiveBounds | 비선형 목적 변수 경계를 원시/이중 경계로 업데이트 범위: 부울 | 0 |
| Dual.ReductionCut.Use | 비볼록 문제에 대한 이중 감소 절단 전략 활성화 범위: 부울 | 1 |
| 이중.휴식.사용 | 처음에 연속 이중 완화 해결 범위: 부울 | 1 |
최적화 모델
이러한 설정은 제공된 최적화 모델에 대한 슬롯 머신 표현 및 처리의 다양한 측면을 제어합니다.
모델링 시스템
이러한 설정은 다양한 모델링 환경에 대한 인터페이스에서 사용되는 기능을 제어합니다.
원초적 휴리스틱
이 설정은 슬롯 머신에서 사용되는 원초적 경험적 방법을 제어합니다.
해지
이 설정은 슬롯 머신이 솔루션 프로세스를 종료하는 시기를 제어합니다.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 종료.DualStagnation.IterationLimit | 상당한 이중 목표 값 개선이 없는 최대 반복 횟수 범위: 0, ..., 무한대 | 무한대 |
| 종료.IterationLimit | 주요 전략의 반복 제한 범위: 1, ..., 무한대 | 슬롯 머신 iterlim |
| 종료.PrimalStagnation.IterationLimit | 상당한 원시 목적값 개선이 없는 최대 반복 횟수 범위: 0, ..., 무한대 | 50 |
| 종료.ConstraintTolerance | 비선형 제약조건에 대한 종료 허용오차 범위: [0, ] | 1e-08 |
| 종료.DualStagnation.ConstraintTolerance | 종료를 위한 후속 반복에서 최대 비선형 제약 조건 오류 간의 최소 절대 차이 범위: [0, ] | 1e-06 |
| 종료.ObjectiveConstraintTolerance | 비선형 목표 제약조건에 대한 종료 허용오차 범위: [0, ] | 1e-08 |
| 종료.ObjectiveGap.Absolute | 목적 함수에 대한 절대 간격 종료 허용오차 범위: [0, ] | 슬롯 머신 optca |
| 종료.ObjectiveGap.상대 | 목적 함수에 대한 상대적 간격 종료 허용오차 범위: [0, ] | 슬롯 머신 optcr |
| 종료.TimeLimit | 솔버의 시간 제한 범위: [0, ] | 슬롯 머신 리슬림 |
전략
슬롯 머신에서 사용되는 전체 전략 매개변수.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| Strategy.UseRecommendedSettings | 전략에 따라 일부 설정을 권장 값으로 수정 범위: 부울 | 1 |