【问题标题】:Getting results from Cplex presolve in C#从 C# 中的 Cplex presolve 获取结果
【发布时间】:2016-01-21 11:03:13
【问题描述】:

有没有办法获得 Cplex 在开始求解 LP 时所做的预求解分析的结果?特别是,我正在寻找有关冗余行的信息。如果可能,只运行预求解而不求解 LP 会很有用。我正在使用 C# 应用程序中的 Cplex 12.5。

【问题讨论】:

    标签: c# .net mathematical-optimization linear-programming cplex


    【解决方案1】:

    您可以通过在文件扩展名为“.pre”的 Cplex 对象上使用 ExportModel 来生成 cplex 预求解模型。这将导致 presolve 运行并使 cplex 将预先求解的模型写入文件。输出的格式是“sav”格式,它是无损的,但不是人类可读的。您可以将其转换为可读的“.lp”格式,但将其重新导入另一个新的 Cplex 对象,然后将该模型导出为 .lp 文件。

    cplex.ExportModel("myModel.pre");
    
    // convert to .lp file  
    // Could also do this with interactive cplex
    Cplex lp_converter = new Cplex();
    lp_converter.ImportModel("myModel.pre");
    lp_converter.ExportModel("myModelPresolved.lp");
    

    然后,您可以阅读预先解决的 lp 文件,并了解 cplex 在那个阶段对您的模型做了什么。您可能会对 cplex 的功能范围感到惊讶,甚至可能很难将预求解的模型与原始模型相协调。您可以通过设置参数来尝试更改预求解的范围。例如,将参数PreLinear 设置为 1 可能会使模型更易于识别。

    【讨论】:

    • 谢谢,这是有用的信息。这是否需要我解析 .lp 文件以将信息(例如,关于冗余行的信息)放入我的程序中?
    猜你喜欢
    • 2021-08-07
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2016-10-14
    • 2017-01-06
    相关资源
    最近更新 更多