2016-12-01 9 views
0

CPLEX OPL IDE에서 아래 코드를 실행 한 후; 홍보 버전 : CPLEX : 다른 "데이터"로 같은 cplex "모델"을 해결하는 방법

nmbl = 521466; nbi = 5; int As[nbi] =...; int amb[nmbl] = ...; dvar boolean I[nmbl][nbi]; minimize sum (a in nmbl, b in nbi, c in nmbl: c>a,d in nbi: d != b) I[a][b]*I[c][d]*10; subject to { **cons1:** forall (i in nmbl) I[i][1] + I[i][2] + I[i][3] + I[i][4]+ I[i][5] == 1; **cons2:** forall (j in nbi) sum (i in nmbl) I[i][j]*amb[i] <= As[j]; } 

이 코드를 실행하는 동안

는, 나는 CPLEX 오류 1016을 발견했다. 문제 크기 제한이
을 초과했습니다.

여전히 동일한 버전의 소프트웨어를 사용하여 현재 문제를 해결하고 싶다면.

우리는 한 번에 50 개 요소를 모델의 입력으로 제공합니다. nmbl의 크기는 우리가 한 번에 50 개 요소를 취할 경우 가 할 에 50분의 521,466 반복 걸릴 것 너무 높기 때문에

  • 수동 때문에 그것은 불가능합니다. nmbl 데이터의 각 50 세트에 대해 모델을 반복 할 수있는 방법이 있습니까?

어떤 방법이 있습니까? 아무도 나에게 작은 모범을 제공 할 수 있다면 너에게 감사 할 것이다.

답변

0

정말 그 접근 방식의 요점은 보이지 않습니다. 귀하의 문제가 정말로 그것이 작동하지 않을 수있는 것처럼 많은 분리 된 하위 문제로 분리 될 수 있다면. 그러나 당신이 우리에게 그 문제와 관련하여 말한 것에서는 분리 될 수없는 것처럼 들립니다. 전체 문제의 많은 작은 부분들을 거의 완벽하게 해결하는 것은 거의 효과가 없을 것입니다. 가능한 해결책을 찾는 것이 어려울 것입니다. 좋은 해결책을 얻는 것은 매우 어려울 것입니다. 큰 문제에 대한 분해 접근법을 설계하는 것은 복잡하고 어려우며 그러한 작은 하위 문제로 발생할 가능성이 매우 낮습니다. 거의 확실하게 더 큰 솔버 라이센스를 얻어야합니다.