我正在处理CPLEX
/docplex
解决一个有很多不可行约束的 LP 问题,大多数可行性问题来自模型的自动制定,并且很难先验地检测到约束之间的冲突。
使用我能够找到的docplex
功能ConflictRefiner().refine_conflict(model)
,至少,一组冲突的约束。
问题是,为了找到所有冲突的约束集,我必须使用该函数删除一些冲突的约束,model.remove_constraint(constraint.name)
并且该函数需要很长时间才能执行。
编辑135.000 约束的时间是:
model.remove_constraint(constraint.name)
time= 124 sec
model.remove_constraint(constraint.element)
time= 126 sec
¿有没有办法比使用更快地删除约束model.remove_constraint(str_name_constraint)
?¿有没有办法让所有的集合发生冲突而不必为每个集合删除/refine_conflict()?¿有没有办法在约束中使用层次结构以避免约束之间的冲突?
(最后一个问题有点离题,但与原始问题有关)
提前致谢!