首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Concert技术中的逐列建模--列生成

Concert技术中的逐列建模--列生成
EN

Stack Overflow用户
提问于 2019-05-20 06:15:49
回答 1查看 45关注 0票数 0

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

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

为了添加在相关约束下使用的变量的系数,我尝试了以下命令。但这并没有起作用。

代码语言:javascript
复制
    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

IBM在Cplex目录中提供的示例:

代码语言:javascript
复制
    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);
EN

回答 1

Stack Overflow用户

发布于 2019-05-23 13:15:16

将我的评论转化为答案: CPLEX附带的cutstock.cpp示例展示了一种更精细的列式建模方法。特别是,它显示了具有许多行/列的建模,这些行/列不是预定义的,而是依赖于输入。希望这个例子能回答你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56212433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档