Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Cplex C++;按列添加变量(cutstock)_C++_Mathematical Optimization_Cplex - Fatal编程技术网

C++ Cplex C++;按列添加变量(cutstock)

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

我正在尝试使用列生成来解决下料问题。Cplex(c++)有一个很好的例子,其中每个模式填充一块股票。我正试图扩展这一点,以便不止一种模式可以填充一块股票

示例中的相关代码段为以下列表达式:

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}