约束程序设计中如何实现细化冲突

2024-10-03 00:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Docplex和Python3.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()

错误消息: McConflict公司=msol.cporefine冲突结果() AttributeError:“CpoSolveResult”对象没有属性“CpoRefineConflictResult”


Tags: homegetas编程exportoutlpmdl
2条回答

solve返回一个SolveResultCpoRefineConflictResultdocplex.cp.solution中的一个类。因此,错误消息是正确的: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://stackoverflow.com/help/minimal-reproducible-example

我补充说:

from  docplex.cp.solver.solver import CpoSolver

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

mconfl= CpoSolver(model)
mconf = mconfl.refine_conflict()

相关问题 更多 >