1

문제점에 대해 충분히 빠른 오픈 소스 lp 솔버를 찾으려고합니다. NEOS 서버에 제출하고 다른 해결사의 성능을 비교할 수 있도록 MPS 파일을 작성하려고합니다.NEOS 서버에 제출할 간단한 MPS 파일을 작성하는 방법

내 문제는 가장 어려운 경우에 약 150 개의 정수 변수가 포함되지만 MPS 파일 형식의 작동 방식을 파악하는 데 도움이되는 간단한 사례부터 시작합니다.

문제입니다 :

minimize : 330.3 * M1 + 1132.88 * M2 + 955.86 * M3 
subject to: 
     20 <= 60 * M2 <= 20.9 
     20 <= 34 * M3 <= 20.9 
     M1 + M2 + M3 = 1 

나는 다음 MPS 파일 썼다, 단지 Gurobi 그것을 해결할 수 NEOS (https://neos-server.org/neos/solvers/index.html)에서 사용할 수있는 선형 솔버를 사용

NAME problema1 
ROWS 
L K 
L N 
E ONE 
N CUSTO 
COLUMNS 
    M1  ONE  1    CUSTO  330.3 
    M2  K   60 
    M2  ONE  1    CUSTO  1132.88 
    M3  N   34 
    M3  ONE  1    CUSTO  955.86 
RHS 
    KLESS  K   20.9 
    NLESS  N   20.9 
    ONEREST ONE  1 
RANGES 
    RANGE1 K   0.9 
    RANGE2 N   0.9 
ENDATA 

합니다. 다른 사람들은 문제가 실행 불가능하다는 것을 안다.

저는 이것이 내 MPS 파일에 문제가 있다고 확신하지만, 그것이 무엇인지 파악할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

배경을 추가 할 수 있습니다. MIP 문제에 대한 오픈 소스 솔버만을 찾고 있다면 코인 CBC, GLPK 및 lpsolve (이 순서대로)를 자유 소프트웨어 및 SCIP (오픈 소스이지만 비 자유형, 심지어 CBC를이기는). 참고 : 오픈 소스와 상용 솔루션 (예 : Gurobi, CPLEX, Mosek)에는 큰 차이가 있습니다. 또한 [해당 벤치 마크] (http://plato.asu.edu/ftp/milpc.html)를 확인하십시오. 이러한 모든 벤치 마크 작업을 정말로 원한다면 표준화 된 MPS 파일 (GLPK가 아마도 최고의 문서를 가지고있을 수 있습니다)을 생성하는 데 그 중 하나를 사용하십시오. – sascha

+0

일부 해결사의 경우 NEOS는 .mp보다 사람이 읽을 수있는 .lp 형식도 허용합니다. –

+0

당신의 기여에 감사드립니다 @ sascha 오픈 소스와 상용 솔루션 사이의 차이에 대해 알고 있습니다. 그러나 많은 경우 사용자에게 솔루션을 확장해야하는 경우 상용 솔루션이 매우 비쌉니다. 내 문제의 크기에 대해, 당신이 인용 한 것과 같은 오픈 소스 솔버가 트릭을 할 수 있다고 생각합니다. –

답변

2

실제로 MPS 파일에 문제가 있습니다. RHS 섹션의 줄은 하나의 이름을 가져야합니다.

RHS 
    RHS1  K   20.9 
    RHS1  N   20.9 
    RHS1  ONE  1 

기본적으로 솔버는 하나의 RHS 세트를 선택합니다. RANGES 섹션과 유사합니다. 나는 RANGES 섹션의 라인을 사용하여 의도 한 것이 확실하지 않습니다.

+0

감사합니다. Erwin! 그게 내 문제를 해결 =) 범위 섹션은 지정된 행에> = 제약 조건을 지적하는 것입니다. 따라서 행 K는 20.9와 20 사이입니다 (RHS 섹션에 지정된 20.9 - RANGES 섹션에 지정된 0.9). 행 N과 같음 –

+0

그래, 그 부분을 놓쳤습니다. (늦었습니다) –

+0

변수 M1, M2 및 M3에 정수 제약 조건을 어떻게 추가할까요? –