如何在约束规划中实现细化冲突
How to implement refining conflict in constraint programming
我使用 Docplex 和 python 3.7 来实现约束编程。当它不可行时,我如何继续列出那些对冲突根源的约束?
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()
错误信息:
m冲突=msol.CpoRefineConflictResult()
AttributeError: 'CpoSolveResult' 对象没有属性 'CpoRefineConflictResult'
solve
returns一个SolveResult
,而CpoRefineConflictResult
是docplex.cp.solution
中的一个class。所以,错误消息是正确的:a SolveResult
没有属性 CpoRefineConflictResult
。您会期望 CpoRefineConflictResult
作为冲突优化器的结果。
您可能应该多阅读文档 http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solution.py.html
您可以在 CpoSolver
对象上调用 .refine_conflict()
方法来获取 CpoRefineConflictResult
,如此处所述 http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solver.solver.py.html#detailed-description
如果您需要更具体的问题解决方案,也许您可以提供一个最小的、可重现的示例。 https://whosebug.com/help/minimal-reproducible-example
我有补充:
from docplex.cp.solver.solver import CpoSolver
之后,如果模型不可行,我添加了这些行:
mconfl= CpoSolver(model)
mconf = mconfl.refine_conflict()
我使用 Docplex 和 python 3.7 来实现约束编程。当它不可行时,我如何继续列出那些对冲突根源的约束?
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()
错误信息: m冲突=msol.CpoRefineConflictResult() AttributeError: 'CpoSolveResult' 对象没有属性 'CpoRefineConflictResult'
solve
returns一个SolveResult
,而CpoRefineConflictResult
是docplex.cp.solution
中的一个class。所以,错误消息是正确的:a SolveResult
没有属性 CpoRefineConflictResult
。您会期望 CpoRefineConflictResult
作为冲突优化器的结果。
您可能应该多阅读文档 http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solution.py.html
您可以在 CpoSolver
对象上调用 .refine_conflict()
方法来获取 CpoRefineConflictResult
,如此处所述 http://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solver.solver.py.html#detailed-description
如果您需要更具体的问题解决方案,也许您可以提供一个最小的、可重现的示例。 https://whosebug.com/help/minimal-reproducible-example
我有补充:
from docplex.cp.solver.solver import CpoSolver
之后,如果模型不可行,我添加了这些行:
mconfl= CpoSolver(model)
mconf = mconfl.refine_conflict()