ページの本文へ

Hitachi

意思決定デザインと最適化のパワーが導くビジネス変革(第7回)

平井 伸幸

株式会社 日立コンサルティング マネージャー

みなさんこんにちは、日立コンサルティングの平井です。

前回のコラムではラストワンマイル配送計画を例に、意思決定デザインと意思決定デザインフレームワーク(FW)で可視化したイシューを数理モデルに変換する方法について解説しました。

今回は生産計画を例に、現実のイシューを数理モデルに変換する方法について解説したいと思います。

生産計画の意思決定デザインFW

優れた製品が一定の品質で大量に作られることの恩恵を我々は知らず知らずのうちに享受しています。最近では大量生産のみならず、膨大なデータとAIの活用を背景にパーソナライズという概念が工業製品にも持ち込まれ、特に消費者向けの製品では多品種少量生産を求められることもしばしばです。

しかしながら、モノを作るということは非常に難しい行為です。生産計画をたてるのも一筋縄ではいきません。作るモノによって材料、部品、工程、設備が全く異なりますし、それぞれの製品や事業所ごとに抱える事情もさまざまです。また、モノづくりの現場には職人のみが知る暗黙知が数多く存在します。加えて、ほとんどの工業製品は売る機会を逃すまいと需要を先読みして作られるため、需要の変動とも向き合わなければなりません。これらの要素が複雑に絡み合い、計画の立案を難しくしています。 このような状況の下、生産計画はその道のベテランが長い期間をかけ、関係各所との調整を行うことで作られます。ベテランは長い経験と深い知識によって破綻のない計画を作ることができますが、そこにはまだ改善の余地があると考えるのは自然でしょう。また一度作った計画を変更するのは容易でなく、需給の急激な変動に追いつくことができません。さらに、計画を担えるほど業務に精通した人財を計画立案のみに従事させ、多大な業務負荷を強いることは人手不足が常態化しつつある日本では歓迎されません。これらの事情から、生産計画に限らず定型化された計画・意思決定を機械・コンピューターに権限委譲する需要は年々高まっており、今後もその傾向は続くでしょう。

ここでは基本的なモデルを基に生産計画のモデリング方法について解説したいと思います。生産計画のイシューについては図7-1をご参照ください。

工場における生産計画

工場における生産計画
工場における生産計画

あなたはある工場の生産計画担当者だ。最近わが社の商品の人気が高まりから在庫の枯渇や納期遅延が多発し、工場長からさらなる生産効率の改善を求められた。しかし、商品の種類や設備、生産リードタイム、商品の切替え時間などを考慮して計画すると、効率改善まで頭が回らない。限られた時間とリソースの中でより多くの商品を生産するためには、どのような計画を立てるべきだろうか?

イシューの形
図7-1

生産計画に関する要件を意思決定デザインFWで整理した結果は図7-2のようになります。今回は5台の設備に10のオーダーを割り振る計画を想定し、説明を進めます。

アクション(決定変数):

「What:どのオーダーを」「Where:どの設備で」「When:いつ(どの順番で)」生産するか

価値(目的関数):

すべてのオーダーが完了したときの

  • 終了日↓
  • 生産費用の合計↓
  • 納期遅れ時間の合計↓
  • オーダー間の切り替え時間の合計↓

など

ルール・前提条件(制約):

  • オーダーごとに生産可能な設備は決まっている
  • あるオーダーは別のオーダーが終了してからでないと着手できない
  • すべてのオーダーを完了させる
  • 各オーダーの納期遅れは許容時間を超えない

など

参照情報・データ(インプットデータ):

  • オーダーリスト
  • 設備リスト
  • 各オーダーの各設備で生産したときの所要時間
  • 各オーダーの各設備で生産したときの費用
  • 各オーダーの納期
  • 各オーダーの納期遅れ許容時間
  • オーダー間の切替時間
意思決定デザインフレームワーク
図7-2

また、イシューのアクションに注目したモデルのイメージは図7-3のようになります。生産計画は「What:どのオーダーを」「Where:どの設備で」「When:いつ(どの順番で)」生産するかの3軸のアクションなので、立体回転パズルの形のモデルイメージになります。

シフト計画の意思決定デザインFW
図7-3

次からはこのモデルイメージを基に、生産計画をモデル化していきたいと思います。また今回は2025年3月の生産を立てることとし、5台の設備で10個のオーダーを生産することとします。この場合の解の数はおよそ35兆通り※となります。

(※ 5^10×10!≒3.5×10^13通り)

参照情報をキーとバリューで表現する

今回のイシューにおける参照情報は、大きく4つの形に分けることができます。1つ目は設備とオーダーのIDリスト、2つ目はオーダーによって定義される値、3つ目は設備とオーダーの組み合わせによって定義される値、4つ目はオーダー同士の組み合わせで定義される値です。

まず1つ目のIDリストは、図7-4のようになります。また、今回は各設備の製造順を表わすスロット数はオーダー数と同じ10とします。

参照情報をキーとバリューで表現する
図7-4

2つ目のオーダーによって定義される値は、オーダーの納期と納期遅れ許容時間になります。各配送先の配送指定時間や配送にかかる時間がそれにあたります。図7-5はデータのイメージとなります。

参照情報をキーとバリューで表現する
図7-5

3つ目の設備とオーダーの組み合わせによって定義される値は、各オーダーの各設備で生産したときの所要時間と費用になります。そのデータは図7-6a、7-6bのようなイメージとなります。

参照情報をキーとバリューで表現する
図7-6a
参照情報をキーとバリューで表現する
図7-6b

4つ目のオーダー同士の組み合わせで定義される値は、オーダー間の切替時間になります。そのデータは図7-7のようなイメージになります。

参照情報をキーとバリューで表現する
図7-7

今回はこれらのデータを基に、ルールと価値の定式化について解説しようと思います。

ルールの定式化

ルール1:オーダーごとに生産可能な設備は決まっている

多くの製造装置や設備はできることが限られており、いくつかの種類の製品を製造できる装置でも大きさや仕様によって作れる製品が決まっています。以下ではそれを定式として表現します。

このルールは羊飼いの問題で説明した「柵を超えてはいけない」というルールを応用することで表現できます。つまり、オーダーと設備の組み合わせで生産できる/できないのフラグをデータとして用意し、図7-8aのような定式を成立させるのです。

ルールの定式化
図7-8a

図の右側を見ると、定式イメージが「柵を超えてはいけない」というルールのイメージと同じであることがわかると思います。違うのは左辺が3軸の変数であるのに対し、右辺は2軸の変数であることです。軸の数が異なる変数同士はそれぞれを一意の値にすることで比較可能になります。今回の場合はスロットを1つずつに分解することで、左辺を一意の値にしています。

また、右辺に入るインプットデータは図7-8bのようになります。

ルールの定式化
図7-8b

ルール2:あるオーダーは別のオーダーが終了してからでないと着手できない

これは非常に難しく複雑なルールのため後述します。

ルール3:すべてのオーダーを完了させる

これは羊飼いの問題の「羊を誘導できるのは1つの地点のみ」のルールと同じです。つまり、オーダーごとにすべての設備・スロットの生産する/しないの決定変数の合計が1となる定式を作ります。

このルールの定式のイメージは図7-9のようになります。

ルールの定式化
図7-9

ルール4:各オーダーの納期遅れは許容時間を超えない

このルールは、配送問題の「各配送先の配送指定時間を守る」というルールと同じです。つまり、設備の各スロットに配置されるオーダーの所要時間と切替時間の累計が納期遅れ許容時間を上回らないようにするのです。違うのは配送指定時間と違い下限がなく、納期+納期遅れ許容時間を越えなければ早く生産しても構わないということです(図7-10a参照)。

ルールの定式化
図7-10a

ここで難しいのは切替時間の呼び出し方法です。切替時間はオーダー同士の前後関係で定義されるため、「あるオーダー同士がある設備のあるスロットの前後に隣接して配置されている」ことを表現する必要があります。このフラグは補助的な決定変数としてモデル内で定義する必要があり、以下の形で形になります。

前後に配置されているフラグオーダー, オーダー, 設備, n番目

フラグは1/0の値で表現され、配置されていれば1、そうでなければ0となるよう、図7-10bのようなフラグを定義する2つの定式を用意します。

ルールの定式化
図7-10b

この2つの定式によって、それぞれのオーダー同士が同じ設備で連続して生産されている場合はフラグの値が1に、それ以外はフラグの値が0になり、フラグの定義ができます。このフラグを使って「2番目に生産するオーダーの完了日 ≦ 納期 + 納期遅れ許容時間」を表現すると、図7-10cのようになります。

ルールの定式化
図7-10c

オーダー同士の時刻の比較方法

ここでは残されたルール2の解説をします。

今回の生産計画モデルは前回と同様に様視覚的な分かりやすさを優先しているので、少々不都合な点があります。それは、通常の方法ではオーダー同士の開始・終了日を直接比較することができない点です。しかしそれぞれのオーダーの開始・終了日が分からないとこのルールを実現できませんので、「決定変数同士を掛け合わせる」という方法を採ることにします。ここで言う「通常の方法」とは、決定変数同士の掛け合わせを行わないことを意味します。

今回のルールを定式化するためには各オーダーの開始・終了日を取得する必要がありますが、そのためには各設備・スロットのどこにオーダーが配置されているか特定し、そのスロットの開始・終了日を取得することになります。それぞれのスロットの開始・終了日は図7-11aのように計算できます。

オーダー同士の時刻の比較方法
図7-11a

そうして求めた各スロットの開始・終了日に対し、各スロットにおける各オーダーの生産する/しないの決定変数を掛け、それらの値を合計することで各オーダーの開始・終了日を求めることができます(図7-11b参照)。

オーダー同士の時刻の比較方法
図7-11b

こうして各オーダーの開始・完了日が分かれば、それぞれのオーダーの前後関係を定式化することができます(図7-11c参照)。

オーダー同士の時刻の比較方法
図7-11c

羊飼いの問題、シフト計画、ラストワンマイル配送計画も含め、このルールを除いたこれまでのルールの定式はすべて「入力変数(インプットデータ) × 決定変数」の一次の多項式で表現されています。今お話しした決定変数の掛け合わせが加わったルール(制約)を持つ問題は「混合整数二次制約問題(Mixed Integer Quadratic Constrained Programming, MIQCP)」と呼ばれ、いくつかの商用ソルバー(最適化問題を解くためのソフトウェア)では対応していますが、無料のソルバーでは対応していないことが多いです。さらに二次式が加わることで計算負荷が増え、ほとんどの場合解が出るまでの時間が長くなるため、定式は可能な限り一次式で表現することが望ましいです。

価値の定式化

生産計画に限らず、現実の計画では複数の価値(目的関数)を同時に最適化することが求められます。今回は前述の4つの価値の定式化方法について説明します。説明の難易度から意思決定デザインFWに記載した順番と前後しますが、その点はご容赦ください。

納期遅れ時間の合計↓

納期遅れ時間はラストワンマイル配送計画の配送遅れ時間と同じ概念ですので、定式も自ずと同じ形を取ります。配送指定時間と違うのは、早く完了(配送)することを抑制する必要がない点です。

納期遅れの計算には各設備・スロットの納期と終了日が必要ですが、前者はルール4の図7-10cの右辺から納期遅延許容時間を除いたもの、後者は左辺から求めることができます。各設備・スロットの納期遅れ時間を求めたらそれらの値を合計し、その値を最小化します。

納期遅れを減らすことは顧客信頼度の獲得につながる重要な価値ですが、現実には計画の複雑さからオーダーを先入先出でさばくなど後回しにされがちです。そのため、この価値を目的関数とすることでそれぞれのオーダーの納期に合わせたムダの少ない計画が立案できます。

オーダー間の切り替え時間の合計↓

各スロット間の切り替え時間も納期遅れ時間同様、ルール4の中で説明した通りになります(図7-10c内左辺中段参照)。こちらの値も各スロット間で合計し、その値を最小化します。

切り替え時間中設備は遊休状態となるため、設備の稼働率や生産性の向上のためには少しでも減らしたいものです。この価値を目的関数に加えることで遊休時間を削減できるので、生産性の向上が期待できます。

生産費用の合計↓

これも前述2つの価値と考え方は同じです。各設備・スロットに配置されたオーダーの費用を算出し、それらの値を合計します(図7-12参照)。

価値の定式化
図7-12

終了日↓

これは前述の3つとは考え方が異なります。各スロットの終了日は図7-10cの左辺の要領で求めることができますが、この終了日の中で一番大きな値(最大値)を見つけてその値を最小化することで終了日を最小化することができます。なぜルール2のように各オーダーの終了日を直接求めないのかというと、ルール3があることですべてのオーダーが生産されることは保証されているので、各設備・スロットの終了日の最大値がすなわち最後に生産終了したオーダーの終了日となるためです。

では各設備・スロットにおける終了日の最大値をどう求めるのかというと、最大値という決定変数(1/0ではなく日数を表わす通常の整数)を用意し、図7-13のような定式のルールを設けます。

価値の定式化
図7-13

右辺の最大値は左辺に入る値以上であれば自由に値を取れるのですが、右辺の値を最小化することで左辺 = 右辺となり、最大値を求めることができるのです。逆に最小値の最大化も可能で、今回は使いませんでしたが何かの指標に対し全体の水準を底上げしたいといった場合に有効です。

こうして最大値を最小化することで、「平準化」が可能になります。例えば季節性の製品の生産計画を立てる際、繁忙期の需要をその時期に設備をフル稼働させて賄うのではなく、閑散期に予め生産を行い繁忙期の設備の稼働率に余裕を持たせ(平準化)、設備トラブルによる機会損失を抑制するといったことも可能になります。この平準化は生産計画に限らず、物流やエネルギーを筆頭にフローとストックを制御する分野であればどこでも有効な考え方です。

結び

今回は生産計画を例に、意思決定デザインFWを使ったビジネスイシューの可視化から数理モデルに変換する方法について解説しました。

生産計画のモデルは「ジョブショップスケジューリング問題」と呼ばれ、巡回セールスマン問題(TSP)などと並んで数理最適化の典型的な問題の1つです。今回も視覚的なわかりやすさを優先し本来のモデルとは異なるモデルの形にしているので、最適化モデリングに興味を持った方には本来のモデルについても学習を深めていただければと思います。

ここまでお読みいただきありがとうございました、またお会いしましょう。

計画最適化ソリューションに関するお問い合わせ