0

我有一张地图 m;

我能够运行代码行,例如

m[constraint_name] += x_a; or
m[constraint_name] -= x_a;

但是,当我想将此映射中的约束添加到模型时,它总是失败:

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

我得到以下错误代码:

错误代码 = 20001 不在模型中

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

4

1 回答 1

2

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

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

于 2015-09-12T17:10:55.300 回答