일부 변수 (특히 상자 제약 조건)의 경계를 알고있는 제한된 최적화 문제를 해결하려고합니다.
에 따라
여기서 는 설계 변수의 벡터이고, 는 상태 변수의 벡터이며, 는 등식 제약 조건 (일반적으로 PDE)입니다. 하한 및 상한 제약 조건 및 는 공간적으로 변할 수있다.
이 형식의 시스템을 처리 할 수있는 패키지는 무엇입니까?
일부 변수 (특히 상자 제약 조건)의 경계를 알고있는 제한된 최적화 문제를 해결하려고합니다.
에 따라
여기서 는 설계 변수의 벡터이고, 는 상태 변수의 벡터이며, 는 등식 제약 조건 (일반적으로 PDE)입니다. 하한 및 상한 제약 조건 및 는 공간적으로 변할 수있다.
이 형식의 시스템을 처리 할 수있는 패키지는 무엇입니까?
답변:
몇 가지 의견을 바탕으로 답변을 근본적으로 편집하기로 결정했습니다.
TAO를 사용하지 않았습니다. 문서를 꼼꼼히 살펴보면 TAO가 제한된 최적화 문제 (상자 제약 조건 만 제외)를 처리 할 수있는 유일한 방법은 Karush-Kuhn-Tucker (KKT) 조건을 사용하여 문제를 변형 불평등으로 변환하는 것 입니다. 제약 조건 (일반적으로 Slater point condition )에서 필요하며, 목표와 제약 조건 (보다 일반적으로 Type 1 invexity)의 볼록에서 충분합니다. 만약에볼록하지 않은 경우 KKT 조건을 사용하는 변동 부등식 공식은 원래 최적화 문제와 같지 않으므로 엄격하게 말하면 최적화 문제에 대한 전역 최적을 원한다면이를 변형 부등식으로 표현해서는 안됩니다. 어쨌든 PDE 제한 최적화 (아래 참조)를위한 최적의 글로벌을 찾기는 어려울 수 있으므로이 세부 사항을 무시하는 것이 좋습니다. Wolfgang이 말한 것을 감안할 때, 나는 TAO를 사용하는 것에 회의적입니다. 변형 불평등이 아닌 비선형 프로그램 (NLP)을 NLP로 해결하는 방법을 구현하지 않기 때문에 이미 회의적입니다.
PDE 제한 최적화에 대한 전문가가 아닙니다. 동료 및 동료 직원이 ODE 제한 최적화 문제를 해결합니다. 나는 침입 성 제제의 경우 Larry Biegler (및 기타)가 병치 방법을 사용하여 PDE를 이산화하여 매우 드문 드문 NLP로 만든 다음 내부 포인트 방법을 사용하여 해결할 것임을 알고 있습니다. 문제를 글로벌 최적 성으로 실제로 해결하려면 볼록한 이완을 생성해야하지만, 아는 한, PDE 제한적 최적화 문제로 인해 큰 NLP가 발생하여 해결하기가 어려우므로이 방법은 사용되지 않습니다. 글로벌 최적 성. 문제 공식화가 솔버 패키지의 선택에 크게 영향을 미치기 때문에 이러한 세부 사항 만 언급합니다. 비 침입 포 뮬레이션의 경우 반복 PDE는 최적화 알고리즘에 대한 수율 구배 정보를 해결합니다.
ODE 제한 최적화 문제를 연구하는 일부 사람들은 배열과 수치 방법을 사용하여 문제를 불연속 화하고 결과 NLP를 완화하여 전역 최적화 알고리즘에 사용되는 볼록한 공식을 생성하는 비슷한 접근 방식을 사용합니다. ODE 제한 최적화에 대한 다른 접근 방식은 문제를 완화 한 다음 실험실에서 취한 접근 방식 인 ODE를 분리하는 것입니다. 특정 클래스의 PDE 제한 최적화 문제를 완화하는 것이 가능할 수 있지만 해당 문제에 대한 현존하는 작업은 모르겠습니다. (이 시점은 실험실에서 잠재적 인 프로젝트였습니다.)
궁극적으로 중요한 것은 원래 PDE의 차별화가 아니라 결정 변수에 대한 이산화의 차이입니다.
이산화 된 문제가 결정 변수와 관련하여 두 배로 나눌 수있는 경우 다음 패키지는 로컬 솔루션을 계산합니다.
fmincon
Matlab은 비선형 최적화를 위해 여러 알고리즘 (내부 점 및 순차적 2 차 프로그래밍 포함)을 구현합니다.그러나 이산화는 결정 변수와 관련하여 한 번만 차별화 할 수 있습니다.이 경우 로컬 솔루션을 계산할 때 가장 가파른 하강 또는 다른 1 차 최적화 방법을 사용해야합니다. 많은 연구가 2 차 방법을 사용할 수있는 문제 (그리고 사용할 수있을 때 우수한 수렴 특성이 더 나은 선택이 됨)에 중점을 두었으므로 해결책이 아닌 가파른 하강의 많은 구현을 찾을 수 없었습니다. 숙제 문제. GNU 과학 도서관 구현을 가지고 있지만 데모 목적으로 만 있습니다. 아마도 자신의 구현을 코딩해야 할 것입니다.
문제가 의사 결정 변수와 관련하여 만 지속되는 경우 직접 방법을 사용하여 로컬로 해결할 수 있습니다. Kolda, Lewis 및 Torczon의 직접적인 방법에 대한 훌륭한 조사가 있습니다 . 이러한 방법 중 가장 널리 알려진 방법은 Nelder-Mead 심플 렉스 알고리즘 입니다. 다차원에서 최소값으로 수렴한다고 보장되지는 않지만 어쨌든 실질적인 사용이 발견되었습니다.
패키지 선택은 실제로 제한 문제를 해결하는 것이 구현하려는 알고리즘의 일부일 경우 (또는 알고리즘의 유일한 단계 인 경우 모델링 언어 인 경우) 문제를 해결하는 데 사용하려는 언어에 따라 다릅니다. 프로덕션 코드, 문제의 유형 및 크기, 병렬 처리가 필요한 경우 더 유용합니다.
다른 대안은 OPT ++ 입니다. 효율적인 비선형 내부 포인트 솔버로 선형 및 비선형 구속 조건을 지원하고, 함수 정확도 (수치 미분이 필요한 경우) 제어, 스텝 크기 제어 등을 제공합니다. 일반적으로 이러한 유형의 컨트롤이 유용 할 수 있습니다.
@Geoff Oxberry가 지적했듯이 여러 패키지를 통해 로컬 솔루션을 찾을 수 있습니다. 동일한 문제에 대해 이러한 다른 NLP 솔버를 비교하려면 RobOptim 을 사용할 수 있습니다 .
RobOptim은 처음에 로봇 최적화 문제를 염두에두고 개발되었지만 모든 비선형 최적화 문제에 적합합니다. 여러 NLP 솔버 (예 : Ipopt, NAG) 용 플러그인이있는 간단한 C ++ 인터페이스를 제공합니다. 그래디언트를 제공 할 수없는 경우 유한 차분 계산을 자동으로 수행 할 수 있습니다.
오픈 소스이므로 GitHub에서 소스 코드를 확인할 수 있습니다 : https://github.com/roboptim/
참고 : 저는이 프로젝트의 개발자 중 한 명입니다.
다음은 PDE 제한 최적화 패키지의 일부 목록입니다.
Dolfin Adjoint는 FEniCS FEM의 일부입니다.
ROL, MOOCHO, Sundance는 Trilinos의 일부입니다.
https://github.com/trilinos/trilinos/tree/master/packages/rol/
https://github.com/trilinos/trilinos/tree/master/packages/Sundance/
http://trilinos.org/packages/moocho/
PDE 제한 최적화를위한 PYOMO 예 :
https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae
TAO 매뉴얼은 PDE 제한 최적화 문제를 해결하는 예제를 제공합니다.
APM 및 MATLAB APM 파이썬 패키지 혼합 정수 미분 대수 방정식 시스템의 대규모 (100,000 변수)를 해결할 수있다. 이 소프트웨어는 상업적 또는 학술 용 웹 서비스로 제공됩니다. PDE 시스템을 해결하는 경우 한 번 이산하여 DAE 또는 ODE 양식으로 가져와 APMonitor 모델링 언어에 넣을 수 있습니다. 모델링 언어는 APOPT , BPOPT, IPOPT, SNOPT 및 MINOS 솔버를 사용합니다.