最近看 cplex 在 java 的 callback,發現它給的 callback 例子中,都是用 IloLPMatrix 這個類放約束條件,在 IloLPMatrix 中, 每個約束條件存儲在 IloRange 中。
-
使用 IloLPMatrix 的好處是,這個類可以方便查看模型中的求解變量,約束條件。這種形式下,約束條件必須以 IloRange 形式添加。雖然 cplex 可以直接通過 addLe, addEq, addGe 添加約束條件,但這種方式沒有 IloLPMatrix 功能多。
-
雖然 java 可以把 mps 或者 lp 格式的文件轉化成 IloLPMatrix,但若在同一個 java 文件中先輸出 mps 文件,再轉化成 IloLPMatrix 總是會轉化錯誤。除非在運行 java 時,通過在 run configuration 中把輸入參數給為 mps 文件名,才能正確轉換。非常奇怪,這難道是一個小bug?我見 python 或 c++ 不存在這個問題。