Я пытаюсь решить проблему резания, используя генерацию столбцов. Хороший пример имеет Cplex (C++), где каждый шаблон заполняет один кусок запаса. Я пытаюсь расширить это, так что более одного шаблона может заполнить кусок запаса.Cplex C++ add variable column wise (cutstock)
Соответствующий фрагмент кода в примере является следующим выражением колонка:
IloModel masterPr(env);
IloObjective SheetsUsed = IloAdd(masterPr, IloMinimize(env));
IloRangeArray demandArray = IloAdd(masterPr,
IloRangeArray(env, demand, IloInfinity));
IloNumVarArray Patterns(env);
//GENERATE pattern SOMEHOW
Patterns.add(IloNumVar(SheetsUsed(1) + demandArray(pattern));
, где шаблоны всех столбцов represting шаблона, используя полный «лист» , Массив спроса - это матрица спроса, с рисунком, представляющим, сколько из каждого элемента находится в этом шаблоне. Как я могу сделать новую переменную x столбцом мудрой, поэтому я могу поместить более одного шаблона на листе?
Одним из вариантов является использование декомпозиции Dantzig-Wolfe (https://en.wikipedia.org/wiki/Dantzig-Wolfe_decomposition), есть несколько примеров того, как это сделать с помощью [cplex] (http: //www-01.ibm.com/support/docview.wss?uid=swg21399997), в частности [с C] (http://www-01.ibm.com/support/docview.wss?uid=swg21399997&aid= 5). Другой вариант - преобразовать ваши входные данные, чтобы проблема выглядела как проблема из примера cplex, например, x_ {new} <- (x, y). –