【问题标题】:How can I store the results into a text file?如何将结果存储到文本文件中?
【发布时间】:2017-04-13 18:20:47
【问题描述】:

我正在使用 SCIP 解决 VRP,我希望将优化结果导出到文本文件中。我使用以下代码,但调用 SCIPwriteBestSol 函数时失败。

FILE* file;
file = fopen("Solution.sol", "w");
SCIP_CALL(SCIPprintBestSol(scip, file, FALSE));
fclose(file);

【问题讨论】:

  • file2 = fopen...,确定file2
  • 您应该在打开文件后检查错误。还有代码是怎么失败的?
  • 尝试检查fopen的返回。如果失败,它将返回一个 NULL 指针,然后只需检查 if (file != nullptr)
  • 已经编辑了错误(使用“file2”),但 SCIPwriteBestSol 函数向我抛出了访问冲突错误。
  • fopen 之后立即调用fflush 是没有意义的。

标签: c++ c scip


【解决方案1】:

如果以下调用有效(即将解决方案打印到控制台),那么您的问题来自 I/O 方法。如果它也失败了,你必须检查你的 SCIP 状态,即你是否有解决方案。如果这不起作用,我建议写信给 SCIP 邮件列表/报告错误。

SCIP_CALL(SCIPprintBestSol(scip, stdout, FALSE));

【讨论】:

    【解决方案2】:

    检查 fopen() 的返回值

    正如manual 所说,如果函数调用失败,fopen 将返回一个空指针

    那就先做吧

    if ((file = fopen("Solution.sol", "w")) != nullptr)
    {
    // do your stuff
    }
    

    【讨论】:

    • RomMer 我按照你的建议做了并且满足条件,但是代码在 SCIPprintBestSol 函数中一直失败。我对 FILE* 组件表示怀疑,该函数给我一个访问冲突错误。
    猜你喜欢
    • 2023-03-27
    • 2020-01-22
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多