如何在 SCIP 中打印变量名?

How to print variable names in SCIP?

我正在尝试打印出变量名称及其可靠的伪成本分数。这是因为我正在尝试使用所有候选变量的可靠伪成本分数作为另一个算法的初始化的实验。我的输入是一个 .cnf 文件,我使用 SCIP 的默认设置,以便调用可靠的伪成本分支。

在 branch_relpscost.c 的第 1113 行到第 1121 行的代码块中,我尝试添加

printf("Candidate %i has score of %f \n", c, pscostscore);pscostscore = SCIPgetVarPseudocostScore(scip, branchcands[c], branchcandssol[c]);

之后

这打印成功了,但是我认为这并没有给我候选人的名字,而是只有用于遍历数据的计数器 c。

我对 SCIP 中可靠的伪成本代码的理解是,在第 1012 行之后,搜索最佳伪成本候选者,同时在排序的缓冲区中记住不可靠的候选者。因此,打印输出 Candidate 1 has a score of 0.11342 并不一定意味着变量 x1 的得分为 0.11342.

接下来,我尝试添加

printf("Candidate %i has score of %f \n", branchcands[c], pscostscore);

但代码无法编译。

我也尝试过使用 SCIPdebugMsg 而不是 printf,但它也不起作用。

是否有正确的命令或方法来执行此操作?谢谢你的帮助。

您可以非常轻松地做到这一点: - 使用 SCIPvarGetName 获取变量名称 - 在格式字符串中使用 %s 打印它。

你可以自己找到这样的东西。所有涉及变量的 public 函数都可以在 pub_var.hscip_var.h 中找到。这同样适用于所有其他 SCIP 数据结构。