Optimizer勉強会を開催しました!
巷で注目されている「最適化」。
生産スケジューリングの分野においても、いまホットな話題です。
もし細かいルールを積み重ねなくても、最適な計画を自動で出せるとしたらどうでしょうか。
生産スケジューリングの考え方もこれまでとは少し違ってくるかもしれません。
実はFLEXSCHEにもそんな最適化のためのツールがあります。
それがFLEXSCHE Optimizer。皆さん使ったことはありますか?
Optimizer勉強会
こんにちは、永根です。
2026年1月30日、弊社オフィスにて「FLEXSCHE Optimizerの入門・応用勉強会」を開催しました。
本勉強会では、まずOptimizerの基本的な挙動や設定といった入門的な内容を取り上げ、その後実プロジェクトへの適用のコツなど応用的な内容をご紹介しました。参加者の皆さまにはサンプルプロジェクトを用いて実際に手元で操作を行いながら学習を進めていただきました。

勉強会後にはささやかながら懇親会を開催させていただき、その中でOptimizerに関する率直なご意見やご要望などもお聞かせいただきました。
ご参加いただいた皆様、ありがとうございました!
ルールベース vs Optimizer
勉強会では、「巡回セールスマン問題」という有名な組合せ最適化問題を例に、ルールベースによる計画とOptimizerによる計画の違いを見てみました。
せっかくの機会なので、本ブログでもその内容を簡単にご紹介したいと思います。
巡回セールスマン問題
都市0から出発し、都市1~10を好きな順番で訪問して、再び都市0に戻るとき、
どの順番で回るのが最短経路になるでしょうか。
FLEXSCHEでこの問題を表現するならば、
・計12個のオーダー(スタートの都市0 + 都市1~10 + ゴールの都市0)が存在し、全て単工程
・都市間の移動距離を工程の動的な前段取り時間とみなす
・資源は「セールスマン」1名
このとき動的段取り時間が最も短くなるような作業順は?
と考えられます。
さて、ルールベースによる計画とOptimizerによる計画では解き方や結果にどのような差が生まれるでしょうか。
ルールベースによる計画
ルールベースとは、「次に何をするか」をあらかじめ決めたルールに従って順番に選んでいく方法です。
今回の巡回セールスマン問題であれば、素直なルールとして「現在地から最も近い都市を次に訪れる」という考え方が挙げられます。
この考え方を手順にすると、次のようになります。
STEP1. 出発地点からスタート
STEP2. 未訪問の都市の中で最も近い場所を選ぶ
STEP3. その場所に移動
STEP4. 全ての都市を訪問するまでSTEP2-STEP3を繰り返す
STEP5. 最後に出発地点に戻る
実は、この手順はFLEXSCHE における資源主導ディスパッチングのデフォルト設定に相当します。
ということで、資源主導ディスパッチングを実行した結果がこちらです。

0→10→2→7→5→4→6→8→1→9→3→0というルートになりました。
序盤のうちは近場の都市に訪問しているので効率が良さそうですが、終盤になると遠い都市が残り大移動を繰り返しています。
いわゆる局所最適に陥ってしまった状態です。
もちろん、より細かいルールを作れば終盤の大移動を防げるかもしれませんが、そうしたルールを考えるのはなかなか大変ですよね。
Optimizerによる計画
Optimizerでは部分的に良い選択を積み重ねるのではなく、全体の移動距離が最小になるように計画を立てます。
Optimizerの「動的段取りの最小化」機能を用いて最適化を実行した結果がこちらです。

0→10→2→4→7→5→6→3→8→1→9→0というルートになりました。なお今回の問題設定だとこれが最適解です。
円を描くようなルートになっており、見た目にも無駄な移動が少ないことが分かるでしょう。
今回の規模であれば最適化は0.1秒もかからずに完了します。しかし一般的にはデータ量が増えると最適化に時間を要することが多くなります。
そのような場合には、まずルールベースで良い初期解を作成してそれを最適化にかけるという手法がよく用いられます。
参加者様の声と今後
「難解な機能だと思っていたが、思ったより使いやすそう」「実プロジェクトでOptimizerを使うイメージがついた」などのご感想を多くいただきました。
一方で「さらに簡単な設定で使いたい」「より多様な目的に対する最適化に対応してほしい」といったご要望もいただいております。
Optimizerは弊社としても現在特に力を入れている製品の一つです。
皆様からのこのようなご意見・ご要望を積極的に取り入れながら、今後も開発を進めております。
「こんな機能があったら使ってみたい」といったご意見も大歓迎です。
ぜひお気軽にお聞かせください。
今後ともFLEXSCHE Optimizerの進化にご期待ください!


