スケジューリングソルバーの比較

数理最適化ソルバーでもスケジューリング問題は「定式化」できるが、中規模以上の問題例になると計算時間が膨大になる。これは、数理最適化ソルバーの求解原理である分枝限定法に起因するので、避けることは難しい。そのため、スケジューリングに特化したソルバーが開発されている。ここでは、それらを紹介する。

以下のスケジューリング特化型ソルバーは、厳密解でなっく近似解を算出するものである。しかし、最適解を「探索」するためのメカニズムが組み込まれてるので、多くのスケジューリングシステムで採用されている「ルール」だけのものと比べて精度が良い解を算出する。一般に、ルールベースのヒューリスティックスや山崩し法は、計算時間は早いものの、最良解の数10%悪い解を算出する。導入の際に、どんなに大きな問題でも一瞬で解けると宣伝しているものは、ほとんどこの範疇に含まれるので注意されたい。

OptSeq

  • スケジューリング特化型のメタヒューリスティクスソルバー

  • 大規模な問題でも短時間で良質な解を導出

  • 再生可能/不可能資源、段取り、作業中断、並列作業など多様な制約に対応[1]

Hexaly

  • 汎用最適化ソルバーながら、スケジューリング性能が高い

  • ジョブショップスケジューリングで従来ソルバーを大きく上回る性能

  • 10分以内で既知の最良解より平均8.6%改善[7]

OR-Tools

  • Googleが開発したオープンソースの最適化ツール

  • ナーススケジューリング、生産スケジューリングなどに対応

  • 大規模問題では性能が低下する傾向[10]

OptaPlanner

  • Javaベースのオープンソース制約充足ソルバー

  • 勤務表作成、配車計画など幅広い問題に対応

  • タブーサーチや焼きなまし法などのメタヒューリスティクスを実装[12]

jsprit

  • 配送計画に特化したJavaベースのオープンソースソルバー

  • 2000ノード規模の問題でも2-3時間で解を導出

  • 時間枠制約や車両容量制約にも対応[11]

性能比較



Citations:
[1] https://www.logopt.com/optseq/
[2] https://www.hexaly.com
[3] https://www.optaplanner.org
[4] https://www.logopt.com/optseq/
[5] https://www.ciirc.cvut.cz/events/scheduling-seminar-hexaly-optimizer-for-scheduling/
[6] https://github.com/giangstrider/scheduling-optimization-ortools
[7] https://www.hexaly.com/benchmark/hexaly-vs-cp-optimizer-vs-or-tools-on-the-job-shop-scheduling-problem-jssp
[8] https://docs.jboss.org/drools/release/6.2.0.CR1/optaplanner-docs/html_single/index.html
[9] https://www.hexaly.com/benchmark/hexaly-vs-gurobi-flexible-job-shop-scheduling-problem-fjsp
[10] https://datasciencedojo.com/blog/google-or-tools-nurse-scheduling/
[11] https://qiita.com/ma91n/items/c8a7c69c11f1b60cd4cc
[12] https://www.optaplanner.org/localized/ja/index.html
[13] https://developers.google.com/optimization/scheduling
[14] https://github.com/graphhopper/jsprit

いいなと思ったら応援しよう!