ソルバーの比較などのために PuLP で実装したが、モデルのデバッグのために Irreducible Inconsistent Subsystem (IIS) を Gurobi で計算させたいことがある。PuLP には IIS を出す手段は(今のところ)ないので、一度 .lp ファイル出力をして、Gurobi のコマンドで IIS 計算するのがお手軽1。
PuLP でモデルを LP ファイル出力させるには、モデルの構築後に以下の行を実行すればよい。
model.writeLP("model-infeasible.lp")
そして、Gurobi のコマンドを使って最適化を実行する。ResultFile を指定しておけば、Infeasible だった場合は IIS が model.ilp に出力される。
$ gurobi_cl ResultFile=model.ilp model-infeasible.lp