OptaPlannerによる組み合わせ最適化
〜シフトスケジュールや配送・集荷経路を作ってみよう〜
業務を効率的に行うためにシフトスケジュールや配送・集荷経路を作成しておられる方は多いと思います。メンバー数や集荷先が増えると適切な割当を作成するのは案外難しく、作成に時間がかかる場合があります。これらの作成問題は、「人と仕事」や「立ち寄り地点の順番」の組み合わせを作る問題としてとらえることができるため「組み合わせ最適化問題」とも言われており、数学における最適化問題の一つとして昔から様々な解法が考えられてきました。
今日では有償・無償を問わず様々なツールがあり、シフトスケジュールや配送・集荷経路の作成をサポートしてくれます。本連載記事では、最適化問題を解くオープンソースのツールの一つである「OptaPlanner」をご紹介します。
4回に分けて、シフトスケジュール作成と集荷経路作成を題材にしながら、OptaPlannerが利用しているメタヒューリスティックな解法についての概要説明と、適切に解法を動作させるためのポイント、そしてOptaPlannerの実装方法を説明します。
- 第1回: 組み合わせ最適化とOptaPlannerとは (2014年11月公開)
- 第2回: 組み合わせ最適化でシフトスケジュールを作ってみる (2015年1月公開)
- 第3回: EclipseでOptaPlannerを動かしてみる (2015年3月公開)
- 第4回: 組み合わせ最適化で配送・集荷経路を作ってみる (2015年5月公開)
『Opta Planner』は、Redhat JBoss BRMS『Business Resource Planner』のコミュニティ版です。
本記事で利用するサンプルコードは、OptaPlannerのホームページで公開されているデモアプリのソースコードを基にし、解説しやすいように改変したものとなります。