【发布时间】:2016-01-21 11:03:13
【问题描述】:
有没有办法获得 Cplex 在开始求解 LP 时所做的预求解分析的结果?特别是,我正在寻找有关冗余行的信息。如果可能,只运行预求解而不求解 LP 会很有用。我正在使用 C# 应用程序中的 Cplex 12.5。
【问题讨论】:
标签: c# .net mathematical-optimization linear-programming cplex
有没有办法获得 Cplex 在开始求解 LP 时所做的预求解分析的结果?特别是,我正在寻找有关冗余行的信息。如果可能,只运行预求解而不求解 LP 会很有用。我正在使用 C# 应用程序中的 Cplex 12.5。
【问题讨论】:
标签: c# .net mathematical-optimization linear-programming cplex
您可以通过在文件扩展名为“.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 可能会使模型更易于识别。
【讨论】: