슬롯 커뮤니티

소개

이 문서는 비선형 프로그램용 GAMS/슬롯 커뮤니티 솔버와 이 솔버에 고유한 옵션을 설명합니다.

PATHNLP는 NLP와 관련된 1차 최적성 조건의 Karush-Kuhn-Tucker(KKT) 시스템을 내부적으로 구성하고 상보성 문제에 대한 슬롯 커뮤니티 솔버를 사용하여 이 시스템을 해결하여 NLP를 해결합니다. 원래 NLP에 대한 솔루션은 KKT 솔루션에서 추출되어 GAMS로 반환됩니다. 이 모든 작업은 자동으로 수행됩니다. 특별한 구문이나 사용자 재구성이 필요하지 않습니다.

일반적으로 PATHNLP는 볼록 모델에 매우 잘 작동합니다. 또한 슬롯 커뮤니티 솔버는 감소된 그래디언트 솔버처럼 초기본 변수의 공간에 조밀한 감소 헤세 행렬을 구성하지 않기 때문에 감소된 그래디언트 방법을 통한 솔루션으로 인해 많은 수의 초기본 변수가 생성되는 모델에 대한 비교 이점이 있습니다. 그러나 볼록하지 않은 모델의 경우 PATHNLP는 감소된 기울기 방법만큼 강력하지 않습니다.

NLP를 KKT 시스템과 관련시키는 이론은 잘 알려져 있습니다. 볼록성이 없는 미분 가능성을 가정하고 제약조건 조건이 성립한다고 가정하면 NLP에 대한 솔루션은 KKT 시스템에 대한 솔루션이기도 해야 합니다. 또한 볼록성을 가정하면 KKT 시스템에 대한 솔루션은 NLP에 대한 솔루션이기도 합니다. 추가 제약조건 자격은 필요하지 않습니다.

슬롯 커뮤니티가 NLP에 대한 KKT 시스템에 대한 솔루션을 찾지 못하는 경우, 1단계 목표는 단순히 타당성 오류이고 원래 목표는 무시되는 1단계/2단계 방법이 사용됩니다. 단계 I에서 실현가능점이 발견되면 현재 실현가능점을 사용하여 NLP에 대한 KKT 시스템을 해결하려는 시도인 단계 II가 시작됩니다.

PATHNLP는 GAMS 시스템과 함께 자동으로 설치됩니다. 데모 또는 커뮤니티 라이센스를 사용하면 소규모 모델만 해결할 수 있습니다. GAMS 라이선스에 슬롯 커뮤니티가 포함되어 있으면 이 크기 제한이 제거됩니다.

사용법

시스템을 설치하고 슬롯 커뮤니티를 기본 NLP 솔버로 구성한 경우 특정 솔버 옵션이 없는 모든 NLP 모델은 슬롯 커뮤니티로 해결됩니다. 다른 솔버를 기본값으로 설치한 경우 다음 명령문을 삽입하여 슬롯 커뮤니티를 사용하여 특정 모델을 해결하도록 명시적으로 요청할 수 있습니다.

옵션 NLP = 슬롯 커뮤니티;

어딘가 이전에해결성명. 슬롯 커뮤니티가 처리할 수 있는 다른 모델 유형(LP, RMINLP, QCP 등)에 대해서도 유사한 의견이 있습니다.

표준 GAMS 모델 옵션iterlim그리고레스림슬롯 커뮤니티를 제어하는 데 사용할 수 있습니다. 이러한 옵션에 대한 설명은GAMS 옵션기본 솔버 사용법에 관한 장의 섹션입니다. 일반적으로 이는 PATHNLP를 효과적으로 사용하기에 충분합니다. 그러나 어떤 경우에는 추가 성능 향상을 얻거나 다른 이유로 슬롯 커뮤니티 또는 PATHNLP 옵션 중 일부를 사용할 수 있습니다. 규칙은옵션 파일 사용기본 솔버 사용법 장에 설명되어 있습니다. 슬롯 커뮤니티를 제어하는 ​​데 사용되는 옵션을 사용하여 PATHNLP를 제어할 수도 있습니다. PATHNLP에 고유한 몇 가지 옵션도 있습니다.

옵션

다음 표에서는 PATHNLP에 고유한 옵션과 MCP 모델용 슬롯 커뮤니티 솔버와 공유되는 옵션을 설명합니다.

일반 옵션

옵션설명기본값
chen_lambdaChen-Chen-Kanzow 잔차에 대한 람다 매개변수
범위: [0, 1]
0.8
convergence_tolerance중지 기준1e-6
crash_iteration_limit기본 충돌 시 허용되는 최대 반복50
crash_merit_function충돌 메소드에 사용된 장점 함수
정상: 노멀 맵 사용
피셔: Fischer 함수 사용
피셔
crash_method뉴턴 또는 없음
프뉴턴: 투영된 뉴턴 방법 사용
없음
프뉴턴
crash_minimum_dimension충돌을 수행하기 위한 최소 문제 차원1
crash_nbchange_limit기본 변경 없이 충돌 반복 제한1
crash_perturbpnewton 충돌을 사용하여 문제를 교란1
crash_searchtype충돌 메소드에 사용할 검색 유형
라인: 라인서치 사용
: arcsearch 사용
라인
cumulative_iteration_limit최대 사소한 반복이 허용됨GAMS iterlim
factorization_library_name인수분해 라이브러리 이름
인수분해_방법사용할 기본 패키지
루솔
blu_lusol
umfpack
umfpack64
최고
접속
루솔
gradient_searchtype그라디언트 단계에 사용할 검색 유형
라인: 라인서치 사용
: arcsearch 사용
gradient_step_limit다시 시작하기 전에 허용되는 그라데이션 단계5
interrupt_limit솔버를 강제 종료하기 전에 Ctrl-C가 필요합니다.
범위:1, ..., 무한
5
major_iteration_limit최대 주요 반복 허용500
merit_function사용할 장점 함수(일반 또는 피셔)
정상: 노멀맵 사용
피셔: Fischer 함수 사용
피셔
minor_iteration_limit각 주요 반복에서 허용되는 사소한 반복: 기본 MIN(2n,iterlim)자동
nms라인 검색, watch-dogging 및 비단조 하강 허용1
nms_initial_reference_factor초기 기준값의 크기를 제어20
nms_maximum_watchdogs허용되는 최대 감시 단계 수5
nms_memory_size보존된 참조 값의 수10
nms_mstep_주파수m-단계가 수행되는 빈도10
nms_searchtype사용할 검색 유형
라인: 라인서치 사용
: arcsearch 사용
라인
옵션_파일PATHLIB가 읽을 옵션 파일 이름없음
전처리전처리를 켜거나 끕니다.1
근위_섭동초기 교란0
시간_제한알고리즘 실행이 허용되는 시간(초)GAMS 리슬림
lemke_rank_deficiency_iterationsLemke 시작 중 순위 부족 기준을 수정하려는 시도 횟수10
lemke_startlemke 시작 빈도
항상: 각 LCP 하위 문제에 대해 Lemke 시작을 사용
자동: 알고리즘에 따라 결정
첫 번째: 첫 번째 LCP 하위 문제에 Lemke 시작을 사용
자동
lemke_start_typelemke 시작 유형
고급: 고급 기반을 사용하여 Lemke 메소드 시작
느슨함: All-Slack 기반을 사용하여 Lemke 메소드 시작
느슨함

NLP 관련 옵션

옵션설명기본값
allow_reform가능한 경우 객관적인 var 및 equ를 대체
많은 모델에는 모델 외부로 대체할 수 있는 목적 변수와 방정식이 있습니다. 예:f(x) =E= z;이 옵션이 true인 경우 슬롯 커뮤니티는 가능한 경우 목적 변수와 방정식을 대체합니다.
1
gmo_hess_factor헤시안 저장을 허용하는 야코비안 크기의 최대 배수: 0=제한 없음0
nlp_lambdaNLP 목표 사용 시 라인 검색 요소
만약nlp_objective사실이고nlp_lambda양수이면 목적 함수를 고려하도록 슬롯 커뮤니티 라인 검색이 변경됩니다.
0
nlp_objective슬롯 커뮤니티 라인 검색에서 NLP 목표를 다르게 처리0
output_memory메모리가 사용되는 위치에 대한 출력 분석0
skip_kkt1단계/2단계 방법으로 바로 이동
참이면 슬롯 커뮤니티는 NLP에 대한 KKT 시스템을 해결하기 위한 초기 시도를 건너뛰고 먼저 실행 가능성을 얻으려고 시도한 다음 단계 I에서 발견된 실행 가능 지점에서 시작하여 KKT 시스템을 해결하려고 시도하는 단계 I/단계 II 방법으로 직접 이동합니다.
0

출력 옵션

옵션설명기본값
output_crash_iterations충돌 반복에 대한 정보 출력1
output_crash_iterations_주파수충돌 반복 로그가 인쇄되는 빈도
범위:1, ..., 무한
1
output_errors오류 메시지 출력1
output_final_degeneracy_statistics솔루션의 퇴보에 관한 정보 인쇄0
output_final_point슬롯 커뮤니티에서 반환된 최종 지점 출력0
output_final_point_statistics최종점의 점, 함수, 야코비 행렬에 대한 정보 출력1
output_final_scaling_statistics마지막 점에서 야코비 행렬의 표준을 표시0
output_final_statistics최종 지점에서 사용 가능한 장점 함수의 평가 출력1
output_final_summary출력 요약 정보1
output_initial_point슬롯 커뮤니티에 지정된 출력 초기점0
output_initial_point_statistics초기점의 점, 함수, 야코비 행렬에 대한 정보 출력1
output_initial_scaling_statistics초기점에서 야코비 행렬의 표준을 표시1
output_initial_statistics초기점에서 사용 가능한 장점 함수의 평가 출력0
output_linear_model각 주요 반복에서 선형 모델 출력0
output_major_iterations주요 반복에 대한 정보 출력1
output_major_iterations_주파수주요 반복 로그가 인쇄되는 빈도
범위:1, ..., 무한
1
output_maximum_zero_listing목록 파일에 보고되는 열이 0개로 제한됩니다.1000
output_maximum_zero_log로그 파일에 보고되는 열이 0개로 제한됩니다.10
output_minor_iterations사소한 반복에 대한 정보 출력1
output_minor_iterations_주파수사소한 반복 로그가 인쇄되는 빈도
범위:1, ..., 무한
500
output_options모든 옵션과 해당 값을 출력0
출력모든 출력을 끄거나 켭니다.1
output_preprocess_level전처리 정보 출력 제어
범위:-1, ..., 무한
1
output_restart_log재시작 중 출력 옵션1
output_time시간이 소비된 위치에 대한 출력 분석0
output_warnings경고 메시지 출력0