有没有办法获得Cplex在开始解决LP时所做的预分析分析的结果?特别是,我正在寻找有关冗余行的信息。如果可能的话,只运行presolve而不解决LP是有用的。我正在使用C#应用程序中的Cplex 12.5。
答案 0 :(得分:1)
您可以使用Cplex对象上的java.lang.object
生成cplex预解决模型,文件扩展名为" .pre"。这将导致presolve运行并使cplex将预先解决的模型写入文件。输出的格式是" sav"格式,这是一种无损的,但不是人类可读的。您可以将其转换为可读的" .lp"格式,但将其导回到另一个新的Cplex对象,然后将该模型导出为.lp文件。
ExportModel
然后,您可以阅读预先解决的lp文件,并了解cplex在该阶段对您的模型做了什么。您可能会对cplex的作用程度感到惊讶,您甚至可能很难将预先解决的模型与原始模型进行协调。您可以通过设置参数来尝试更改预解析的范围。例如,将参数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");
设置为1可能会使模型更易于识别。