문제

선형 및 비선형 프로그래밍 (최적화) 프레임 워크 옵션을 찾고 있습니다.

요구 사항은 다음과 같습니다.

  1. 약. 100-1000 변수와 최대 약 1000 개의 제약 조건 (매우 간단합니다). 비선형 문제는 여러 변수의 곱셈 또는 분할과 관련된 제약 조건이 있습니다. 그보다 더 복잡한 것은 없습니다.

  2. MS 환경 (SQL Server, MS Access, .NET, Excel)과 잘 통합됩니다.

  3. 임시 문제 정의를 지원하는 것이 좋을 것입니다 (즉, Excel 프론트 엔드에서 문제를 정의하고 해결하기위한 일종의 스크립팅 언어 또는 지원).

  4. 나는 Excel 만 사용하지만 더 큰 문제에 대한 솔버 (.NET Environment)에 대한 솔버와의 인터페이스를 인터페이스 할 수있는 기능도 필요합니다.

프로그래밍 방식 액세스를 위해 솔버에 대한 추상 인터페이스를 개발하려고했습니다 (필요한 경우 솔버를 변경할 수 있습니다). 그런 다음 Ms Solver Foundation에 걸려 넘어졌습니다.http://code.msdn.microsoft.com/solverfoundation) 이미이 인터페이스가 있습니다. 다른 요구 사항과 관련하여 청구서에 맞는지 궁금합니다.

도움이 되었습니까?

해결책

Microsoft Solver Foundation은 비선형 프로그래밍을 지원하지 않는 것으로 나타났습니다. 2010 년 1 월 현재 팀의 관계 여기에는 그들이 그것을 고려하고 있지만 그것이 즉각적인 계획에 있지 않다는 것입니다.

그래서 나는 정착했다 ampl 모델링 언어 인터페이스 및 니트로 솔버 알고리즘의 경우. 니트로는 하나의 하나의 3 개의 알고리즘으로 구성되어 있기 때문에 좋아 보인다 ( 내부 포인트 방법 그리고 1의 1 활성 세트 방법). Wikipedia 페이지도 참조하십시오 니트로.

나는 미국 국립 과학 재단 (National Science Foundation)과 미국의 미국 에너지 부서가 자금을 지원하는 우수한 웹 포털에서 평가 버전을 시도한 후 AMPL과 니트로에 정착했습니다. Argonne National Laboratory ~라고 불리는 NEOS. NEOS는 AMPL 또는 GAMS (및 일부 솔버의 경우)를 사용하여 수학적 모델을 업로드 한 다음 결과 웹 페이지와 이메일을 통해 결과를 다시 얻기위한 웹 인터페이스를 제공합니다. 문제를 제출하기위한 이메일 인터페이스가있을 것으로 추정되지만 문제를 해결하는 데 성공하지 못했습니다.

이제이 모든 것이 비용이 듭니다. 니트로와 AMPL은 상용 제품입니다. 결국 솔루션은 약 8000 달러입니다. 싸지 않습니다. 무료 솔루션을 찾고 있다면 옵션이 솔버 용 iPopt에 거의 제한되어 있다고 생각합니다 (NEOS에서도 시도했지만 잘 작동했지만 다른 비 기술적 이유로 인해 선택할 수 없었습니다). AMPL 인터페이스를 포기합니다. iPopt의 API를 통해 문제를 설정할 수 있습니다. 그러나 Micrsoft Solver Foundation의 API와는 달리 iPopt 인터페이스는 조금 더 복잡하며 가장 어려운 것은 호출 응용 프로그램이 모델의 비선형 방정식을 먼저 계산하는 콜백을 구현해야합니다. 언어 인터페이스 모델링 (AMPL)은 언어로 작성된 모든 방정식에서 기호 파생 상품을 계산할 수 있기 때문에이를 처리합니다.

다른 팁

나열된 요구 사항을 기반으로 한 것처럼 보입니다 Microsoft Solver Foundation 요구 사항의 모든 사람과 일부를 충족시킵니다. "Solver Foundation이란 무엇입니까?"를 읽으십시오. Solver Foundation 사이트에 문서화하십시오. Solver Foundation에는 선형 프로그래밍, 비선형 프로그래밍, .NET에서 개발, Excel에서 사용할 수있는 비선형 프로그래밍을 언급합니다. Solver Foundation에는 Microsoft Office Excel 추가 기능이있어 친숙한 인터페이스에서 완전한 모델링 환경을 제공합니다.

나는 과거에 해결하기 위해 (실패) 문제에 대해 Solver Foundation을 시도했으며 Solver API 학습을 포함하여 2 일 안에 금이 갔다. 솔버 성능은 훌륭하며 SFS (Solver Foundation Services) API는 엄청난.

GNU 기반 GLPK 라이브러리는 훌륭한 무료 옵션입니다. 나는 걱정하지 않는 1000과 1000의 열 문제를 던졌습니다. 몇 가지 다른 문제 정의 형식이 필요하지만 C 또는 C ++ API를 통해 사용하기가 가장 쉬웠습니다. 그 뒤에있는 엔진의 개선은 항상 발생합니다. 일부 포장지도 사용할 수 있다고 생각합니다 (예 : Perl, Python).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top