2016-01-21 167 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文件以獲取有關我的程序的信息(例如關於冗餘行)? –