オリジナルURL:Why does Gurobi sometimes return non-integral values for integer variables?
Gurobi Optimizer のようなMIPソルバーは、LP緩和問題を繰り返し説くことによって整数計画問題を求解します。すべての整数変数が整数性のトレランス(IntFeasTol)の範囲内にあるとき、その解は整数解として判定されます。 IntFeasTol のデフォルト値は1e-5であり、例えば1.000000465は整数解であるとみなされます。ただし、このトレランスを厳しくしすぎると、求解時間に大きな影響を与える可能性があることにご注意ください。
また、Gurobi Optimizer は 解を整数値に丸めるといった機能を提供していません。なぜなら多くのモデルにおいて、整数値に丸めることでその解が実行不能になるなどの問題を引き起こす可能性があるからです。丸め処理が必要な場合には、最適化の実行が完了した後の後処理として行うことを推奨いたします。
特殊なケース
Gurobi 9.1 からは、trickle flowと呼ばれるbig-M制約におけるトレランスに由来するような整数性の違反に対して、IntegralityFocus パラメータを1に設定することで、丸めた解の実行可能性を確認し、実行可能性を損なうことなく整数性の違反を除去するための分枝を追加で実行できるようになりました。
コメント
0件のコメント
記事コメントは受け付けていません。