2016-08-08 4 views
0

내 문제는 다음과 같습니다. 다른 해결사를 사용하여 openmdao와 다른 문제를 최적화하고 있습니다. 문제는 1 개 이상의 뿌리가있는 객관적인 기능을 제공하며, 목표는 최적화를 사용하여 목표에 가깝게하는 것입니다. 예를 들어 어떤 SLSQP에 문제가 있거나 PSQP가 없지만, IPOPT를 사용하는 경우, 여기에 내가 자세한 결과 (추출물) 인쇄에서 무엇을 얻을 수 있습니다 : enter image description here목적 함수 (IPOPT)에 대한 기준 중지

내 문제가 심하게 조정이나 뭐하지만입니다 수 있습니다 거기 목적 함수가 (예를 들어) 1e-5보다 낮을 때 IPOPT를 멈추게하는 방법? 나는이 문제를 해결하기 위해 'tol'을 고쳐야 만한다. 그러나 목적 함수에 의존하지 않는 Eo에 대한 'tol'영향은 ... 누구든지 아이디어가있다? 미리 감사드립니다.

답변

0

Ipopt에는 다양한 수렴 공차가 있습니다. http://www.coin-or.org/Ipopt/documentation/node42.html

설정을 제대로하면 원하는 때에 멈출 수 있습니다. acceptable_tol을 시도해보십시오. 응답이 종료 기준으로 변경되지 않는 시점을 찾습니다.

+0

이미 해당 링크를 확인했습니다. 내 문제를 일찍 멈추게하려면 높은 'dual_inf_tol'을 설정해야합니다 (inf_du는 약 1e1 임). 문제는 구현 논문 (http://cepac.cheme.cmu.edu/pasilectures/biegler/ipopt.pdf)에 따라 문제의 많은 하위 변수에 따라 달라집니다. 따라서 미리 결정된 값이 없기 때문에 목적 함수가 어떤 값 아래에있을 때 멈출 수 있습니다. 따라서 그것을 할 수있는 방법에 대한 내 질문 (문서의 종료 섹션에서 지정되지 않을 것입니다) – gael17

+0

그것은 당신이 그들의 정지 기준에 내장되어있는 것에 만족하지 않는 것처럼 들립니다. OpenMDAO 랩퍼 코드를 수정하여 사용자 자신의 중지 기준을 추가 할 수 있습니다. 총 해킹으로 밝혀지지 않도록 조심해야 할 것입니다.하지만 빠르고 더러운 것이 필요하다면 해킹하세요. https://github.com/OpenMDAO/OpenMDAO/blob/master/openmdao /drivers/pyoptsparse_driver.py#L423 –

+0

정확히 같은 소리입니다. _objfunc는 pyoptsparse의 Optimization 클래스에만 사용되는 것 같습니다. 래퍼가 직접 옵티 마이저를 호출하고 결과 만 처리하기 때문에 래퍼에서 중지 기준을 변경할 방법이 없습니다 ... 그리고 IPOPT의 코드를 변경하는 것은 너무 어려울 것 같습니다 : / – gael17