オブジェクトの広場は株式会社オージス総研グループのエンジニアによる技術発表サイトです

OptaPlannerによる組み合わせ最適化

〜シフトスケジュールや配送・集荷経路を作ってみよう〜
株式会社オージス総研 データアナリシス部
西腋 清行

業務を効率的に行うためにシフトスケジュールや配送・集荷経路を作成しておられる方は多いと思います。メンバー数や集荷先が増えると適切な割当を作成するのは案外難しく、作成に時間がかかる場合があります。これらの作成問題は、「人と仕事」や「立ち寄り地点の順番」の組み合わせを作る問題としてとらえることができるため「組み合わせ最適化問題」とも言われており、数学における最適化問題の一つとして昔から様々な解法が考えられてきました。

今日では有償・無償を問わず様々なツールがあり、シフトスケジュールや配送・集荷経路の作成をサポートしてくれます。本連載記事では、最適化問題を解くオープンソースのツールの一つである「OptaPlanner」をご紹介します。

4回に分けて、シフトスケジュール作成と集荷経路作成を題材にしながら、OptaPlannerが利用しているメタヒューリスティックな解法についての概要説明と、適切に解法を動作させるためのポイント、そしてOptaPlannerの実装方法を説明します。

『Opta Planner』は、Redhat JBoss BRMS『Business Resource Planner』のコミュニティ版です。

本記事で利用するサンプルコードは、OptaPlannerのホームページで公開されているデモアプリのソースコードを基にし、解説しやすいように改変したものとなります。