「解説: 顧客の声から顧客の価値へ」シリーズはこれからもしばらく続ける予定ですが、ここで一旦休憩をして全く別のトピックを取り上げたいと思います。今回取り上げるトピックは「最適化のための進化的調整方法」です。
今ここで「最適化のための進化的調整方法」を取り上げる理由は、ものづくりを支援するサイト「モノカク」に同じトピックで寄稿しようと思ったためです。しかし寄稿に許される限られた文字数では到底説明しきれないので、代わりにここで詳細に解説しようと思った次第です。
最適化のための進化的調整方法とは、
「最適化のための進化的調整方法」は、英語ではEvolutionary Optimizationと言われていますが、これは最適化手法の一つである「進化的最適化アルゴリズム」(英語ではEvolutionary Optimization Algorithm、EAとかEVOPとか言われている)とは全くの別物です。
紛らわしので、内容を加味してEvolutionary “Operation” for Optimizationと個人的に呼ぼうと思っているのですが、英語だとまだ紛らわし感じです。幸い日本語にすると「最適化のための進化的調整方法」となり、これなら「進化的最適化アルゴリズム」とは区別がつくのではないかと思い、ここではそのように呼ばせてもらいます。
最適化と聞くと数学や統計学の知識が必要な難しいものと思われがちですが、この「最適化のための進化的調整方法」は数学も統計学もまったく必要のない、もっとも簡単な最適化手法です。
例えば、ある小さな工場で長年使い続けているある機械の出力が少しずつ目標値からズレてきたとします。機械の再調整をしたいのですが、その機械を熟知していたベテラン社員はすでに定年退職してしまっていてもう工場にはいません。残された若手社員はその機械をどうやって調整してよいのか分からずに困っていました。またこの機械は毎日の生産に使われているので、調整のために機械を止めることもできません。そんなとき若手社員はきっと何週間も何ヶ月も時間をかけ、試行錯誤を繰り返しながら、少しずつ機械を調整するかもしれません。
しかし「最適化のための進化的調整方法」を使えば、比較的簡単にしかも短い時間で最適値を見つけ出します。
下の図は「最適化のための進化的調整方法」のイメージを表したものです。
この小さな工場の機械には2つの調整ノブがあったとします。そしてグラフ(中央)の横軸が調整ノブ1の調整値、そして縦軸が調整ノブ2の調整値の目盛りを表しています。
最初に任意の3点を選んで、そこから調整を開始します。3点は三角形の頂点を作ります。この例では調整ノブの目盛りを調整値(20-20)、(30-22)、(22-30)と順に合わせ、それぞれから得られた結果(機械の出力値)を比較して、その関係から次の頂点(頂点4)の位置(調整値)を計算します (ここでは 35-35) 。
そして調整値を頂点4(つまり 35-35)に合わして再び結果を取得し、次の頂点4を含む三角形(頂点2、3、4)の結果を比較して、その関係から次の頂点(頂点5)の位置(調整値)を計算します。後はそれを繰り返すだけです。
結果が最適値に近づいてくると、三角形(3点の調整値)が同じ頂点の周りを回り始めます。その中心点にある頂点が最適値が得られる調整値となります。上の例では頂点16 、つまり調整値(70-30)で最適値が得られました。
試行錯誤でムダに時間をかけるよりも、簡単に早く最適値を見つけられるのが「最適化のための進化的調整方法」の最大のメリットです。
どんな場面で「最適化のための進化的調整方法」は使えるのか
最適な結果を得るために2つ以上のパラメータ調整が必要なら、どんな場面でも「最適化のための進化的調整方法」が使えます。例えば
- 生産システムのパラメータの調整
- 在庫量の調整
- プロセス・ラインの調整
- 製造装置の調整
- サプライチェーンの調整
など。調整パラメータが2つ以上であれば「最適化のための進化的調整方法」が使えますが、4つ以上になるとグラフでは表現できないので(4次元グラフになってしまうので)、ここでは2次元グラフで表現するために調整パラメータの数は2つに留めておきます。
最適化のための進化的調整方法のメリット
詳しい手順を説明する前に、「最適化のための進化的調整方法」を使うメリットについてまとめておきます。
- 通常業務中に仕事(生産)を継続しながら調整ができます。
一般的な最適化手法は数値モデルを作るために特別な準備や環境が必要だったり、現作業環境を使う場合は通常業務を停止して試験を行わなければなりませんが、「最適化のための進化的調整方法」は通常業務を行いながら同時に調整(最適化)ができます。 - 足し算と割り算だけで計算ができます。
難しい数学や統計の知識はまったく必要ありません。エクセルを使える知識があれば十分です。 - 一般的な最適化手法に比べて、調整回数が少なくて済みます。
その分早く調整作業が終わります。 - 完全な最適値ではないかもしれませんが、十分満足できる最適値を得ることができます。
- 通常業務を継続しながら調整(最適化)できるので、調整中に作った製品も販売することができます。
- 調整パラメータはいくつあっても大丈夫です(但し2つ以上)
最適化のための進化的調整方法の手順
手順とそれに伴う計算はとても簡単です。計算の部分は後で説明しますので、まずは手順から先に確認します。この手順は調整パラメータがいくつあっても同じですが、2次元グラフで表示する都合上、調整パラメータの数は2つにして説明します。また下の例題では最適化のターゲットは「調整結果を10にする」としました。
- 最初の3頂点(調整値)を選ぶ
(例)任意の調整値として、頂点1(1.00 -1.00)、頂点2(2.00-4.00)、頂点3(5.00-1.00)を選び、最初の三角形を作りました。 - 3頂点の結果を取得する
(例)それぞれの調整値で結果を取得します。頂点1の結果は(1.32)、頂点2の結果は(5.63)、頂点3の結果は(3.21)でした。 - 結果に応じてB、N、Wのランクを付ける
(例)Bは最高の結果(The Best)、Nは次に悪い結果(Next to the worst)、そしてWは最悪の結果(The worst)を表しています。最適化ターゲットの10と比較して、頂点1の結果は(1.32)だったのでW、頂点2の結果は(5.63)だったのでB、頂点3の結果は(3.21)だったのでNとランクを付けました。 - W頂点の反射、R頂点を計算する
(例)簡単な計算を行って、R頂点の位置(調整値)を求めます。今のW頂点は頂点1なので、その反射、つまりR頂点は頂点4(6.00-4.00)となりました。 - R頂点の結果を取得する
(例)R頂点(今は頂点4)の調整値( 6.00-4.00 )に合わせて結果を取得したところ、(3.89)となりました。 - N頂点をW頂点とする
(例)N頂点は頂点3だったので、次は頂点3をW頂点としました。 - B頂点の結果とR頂点の結果を比較して、新しいB頂点とN頂点を決める(ランク付け)
(例)B頂点は頂点2でその結果は(5.63)でした。R頂点は頂点4でその結果は(3.89)でした。最適化ターゲットの10と比較して、次は頂点2をB、頂点4をNとランク付けしました。 - 手順4から反復する
(例)頂点2(B頂点)、頂点3(W頂点)、頂点4(N頂点)が次ぎの三角形になりました。この三角形の頂点を使って、手順4から8まで繰り返します。
この手順を繰り返していくと、三角形が同じ頂点(つまり調整値)の周りを回り始めます。その頂点が最適値を得るための調整値になります。
二つの「最適化のための進化的調整方法」
上記の手順は、調整を繰り返しても三角形の大きさが常に同じなので「固定式」と言われる方法です。
一方「可変式」と言われる方法もあります。「可変式」は新しい頂点(調整値)の結果に応じて、次の三角形の大きさが変わります。結果が目標値から大きく離れている場合は次の三角形も大きく、逆の場合は三角形も小さくなります。つまり目標値に近づくに従って三角形の大きさが小さくなっていく方式です。
「可変式」は手順(アルゴリズム)が少しだけ複雑になるので、ここでは取り上げません。もし興味のある方がいらしたらご連絡下さい。別途「可変式」の手順(アルゴリズム)をご紹介いたします。
最適化の精度
「固定式」の場合、最適化の精度は最初の三角形の大きさで決まります。
最初の三角形の頂点(3つの調整値)を決めるとき、大きな三角形(つまり調整値が離れている)にすると最適化の精度は低くなります。しかし調整回数は少なくて済みます。一方最初の三角形を小さくすれば(つまり3つの調整値が近い)、最適化の精度は高まりますが調整回数は増えます。
リーンシックスシグマ・プロジェクト
ここまでの解説でおおよそ「最適化のための進化的調整方法」の概要とその手順が掴めたのではないかと思います。次は具体的な計算方法をリーンシックスシグマ流に説明したいと思います。
ある工場での出来事
ある工場には毎日24時間連続運転している機械があります。しかし経年劣化のためか、製品の測定値が少しずつ目標値から逸れてきました。現状ではまだ測定値が許容範囲に収まっているので問題はありませんが、このまま生産を続けていれば近いうちに目標値からのズレが許容範囲を超えてしまい、製品を納入することができなくなってしまいます。できるだけ早いうちに機械を調整して、製品の測定値を目標値に戻す必要があります。
しかし製品の納入期限が迫っているため、今は調整のために機械を止めることはできません。また機械調整のために生じる生産ロスはコストの上昇につながるため、経営者は機械を止めて調整することを渋り、現場の社員に生産を続行することを命じました。現場の社員は困ってしまいましたが、リーンシックスシグマ風に問題を解決することにしました。
Define(定義)フェーズ
プロジェクト・チャーターに以下の内容を記述し、プロジェクトを明確に定義しました。
- 現状の問題点(生産品の測定値が目標値から逸脱してきた)
- プロジェクトの範囲(機械の調整)
- プロジェクトのゴール(機械を止めずに生産品の測定値を目標値+/-2%に納める)
- 顧客のメリット(許容値内に収まっている品質の高い製品を得られる)
- 会社のメリット(顧客満足の維持、品質の維持、生産コストの維持、納期の維持)
- プロジェクトのスケジュール(2日間)
Measure(測定)フェーズ
機械が生産する製品を測定し、現状の測定値を正確に測定しました。(現状の機械出力: 1253)
また機械の調整プロセスを確認しました。(プロセス・チャート作成)
Analyze(分析)フェーズ
製品の品質を左右する機械の出力目標値を設定しました。(機械出力目標値: 1283)
機械にはたくさんの調整ノブがありましたが、出力に影響を与える機械ノブだけを洗い出しました。(調整ノブは4つ)
製品の品質に大きな影響を与えない(つまり機械出力が基準範囲内に留まる)調整ノブの調整範囲を分析しました。(調整ノブは40から80の間で調整可能)
Improve(改善)フェーズ
「最適化のための進化的調整方法」を使って機械調整を行いました。調整点(調整ノブの設定値)の計算はエクセルを使い、計算式はエクセルの各行に記入しました。
調整ステップは以下の通りです。(但し、4次元グラフは書けないので、ここでは調整ノブ2つだけを使った例を示します。手順は調整ノブの数に関係なく同じです)
調整ステップ1から2
- 最初の3頂点を選び、機械出力(結果)を取得。
- 頂点1(現状): 調整ノブ2 – 5.0、調整ノブ3 – 5.0、結果 – 1250.00
- 頂点2: 調整ノブ2 – 5.0、調整ノブ3 – 5.5、結果 – 1251.25
- 頂点3: 調整ノブ2 – 5.5、調整ノブ3 – 5.0、結果 – 1253.75
- 3つの結果を目標値: 1283.00と比較し、近い方から順にB: The best(最高の結果)、N: Next to the worst(次の結果)、W: The worst(最悪の結果)のランクをつけ、最初のテーブルに数値を記入。
- 次の頂点4 、つまりR: Reflection(反射点)の調整ノブの値をエクセルを使って自動計算(計算式はエクセルの各行を参照)。そして調整ノブを調整し機械出力(結果)を取得。
- 頂点4: 調整ノブ2 – 5.5、調整ノブ3 – 5.5、結果 – 1261.25
調整ステップ2から3
- B頂点(つまり頂点3)とR頂点(つまり頂点4)の結果を比較し、次のB頂点とN頂点を決定。次のB頂点は頂点4なので、頂点4のデータを次のテーブルのB頂点の行にコピー。次のN頂点は頂点3なので、頂点3のデータを次のテーブルの頂点Nの行にコピー。
- N頂点(つまり頂点2)のデータを次のテーブルのW頂点の行にコピー。
- 次の頂点5 、つまりR: Reflection(反射点)の調整ノブの値をエクセルを使って自動計算(計算式はエクセル の各行 を参照)。そして調整ノブを調整し機械出力(結果)を取得。
- 頂点5: 調整ノブ2 – 6.0、調整ノブ3 – 5.0、結果 – 1250.00
調整ステップ3から4
- B頂点(つまり頂点4)とR頂点(つまり頂点5)の結果を比較し、次のB頂点とN頂点を決定。次のB頂点は頂点4なので、頂点4のデータを次のテーブルのB頂点の行にコピー。次のN頂点は頂点5なので、頂点5のデータを次のテーブルの頂点Nの行にコピー。
- N頂点(つまり頂点3)のデータを次のテーブルのW頂点の行にコピー。
- 次の頂点6 、つまりR: Reflection(反射点)の調整ノブの値をエクセルを使って自動計算(計算式はエクセル の各行 を参照)。そして調整ノブを調整し機械出力(結果)を取得。
- 頂点6: 調整ノブ2 – 6.0、調整ノブ3 – 5.5、結果 – 1263.75
調整ステップ4から20
前の調整ステップと同様の処理を繰り返す。
調整20
処理ステップ20が終わったところで、頂点16が繰り返しB頂点として現れたので、頂点16の調整値(調整ノブ2 – 7.0、調整ノブ3 – 7.0、結果 – 1280.00)を最適値とする。
Control(定着)フェーズ
次回再び調整が必要になった時の参考のためにエクセル・ファイルを保存しました。また機械を停止させることなく、生産ロスを出すことも無く、2日間で機械の調整を終えたことを経営者に報告しました。
まとめ
「最適化のための進化的調整方法」 は言葉で説明するととても難しいもののように思えますが、実際はとても簡単です。一旦エクセルで計算式を作ってしまえば、あとはエクセルが計算した新しい調整値を使って調整し、データを取得する、それを繰り返すだけです。いやエクセルがなくても、電卓と紙と鉛筆があれば十分です。ぜひお試しを。