Cplex C++按列添加变量(库存)
Cplex C++ add variable column wise (cutstock)
我正在尝试使用列生成来解决切割库存问题。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));
其中Patterns是使用完整的"Sheet"表示模式的所有列。需求数组是需求矩阵,其模式表示此模式中每个项目的数量。我如何才能按列制作新的变量x,这样我就可以在一张纸上放置多个图案?
我认为您的问题是,您需要了解在CPLEX的ILOG Concert C++中如何进行列建模。在您给出的示例中,语句
Patterns.add(IloNumVar(SheetsUsed(1) + demandArray(pattern));
添加一个目标函数系数为1的决策变量,该变量将出现在称为demandArray[i]
的约束中,其系数等于pattern[i]
的值。你需要做的是针对每个模式,做一些事情:
- 添加多个决策变量(LaTeX公式中的
x
)以与表格相对应 - 当您将决策变量添加到
x
数组时,它将在您需要创建的一些附加约束中具有非零,类似于demandArray
的创建方式 - 添加图纸时,必须在
Patterns
变量中添加一个变量,该变量对应于LaTeX中的y
这并不容易做到,主要是因为我们都习惯于行建模,而不是列建模。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- Cplex C++按列添加变量(库存)