CPLEX: как решить одну и ту же комплексную модель с разными данными

После выполнения приведенного ниже кода в 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 1016: Рекламная версия. Превышен лимит размера проблемы.

Тем не менее, если мы хотим решить текущую проблему, используя ту же версию программного обеспечения.

Если мы предоставляем 50 элементов одновременно в качестве входных данных для модели.

  • Поскольку вручную это невозможно из-за слишком большого размера nmbl, и если мы возьмем 50 элементов за раз, потребуется выполнить 521466/50 итераций. Есть ли способ повторять модель для каждых 50 наборов данных nmbl?

Есть ли способ это сделать? Буду признателен, если кто-нибудь подскажет мне небольшой пример.


person Alok    schedule 01.12.2016    source источник


Ответы (1)


Я действительно не вижу смысла в таком подходе. Если ваша проблема действительно может быть разделена на множество непересекающихся подзадач, это может сработать. Но из того, что вы нам рассказали о проблеме, кажется, что она неотделима от этого. Просто решить множество маленьких кусочков проблемы почти наверняка не получится. Найти подходящее решение будет сложно. Было бы очень сложно найти хорошее решение. Разработка подхода декомпозиции для любой большой проблемы сложна и трудна, и вероятная сходимость с такими крошечными подзадачами будет очень медленной. Вам почти наверняка понадобится большая лицензия на решатель.

person TimChippingtonDerrick    schedule 01.12.2016