我有一张地图m;
我可以运行代码行,例如
m[constraint_name] += x_a; or
m[constraint_name] -= x_a;
但是,当我想从此贴图向模型添加约束时,它总是会失败:
model.addConstr(m [cons_name] == 1,cons_name);
我获得以下错误代码:
错误代码= 20001 不在模型中
感谢您对该问题的解释以及我如何解决它?
答案 0 :(得分:2)
使用gurobi api,您需要在创建变量的时间和添加涉及该变量的约束的时间之间调用GRBModel.update()。可以将变量添加到表达式中,就像在地图上使用+ =运算符一样,因此您不会在那里获得异常。
您不应该过度使用更新方法,因为它很昂贵。在更新之前在地图中构建表达式,就像你正在做的那样,是一种常见的习语。