제한된 최적화를위한 소프트웨어 패키지?


21

일부 변수 (특히 상자 제약 조건)의 경계를 알고있는 제한된 최적화 문제를 해결하려고합니다.

argminuf(u,x)

에 따라

c(u,x)=0
ad(u,x)b

여기서 u 는 설계 변수의 벡터이고, x 는 상태 변수의 벡터이며, c(u,x) 는 등식 제약 조건 (일반적으로 PDE)입니다. 하한 및 상한 제약 조건 ab 는 공간적으로 변할 수있다.

이 형식의 시스템을 처리 할 수있는 패키지는 무엇입니까?


1
편집 된 버전은 박스 제약 최적화 문제처럼 보이지 않습니다. 상자 제약이있는 최적화 문제는 제약 조건 aub 를 갖 습니다 . 되어 u 의 함수로되어 x ? 가 c 선형에 u ? 그렇지 않은 경우 두 번으로 구분할 수 있습니까? 는 f 에 볼록 u ? u 에서 두 번 구분할 수 u있습니까? 마지막 argminu 있는 점의 집합이다 u 의 최소값되는 f 달성된다. minu 대신 의미 합니까?
Geoff Oxberry

d(u,x)=u 는 특별한 경우이지만 실제로는 이보다 일반적인 형태가 일반적입니다. 메소드가 u에서 직접 제약 조건 만 처리 할 수있는 경우 항상 추가 변수를 도입 할 수 있습니다 u. 우리는 일반적으로 최소값 f 보다 최소값 인 u 값에 더 관심이 있습니다. Sean은 [pde] 태그를 추가 했으므로 그로부터 규칙을 얻을 수 있습니다. 그는 시스템이 쌍곡인지 여부를 밝히지 않았으므로 가정하지 마십시오. f 가 종종 볼록하지 않기 때문에 f 가 볼록 하다고 가정 하지 마십시오. uff
제드 브라운

fL1 또는 W1,1 정규화 를 포함하는 것이 일반적 이므로 두 가지 파생물을 가정해서는 안됩니다.
제드 브라운

@JedBrown : 그건 말이된다; 명확한 상자 제약없이 "상자 제약"을 언급하는 것은 혼란 스러웠습니다. 논의하고있는 문제 유형 (디자인 문제, 제어 문제)의 경우 u 가 확실히 더 흥미롭지 만 최적화 문제는 일반적으로 min 표기법을 사용하여 설명되며 솔루션 세트는 argmin 표기법을 사용하여 설명 됩니다.
Geoff Oxberry

PDE를 모델링하는 언어 / 환경을 지정하는 것이 유용 할 수 있습니다. 옵티 마이저 선택을 제한 할 수 있습니다.
Dominique

답변:


18

몇 가지 의견을 바탕으로 답변을 근본적으로 편집하기로 결정했습니다.

TAO를 사용하지 않았습니다. 문서를 꼼꼼히 살펴보면 TAO가 제한된 최적화 문제 (상자 제약 조건 만 제외)를 처리 할 수있는 유일한 방법은 Karush-Kuhn-Tucker (KKT) 조건을 사용하여 문제를 변형 불평등으로 변환하는 것 입니다. 제약 조건 (일반적으로 Slater point condition )에서 필요하며, 목표와 제약 조건 (보다 일반적으로 Type 1 invexity)의 볼록에서 충분합니다. 만약에f볼록하지 않은 경우 KKT 조건을 사용하는 변동 부등식 공식은 원래 최적화 문제와 같지 않으므로 엄격하게 말하면 최적화 문제에 대한 전역 최적을 원한다면이를 변형 부등식으로 표현해서는 안됩니다. 어쨌든 PDE 제한 최적화 (아래 참조)를위한 최적의 글로벌을 찾기는 어려울 수 있으므로이 세부 사항을 무시하는 것이 좋습니다. Wolfgang이 말한 것을 감안할 때, 나는 TAO를 사용하는 것에 회의적입니다. 변형 불평등이 아닌 비선형 프로그램 (NLP)을 NLP로 해결하는 방법을 구현하지 않기 때문에 이미 회의적입니다.

PDE 제한 최적화에 대한 전문가가 아닙니다. 동료 및 동료 직원이 ODE 제한 최적화 문제를 해결합니다. 나는 침입 성 제제의 경우 Larry Biegler (및 기타)가 병치 방법을 사용하여 PDE를 이산화하여 매우 드문 드문 NLP로 만든 다음 내부 포인트 방법을 사용하여 해결할 것임을 알고 있습니다. 문제를 글로벌 최적 성으로 실제로 해결하려면 볼록한 이완을 생성해야하지만, 아는 한, PDE 제한적 최적화 문제로 인해 큰 NLP가 발생하여 해결하기가 어려우므로이 방법은 사용되지 않습니다. 글로벌 최적 성. 문제 공식화가 솔버 패키지의 선택에 크게 영향을 미치기 때문에 이러한 세부 사항 만 언급합니다. 비 침입 포 뮬레이션의 경우 반복 PDE는 최적화 알고리즘에 대한 수율 구배 정보를 해결합니다.

ODE 제한 최적화 문제를 연구하는 일부 사람들은 배열과 수치 방법을 사용하여 문제를 불연속 화하고 결과 NLP를 완화하여 전역 최적화 알고리즘에 사용되는 볼록한 공식을 생성하는 비슷한 접근 방식을 사용합니다. ODE 제한 최적화에 대한 다른 접근 방식은 문제를 완화 한 다음 실험실에서 취한 접근 방식 인 ODE를 분리하는 것입니다. 특정 클래스의 PDE 제한 최적화 문제를 완화하는 것이 가능할 수 있지만 해당 문제에 대한 현존하는 작업은 모르겠습니다. (이 시점은 실험실에서 잠재적 인 프로젝트였습니다.)

궁극적으로 중요한 것은 원래 PDE의 차별화가 아니라 결정 변수에 대한 이산화의 차이입니다.

이산화 된 문제가 결정 변수와 관련하여 두 배로 나눌 수있는 경우 다음 패키지는 로컬 솔루션을 계산합니다.

  • IPOPT 는 Andreas Wächter가 IBM에서 개발 한 오픈 소스 내부 포인트 솔버입니다. 매우 높은 품질의 코드입니다. 내부 포인트 솔버로서, 크고 희소 한 Jacobian 행렬을 가진 목적 함수에 더 적합하며 PDE 제한 최적화에 유용합니다.
  • SNOPT 는 또 다른 고품질 코드 인 상용 순차 2 차 프로그래밍 솔버입니다. 작고 밀도가 높은 Jacobian 행렬을 사용하는 객관적인 기능에 더 좋으므로 PDE 제한 최적화에 유용하지는 않지만 시험해 볼 수는 있습니다.
  • NLopt 는 MIT의 Steven Johnson이 작성한 작은 오픈 소스 코드로, 여러 비선형 최적화 알고리즘의 기본 구현이 포함되어 있습니다. 모든 알고리즘은 한계 제약 문제를 해결하는 데 적합해야합니다.
  • fmincon Matlab은 비선형 최적화를 위해 여러 알고리즘 (내부 점 및 순차적 2 차 프로그래밍 포함)을 구현합니다.
  • GAMSAMPL 은 모두 최적화 문제를 공식화하는 데 사용되는 상용 모델링 언어이며 다수의 비선형 프로그래밍 솔버에 대한 인터페이스를 포함합니다. GAMS에는 소규모 문제에 사용할 수있는 평가판이 있으며 문제 인스턴스도 NEOS 서버 에 제출하여 솔루션을 얻을 수 있습니다.

그러나 이산화는 결정 변수와 관련하여 한 번만 차별화 할 수 있습니다.이 경우 로컬 솔루션을 계산할 때 가장 가파른 하강 또는 다른 1 차 최적화 방법을 사용해야합니다. 많은 연구가 2 차 방법을 사용할 수있는 문제 (그리고 사용할 수있을 때 우수한 수렴 특성이 더 나은 선택이 됨)에 중점을 두었으므로 해결책이 아닌 가파른 하강의 많은 구현을 찾을 수 없었습니다. 숙제 문제. GNU 과학 도서관 구현을 가지고 있지만 데모 목적으로 만 있습니다. 아마도 자신의 구현을 코딩해야 할 것입니다.

문제가 의사 결정 변수와 관련하여 만 지속되는 경우 직접 방법을 사용하여 로컬로 해결할 수 있습니다. Kolda, Lewis 및 Torczon의 직접적인 방법에 대한 훌륭한 조사가 있습니다 . 이러한 방법 중 가장 널리 알려진 방법은 Nelder-Mead 심플 렉스 알고리즘 입니다. 다차원에서 최소값으로 수렴한다고 보장되지는 않지만 어쨌든 실질적인 사용이 발견되었습니다.

패키지 선택은 실제로 제한 문제를 해결하는 것이 구현하려는 알고리즘의 일부일 경우 (또는 알고리즘의 유일한 단계 인 경우 모델링 언어 인 경우) 문제를 해결하는 데 사용하려는 언어에 따라 다릅니다. 프로덕션 코드, 문제의 유형 및 크기, 병렬 처리가 필요한 경우 더 유용합니다.


4

우리는 TAO를 시도했지만 불평등 제약 문제에는 그다지 유용하지 않은 것으로 나타났습니다. 또한 기본적으로 PETSc의 변경 사항을 추적하기위한 업데이트 외에 별도의 새로운 기능이 없어 최소한 2003 년부터 유지 관리 모드에만 있습니다.


3

다른 대안은 OPT ++ 입니다. 효율적인 비선형 내부 포인트 솔버로 선형 및 비선형 구속 조건을 지원하고, 함수 정확도 (수치 미분이 필요한 경우) 제어, 스텝 크기 제어 등을 제공합니다. 일반적으로 이러한 유형의 컨트롤이 유용 할 수 있습니다.


OPT ++가 사용하기에 좋은 패키지 인 이유를 자세히 설명해 주시겠습니까? 귀하 (또는 동료)에게 경험이 있습니까?
Geoff Oxberry

분명히, 나는 OPT ++가 경험이 없기 때문에 이전에 나열된 것보다 우수하다고 말할 이유가 없습니다 (체크 아웃을 위해 몇 가지를 북마크에 추가했지만). 그러나 OPT ++에 대한 경험이 있으며 내 요구에 적합하다는 것을 알았습니다. 효율적인 비선형 내부 포인트 솔버로 선형 및 비선형 구속 조건을 지원하고, 함수 정확도 (수치 미분이 필요한 경우) 제어, 스텝 크기 제어 등을 제공합니다. 일반적으로 이러한 유형의 컨트롤이 유용 할 수 있습니다.
Barron

2
@Barron : 당신의 대답에 시작해야합니다. :)
JM

2

문제가 상보성 문제로 공식화 된 경우 TAO (고급 최적화를위한 툴킷)를 사용할 수 있습니다 . 공간 축소 방법 (활성 세트 방법의 변형)과 같은 TAO의 일부 방법은 현재 PETSc ( SNESVI ) 의 SNES의 일부로 사용 가능 합니다.


1

CERNLIBMINUTE 모듈 ( ROOT 로 포팅 된 이후 )은 입력 공간 에서 변환을 사용하여 상자를 를 실행하는 공간으로 제한 하므로 특별한 경우없이 처리 할 수 ​​있습니다 (비용) 물론 약간의 속도로).[,+]

MINUTE가 귀하의 요구에 잘 작동한다고 생각하지 않지만 코드의 일부 또는 전부를 직접 작성 해야하는 경우 변환이 필요할 수 있습니다.


그 변화는 불쾌 해 보인다. 몇 개의 단락이 수반되는 것도 당연합니다.
Geoff Oxberry

1

@Geoff Oxberry가 지적했듯이 여러 패키지를 통해 로컬 솔루션을 찾을 수 있습니다. 동일한 문제에 대해 이러한 다른 NLP 솔버를 비교하려면 RobOptim 을 사용할 수 있습니다 .

RobOptim은 처음에 로봇 최적화 문제를 염두에두고 개발되었지만 모든 비선형 최적화 문제에 적합합니다. 여러 NLP 솔버 (예 : Ipopt, NAG) 용 플러그인이있는 간단한 C ++ 인터페이스를 제공합니다. 그래디언트를 제공 할 수없는 경우 유한 차분 계산을 자동으로 수행 할 수 있습니다.

오픈 소스이므로 GitHub에서 소스 코드를 확인할 수 있습니다 : https://github.com/roboptim/

참고 : 저는이 프로젝트의 개발자 중 한 명입니다.


1
다른 답변은 프레임 워크가 아닌 솔버를 설명한다고 지적해야합니다 . 좋은 솔버보다 수용 가능한 프레임 워크 ( 드라이버 ) 를 찾는 것이 더 쉽습니다 .
Deer Hunter

@DeerHunter 주어진 문제를 해결하기 위해 솔버를 찾고있을 때 어떤 솔버가 최상의 솔루션을 계산하고 /하거나 가장 빠른지 우선 순위를 아는 것은 종종 어렵다. 당신은 "좋은 솔버"에 대해 이야기하고 있지만, 이것은 실제로 당신이 풀고있는 것에 달려 있습니다. "최상의 전체"솔버는 없습니다. 또한 솔버 API는 일반적으로 매우 다르므로 한 솔버에서 다른 솔버로 쉽게 전환 할 수있는 좋은 프레임 워크를 사용하면 실제로 도움이 될 수 있습니다. 문제는 "제한된 최적화를위한 소프트웨어 패키지"에 관한 것이 었으며 프레임 워크도이 범주에 속합니다.
BenC

1

다음은 PDE 제한 최적화 패키지의 일부 목록입니다.

Dolfin Adjoint는 FEniCS FEM의 일부입니다.

http://dolfin-adjoint.org/

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 제한 최적화 문제를 해결하는 예제를 제공합니다.

http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf


1
SciComp.SE에 오신 것을 환영합니다! 링크를 제공하는 것만으로도 유용한 답변은 아닙니다. meta.stackexchange.com/questions/8231을 참조하십시오 . 이것에 대해 조금 확장 할 수 있습니까 (컴퓨팅 언어, 어떤 종류의 제약을 처리 할 수 ​​있는지, 어떤 방법이 구현되는지 등)?
Christian Clason

@ChristianClason에 동의합니다. PDE- 제약 된 최적화 소프트웨어를위한 솔버에서 상당한 발전이있었습니다. 그러나이 답변은 해당 패키지가 실제로 구현하는 알고리즘에 대한 배경 지식을 본질적으로 제공하지 않습니다.
Geoff Oxberry

0

APM 및 MATLAB APM 파이썬 패키지 혼합 정수 미분 대수 방정식 시스템의 대규모 (100,000 변수)를 해결할 수있다. 이 소프트웨어는 상업적 또는 학술 용 웹 서비스로 제공됩니다. PDE 시스템을 해결하는 경우 한 번 이산하여 DAE 또는 ODE 양식으로 가져와 APMonitor 모델링 언어에 넣을 수 있습니다. 모델링 언어는 APOPT , BPOPT, IPOPT, SNOPT 및 MINOS 솔버를 사용합니다.


1
귀하의 소프트웨어를 언급하는이 답변과 향후 답변에서 APMonitor 개발자로서 귀하의 소속을 공개하십시오. 공개 정책에 대한 자세한 내용은 FAQ를 참조하십시오.
제프 옥스 베리

제프, 팁 주셔서 감사합니다. 2004 년 오스틴에있는 텍사스 대학교에서 대학원생으로 APMonitor 플랫폼에 대한 작업을 시작했습니다. 이제 브리검 영 대학교의 연구 그룹에서 생물학적, 화학, 항공 우주 및 기타 응용 분야의 공정 제어 및 최적화 ( apm.byu.edu/prism )에 사용합니다. 상용 또는 학술 사용자에게 무료로 제공합니다.
John Hedengren
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.