CPXXsetmipcallbackfunc 和 CPXsetmipcallbackfunc
例程 CPXXsetmipcallbackfunc/CPXsetmipcallbackfunc 用于设置用户编写的回调例程,在混合整数程序优化期间和某些割平面生成例程期间,在分支裁剪法树中(包含根节点)将调用这些回调例程。
int 'CPXXsetmipcallbackfunc'('CPXENVptr' '环境',' 'int( 'CPXPUBLIC'*' '回调)(CPXCENVptr, void *, int, void *) ', void *' 'cbhandle')
int 'CPXsetmipcallbackfunc'('CPXENVptr' '环境',' 'int( 'CPXPUBLIC'*' '回调)(CPXCENVptr, void *, int, void *) ', void *' 'cbhandle')
描述
例程 CPXXsetmipcallbackfunc/CPXsetmipcallbackfunc 用于设置用户编写的回调例程,在混合整数程序优化期间和某些割平面生成例程期间,在分支裁剪法树中(包含根节点)将调用这些回调例程。
此例程与例程 CPXXsetlpcallbackfunc/CPXsetlpcallbackfunc 以相同方式工作。 此例程可使用户创建将在混合整数规划问题 (MIP) 求解期间调用的单独回调函数。
回调函数的原型与 CPXXsetlpcallbackfunc/CPXsetlpcallbackfunc 相同。
参数
- env
一个指向
CPXXopenCPLEX/CPXopenCPLEX例程之一所返回 CPLEX 环境的指针。- callback
一个指向用户编写的回调函数的指针。 将
callback设置为NULL将阻止在优化期间调用任何回调函数。 优化期间和特定割平面生成例程期间,在每个节点后将执行对callback的调用。 此函数必须由用户编写。 其原型在 Callback 描述中进行了说明。- cbhandle
一个指针,指向用户专用数据。 此指针将传递到回调函数。
返回
如果此例程成功,那么会返回 0,而如果发生错误,那么会返回非零。示例
status = CPXsetmipcallbackfunc (env, mycallback, NULL);
Callback 描述
int CPXPUBLIC
callback (CPXCENVptr env,
void *cbdata,
int wherefrom,
void *cbhandle);
这是用户编写的回调例程。
回调返回值
非零值将终止优化。
回调自变量
env
一个指向传递到关联优化例程的 CPLEX 环境的指针。
cbdata
一个从优化例程传递到用户编写的回调函数(用于识别将优化的问题)的指针。 cbdata 指针的唯一用途是将其传递到例程 CPXXgetcallbackinfo/CPXgetcallbackinfo。
wherefrom
一个整数值,用于报告从其调用用户编写的回调函数的优化算法。 表中显示了可能的值及其含义。
| 值 | 符号常量 | 含义 |
101 |
CPX_CALLBACK_MIP |
从 mipopt |
107 |
CPX_CALLBACK_MIP_PROBE |
从探测或团合并 |
108 |
CPX_CALLBACK_MIP_FRACCUT |
从 Gomory 小数割平面 |
109 |
CPX_CALLBACK_MIP_DISJCUT |
从分离式割平面 |
110 |
CPX_CALLBACK_MIP_FLOWMIR |
从混合整数舍入割平面 |
cbhandle
一个指向传递到 CPXXsetmipcallbackfunc/CPXsetmipcallbackfunc 的用户私有数据的指针。