c++ - 使用 Gurobi 向模型添加约束时出现问题

标签 c++ stl constraints mathematical-optimization gurobi

我有一张 map m;

并且我能够运行诸如

之类的代码行
m[constraint_name] += x_a; or
m[constraint_name] -= x_a;

但是,当我想从这个映射向模型添加约束时,它总是失败:

model.addConstr(m[cons_name] == 1, cons_name);

我得到以下错误代码:

错误代码 = 20001 不在模型中

感谢您对问题的解释以及我该如何解决?

最佳答案

使用 gurobi api,您需要在创建变量和添加涉及该变量的约束之间调用 GRBModel.update()。可以像在映射值上使用 += 运算符一样将变量添加到表达式中,这样就不会出现异常。

您不应该过度使用更新方法,因为它很昂贵。在更新之前在 map 中构建表达式(就像您正在做的那样)是一种常见的习惯用法。

关于c++ - 使用 Gurobi 向模型添加约束时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32533363/

相关文章:

c# - 抽象类型和接口(interface)作为具有 new() 约束的通用类型参数的问题

prolog - 适合从记录中提取 OneToMany 关系的约束编程

c++ - 编译时数据段太大

c++ - 我们如何在向集合中插入新元素的同时遍历集合的所有元素?

c++ - 修剪 std::string 中的内部空格

ios - 使用特征更改约束乘数

c++ - C++ 中从非引用类型自动推导引用模板参数

c++ - QT C++ 我可以使用自定义 mime 类型在多个应用程序上进行复制和粘贴吗?

c++ - 围绕某个点旋转对象,即使原始枢轴不同?

c++ - 如果复制容器,在哪些情况下调用复制构造函数