0

CPLEX OPL IDE中运行以下代码后;

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 错误 1016Promotional version。超出问题大小限制

仍然如果我们想使用相同版本的软件解决当前问题。

如果我们一次提供 50 个元素作为模型的输入。

  • 由于手动操作是不可能的,因为 nmbl 的大小太高了,如果我们一次取 50 个元素,则需要521466/50次迭代。有没有办法为每 50 组 nmbl 数据迭代模型?

有什么办法吗?如果有人能给我提供一个小例子,我将不胜感激。

4

1 回答 1

0

我真的不明白这种方法的意义。如果你的问题真的可以分成许多不相交的子问题,那么它可能会起作用。但是从你告诉我们的关于这个问题的情况来看,这听起来是不可分割的。仅仅解决整个问题的一小部分几乎肯定是行不通的。找到一个可行的解决方案将是困难的。获得一个好的解决方案将非常困难。为任何大问题设计分解方法是复杂而困难的,并且与这些微小的子问题的收敛可能会非常缓慢。您几乎肯定需要获得更大的求解器许可证。

于 2016-12-01T21:58:02.987 回答