gpt4 book ai didi

c++ - Concert 技术中的按列建模 - 列生成

转载 作者:行者123 更新时间:2023-11-28 04:17:48 24 4
gpt4 key购买 nike

我想使用按列的方法在列生成框架内对我的问题进行建模。 IBM 本身提供了一个带有两个约束和三个变量的简单示例(请参见下面的示例)。在此示例中,首先创建范围约束,然后创建变量并将其添加到范围中。

我的问题是,假设我们有 m 个变量和 n 个约束,我如何以参数化的方式编写这样的模型?我需要以参数化方式编写此模型,因为我的模型中可能有大量约束和变量,并且不可能像 Cplex 示例中所述那样简单地创建一个变量。

要添加关联约束中使用的变量的系数,我尝试了以下命令。但它没有成功。

    IloNumArray lowerbound(env,0 , 0, ILOINT);
IloNumArray upperbound(env,1,1, ILOINT);

IloRangeArray JobsAssignments = IloAdd(MasterModel, IloRangeArray(env, lowerbound, upperbound));
IloNumVarArray Assignment(env);

IloNumVarArray temp(env);

for (j = 0; j < nbJobs; j++)
{
temp.add(JobsAssignments[j](x));//assigning a coefficient to the variable "JobsAssignments" for each constraint j
}

Assignment.add(IloNumVar(TotalProfit(x) + temp));//assignment constraint

Cplex目录下IBM提供的例子:

    IloEnv env = model.getEnv();

IloObjective obj = IloMaximize(env);
c.add(IloRange(env, -IloInfinity, 20.0, "constraint 1"));
c.add(IloRange(env, -IloInfinity, 30.0, "constraint 2"));

x.add(IloNumVar(obj(1.0) + c[0](-1.0) + c[1]( 1.0), 0.0, 40.0));
x.add(IloNumVar(obj(2.0) + c[0]( 1.0) + c[1](-3.0)));
x.add(IloNumVar(obj(3.0) + c[0]( 1.0) + c[1]( 1.0)));
x[0].setName("x1");
x[1].setName("x2");
x[2].setName("x3");

model.add(obj);
model.add(c);

最佳答案

将我的评论转化为答案:CPLEX 附带的 cutstock.cpp 示例展示了一种更精细的按列建模方式。特别是,它显示了具有许多未预定义但取决于输入的行/列的建模。希望该示例能够回答您的问题。

关于c++ - Concert 技术中的按列建模 - 列生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com