CPXXgetcallbacknodeobjval 和 CPXgetcallbacknodeobjval
例程 "CPXXgetcallbacknodeobjval/CPXgetcallbacknodeobjval通过用户编写的回调程序,获取 MIP 优化过程中当前节点子问题的目标值。
int CPXXgetcallbacknodeobjval( CPXCENVptr 环境, void * cbdata, int 由此, double * objval_p )
int CPXgetcallbacknodeobjval( CPXCENVptr 环境, void * cbdata, int 由此, double * objval_p )
描述
这是高级例程。 高级例程通常需要深入了解 CPLEX 所使用的算法。 因而它们会提高应用程序中错误行为的风险,而这种行为可能难以调试。 所以,本团队鼓励您认真考虑您是否可以改为通过其他 Callable Library 例程来完成同一任务。
例程 "CPXXgetcallbacknodeobjval/CPXgetcallbacknodeobjval通过用户编写的回调程序,获取 MIP 优化过程中当前节点子问题的目标值。
可以使用 wherefrom 的任何值(CPX_CALLBACK_MIP_DELETENODE 除外)调用此例程。
参数
- env
- 一个指向
CPXXopenCPLEX/CPXopenCPLEX所返回 CPLEX 环境的指针。 - cbdata
- 传递给用户编写回调的指针。 此自变量必须是传递给用户编写回调的
cbdata的值。 - wherefrom
- 一个整数值,用于报告从何处调用用户编写的回调。 此自变量必须是传递给用户编写回调的
wherefrom的值。 请勿以wherefrom==CPX_CALLBACK_MIP_DELETENODE来调用此例程。 - objval_p
- 指向 "
double类型变量的指针,该变量用于存储节点子问题的目标值。
返回
如果此例程成功,那么会返回 0,而如果发生错误,那么会返回非零。示例
status = CPXgetcallbacknodeobjval (env, cbdata, wherefrom,
&objval);
另请参见标准分布中的 "admipex1.c和 "admipex3.c。
参数返回的值是当前节点问题有效松弛的目标值。 因此,它为搜索树中当前节点所定义的子树提供了有效的双重约束。 对于混合整数二次约束程序 (MIQCP),当使用外部逼近算法时,该目标值不一定与 "c*x+1/2*x^T*Q*x计算的值相同,"x是 "CPXXgetcallbacknodex/CPXgetcallbacknodex返回的向量。 详见 "CPXXgetcallbacknodex/CPXgetcallbacknodex。