首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gurobi c++中从模型中删除约束

在gurobi c++中从模型中删除约束
EN

Stack Overflow用户
提问于 2019-04-22 12:48:09
回答 1查看 799关注 0票数 0

我有一个约束集

经过一些修改后,我必须从模型中删除这个constraint:model.addConstr(LHS10_2 <= LHS10_1)集。model.remove()无法工作。我该怎么做呢?谢谢你的帮助。

model.remove(LHS10_2 <= LHS10_1)不能工作。

代码语言:javascript
复制
for (i = 1; i <= ULD; i++)
    {
        for (j = 1; j <= station; j++)
        {
            GRBLinExpr LHS10_1 = 0;//自載飛航節線
            GRBLinExpr LHS10_2 = 0;//他航載飛航節線
            for (k = 2; k <= load; k++)
            {
                if (k == 2 || k == 3 || k == 7)
                {
                    for (l = 1; l <= (node - 2); l++)
                    {
                        for (m = 1; m <= Num_FAn[j][k][l]; m++)
                        {
                            LHS10_1 += p*X[i][j][k][l][FSAn[j][k][l][m]][FLAn[j][k][l][m]][FNAn[j][k][l][m]];
                        }
                    }
                }
                if (k == 4 || k == 5)
                {
                    for (l = 1; l <= (node - 2); l++)
                    {
                        for (m = 1; m <= Num_FAn[j][k][l]; m++)
                        {
                            LHS10_2 += X[i][j][k][l][FSAn[j][k][l][m]][FLAn[j][k][l][m]][FNAn[j][k][l][m]];
                        }
                    }
                }
            }
            model.addConstr(LHS10_2 <= LHS10_1);

        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 13:13:56

GRBModel::addConstr()方法返回一个应该保存在局部变量中的GRBConstr对象。然后,在稍后的时间点,您可以使用GRBModel::remove()方法再次从模型中删除该特定约束,即您可以执行以下操作

代码语言:javascript
复制
// Array to hold added constraint objects
GRBConstr* c = new GRBConstr[nConstr];
for (int k = 0; k < nConstr, ++k) {
    // Create expressions LHS10_2 and LHS10_1 as needed
    // [...]
    // Add k-th constraint, grap object for later removal from model
    c[k] = model.addConstr(LHS10_2 <= LHS10_1);
}
// Do some stuff, optimize, etc.
// [...]
// now delete unwanted constraints from model
for (int k = 0; k < nConstr, ++k) {
    model.remove(c[k]);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55794691

复制
相关文章

相似问题

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