使用cplex进行建模求解时,需要在cplex的callBack函数中重置求解参数TimeLimit。 Java中使用cplex建模可以生效,但Python中使用docpelx建模CpoCallback,参数修改成功,但是求解时不生效。为什么会出现这种情况?是不是因为Python在求解之前已经将求解的参数传递给了底层C++,导致后续的修改不起作用?有什么解决办法吗?python cpoCallback代码 java cpoCallback代码
按照逻辑,在Java中的CpoCallback中设置TimeLimit是可行的。如果用Python实现的话应该也可以工作,但是现在不行了
这是 Python API 的当前限制。 作为解决方法,您可以在满足条件时在回调中停止搜索,并使用更新的限制启动另一个搜索。
例如,您可以在 invoke() 函数中使用类似以下内容:
if event == docplex.cp.solver.cpo_callback.EVENT_SOLUTION: solver.abort_search()