是否有一个 docplex 函数可以获取多个变量的解,以便在延迟切割中使用?
Is there a docplex function for getting solution of more than one variables for using in lazy cut?
我根据 在 python (docplex) 中编写了一个优化问题,但我的剪辑是类似的 sum(X) <= N + M*sum(Y, Z)
,X, Y and Z
是决策变量。我不知道如何将 X, Y, Z
的 solution 传递给 self.get_cpx_unsatisfied_cts([ct],
solution
, tolerance=1e-6)
。
当我使用 self.get_values()
时,出现此错误:
Error: Internal error in CPLEX solve: AttributeError: 'list' object has no attribute '_get_var_value'
有没有人可以帮忙?
在示例 [此处] () 中,回调通过混合器 class MosdelCallbackMixin
连接到 DOcplex。
此 class 有一个 make_complete_solution
方法,该方法 returns 一个来自回调内部的解决方案对象(参见 docplex.mp.SolveSolution 的文档)。
在第二步中 get_cpx_unsatisfied_cts
returns 来自给定约束列表的未满足约束列表。在您的情况下,如果您只需要检查一个约束,那么使用 is_satisfied
约束方法会更简单,它需要一个解决方案并且
公差(默认为 1e-6,即:
if not myct.is_satisfied(sol, tolerance):
print(f" constraint {myct} is violated")
总结:
- 调用回调时使用
make_complete_solution
生成解决方案对象
- 使用
ct.is_satisfied
检查是否满足。
我根据 sum(X) <= N + M*sum(Y, Z)
,X, Y and Z
是决策变量。我不知道如何将 X, Y, Z
的 solution 传递给 self.get_cpx_unsatisfied_cts([ct],
solution
, tolerance=1e-6)
。
当我使用 self.get_values()
时,出现此错误:
Error: Internal error in CPLEX solve: AttributeError: 'list' object has no attribute '_get_var_value'
有没有人可以帮忙?
在示例 [此处] (MosdelCallbackMixin
连接到 DOcplex。
此 class 有一个 make_complete_solution
方法,该方法 returns 一个来自回调内部的解决方案对象(参见 docplex.mp.SolveSolution 的文档)。
在第二步中 get_cpx_unsatisfied_cts
returns 来自给定约束列表的未满足约束列表。在您的情况下,如果您只需要检查一个约束,那么使用 is_satisfied
约束方法会更简单,它需要一个解决方案并且
公差(默认为 1e-6,即:
if not myct.is_satisfied(sol, tolerance):
print(f" constraint {myct} is violated")
总结:
- 调用回调时使用
make_complete_solution
生成解决方案对象 - 使用
ct.is_satisfied
检查是否满足。