혼합 정수 선형 프로그램의 효율적인 솔루션


12

많은 중요한 문제가 혼합 정수 선형 프로그램 으로 표현 될 수 있습니다 . 불행히도 이러한 종류의 문제에 대한 최적의 솔루션을 계산하는 것은 NP-Complete입니다. 운 좋게도 때때로 적당한 양의 계산으로 양질의 솔루션을 제공 할 수있는 근사 알고리즘이 있습니다.

특정 혼합 정수 선형 프로그램을 분석하여 이러한 근사 알고리즘 중 하나에 적합한 지 어떻게 확인해야합니까? 그러한 프로그램이 가질 수있는 관련 특성이나 특성은 무엇입니까?

오늘날 사용중인 관련 알고리즘은 무엇이며 이러한 품질이 이러한 알고리즘에 어떻게 매핑됩니까?

실험 할 소프트웨어 패키지는 무엇입니까?

답변:


15

MILP (혼합 정수 선형 프로그래밍)는 실제로 NP- 완료이지만, 혼합 정수 선형 프로그래밍의 해결할 수있는 (사소한) 사례가 있습니다.

NP- 완료는 혼합 정수 선형 프로그래밍이 다음을 의미합니다.

a) 비 결정적 튜링 머신 (NP 부분)으로 다항식 시간으로 해결 가능

b) 3-SAT로 다항식 다항식 시간 (완전한 부분; 나머지 토론에서는이 부분이 실제로 중요하지 않음)

O(2n)n

이 말이 "작은"인스턴스를 다루기 어렵다는 것을 의미하지는 않습니다. 불행히도 MILP 인스턴스에 대한 작은 의미가 무엇인지에 대한 정확한 진술을 할 수 없습니다. 이진 결정 변수가 3,000 개 이상인 문제를 일상적으로 해결합니다. 문제 구성에 따라 문제는 .01 초 (상대적으로 제약이 적은 문제의 경우) 또는 1 시간 이상 (많은 제약 조건이 활성화 된 문제의 경우)이 소요될 수 있습니다. 유리한 구조를 갖습니다. 최첨단 LP 솔버는 수백만 개의 연속적인 결정 변수로 LP를 해결할 수 있으며, 특별한 구조가 없다면 1,000에서 10 정도의 문제가 발생하지 않을 가능성이 높습니다.

해결할 수있는 MILP 인스턴스가 있다고 생각되면 분기 및 바인딩 또는 분기 및 컷 알고리즘을 사용하는 것이 좋습니다. 최상의 구현은 CPLEXGurobi 입니다. 둘 다 충분히 둘러 보면 무료 아카데믹 라이센스가있는 상용 제품입니다. 오픈 소스 솔버가 실제로 필요한 경우 소스 패키지가 때로는 까다로울 수 있지만 COIN-OR 커뮤니티 의 프로젝트 가 더 적합합니다. 가장 관련있는 프로젝트는 CBC 브랜치 앤 컷 솔버 , SYMPHONY 솔버 , BCP 브랜치 컷 가격 솔버ABACUS 브랜치 앤 컷 솔버 입니다. 이 모든 프로젝트에는 COIN-OR의 여러 패키지가 필요합니다모듈 형 구조로 인해

여러 해법을 시도 할 수있는 옵션을하려는 경우 가장 좋은 방법은 사용하는 것입니다 열기 솔버 인터페이스 에서 COIN-OR . 이 인터페이스의 일부에서는 기본 솔버 옵션 만 설정할 수 있으며 솔버에 대한 고급 옵션을 설정하려면 자세한 내용 은 COIN-OR 메일 링리스트를 참조하십시오. 상용 MILP 솔버는 오픈 소스 솔버보다 훨씬 빠릅니다 (때로는 수십 배 이상). 프로토 타이핑을위한 또 다른 옵션은 GAMS 또는 AMPL 과 같은 대수 모델링 언어를 사용하는 것입니다 . 두 소프트웨어 패키지는 모두 상업용이지만 소규모 문제 인스턴스에 사용할 수있는 평가판이 있습니다. 문제가 더 큰 인스턴스의 경우 GAMS 또는 AMPL 파일을해결 될 NEOS 서버 ; 이 서버는 공개적으로 사용 가능합니다.

충분히 큰 MILP 인스턴스가있는 경우 이러한 솔버 중 어느 것도 제대로 작동하지 않습니다. 정수 변수를 연속 변수로 완화하고 문제를 해결 한 다음 문제 인스턴스의 가능한 솔루션 인 가장 가까운 정수 변수 모음으로 반올림 할 수 있습니다. MILP의 LP 완화에 대한 최적의 솔루션은 MILP의 최적 목적 함수 값에 대한 하한을 제공하며 (물론 최소화 가정) MILP의 실현 가능한 솔루션은 최적 목표에 대한 상한을 제공합니다 MILP의 기능 가치.

운이 좋으며 제약 조건 행렬이 완전히 단일 모듈 인 경우 LP 솔버를 사용하여 MILP에 정수 솔루션을 생성 할 수 있으며 큰 크기에도 불구하고 효율적으로 문제를 해결할 수 있습니다. 다른 종류의 문제에는 배낭 문제가공 재고 문제 와 같은 빠른 근사 알고리즘이 있습니다 . 특수한 MILP 분해 알고리즘은 특별한 구조를 가진 문제에 대해서도 존재하지만, 그 주제는 다소 전문적이고 논문 범위를 벗어나기 때문에 특정 주제에 익숙하지는 않습니다.

나는 완전히 잘 모르는 것 같아요 다항 시간 근사 해법 MILP이 존재 포함하는 문제 클래스의 FPTAS이 (참조하지만, 특히 MILP에 대한 (FPTAS) 이 논문을). 내 권장 사항은 위의 혼합 정수 선형 프로그래밍 솔버 중 하나를 시간 제한 및 최적의 간격에 대한 적절한 공차와 함께 사용하는 것입니다. 그렇게하면 제한 시간 내에 MILP에 가능한 최상의 솔루션을 제공 할 수 있으며, 시간 제한 이전에 솔버가 성공적으로 종료되면 실행 가능한 솔루션은 설정 한 최적 간격 공차 내에서 최적이됩니다. 실행 가능한 솔루션이 상한이되고 솔버가 적절한 하한을 제공 할 수 있기 때문에이 조치 과정은 여전히 ​​솔루션의 품질에 한계를 줄 것입니다. 한계가 특정 요인 최적 솔루션 내에 있다고 보장되지는 않지만 근사치가 좋아질수록 FPTAS가 더 비싸집니다.

MILP 공식을 정하기 전에 할 수있는 가장 중요한 일은 찾을 수있는 가장 강력한 공식을 선택하는 것입니다. Bertsimas 및 Tsitsiklis의 선형 최적화 소개 에서 강력한 공식을 선택하는 방법에 대한 조언을 찾을 수 있습니다 . 주요 아이디어는 제약 조건이 가능한 한 제제의 볼록 껍질에 가까운 폴리 토프를 정의하는 제제를 선택하는 것입니다 ( 이 코스 노트 참조 ). 강력한 배합을 선택하면 문제를 해결하는 데 걸리는 시간이 크게 달라질 수 있습니다.


유리한 구조의 예는 무엇입니까? 내 프로그램에 관해 어떤 질문을해야합니까?
MRocklin

단일 모듈성, 배낭 문제 및 가공 재고 문제를 제외하고 문제가 다단계 확률 론적 프로그램 인 경우 해당 구조를 활용하는 분해 전략이 있습니다. (일반화 된) 벤더스 분해, Dantzig-Wolfe 분해 및 L 자형 분해와 같은 방법을 사용할 수 있습니다. 구속 조건에서 블록 각도 구조를 활용할 수도 있습니다. Dantzig-Wolfe 분해, 벤더스 분해 및 일반화 된 벤더스 분해는 숙제 문제를 위해 과거에 한두 번 사용한 방법입니다.
Geoff Oxberry

Geoff가 언급하지 않은 몇 가지 트릭과 함정이 있지만 정확한 문제 나 수업을 보지 않고 구체적인 조언을 구하기는 어렵습니다.
Aron Ahmadia

NEOS 서버는 상용 서버조차도 문제를 해결하는 데 도움을 줄 수있는 좋은 방법입니다.
Ant6n
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.