2

I use Docplex with python 3.7 to implement constraints programming. when it was infeasible, how can i proceed to list constraints those was to source of the conflict?

mdl.export_as_cpo(out="/home/..../MCP3.lp")
msol = mdl.solve(FailLimit=700000, TimeLimit=1600)
DInfos= msol.get_solver_infos()
mconflict=msol.CpoRefineConflictResult()
mconflict.get_all_member_constraints()

Error message: mconflict=msol.CpoRefineConflictResult() AttributeError: 'CpoSolveResult' object has no attribute 'CpoRefineConflictResult'

4

2 回答 2

2

solve返回 a SolveResult,并且CpoRefineConflictResult是 中的一个类docplex.cp.solution。所以,错误信息是正确的: aSolveResult没有属性CpoRefineConflictResult。您会期望CpoRefineConflictResult是冲突优化器的结果。

您可能应该多阅读一下文档http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solution.py.html

您可以调用对象.refine_conflict()上的方法CpoSolver来获取CpoRefineConflictResult,如此处所述http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solver.solver.py.html#detailed-description

如果您需要更具体的问题解决方案,也许您可​​以提供一个最小的、可重现的示例。https://stackoverflow.com/help/minimal-reproducible-example

于 2019-07-23T00:55:58.260 回答
0

我已经添加:

from  docplex.cp.solver.solver import CpoSolver

之后,如果模型不可行,我会添加这些行:

mconfl= CpoSolver(model)
mconf = mconfl.refine_conflict()
于 2019-07-26T01:13:54.627 回答