소개
슬롯는 혼합 정수 비선형 프로그래밍(MINLP) 모델용 GAMS 솔버입니다. 이는 혼합 정수 선형 프로그래밍에서 알려진 표준 B&B(Branch and Bound) 방법과 GAMS에서 이미 지원하는 일부 표준 NLP 솔버의 조합을 기반으로 합니다. 슬롯는 모든 GAMS NLP 솔버를 하위 솔버로 사용할 수 있지만 Conopt, Minos 및 Snopt와 같이 거의 최적의 지점을 시작점으로 활용할 수 있는 NLP 솔버와 가장 잘 작동합니다.
슬롯는 Binary, Integer, Semicont, Semiint, Sos1 및 Sos2를 포함하여 GAMS에서 지원하는 모든 유형의 이산 변수를 지원합니다.
분기 및 바운드 알고리즘
Relaxed Mixed Integer Nonlinear Planning(RMINLP) 모델은 처음에 모델러가 제공한 시작점을 사용하여 해결됩니다. RMINLP 모델이 제한되지 않거나 실행 불가능하거나 실패하는 경우 슬롯는 즉시 중지됩니다(옵션 참조)infeasseq그리고failseq예외는 아래 참조). RMINLP 모델의 모든 이산 변수가 정수인 경우 슬롯는 이 솔루션을 최적의 정수 솔루션으로 반환합니다. 그렇지 않으면 현재 솔루션이 저장되고 분기 및 바인딩 절차가 시작됩니다.
분기 및 경계 프로세스 중에 이산 변수의 실행 가능 영역이 세분화되고 이산 변수의 경계가 현재 정수가 아닌 솔루션을 차단하기 위해 새로운 정수 값으로 강화됩니다. 경계가 강화될 때마다 최적의 솔루션부터 이전의 느슨한 하위 모델까지 새롭고 더 엄격한 NLP 하위 모델이 해결됩니다. NLP 하위 모델의 목적 함수 값은 NLP 솔버에서 찾은 로컬 최적이 전역 최적이 아닐 수 있더라도 제한된 실행 가능 공간(최소화 가정)에서 목적의 하한으로 가정됩니다. NLP 솔버가 하위 모델에 대해 로컬로 실현 불가능 상태를 반환하는 경우 일반적으로 실현 불가능성이 로컬에서만 결정되었더라도 하위 모델에 대한 실현 가능한 솔루션이 없다고 가정합니다(옵션 참조).infeasseq예외는 아래 참조). 모델이 볼록형인 경우 이러한 가정이 충족되고 슬롯는 올바른 경계를 제공합니다. 모델이 볼록하지 않은 경우 목표 경계가 정확하지 않을 수 있으며 검색 공간의 탐색되지 않은 다른 부분에 더 나은 솔루션이 있을 수 있습니다.
유사 비용이 포함된 슬롯
지난 수십 년 동안 혼합 정수 선형 계획법에 대해 상당히 많은 검색 전략이 성공적으로 도입되었습니다(자세한 내용은 J.T. Linderoth 및 M.W.P. Savelsbergh, A Computational Study of Search Strategies for Mixed Integer Programme, INFORMS Journal on Computing, 11(2), 1999 참조). 의사 비용은 정교한 검색 전략의 핵심 요소입니다. 의사 비용을 사용하면 분수 변수를 가까운 정수 값으로 이동할 경우 목적 함수의 저하를 추정할 수 있습니다. 당연히 변수 선택은 의사 비용을 기반으로 할 수 있습니다(슬롯 옵션 참조).바셀). 노드 선택은 의사 비용을 활용할 수도 있습니다. 하나의 분수 변수를 닫힌 정수 값으로 이동하기 위한 목표의 변화를 추정할 수 있는 경우 모든 분수 변수에 대해 이 변경 사항을 집계하여 특정 노드에서 도달할 수 있는 최상의 정수 솔루션의 목표를 추정할 수 있습니다(슬롯 옵션 참조)nodesel).
안타깝게도 의사 비용 계산은 전체 계산의 상당 부분을 차지할 수 있습니다. 루트 슬롯에 분수 변수가 많은 모델은 다음과 같습니다.아님의사 비용이 필요한 검색 전략에 적합한 후보 (varsel 3, nodedel 3,5,6). 의사 비용 사용의 영향(긍정적 또는 부정적)은 특정 모델에 따라 크게 달라집니다. 현 단계에서는 일반적인 진술을 하기가 어렵습니다.
의사 비용 관련 검색 전략 선택 (varsel 3, nodedel 3,5,6)은 때때로 성과를 거두지 못하는 계산 시간을 사용할 수 있습니다. 그러나 우리는 사용자가 해결하기 위해 많은 수의 분기 및 경계 슬롯가 필요한 어려운 모델에 대해 이러한 옵션을 시도해 볼 것을 권장합니다.
슬롯 옵션
슬롯는 다른 GAMS 솔버처럼 작동하며 GAMS 모델에서 많은 옵션을 설정할 수 있습니다. 가장 관련성이 높은 GAMS 옵션은 IterLim, ResLim, NodLim, OptCA, OptCR, OptfFile, Cheat 및 CutOff입니다. 사용 가능한 모든 GAMS 옵션에 대한 설명은 GAMS 사용자 가이드에서 확인할 수 있습니다.솔버 관련 옵션. GAMS 옵션 PriorOpt 및 TryInt도 슬롯에서 허용됩니다.
슬롯는 다음을 사용합니다var.prior변수 선택 프로세스 중에 우선순위가 가장 낮은 분수 변수를 선택하기 위한 정보입니다. 슬롯는 TryInt 정보를 사용하여 B&B 알고리즘에서 분기 방향을 설정합니다. 처음에 슬롯는 사용자가 제공한 이산 변수의 수준을 살펴보고 Abs(Round(x.l)-x.l) < m.TryInt인 경우 슬롯는 해당 변수를 Round(x.l) 방향으로 분기합니다. 예를 들어 x.l=0.9 및 m.TryInt=0.2입니다. Abs(Round(0.9)-0.9)=0.1 < 0.2이므로 슬롯가 이 변수에서 분기하기로 결정하면(분수이기 때문에 값이 0.5라고 가정) 다음에 탐색되는 노드에는 추가 제약 조건 x \(\geq\) 1이 적용됩니다(x \(\leq\) 0이 있는 노드는 나중에 탐색됩니다). 모든 것이 잘 진행되면(볼록하지 않은 문제에 대한 하위 해결에서 다른 로컬 최적이 될 가능성이 있음) 슬롯는 몇 개의 노드에서 미리 설정된 기존 솔루션을 재현해야 합니다.
지정하는 경우<모델 이름>.OptFile = 1;GAMS 모델의 Solve 문 앞에 슬롯는 이름이 있는 옵션 파일을 찾아 읽습니다.슬롯opt(참조솔버 옵션 파일솔버 옵션 파일의 일반적인 사용). 슬롯 옵션 파일에 명시적으로 지정되지 않는 한 NLP 하위 해결사는 옵션 파일을 읽지 않습니다. 슬롯 옵션 파일의 구문은 다음과 같습니다.
optname 값
각 줄에 하나의 옵션이 있습니다.
예를 들어,
rootsolver conopt.1 하위 해결사 snopt 로그인 간격 10
처음 두 줄은 분기 및 경계 절차에 대한 NLP 하위 해결사를 결정합니다. 옵션 파일로 CONOPTconopt.opt루트 슬롯를 해결하는 데 사용됩니다. 옵션 파일이 없는 SNOPT는 나머지 슬롯에 사용됩니다. 마지막 옵션은 로그 줄 인쇄 빈도를 결정합니다. 10번째 슬롯마다, 그리고 새로운 정수 솔루션이 있는 각 슬롯는 로그 라인을 인쇄합니다. 다음 옵션이 구현됩니다.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| acceptnonopt | 하위 솔버에서 실행 가능한 솔루션을 수락 | 0 |
| avgresmult | 평균 자원 승수 | 5 |
| dfsstay | 솔루션을 찾은 후에도 DFS 슬롯 선택을 유지 | 0 |
| 에틴트 | 정수 타당성 공차 | 1.0e-5 |
| failseq | 실패한 슬롯에 대한 솔버 시퀀스 | |
| infeasseq | 실행 불가능한 슬롯에 대한 솔버 시퀀스 | |
| 인솔림 | 정수 해의 최대 개수 | 2100000000 |
| 로그 간격 | 진행률 표시 간격 | 1 |
| 로그레벨 | 솔버 표시 수준 | 1 |
| 멤슬롯 | 메모리의 최대 슬롯 수 | 10000 |
| miptrace | MIP 추적 파일의 파일 이름 | |
| miptracenode | 추적 레코드가 기록될 때 슬롯 간격 | 100 |
| miptracetime | 추적 레코드가 기록되는 시간 간격 | 5.0 |
| nodesel | 슬롯 선택 전략 | 0 |
| printbbinfo | 추가 슬롯 정보를 인쇄합니다 | 0 |
| rootsolver | 루트 슬롯에 대한 해결사 | GAMS NLP 해결사 |
| solvelink | GAMS NLP 솔버용 Solvelink | 5 |
| 수비터 | 하위 해결의 반복 제한 | GAMS iterlim |
| 서브레스 | 하위 해결을 위한 자원 제한 | GAMS 리슬림 |
| 하위 해결사 | 하위 문제 해결사 | GAMS NLP 해결사 |
| usercallparmfile | BCH에 의해 트리거된 GAMS 명령줄 호출에 사용되는 명령줄 매개변수 포함 파일 | |
| usergdxname | 슬롯의 솔루션과 함께 솔버에서 내보낸 GDX 파일의 이름 | bchout.gdx |
| usergdxnameinc | 기존 솔루션이 포함된 솔버에서 내보낸 GDX 파일의 이름 | bchout_i.gdx |
| userheurcall | 휴리스틱 호출을 위한 GAMS 명령줄 | |
| userheurfirst | 처음 n개 슬롯에 대한 절단 생성기를 호출합니다. | 10 |
| userheurfreq | 컷 생성기 모델 호출의 빈도를 결정 | 10 |
| userheurinterval | 컷 생성기 모델 호출 빈도에 대한 승수를 적용할 간격을 결정합니다. | 100 |
| userheurmult | 컷 생성기 모델 호출 빈도에 대한 승수를 결정합니다. | 2 |
| userheurnewint | 솔버가 새로운 정수 실현 가능 솔루션을 찾은 경우 경험적 방법을 호출합니다. | 0 |
| userheurobjfirst | UserHeurFirst와 유사하지만 편안한 목표가 개선을 약속하는 경우에만 휴리스틱을 호출합니다. | 50 |
| 바셀 | 각 슬롯의 변수 선택 전략 | 0 |
acceptnonopt (부울): 하위 솔버에서 실행 가능한 솔루션을 허용↵
이 옵션이 1로 설정되고 하위 솔버가 솔버 상태로 종료되는 경우해결자에 의해 종료됨및 모델 상태중급 비최적슬롯는 이것을 좋은 해결책으로 여기고 계속해서 노력하고 있습니다. 기본 모드에서 이러한 반환은 하위 해결사 실패로 처리되며failseq상담되었습니다.
기본값:
0
avgresmult (정수): 평균 자원 승수↵
비슷함서브레스, 이 옵션을 사용하면 사용자가 노드에서 소비하는 시간 제한을 제어할 수 있습니다. 슬롯는 노드에서 소요되는 시간을 추적하고 시간 경과에 따른 평균을 구축합니다. 이 평균에 계수를 곱함
avgresmult은 B&B 트리의 슬롯를 해결하기 위한 시간 제한으로 설정됩니다. NLP 솔버가 이 제한을 초과하면 실패처럼 처리됩니다. 즉, 슬롯가 무시되거나failseq호출됩니다. 기본 승수avgresmultis 5. 설정avgresmultto 0은 자동 시간 제한 기능을 비활성화합니다. 승수는 매우 작은 노드 솔루션 시간에는 그다지 유용하지 않습니다. 따라서 각 노드와 관계없이 슬롯는 노드를 해결하기 위해 솔버에 최소 5초의 시간을 부여합니다. 경쟁 옵션서브레스자동으로 생성된 리소스 제한을 덮어씁니다.기본값:
5
dfsstay (정수): 솔루션을 찾은 후에도 DFS 슬롯 선택을 유지↵
노드 선택이 B*⁄DFS 혼합인 경우 슬롯는 DFS 노드 선택 모드로 자주 전환합니다. 하위 노드가 생성되지 않은 경우(새 정수, 정리됨, 실행 불가능, 실패) B* 노드 선택 모드로 다시 전환됩니다. DFS 방식으로도 마지막 노드 주변을 검색하는 것이 유리할 수 있습니다. 설정
dfsstay에n슬롯가 다음 시간 동안 DFS 모드를 유지하도록 지시합니다.n슬롯.기본값:
0
에페인트 (진짜): 정수 타당성 공차↵
정수 실행불가능 허용오차.
범위: [
1e-9,1]기본값:
1.0e-5
failseq (문자열): 실패한 슬롯에 대한 솔버 시퀀스↵
솔버1[.n1] 솔버2[.n2] ...어디에서솔버1기본 솔버가 실패하는 경우, 즉 반복, 리소스 또는 도메인 제한으로 인해 중지되지 않았고 로컬로 최적이거나 로컬로 실행 불가능한 솔루션을 반환하지 않는 경우 사용할 GAMS NLP 솔버의 이름입니다.n1은 대체 NLP 솔버에 전달된 optfile의 값입니다. 만일.n1공백으로 남겨두면 0으로 해석됩니다. 마찬가지로,솔버2다음의 경우에 사용되는 GAMS NLP 솔버의 이름입니다.솔버1실패하고n2은 두 번째 NLP 솔버에 전달된 optfile의 값입니다. 솔버 오류가 발생할 가능성이 없는 어려운 모델이 있는 경우 더 추가할 수 있습니다.solver.n쌍. 다른 옵션 파일과 함께 동일한 솔버를 여러 번 사용할 수 있습니다.failseq conopt conopt.2 conopt.3옵션 파일 없이 CONOPT를 시도한다는 뜻입니다. 이 접근 방식도 실패하면 옵션 파일을 사용하여 CONOPT를 시도하세요.conopt.op2, 다시 실패하면 옵션 파일로 CONOPT를 시도하세요.conopt.op3. 모든 솔버와 옵션 파일 조합이 실패하면 슬롯에 레이블이 지정됩니다.무시그리고 슬롯는 더 이상 탐색되지 않습니다. 기본값은 하나의 솔버(therootsolver또는서브솔버) 그리고 솔버 실패가 있는 슬롯를 무시합니다.
infeasseq (문자열): 실현 불가능한 슬롯에 대한 솔버 시퀀스↵
레벨 솔버1[.n1] 솔버2[.n2] ...목적infeasseq실행 불가능해 보이지만 실제로 실행 가능한 검색 트리 부분을 잘라내는 것을 방지하는 것입니다. NLP 솔버가 슬롯에 라벨을 붙인 경우로컬적으로 실행 불가능그리고 모델은 볼록하지 않으며 실행 가능한 솔루션이 실제로 존재할 수 있습니다. 검색 트리에서 슬롯가 높은 경우 노드를 즉시 정리하는 것이 매우 과감할 수 있습니다. 따라서 슬롯는 검색 트리의 깊이가 정수 값보다 작은 한 목록의 솔버/옵션 조합을 시도하도록 지시됩니다.레벨. 실행 가능한 솔루션을 찾지 못한 채 목록이 소진되면 슬롯는 실행 불가능한 것으로 간주됩니다. 기본값은 그것을 신뢰하는 것입니다.로컬적으로 실행 불가능슬롯는 실제로 실행 불가능하므로 추가 고려에서 제거합니다.
인솔림 (정수): 정수 해의 최대 개수↵
정수 솔루션의 최대 수. 이 숫자를 초과하면 슬롯가 종료되고 지금까지 찾은 최상의 솔루션을 반환합니다.
기본값:
2100000000
로그 간격 (정수): 진행률 표시 간격↵
로그 라인이 기록되는 간격(슬롯 수)입니다.
기본값:
1
로그레벨 (정수): 솔버 표시 수준↵
로그 출력 수준.
기본값:
1
값 의미 0로그인 간격 노드마다 한 줄이 있는 슬롯 로그 줄만 1루트 노드에 대한 NLP 솔버 로그와 슬롯 로그라인을 0으로 표시 2모든 노드에 대한 NLP 솔버 로그와 슬롯 로그 라인을 0으로 표시
멤슬롯 (정수): 메모리의 최대 슬롯 수↵
슬롯가 메모리에 보유할 수 있는 최대 노드 수입니다. 이 숫자를 초과하면 슬롯가 종료되고 지금까지 찾은 최상의 솔루션을 반환합니다.
기본값:
10000
miptrace (문자열): MIP 추적 파일의 파일 이름↵
더 많은 정보는 장에서 볼 수 있습니다.추적 해결
miptracenode (정수): 추적 레코드가 기록될 때 슬롯 간격↵
더 많은 정보는 장에서 볼 수 있습니다.추적 해결
기본값:
100
miptracetime (진짜): 추적 레코드가 기록되는 시간 간격↵
더 많은 정보는 장에서 볼 수 있습니다.추적 해결
기본값:
5.0
nodesel (정수): 슬롯 선택 전략↵
슬롯 선택 체계.
기본값:
0
값 의미 0자동 1깊이 우선 검색(DFS) 2최적 바운드(BB) 3최적 추정치(BE) 4DFS/BB 믹스 5DFS/BE 혼합 6DFS/BB/BE 믹스
printbbinfo (정수): 추가 슬롯 정보를 인쇄합니다.↵
로그 출력에 대한 추가 정보.
기본값:
0
값 의미 0추가 정보 인쇄 없음 1변수 선택 문자 인쇄
현재 슬롯에 대한 슬롯 및 변수 선택은 로그 라인 끝에 두 글자 코드로 표시됩니다. 첫 번째 문자는 슬롯 선택을 나타냅니다. DFS는 D, 최선 경계는 B, 최선 추정은 E입니다. 두 번째 문자는 변수 선택을 나타냅니다. X는 최대 실행 불가능성, N은 최소 실행 불가능, P는 의사 비용입니다.2최적 견적 인쇄
루트 해결사 (문자열): 루트 슬롯에 대한 솔버↵
솔버[.n]Solver는 루트 슬롯에서 사용해야 하는 GAMS NLP 솔버의 이름이며n은 루트 슬롯의 optfile에 해당하는 정수입니다. 만일.n이 누락되었습니다. optfile은 0으로 처리됩니다. 즉, NLP 솔버는 옵션 파일을 찾지 않습니다. 이 슬롯 옵션은로 지정된 NLP 솔버를 사용하는 기본값을 덮어쓰는 데 사용할 수 있습니다.옵션 NLP = 솔버;문 또는 NLP용 기본 GAMS 해결사.기본값:
GAMS NLP 해결사
solvelink (정수): GAMS NLP 솔버용 Solvelink↵
기본값:
5
값 의미 1스크립트를 통해 GAMS NLP 솔버 호출 2모듈을 통해 GAMS NLP 솔버 호출 5메모리에서 GAMS NLP 솔버 호출
수비터 (정수): 하위 해결에 대한 반복 제한↵
기본값은
수비터통과됨iterlim. 와 유사함서브레스그러나 B&B 트리의 슬롯를 해결하기 위한 반복 제한을 설정합니다.기본값:
GAMS iterlim
서브레스 (진짜): 하위 해결을 위한 리소스 제한↵
기본값은
서브레스통과됨레스림. B&B 트리의 슬롯를 해결하기 위한 시간 제한을 초 단위로 설정합니다. NLP 솔버가 이 제한을 초과하면 실패로 처리되고 슬롯가 무시되거나 failedeq의 솔버가 호출됩니다.기본값:
GAMS 리슬림
하위 해결사 (문자열): 하위 문제 해결사↵
솔버[.n]비슷함루트 해결사그러나 하위 슬롯에는 적용됩니다.기본값:
GAMS NLP 해결사
usercallparmfile (문자열): BCH에 의해 트리거된 GAMS 명령줄 호출에 사용되는 명령줄 매개변수 포함 파일↵
usergdxname (문자열): 슬롯의 솔루션과 함께 솔버에서 내보낸 GDX 파일의 이름↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
bchout.gdx
usergdxnameinc (문자열): 기존 솔루션이 포함된 솔버에서 내보낸 GDX 파일의 이름↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
bchout_i.gdx
userheurcall (문자열): 휴리스틱을 호출하기 위한 GAMS 명령줄↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
userheurfirst (정수): 처음 n 슬롯에 대한 컷 생성기를 호출합니다.↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
10
userheurfreq (정수): 컷 생성기 모델 호출의 빈도를 결정↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
10
userheurinterval (정수): 컷 생성기 모델 호출 빈도에 대한 승수를 적용할 간격을 결정합니다.↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
100
userheurmult (정수): 컷 생성기 모델 호출 빈도에 대한 승수를 결정합니다.↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
2
userheurnewint (부울): 솔버가 새로운 정수 실현 가능 해를 찾은 경우 휴리스틱을 호출합니다.↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
0
userheurobjfirst (정수): UserHeurFirst와 유사하지만 완화된 목표가 개선을 약속하는 경우에만 휴리스틱을 호출합니다.↵
더 많은 정보는 장에서 볼 수 있습니다.GAMS 분기 및 잘라내기 및 휴리스틱 기능.
기본값:
50
바셀 (정수): 각 슬롯에서의 변수 선택 전략↵
변수 선택 체계.
기본값:
0
값 의미 0자동 1최대 정수 불가능성 2최소 정수 실행 불가능성 3의사 비용
슬롯 로그 파일
슬롯 로그 파일(보통 화면으로 이동)은 다음을 사용하여 제어할 수 있습니다.로그 간격그리고로그레벨슬롯의 옵션. 기본적으로 루트 노드를 해결하는 NLP 솔버의 반복 출력이 먼저 표시됩니다. 그 다음에는 검색 트리를 설명하는 슬롯의 출력이 나옵니다. 이 검색 트리 출력의 예는 다음과 같습니다.
루트 슬롯가 로컬 최적으로 해결되었습니다.
슬롯법. 레프. 목표 IInf Best Int. 최적의 바운드 간격(2초)
0 0 0 8457.6878 3 - 8457.6878 -
1 1 1 8491.2869 2 - 8457.6878 -
2 2 2 8518.1779 1 - 8457.6878 -
* 3 3 3 9338.1020 0 9338.1020 8457.6878 0.1041
4 2 1 가지치기 - 9338.1020 8491.2869 0.0997
솔루션은 optcr을 충족합니다.
통계:
반복 : 90
NLP 초 : 0.110000
B&B 슬롯 : 3
MIP 솔루션: 슬롯 3에 있는 9338.101979
가능한 가장 좋은 전화: 8491.286941
절대 격차 : 846.815039 optca : 0.000000
상대적 격차 : 0.099728 optcr : 0.100000
모델 상태 : 8
해결자 상태 : 1
NLP 솔버 통계
총 NLP 해결 수: 7
총 NLP 실패 횟수: 0
세부정보: conopt
# 간부 7
# 실패 0
종료합니다.로그의 필드는 다음과 같습니다:
| 필드 | 설명 |
|---|---|
슬롯 | 현재 슬롯의 번호. 루트 슬롯는 슬롯 0입니다. |
행위 | 아직 해결되지 않은 하위 슬롯의 수로 정의된 활성 슬롯의 수. |
레프 | 검색 트리의 수준, 즉 이 슬롯에 도달하는 데 필요한 가지 수. |
목표 | 슬롯의 목적 함수 값입니다. 숫자 값은 슬롯가 해결되었으며 슬롯가 무시되지 않을 만큼 목표가 충분했음을 나타냅니다. "pruned"는 목표 값이 Best Integer 값보다 나빴음을 나타내고 "infeasible"은 슬롯가 Infeasible 또는 Locally Infeasible임을 나타내며 "ignored"는 슬롯를 해결할 수 없음을 나타냅니다(위의 failedeq 참조). |
IInf | 정수 실행 불가능성의 수, 즉 완전성 요구 사항을 충족하지 않는 이진 또는 정수로 간주되는 변수의 수. 반연속 변수 및 SOS 변수도 기여할 수 있습니다.IInf. |
최고의 정수 | 지금까지 발견된 최고의 정수 솔루션의 값입니다. 대시(-)는 정수 솔루션이 아직 발견되지 않았음을 나타냅니다. 열 1의 별표(*)는 슬롯가 정수이고 솔루션이 지금까지 발견된 최고 솔루션보다 우수함을 나타냅니다. |
최고의 경계 | 아직 해결되지 않은 하위 슬롯에 대한 "목표"의 최소값(최대화 모델의 최대값). 볼록 모델의 경우 Best Bound는 단조롭게 증가합니다. 볼록하지 않은 모델의 경우 최적 경계가 감소할 수 있으며 이는 슬롯의 목표 값이 해당 슬롯에 대한 유효한 하한이 아님을 나타냅니다. |
갭 | Best Integer 솔루션과 Best Bound 사이의 상대적 간격. |
로그 파일의 나머지 부분은 MIP 솔버에서 제공하는 것과 유사한 다양한 솔루션 통계를 표시합니다. 이 정보는 GAMS 목록 파일의 해결자 상태 영역에서도 찾을 수 있습니다.
다음 로그 파일은 NLP 솔버가 하위 슬롯를 해결하지 못하는 경우를 보여줍니다. Objective 필드의 "ignored" 텍스트는 실패를 표시하고 Gap 필드 뒤의 괄호 안의 값은 NLP 해석기가 반환한 Solve 및 Model 상태입니다.
루트 슬롯가 로컬 최적으로 해결되었습니다.
슬롯법. 레프. 목표 IInf Best Int. 최적의 바운드 간격(2초)
0 0 0 6046.0186 12 - 6046.0186 -
1 1 1 실행 불가능 - - 6046.0186 -
2 0 1 6042.0995 10 - 6042.0995 -
3 1 2 무시됨 - - 6042.0995 - (4,6)
4 0 2 5804.5856 8 - 5804.5856 -
5 1 3 무시됨 - - 5804.5856 - (4,7)다음 로그 파일은 다음의 효과를 보여줍니다.infeasseq그리고failseq65604_65660conopt.opt(이 모델의 기본 솔버 및 옵션 파일 쌍)은 첫 번째 하위 슬롯를 로컬에서 실행 불가능하다고 간주합니다. 따라서 옵션 파일이 없는 CONOPT, MINOS 및 SNOPT가 순서대로 시도됩니다. 이 경우 그들은 모두 슬롯를 실행 불가능하다고 선언하고 실행 불가능하다고 간주됩니다.
노드 3에서 옵션 파일이 있는 CONOPT는 실패하지만 옵션 파일이 없는 CONOPT는 로컬 최적 솔루션을 찾은 다음 이 솔루션을 추가 검색에 사용합니다. 다음 실행을 위한 슬롯 옵션 파일은 다음과 같습니다.
rootsolver conopt.1 하위 해결사 conopt.1 실패시 선택 infeasseq 100 conopt minos snopt
로그는 다음과 같습니다:
루트 슬롯가 로컬 최적으로 해결되었습니다.
슬롯법. 레프. 목표 IInf Best Int. 최적의 바운드 간격(2초)
0 0 0 6046.0186 12 - 6046.0186 -
conopt.1은 로컬에서 실행 불가능하다고 보고합니다.
conopt 실행 중
conopt는 로컬에서 실행 불가능하다고 보고합니다.
미노스 실행 중
minos는 로컬에서 실행 불가능하다고 보고합니다.
snopt 실행 중
1 1 1 실행 불가능 - - 6046.0186 -
2 0 1 6042.0995 10 - 6042.0995 -
conopt.1이 실패했습니다. 4개는 솔버에 의해 종료됨, 7개는 실행 가능한 솔루션
conopt 실행 중
3 1 2 4790.2373 8 - 6042.0995 -
4 2 3 4481.4156 6 - 6042.0995 -
conopt.1은 로컬에서 실행 불가능하다고 보고합니다.
conopt 실행 중
conopt는 로컬에서 실행 불가능하다고 보고합니다.
미노스 실행 중
미노스는 실패했습니다. 4개는 솔버에 의해 종료됨, 6개는 중간 실행 불가능
snopt 실행 중
5 3 4 실행 불가능 - - 6042.0995 -
6 2 4 4480.3778 4 - 6042.0995 -로그 파일은 마지막에 NLP가 실행된 횟수와 실패한 빈도를 요약하는 솔버 통계를 표시합니다.
NLP 솔버 통계
총 NLP 해결 수: 45
총 NLP 실패 횟수: 13
세부정보: conopt minos snopt
# 실행자 34 3 8
# 실패 4 3 6NLP 솔버가 분기 및 경계의 하위 문제에 대해 찾은 솔루션은 전역 최적이 아닐 수 있습니다. 따라서 일부 경계를 강화하여 문제를 제한하더라도 목표는 향상될 수 있습니다. 이들점프목적의틀렸어요최상의 경계에 영향을 줄 수도 있는/가능한 방향은 별도의 통계로 보고됩니다.
비볼록 모델!
# 최선의 경계로 점프: 2
최적 범위의 최대 점프: 슬롯 13에서 20.626587
# 더 나은 목표를 향해 점프합니다: 2
목표의 최대 점프: 슬롯 13에서 20.626587
슬롯와 기타 MINLP 솔버 비교
GAMS는 로컬 및 글로벌 MINLP 솔버를 포함하여 다양한 MINLP 솔버를 제공합니다. 그들은 서로 다른 알고리즘을 구현하며 일반적으로 어떤 솔버가 가장 잘 수행되는지 불분명합니다. 여기서는 슬롯와 잘 알려진 솔버 DICOPT를 간략하게 비교합니다.
DICOPT는 외부 근사법을 기반으로 합니다. 처음에는 RMINLP 모델이 슬롯와 마찬가지로 해결됩니다. 그런 다음 모델은 이 지점을 중심으로 선형화되고 선형 MIP 모델이 해결됩니다. 그런 다음 이산 변수는 MIP 모델의 최적 값으로 고정되고 결과 NLP 모델이 해결됩니다. NLP 모델이 실현 가능하다면 정수 실현 가능 솔루션이 있습니다.
모델이 다시 선형화되고 기존 및 새로운 선형화된 제약 조건이 모두 포함된 새로운 MIP 모델이 해결되었습니다. 이산변수는 다시 최적의 값으로 고정되고 새로운 NLP 모델이 해결됩니다.
MIP 모델이 실행 불가능해지거나, NLP 솔루션이 악화되거나, 어떤 경우에는 MIP 모델에서 파생된 경계가 중지해도 안전하다는 것을 나타내는 경우 프로세스가 중지됩니다.
DICOPT는 MIP 모델은 효율적으로 해결할 수 있는 반면 NLP 모델은 비용이 많이 들고 해결하기 어려울 수 있다는 가정을 기반으로 합니다. MIP 모델은 넓은 영역에 걸쳐 NLP 모델을 근사화하고 훨씬 저렴한 선형 기술을 사용하여 이를 해결하려고 시도합니다. 이상적으로는 몇 가지 NLP만 해결하면 됩니다.
DICOPT는 많은 또는 모든 NLP 하위 모델이 실행 불가능한 경우 모델을 해결하는 데 어려움을 겪을 수 있습니다. DICOPT는 MIP 모델에 사용된 선형화가 조건이 나쁜 모델을 생성하는 경우에도 문제가 있을 수 있습니다. MIP 모델은 해결하기가 매우 어려워질 수 있으며 MIP 모델의 결과는 NLP 모델의 초기 값만큼 좋지 않을 수 있습니다. DICOPT에서 사용하는 선형화된 제약 조건은 실현 가능한 공간의 특정 영역을 고려 대상에서 제외할 수도 있습니다.
슬롯는 다른 가정을 사용하며 매우 다르게 작동합니다. 슬롯의 대부분 작업에는 NLP 모델 해결이 포함됩니다. NLP 하위 모델은 하나 또는 몇 가지 범위에서만 다르기 때문에 NLP 모델은 좋은 재시작 절차를 사용하여 신속하게 해결할 수 있다고 가정합니다. NLP 모델은 거의 차이가 없고 좋은 초기값을 사용할 수 있으므로 좋은 품질의 초기값을 거의 사용할 수 없는 DICOPT의 솔루션 프로세스에 비해 솔루션 프로세스는 상당히 신뢰할 수 있습니다. DICOPT와는 매우 다른 근거로 검색 공간이 줄어들기 때문에 다른 솔루션을 모색할 수 있습니다.
전반적으로 DICOPT는 중요하고 어려운 조합 부분이 있는 모델에서 더 나은 성능을 발휘하는 반면, 슬롯는 이산 변수가 적지만 더 어려운 비선형성이 있는 모델에서 더 나은 성능을 발휘할 수 있습니다(그리고 상당히 볼록하지 않은 모델에서도 가능).