问题描述
我基于here用python(docplex)编写了一个优化问题,但是我的切入点是sum(X) <= N + M*sum(Y,Z)
,X,Y and Z
是决策变量。我不知道如何将X,Y,Z
的解决方案传递给 {{11}} self.get_cpx_unsatisfied_cts([ct],
solution
。
当我使用,tolerance=1e-6)
时,出现以下错误:
self.get_values()
有没有人可以帮助您?
解决方法
在示例[here](Implementing TSP with Lazy constraint callback)中,回调通过混合类MosdelCallbackMixin
连接到DOcplex。
此类具有make_complete_solution
方法,该方法从回调内部返回一个解决方案对象(请参阅docplex.mp.SolveSolution文档)。
第二步,get_cpx_unsatisfied_cts
从给定的约束列表中返回未满足的约束列表。在您的情况下,如果只需要检查一个约束,则使用is_satisfied
方法来约束比较简单,这需要一种解决方案,并且
公差(默认值为1e-6,即:
if not myct.is_satisfied(sol,tolerance):
print(f" constraint {myct} is violated")
总结:
- 在调用回调时使用
make_complete_solution
生成解决方案对象 - 使用
ct.is_satisfied
检查是否满意。