如何在 C++ 中定义 3D 决策变量(使用 CPLEX Concert 技术)?
How to define a 3D decision variable in C++ (using CPLEX concert technology)?
我必须定义一个决策变量 a[kij],它本质上必须是二元的
指数
我 = {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'?
您可以使用 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
我必须定义一个决策变量 a[kij],它本质上必须是二元的
指数 我 = {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'?
您可以使用 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