혼합 정수 프로그래밍 문제를 해결하는 가장 빠른 소프트웨어 (오픈 소스)


14

혼합 정수 프로그래밍 문제가 있습니다. 그리고 현재 GLPK를 솔버로 사용하고 있습니다. 그러나 GLPK는 선형 프로그래밍 문제에는 좋지만 Mixed Integer 프로그래밍에는 시간이 훨씬 오래 걸리므로 요구 사항을 충족하지 못합니다. 다른 소프트웨어를 찾고 있습니다. 빠른 속도로 혼합 정수 프로그래밍 문제를 해결하기위한 다른 좋은 오픈 소스 도구가 있습니까? 감사!


SCIP 와의 비교를 보셨습니까 ?
Ali

답변:


14

오픈 소스를 원한다면 COIN의 CBC 코드를 사용해보십시오 (지점 및 가격 프레임 워크 또는 SYMPHONY와 같은 다른 MILP 솔버도 있습니다).

Gurobi와 CPLEX는 상당히 빠르며 2011 년 또는 2012 년 INFORMS 회의에서 Gurobi는 CPLEX보다 빠릅니다 (성능 지표는 물론 문제에 따라 다릅니다). 논문에서 해결 된 MILP에서 Gurobi는 CBC보다 약 15-100 배 더 빠르며 CPLEX는 Gurobi와 거의 비슷하지만 매우 느리지 만 (12-80 배 더 빠름).

최악의 성능은 실제로 기하 급수적이지만 실행 시간은 문제 구조에 따라 크게 달라집니다. 특별한 구조를 활용하지 않는 한 (수많은 더 작은 문제로 분해 될 수있는 확률 론적 프로그램 인 경우가 아니라면) 수백만 개의 변수로 MILP를 해결할 수는 없을 것 같지만 수천 개의 분 안에 변수. (물론 이러한 문제를 해결하는 데 1 시간 이상 걸릴 수도 있습니다.)

Brian Borchers가 지적한 것처럼 CPLEX와 Gurobi는 일부 연구원들에게 무료 라이센스를 제공하고 있습니다.이 두 소프트웨어 패키지 중 하나는 범용 MILP 솔버로 사용하는 것이 가장 좋습니다.


6

혼합 정수 선형 프로그래밍 문제는 선형 프로그래밍 문제보다 해결하기가 훨씬 어렵습니다. 계산 복잡성 측면에서 LP를 다항식 시간으로 해결할 수 있으며 MILP를 해결하는 것은 NP-Hard 문제입니다. MILP 해결을위한 알려진 알고리즘은 기하 급수적으로 최악의 복잡성을가집니다.

SCIP (학업 용 무료), CPLEX (상업용이지만 학술 용 라이센스 옵션이 있음) 및 GUROBI (학업 용 라이센스 옵션과 함께 상용)를 포함하여 볼 수있는 혼합 정수 선형 프로그래밍을위한 다른 소프트웨어 패키지가 있습니다. 이러한 패키지 중 일부는 문제에서 GLPK보다 훨씬 빠를 수 있지만 비슷한 크기의 LP를 해결할 때 MILP를 해결하는 데 거의 빠를 것으로 기대하지는 않습니다.


4

여러 가지 솔버를 시도하려면 Julia의 JuMP 모델링 프레임 워크 를 사용해보십시오. 모델을 JuMP 모델로 작성한 다음 한 줄의 코드로 솔버를 전환 할 수 있습니다. 예를 들어 MILP 문제의 경우 Bonmin, Cbc, Couenne, CPLEX, GLPK, Gurobi 및 MOSEK 솔버 중에서 선택할 수 있습니다. 이 때문에 JuMP로 작성하면 Geoff가 언급 한 모든 솔버를 시도하고 많은 코드를 작성하지 않고도 작동하는 것을 볼 수 있습니다. 자신의 개인 테스트는 문제에 가장 빠른 알고리즘이 무엇인지에 대한 최고의 지식 소스가 될 것입니다.


JuMP 프레임 워크가 많은 오버 헤드를 추가합니까?
naught101

1
아니요, JuMP는 매크로를 통해 수행되므로 컴파일 타임에 이루어집니다. 실제로 JuMP는 매크로를 사용하여 코드를 다시 작성하고 자동 분화를 사용하여 그라디언트, Jacobians 및 Hessians에 대한 효율적인 함수를 계산하므로 그라디언트 / 분석에 대한 분석 형식을 제공하지 않은 경우 더 빠릅니다. Jacobian / Hessian. @code_llvm접착제 코드가 본질적으로 아무것도 아닌지 확인하기 위해 실제로 어셈블리 코드를 확인하기 위해 확인할 수 있습니다 (Julia는 함수 포인터와 C / Fortran과 동일한 비트 배열을 순진하게 사용하기 때문입니다).
Chris Rackauckas

@ChrisRackauckas 비선형 구속 조건의 비선형 문제에 어떤 솔버가 더 잘 작동합니까?
skan

주석에 묻지 말아야 할 경우 완전히 다른 질문이지만, 필수 제약 조건과 전역 또는 로컬 최적화가 필요한지 여부에 따라 NLopt 또는 IPOPT와 함께 JuMP를 사용하는 경향이 있습니다.
Chris Rackauckas

3

다른 사람들의 제안에 따라 많은 프로젝트에 (상업용) GAMS 를 사용했습니다. 매우 간단합니다. 당신이해야 할 일은 문제의 수학 공식을 배치하는 것입니다. 변수, 제약, 목적 함수 및 모든 입력 데이터를 선택합니다. 그런 다음 모든 경우에 대해 다양한 솔버 (최적화 프로그램)를 제공합니다. 경우에 따라 더 정교한 솔버를 추가합니다.

확실히, EASY 는 살펴볼 가치가 있습니다. 오픈 소스 프레임 워크.

"빠른"이라는 용어는 매우 모호합니다! 좀 더 구체적이어야합니다. 반복 횟수면에서 빠릅니까? 평가 횟수? 경과 시간? 이것들의 조합?

그러나 소프트웨어를 찾지 않고 문제를 해결하려는 경우 평판과 성능이 매우 뛰어난 오픈 소스 최적화 프로그램 인 글로벌 최적화 도구 NSGA-II를 사용하는 것이 좋습니다.

자세한 정보를 제공 한 경우 정확하게 안내해 드릴 수 있습니다.


1
NASA가 개발 / 지원하는 [openMDAO] [1]을 신중히 고려해야합니다.
T3rmInAt0r
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.