主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

整数線形計画法の調整

オプションを変更して解を求めるプロセスを改善する

メモ

通常,MILPの定式を変更して容易に問題を解けるようにすることができます。定式を変更する方法の詳細は,威廉姆斯[1]を参照してください。

intlinprogを一度実行した後,一部のオプションを変更して再実行を試みたい場合もあるかもしれません。期待される変化には,次のようなものがあります。

  • 実行時間を下げる

  • 最終目的関数値を下げる(より良い解)

  • 最終ギャップを小さくする

  • 実行可能点を増やすまたは変更する

解法プロセスに最も役立つ可能性のあるオプションの変更に関する一般的推奨事項を以下に示します。この順序で推奨事項を試してください。

  1. より速くより正確な解を求めるには,CutMaxIterationsオプションを既定の10から25などのより高い数値に増やします。これにより解が速くなる可能性がありますが,遅くなる場合もあります。

  2. より速くより正確な解を求めるには,CutGenerationオプションを“中间”または“高级”に変更します。これにより解が速くなる可能性がありますが,大量のメモリを使用し遅くなる場合もあります。

  3. より速くより正確な解を求めるには,IntegerPreprocessオプションを“高级”に変更します。これにより解法プロセスに大きな影響(有益な影響またはそうでない影響)を与える場合があります。

  4. より速くより正確な解を求めるには,RootLPAlgorithmオプションを“primal-simplex”に変更します。通常この変更は有益ではありませんが,有益な影響をもたらす場合もあります。

  5. より多くのより良い実行可能点を検出するには,HeuristicsMaxNodesオプションを既定の50からOne hundred.などのより高い数値に増やします。

  6. より多くのより良い実行可能点を検出するには,启发式オプションを“中间”または“高级”のいずれかに変更します。

  7. より多くのより良い実行可能点を検出するには,BranchRuleオプションを“strongpscost”に変更します。その選択によって解を改善できない場合は,“maxpscost”に変更します。

  8. より迅速に解を得るには,ObjectiveImprovementThresholdオプションを既定の0から1的军医などの正の値に増やします。ただし,この変更により,intlinprogの整数実行可能点の検出数が減ったり,あまり正確でない解が検出されたりすることがあります。

  9. ソルバーをよりすばやく停止するには,RelativeGapToleranceオプションを既定の1的军医より高い値に変更します。同様に,より正確な解を得るには,RelativeGapToleranceオプションをより低い値に変更します。これらの変更によって必ずしも結果が改善されるとは限りません。

一部の“整”数解は整数ではない

通常、解x (intcon)の整数値と推定される要素は厳密に整数ではありません。intlinprogでは整数のIntegerTolerance内の解の値はすべて整数と見なされます。

整数と推定されるすべての数値を厳密に整数に丸めるには,関数を使用します。

x (intcon) =圆(x (intcon));

注意

丸めによって解が実行不可能になる場合があります。丸めを行った後に実行可能性をチェックします。

马克斯(A * x - b)%看看条目是不是太正,所以有小的不可行性马克斯(abs (Aeq * x - beq))%看看条目是否足够接近于零马克斯(x -乌兰巴托)%正元素违反了上界马克斯(lb - x)%正元素违反了上界

大きな要素は整数値ではない

intlinprogは,絶対値が2.1 e9を超える場合,解の要素に整数値を適用しません。このような要素が解に含まれる場合,intlinprogは警告を表示します。この警告が表示された場合は,解をチェックして,解の整数値と推定される要素が整数に近いかどうかを確認します。

大きな係数は許可されない

intlinprogでは,f一个または乌兰巴托の係数など,問題の要素が絶対値の1 e15を超えることはできません。このような問題をもつintlinprogを実行しようとすると,intlinprogでエラーが発生します。

このエラーが発生した場合は,以下のように問題をスケーリングしてより小さな係数をもつようにすることができます。

  • fの係数が大きすぎる場合,fに小さな正のスケーリング係数を乗算してみます。

  • 制約係数が大きすぎる場合,すべての範囲および制約行列に同じ小さな正のスケーリング係数を乗算してみます。

参照

威廉姆斯,H.保罗。数学规划中的模型构建。威利,2013年。