소개
이 문서는 비선형 프로그램용 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 모델은 슬롯 커뮤니티로 해결됩니다. 다른 솔버를 기본값으로 설치한 경우 다음 명령문을 삽입하여 슬롯 커뮤니티를 사용하여 특정 모델을 해결하도록 명시적으로 요청할 수 있습니다.
어딘가 이전에해결성명. 슬롯 커뮤니티가 처리할 수 있는 다른 모델 유형(LP, RMINLP, QCP 등)에 대해서도 유사한 의견이 있습니다.
표준 GAMS 모델 옵션iterlim그리고레스림슬롯 커뮤니티를 제어하는 데 사용할 수 있습니다. 이러한 옵션에 대한 설명은GAMS 옵션기본 솔버 사용법에 관한 장의 섹션입니다. 일반적으로 이는 PATHNLP를 효과적으로 사용하기에 충분합니다. 그러나 어떤 경우에는 추가 성능 향상을 얻거나 다른 이유로 슬롯 커뮤니티 또는 PATHNLP 옵션 중 일부를 사용할 수 있습니다. 규칙은옵션 파일 사용기본 솔버 사용법 장에 설명되어 있습니다. 슬롯 커뮤니티를 제어하는 데 사용되는 옵션을 사용하여 PATHNLP를 제어할 수도 있습니다. PATHNLP에 고유한 몇 가지 옵션도 있습니다.
옵션
다음 표에서는 PATHNLP에 고유한 옵션과 MCP 모델용 슬롯 커뮤니티 솔버와 공유되는 옵션을 설명합니다.
일반 옵션
| 옵션 | 설명 | 기본값 |
| chen_lambda | Chen-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_perturb | pnewton 충돌을 사용하여 문제를 교란 | 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_iterations | Lemke 시작 중 순위 부족 기준을 수정하려는 시도 횟수 | 10 |
| lemke_start | lemke 시작 빈도
항상: 각 LCP 하위 문제에 대해 Lemke 시작을 사용
자동: 알고리즘에 따라 결정
첫 번째: 첫 번째 LCP 하위 문제에 Lemke 시작을 사용 | 자동 |
| lemke_start_type | lemke 시작 유형
고급: 고급 기반을 사용하여 Lemke 메소드 시작
느슨함: All-Slack 기반을 사용하여 Lemke 메소드 시작 | 느슨함 |
NLP 관련 옵션
| 옵션 | 설명 | 기본값 |
| allow_reform | 가능한 경우 객관적인 var 및 equ를 대체 많은 모델에는 모델 외부로 대체할 수 있는 목적 변수와 방정식이 있습니다. 예:f(x) =E= z;이 옵션이 true인 경우 슬롯 커뮤니티는 가능한 경우 목적 변수와 방정식을 대체합니다. | 1 |
| gmo_hess_factor | 헤시안 저장을 허용하는 야코비안 크기의 최대 배수: 0=제한 없음 | 0 |
| nlp_lambda | NLP 목표 사용 시 라인 검색 요소 만약nlp_objective사실이고nlp_lambda양수이면 목적 함수를 고려하도록 슬롯 커뮤니티 라인 검색이 변경됩니다. | 0 |
| nlp_objective | 슬롯 커뮤니티 라인 검색에서 NLP 목표를 다르게 처리 | 0 |
| output_memory | 메모리가 사용되는 위치에 대한 출력 분석 | 0 |
| skip_kkt | 1단계/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 |