如何在CPLEX上将多维IloRangeArray添加到模型中

How to add multi dimensional IloRangeArray to the model on CPLEX

本文关键字:添加 IloRangeArray 模型 CPLEX      更新时间:2023-10-16

我是CPLEx的初学者,并使用它来创建我的数学模型。我定义并构建了一个三维IloRangeArray作为我的约束,如下所示:

typedef IloArray<IloArray<IloRangeArray>> ThreeDimRange;
con = IloArray <IloArray <IloRangeArray> > (env, n);
for () 
{
    con [h] = IloArray <IloRangeArray> (env, nbRow);
    for ()
    {
        con[h][m] = IloRangeArray (env);
        for () 
        {
            IloExpr tempExp(env); 
            if ()
                 con [h][m].add(0 <= tempExp <= 0);
        }
    }
}

当我想在模型中添加"con"时(model.add(con);),我有以下错误:

错误C2664:"IloExtractable IloModel::add(const IloExtractable)const":无法将参数1从"ThreeDimRange"转换为"const IloCextractable"

2 dim IloArrangeArray也是如此。你的意见是什么?

感谢

已解决!看起来,尽管我们有一个IloRangeArray的多维向量,但我们必须将每个IloRangerArray单独添加到模型中。

typedef IloArray<IloArray<IloRangeArray>> ThreeDimRange;
con = IloArray <IloArray <IloRangeArray> > (env, n);
for () 
{
    con [h] = IloArray <IloRangeArray> (env, nbRow);
    for ()
    {
        con[h][m] = IloRangeArray (env);
        for () 
        {
            IloExpr tempExp(env); 
            if ()
                 con [h][m].add(0 <= tempExp <= 0);
        }
        **model.add(con[h][m]);**
    }
}