从 C# 中的 Cplex psolve获取结果

本文关键字:获取 结果 psolve Cplex 中的 | 更新日期: 2023-09-27 18:31:21

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

从 C# 中的 Cplex psolve获取结果

您可以使用文件扩展名为".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 可能会使模型更易于识别。