최소의 범위를 찾고자하는 비 볼록 2D 기능이 있습니다. 이 기능은 매우 부드럽습니다. 그것을 평가하는 것은 비용이 많이 든다. 허용 가능한 오류는 각 축에서 함수 도메인의 약 3 %입니다.
NLOPT 라이브러리에서 DIRECT 알고리즘의 구현을 시도했지만 필요한 정확도에 필요한 함수 평가량 측면에서 무차별 강제 검색보다 크게 개선되지 않았으며 일부 이상 치가있었습니다.
다른 글로벌 최적화 솔버를 고려해야합니까?
최소의 범위를 찾고자하는 비 볼록 2D 기능이 있습니다. 이 기능은 매우 부드럽습니다. 그것을 평가하는 것은 비용이 많이 든다. 허용 가능한 오류는 각 축에서 함수 도메인의 약 3 %입니다.
NLOPT 라이브러리에서 DIRECT 알고리즘의 구현을 시도했지만 필요한 정확도에 필요한 함수 평가량 측면에서 무차별 강제 검색보다 크게 개선되지 않았으며 일부 이상 치가있었습니다.
다른 글로벌 최적화 솔버를 고려해야합니까?
답변:
@barron이 같은 것을 간접적으로 논의했지만 다른 답변과 비교하여 약간 다른 접근법을 제안하고 싶습니다.
대신 일련의 점에 그것을 평가하여 즉, 직접 기능을 최적화 A (로컬) 최적에 (희망) 수렴, 당신의 개념을 사용할 수 있다는 점 대리 모델링 이다, 설명하는 유형의 문제 (고비용, 매끄럽고 제한적이며 저 차원, 즉 20 개 미만의 미지수)에 매우 적합합니다.
특히, 대리 모델링 모델 기능을 설정하여 작동 당신의 진정한 기능의 F ∈ R D → R . 핵심은 물론 c 가 f를 완벽하게 나타내지는 않지만 평가하는 것이 훨씬 저렴하다는 것입니다.
따라서 일반적인 최적화 프로세스는 다음과 같습니다.
일반적으로 이는 @barron이 제안한 것처럼 EGO (Efficient Global Optimization)가 의미하는 것입니다. 여러분의 응용 프로그램에 이것은 완벽하게 적합 해 보인다는 것을 강조하고 싶습니다. 상대적으로 적은 대한 평가를 기반으로 놀랍도록 정확한 모델을 얻은 다음 원하는 최적화 알고리즘을 사용할 수 있습니다. 흥미로운 점은 메쉬에서 c 를 평가 하고 플롯하여 일반적인 f 모양에 대한 통찰력을 얻을 수 있다는 것 입니다. 또 다른 흥미로운 점은 대부분의 대리 모델링 기법이 통계적 오류 추정치를 제공하여 불확실성 추정을 허용한다는 것입니다.
를 구성하는 방법 은 물론 공개적인 질문이지만 종종 Kriging 또는 소위 공간 매핑 모델이 사용됩니다.
물론 이것은 모두 약간의 코딩 작업이지만 많은 다른 사람들이 매우 훌륭한 구현을 수행했습니다. Matlab에서는 DACE 소프트웨어 도구 상자 DACE가 무료 라는 것을 알고 있습니다. TOMLAB은 Matlab 패키지를 제공 할 수도 있지만 비용이 많이 들지만 C ++에서도 작동하며 DACE보다 훨씬 많은 기능을 가지고 있다고 생각합니다. (참고 : 곧 출시 될 새로운 버전의 DACE 개발자 중 한 명이며 EGO에 대한 추가 지원을 제공 할 예정입니다.)
이 대략적인 개요가 도움이 되었기를 바랍니다. 더 명확하거나 누락 된 점이 있거나 질문에 대한 추가 자료를 원하는 경우 질문하십시오.
함수가 부드럽기 때문에 뉴턴의 방법은 최소값을 찾는 데 가장 압도적으로 효율적인 방법입니다. 함수가 볼록하지 않기 때문에 Newton의 방법을 수렴하기 위해 일반적인 트릭을 적용해야합니다 (Levenberg-Marquardt 수정, 라인 검색 또는 세계화를위한 신뢰 영역). 함수의 파생물을 얻을 수 없으면 유한 차이를 통해 계산하거나 BFGS 업데이트를 사용하십시오. 문제에 지역 최소값이 두 개 이상 있다고 생각되면 무작위로 또는 무작위로 선택되지 않은 많은 지점에서 뉴턴의 방법을 시작하고 어디에서 수렴하는지 확인하십시오.