2016-01-21 42 views
0

有没有办法获得Cplex在开始解决LP时做的预先求解分析的结果?特别是,我正在查找有关冗余行的信息。如果可能的话,只运行预先解决方案而不解决LP问题将会很有用。我从C#应用程序使用Cplex 12.5。从Cplex获得Cplex presolve的结果C#

回答

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"); 

然后你可以阅读presolved LP文件,并得到一个什么样CPLEX不会向你的模型在这一阶段的想法。您可能会对cplex的作用程度感到惊讶,您甚至可能很难将预先解决的模型与您的原始模型进行协调。您可以通过设置参数来尝试更改预先解决的范围。例如,将参数PreLinear设置为1可能会使模型更易识别。

+0

谢谢,这是有用的信息。这是否需要解析.lp文件以获取有关我的程序的信息(例如关于冗余行)? –