C++ Cplex C++;按列添加变量(cutstock)
我正在尝试使用列生成来解决下料问题。Cplex(c++)有一个很好的例子,其中每个模式填充一块股票。我正试图扩展这一点,以便不止一种模式可以填充一块股票 示例中的相关代码段为以下列表达式:C++ Cplex C++;按列添加变量(cutstock),c++,mathematical-optimization,cplex,C++,Mathematical Optimization,Cplex,我正在尝试使用列生成来解决下料问题。Cplex(c++)有一个很好的例子,其中每个模式填充一块股票。我正试图扩展这一点,以便不止一种模式可以填充一块股票 示例中的相关代码段为以下列表达式: IloModel masterPr(env); IloObjective SheetsUsed = IloAdd(masterPr, IloMinimize(env)); IloRangeArray demandArray = IloAdd(masterPr, Il
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));
其中模式是使用完整的“表”表示模式的所有列。需求数组是需求矩阵,模式表示此模式中每个项目的数量。我怎样才能使新变量x按列排列,这样我就可以在一张纸上容纳多个图案 >我认为你的问题是,你需要理解柱形建模在ILOG音乐会C++中如何用于CPLEX。在您给出的示例中,语句
Patterns.add(IloNumVar(SheetsUsed(1) + demandArray(pattern));
正在添加一个目标函数系数为1的决策变量,该变量将出现在名为demandArray[i]
的约束中,其系数等于模式[i]
的值。对于每个模式,您需要做的是做几件事:
x
)以对应表x
数组时,需要创建的一些附加约束中将包含非零,类似于创建demandArray
的方式Patterns
变量中,对应于LaTeX中的y
这并不容易做到,主要是因为我们大家都习惯于行建模而不是列建模。一种选择是使用泛型,特别是很少有例子说明如何使用泛型。另一个选项是转换输入数据,使问题看起来像cplex示例中的问题,例如,x_{new}