C++ 在回调(CPXcutcallbackadd)中添加用户剪切后,如何编写问题公式(CPXwriteprob)?

C++ 在回调(CPXcutcallbackadd)中添加用户剪切后,如何编写问题公式(CPXwriteprob)?,c++,cplex,C++,Cplex,我试图在cplex回调函数中添加用户剪切。为了检查这些切割,我在添加切割后编写一个lp文件。但是,lp文件中不会显示任何用户剪切 根据(url:www.ibm.com/developerworks/community/forums/html/topic?id=82b92bee-4ac7-41dd-b1fc-606eae3514f3),剪切应该以“u”开头 代码的相关部分(基于示例文件bendersatsp.c): 编写LP时,看起来您正在使用原始模型对象(即,masterproblem): 相反

我试图在cplex回调函数中添加用户剪切。为了检查这些切割,我在添加切割后编写一个lp文件。但是,lp文件中不会显示任何用户剪切

根据(url:www.ibm.com/developerworks/community/forums/html/topic?id=82b92bee-4ac7-41dd-b1fc-606eae3514f3),剪切应该以“u”开头

代码的相关部分(基于示例文件bendersatsp.c):


编写LP时,看起来您正在使用原始模型对象(即,
masterproblem
):

相反,您需要使用节点LP,如下所示:

CPXLPptr _lp;
status = CPXgetcallbacknodelp(env, cbdata, wherefrom, &_lp);
CPXwriteprob(env, _lp, "cback.lp", "LP");
如您链接到的论坛帖子所述:

CPXcutcallbackadd()函数不使用参数来提供名称。 在cback.lp文件中,您添加的切割将有一个开始的名称 带“u”,后跟一个数字。因此,您可以找到哪些行是切割 这是您添加的,但您无法轻松地将它们映射回内容 在代码中

另一个值得一提的小点(并澄清我在评论中提到的内容)是,在回调之外,当使用
CPXwriteprob
时,您的剪切不会显示(即,在回调中的树搜索期间动态添加的任何剪切都不会导出)。但是,如果您在使用优化之前添加用户剪切,则它们将


developerWorks论坛上还有一个与您类似的问题。

您所链接的论坛目前似乎已关闭。话虽如此,我相信您可以预期在使用
CPXwriteprob
时(在求解之前)添加的用户剪切将显示,而不是在回调中的树搜索期间动态添加的用户剪切。在回答这个问题之前,我将等待论坛链接恢复,以检查您所指的内容。developerWorks论坛似乎可以运行,但您的链接仍然不起作用。你能修一下吗?林克在我的机器上工作得很好。。。我添加了完整的url,但不知道如何修复它?
status = CPXwriteprob(masterenv, masterproblem, "cback.lp", "LP");
CPXLPptr _lp;
status = CPXgetcallbacknodelp(env, cbdata, wherefrom, &_lp);
CPXwriteprob(env, _lp, "cback.lp", "LP");