スケジューリングソルバーの比較
数理最適化ソルバーでもスケジューリング問題は「定式化」できるが、中規模以上の問題例になると計算時間が膨大になる。これは、数理最適化ソルバーの求解原理である分枝限定法に起因するので、避けることは難しい。そのため、スケジューリングに特化したソルバーが開発されている。ここでは、それらを紹介する。
以下のスケジューリング特化型ソルバーは、厳密解でなっく近似解を算出するものである。しかし、最適解を「探索」するためのメカニズムが組み込まれてるので、多くのスケジューリングシステムで採用されている「ルール」だけのものと比べて精度が良い解を算出する。一般に、ルールベースのヒューリスティックスや山崩し法は、計算時間は早いものの、最良解の数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
