2016-12-01 25 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 элементов потребуется 521466/50 итераций сделать. Есть ли способ итерации модели для каждых 50 наборов данных nmbl?

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

ответ

0

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