【问题标题】:How to define a 3D decision variable in C++ (using CPLEX concert technology)?如何在 C++ 中定义 3D 决策变量(使用 CPLEX Concert 技术)?
【发布时间】:2021-05-19 10:39:23
【问题描述】:

我必须定义一个本质上必须是二进制的决策变量 a[kij]

指数 i = {0,1,2,3...9}

j={0,1,2,3...9}

k= {0,1,2}

N_CARTONS=10

N_C=3

到目前为止已经写了这么多代码

 // Define a
IloArray<IloNumVarArray> a(env, N_C);

for (k = 0; k < N_C; k++)
{
    a[k] = IloNumVarArray(env, N_C);
    
    for (i = 0; i < N_CARTONS; i++)
    {
        a[k][i] = IloNumVar(env, 0, 1, ILOBOOL);
        
    }
}

如何引入索引'j'?

【问题讨论】:

    标签: c++ multidimensional-array cplex ilog


    【解决方案1】:

    您可以使用 IloArray 模板构建一个数组,该数组的维度与编译器允许的一样多

    正如技术说明How do I create and use a multi dimensional IloNumVarArray?中所说的

    以及 CPLEX 分发中的完整示例:facility.cpp

    或者你也可以简单地写

    int N_CARTONS=10;
    int N_C=3;
    
    range i=0..N_CARTONS-1;
    range j=0..N_CARTONS-1;
    range k=0..N_C-1;
    
    dvar float a[k][i][j];
    

    在 OPL 中,然后使用 OPL Concert C++ API 从 C++ 调用 OPL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多