如何解决docplex 的 remove_constraint 中出现此断言错误的原因是什么?
我试图从我的模型中删除一个约束,但由于某种原因,我收到以下断言错误: 断言 len(cpx_terms) == len(mdl_terms)
这是我收到此错误的代码片段:
# 对象 2
obj2_ptr = MODEL.add_constraint(Y[1] == T*sum(sum(ins.M_r[r]*ins.FF_r[r]*D_rij[(r,i,j)] for (i,j) in ins.AA_r[r]) for r ins.RR ))
# 对象 1
a = MODEL.add_constraint(Y[0] == ins.C_inv*(sum(Y_i[i] for i in ins.NN) + sum(Z_i[i]-sum(X_ij[(w,i) ] for w in ins.NN if (w,i) in ins.AA) for i in ins.NN_s) ) + ins.C_conins.lsum(X_ij[i] for i in ins .AA) )
MODEL.remove_constraint(Obj2_ptr)
我可能应该提到,当我在第一个约束之前删除第二个约束时,这个错误就会消失,即:
MODEL.remove_constraint(a)
MODEL.remove_constraint(Obj2_ptr)
为什么会这样??? ;(
解决方法
这个问题看起来像是一个古老的错误,已经修复了一段时间。 您使用的是最新版本的 Docplex (2.20) 吗?如果没有,我强烈建议您升级软件包。
另一句话:我从您的代码中看到您在构建表达式时使用了 sum
;出于性能原因,您应该使用 Model.sum
代替:sum
具有 O(n^2) 复杂度,而 Model.sum
在表达式大小方面是线性的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。