最適化一口話

仕事として数理最適化を実践している立場から、その中身や可能性について概説しております。

最適化で何が実現できるのか(1)

最適化で「何をしているのか」と問われれば、 「運転計画」「スケジューリング」「配送計画」「ポートフォリオ最適化」 といった月並な答になってしまいますが、 ここでは数理最適化にこれらをさせることによって、 結局「何を実現しようとしているのか」という 「動機付け」そのものについて私の経験から拾ってお話してみたいと思います。

コストの削減

品質の要件を満たす製品をできるだけ少ない材料コストで作りましょう、 経路の長さ(輸送の費用)最小で所定の場所を巡回するルートを探しましょう、 在庫にある原材料を使ってできるだけ高く売れて利益の出る製品を作りましょう、 といった具合に数理最適化の教科書の例題はコスト削減や利益最大化を意図したものがじつに沢山あります。 また、単純な例題の結果もビーズの例のように、わずかでも得となると、購入先をすべて乗りかえてしまうといった単細胞なものなので、 最適化を冷徹なコストカッター、利益追求を極限まで突きつめるための技法、 と思われている方も多いと思います。

実際には、「コスト削減」だけを旨とした最適化はむしろ少数派なのです。 ただ、重宝されているのは確かで、 代表選手としてはネット広告配信(費用対コンバージョンの調整)があります。 設定が人工的で結果の評価軸が「コスト」「コンバージョン」の二つ、 という具合に少ないので数理最適化がうまくはまると言えるでしょうか。 また人間が介在することができないくらい大量の意思決定が必要、という特性も適用を後押ししています。 数理最適化がエネルギーの分野で適用例が多いのも、 この分野では「コスト」という尺度がかなり重要視されるところから来ていて、 プラントの運転最適化(需要予測に基いてプラントの機器の運転を決定する)という代表例があります。 ただ、この分野も「環境負荷軽減」という、 ときに「コスト」に対して真っ向から相反する尺度が入っていますので、 数理最適化一発で結果を求めるという風にならないことも多くなっています。

公正さの追求

人の割り当てといった業務は、人間の熟練者にはまずかないません。 夜勤の後に休暇を取るとか、月あたりの勤務時間の制約を守る、 とかいうのは満たせてあたりまえの話であって、大事なのはその先です。 休暇の間隔をなるべく同じにする、つらい業務を一部の人に偏らせない、 担当できる職務が一緒ならば担当回数が揃うようにする、 残業時間は賃金に直結するのでなるべく差をつけない、 など「平等であること」の追求は「働きやすい」職場の実現のために欠かせません。 一方で各人の立場に応じた割り当ても必要です。 例えば店長さんは掃除や棚出しなど、店の業務は何でもできますが、 通常はレジを担当していて棚出しするのは人繰りが逼迫しているのが自然ですね。 熟練者のスケジューリングは相反した要求が緊密なバランスの下に成りたっていて、 「アート」の領域だと言ってよいでしょう。

ただ、人間のやることなのでスケジュールを作成する人の癖による偏りは消せません。 そんなつもりがなくても、なぜ「俺は月曜に夜勤が多いんだろう」 「なぜ私の勤務希望は通りにくいのかなあ」とかいう疑問が職場の雰囲気に影響します。 機械が独立な立場で行うことで「公正さ」が実現する。 数理最適化が自動でスケジューリングを行う意図の一つはここにあります。

ただ、数理最適化は人間の「アート」を実装するためにかなりの苦労を強いられます。 この手のモデルはマス目埋めタイプを骨組としていますが、 平等性や自然さを実現するために、 他のメンバーがどのような勤務をしているかにも関連させたタイプの制約を多数入れる必要があります。 我々はお客様とのやり取りを通じて平等性や自然さの表現方法のコツを学びました。

熟練者のサポート

社会的にも大きなインパクトのある、お金にすると数億円以上といった 大規模な意思決定を毎日、業務として行いつづけている方がいらっしゃいます。 いつも驚くのはそのような決定を行っているのは、大人数のチームではなく、 かなり少数の熟練者の方々だということです。

実務的な最適化を業務としていて、 そういった方々とお話する機会が得られるのは私にとって最も嬉しいことの一つですが、 話を伺っていつも思うのは、彼らの頭の中には定式化されていないにせよ、 問題とその解き方が整理されているので、 数理最適化はまずそれらをトレースすることを旨とすべし、ということです。

解き方なんか聞かなくても問題の条件だけから数理最適化によってもっと「最適な」答が出る? それこそあまりにおこがましく、非科学的な態度というものでしょう。 数理最適化が考慮できるのはモデル化された数式の範囲だけ。 モデル化された定式もいつも 100% 解けるとは限らないのですから。 重要な意思決定に数理最適化が貢献できるとしたら、 ノウハウを数理モデルの形で明確化し、人手を煩わせないで結果を出すことができる、 という点においてです。 工夫次第で数理最適化は、熟練の実務者の7,8割程度の答なら出すことができます。 この答をリファレンスに使って後継者を育てる、とか 平常業務は機械に任せて、熟練者は人間ならではの難しい判断を要求されるイレギュラーなケースに対応する。 また、常に忙しい熟練者を煩わせないよう、 簡単な問いあわせならば数理最適化に答えさせるようにする、といった役割分担ができます。

3つ紹介しましたがいかがでしょうか、数理最適化にさせていることは多種多様でも、 「動機付け」については意外と共通している部分も多いのではないかとも考えます。 もうすこしあるのでこのトピックで続けてみましょう。