第1回目の記事(ChatGPTとExcelソルバーを用いたプロセス最適化(第1回 ChatGPTを用いたデータの学習))ではChatGPTとPythonを連携させたデータのモデル化について説明しました。非常に少ない手順でモデル化が可能で、作成したモデルはExcelの関数として出力できることを説明しました。モデルには多項式関数を使いました。
今回は、作成したモデル(Excel関数)をExcelのセルに貼り付けて、Excel上で最適化を行う手順を説明していきます。今回はChatGPTは使わずに、Excel上での操作になりますのでChatGPTの環境は必要ありません。
【最適化問題の設定】
少しイメージしやすいようにパラメータに意味を持たせて、見ていくことにします。
<プロセスパラメータ(説明変数)>
プロセスパラメータは以下の2種類でした。
P1:材料に付加する張力を表す数値とします。100から500まで変化します。
P2:金型形状を表す数値とします。10から30まで変化します。
<加工結果(目的変数)>
加工結果の変数は一つでした。
R1:成形品の設計寸法からのずれとします。-0.4から+0.12まで変化します。
今回は「R1が0になるような、P1とP2の組み合わせ」をExcelのソルバー機能を使って求めにいくことにします。つまり、設計通りの寸法になるような、張力と金型形状の組み合わせを求めたいと思います。
【最適化の手順】
①Excelのシートの作成
前回の記事においてChatGPTから出力されたP1、P2とR1の関係がこれです。4次多項式のExcel関数として出力されていました。
「 = -0.155643595387237 + -0.000039549151647*D3 + -0.00000043228668*D4 + 0.000014815476398*D3^2 + -0.000214478164838*D3*D4 + -0.000010372845324*D4^2 + -0.000000036111112*D3^3 + -0.000000255357147*D3^2*D4 + 0.000022805302553*D3*D4^2 + -0.000146854763259*D4^3 + 0.000000000029167*D3^4 + -0.000000000041667*D3^3*D4 + 0.000000007857143*D3^2*D4^2 + -0.000000570326471*D3*D4^3 + 0.000005120663457*D4^4」
Excelのセルに貼り付ければすぐに使えるような形式になっています。このExcelのシートではD3のセルにプロセスパラメータP1が、D4のセルにプロセスパラメータのP2の値入りますので、数式の中にD3とD4が登場しています。つまり、ExcelのセルにP1とP2の値を入力すると瞬時にR1を算出してExcelのセルに表示することができます。
このExcel関数を組み込んだExcelシートがこれです。D6のセルに上記の関数が貼り付けてあります。オレンジ色のセルには数式が組み込まれていて、水色のセルには数値が入ります。P1の値はD3のセル、P2の値はD4のセルに入ります。
さらに、D7のセルにはR1の目標値を手入力できるようにしました。今回は設計寸法通りが目標ですので0を入力しました。そして、D8のセルには「R1と、R1の目標値との差」の絶対値が計算されるようにしました。「=ABS(D6-D7)」という関数でこれが計算できます。これは、後の最適化計算のためです。これで、D8のセルを最小化するような、つまりR1と目標値がぴったり合うような、P1とP2の値を求めれば良いことになりました。
P1とP2の値は、それぞれ400と20の値を仮に入れました。この値が後に最適値を探索しはじめるスタート地点になります。
②ソルバーの設定
では、「D8のセルを最小化するような、D3とD4のセルの値を求める計算」をソルバーに具体的に指示していきます。※Excelのソルバーアドインが有効になっていない人は先にその作業を行ってください。
それでは設定内容を順に説明していきましょう。Excelの画面で、【データ】>【分析】>【ソルバー】の順に選択してソルバーを起動します。「目的セルの設定」の入力欄にはD8のセルを設定しました。また、そのセルの値を最小化するように指定しています。「変数セルの変更」の欄にはD3のセルとD4のセルを設定しています。この二つのセルの値をソルバーが勝手に修正していき、目標を達成してくれるわけです。「制約条件の対象」の欄では、それぞれのセルが取り得る値の範囲を設定することができます、今回は学習した範囲の外のデータを予測することはできませんので、100≤P1≤500,10≤P2≤30の範囲を探索するように指示しています。
ここまで設定できたら、「解決」ボタンを押すだけです。なお、このソルバーの設定はExcelのファイルを保存したときに自動的に保存されます。
③最適化の実行
「解決」ボタンを押して数秒待つと、セルの値が下記の状態となります。もともと400だったP1の値が約360.9に、もともと20だったP2の値が約23.6になり、D8の値がほぼ0に収束していることが分かります。その結果、R1の値(D6のセル)をほぼ0にすることができました。目標達成です。
こように、設計寸法通り(R1=0)に成形できる加工条件は、張力を表す値がP1=360.9、ダイス形状を表す数値がP2=23.6に設定すれば良いことが分かりました。この加工条件は学習させた元の実験の条件には含まれていませんでしたが、今回の予測によりR1=0になる条件を求めることができました。だたし、あくまで、学習済のモデルとソルバーによって導いた「推定値」です。この予測に基づいて最終的には試作を行って確認する必要があります。
【Excelのソルバーによる最適化結果の検証】
ここまでの手順で、(P1,P2)=(360.8,23.6)が設計寸法通り(R1=0)に加工するための最適加工条件であることが導かれました。ここでは、その値がどのような性質のものであるかをもう少し詳しく見ていきます。この図には、P1とP2とR1の関係を表した4次多項式関数の形状が青のワイヤフレームで描かれています。
その中に赤の線を描いてみました。この線はR1=0の等高線です。つまり、この赤い線の上のすべての加工条件が最適解ということができます。最適加工条件は一つではなくて無数に存在していることが分かります。図中の緑色の○は、今回Excelのソルバーによって得られた最適加工条件(P1,P2)=(360.8,23.6)を示しています。赤い曲線の底部に位置しているようにも見えますが、それはたまたまで、この赤い線上のどこの位置が選ばれても良いはずです。でははぜこの位置が選ばれたのでしょうか。それは、探索の初期値を(P1,P2)=(400,20)にしたことが影響しています。
今回、Excelのソルバーの「解決方法の選択」で「GRG非線形」を選んでいます。この最適化アルゴリズムは下記の手順で最適解を探していきます。
1)最初に探索のスタート地点を選ぶ(P1, P2 の初期値)
2) 周囲を少しずつ試してみる(勾配を使ってどっちに行けば改善するかを見る)
3) 制約条件の範囲内で「いい方向」に進んでいく
4)どこかで「もうこれ以上よくならないな」と止まる ⇒ そこが最適解となる
です。もう少し直感的なイメージは(P1,P2)=(400,20)の位置をスタートして青いワイヤフレームの斜面を、勾配の厳しい方向に直滑降で滑っていくスキーヤーをイメージしてください。よくスキー場で小さな子供がやるあの光景です。今回はそのスキーヤーが赤いゴールラインに達したポイントが(P1,P2)=(360.8,23.6)であったということになります。今回よりももう少しP2が小さい(P2=10くらい)をスタート地点としていれば、図の右下に見える小さな赤い線にゴールしていたかもしれません。
このように、最適解となる加工条件の組み合わせが多数あることが想定できる場合(塑性加工の場合はほとんどの場合)には、探索の初期値を、ある程度狙いの位置に近づけておいたり、数条件振ってみる工夫も必要です。
ところで、一見するとこのような等高線図を作成しておけば、目視で最適条件を容易に見つけることができる気もします。最適化計算など不要ではないかと感じます。しかし、そう思えるのは説明変数が二つまでです。たとえば塑性加工の場合には、ダイス半角、リダクション、バックテンション、材料の初期厚み、投入材料の降伏点などプロセスパラメータは非常に多くなります。もはや、人間の目では探し出すことは難しくなります。
【Excel上に落とし込むメリット】
ChatGPTでもPythonと連携してこの最適化計算を行うことは可能です。しかし、Excelに落とし込むことで、同一のオーソライズされたモデルをExcelファイルとして社内で共有することが可能で、製造現場の手元で計算が行えます。そのため、不具合発生時の即座の対応や、開発初期段階のスピーディーな意思決定において威力を発揮することになります。
また、ソルバーを用いた最適化まで行わずとも、作成したモデルをExcel上で扱えるだけでも、開発のスピードと精度を上げることが可能です。
【おわりに】
今回の記事ではChatGPTとPythonを連携させて作成したモデルをExcelに組み込んで、Excelのソルバー機能を使って最適化を実施しました。次回以降は、変数の種類がもっと多い場合でもシンプルにモデル化でき、Excelとも親和性が高いRBF(Radial Basis Function)モデルの適用について説明します。説明変数が増えると多項式では対応が難しくなるためです。つづき⇒ChatGPTとExcelソルバーを用いたプロセス最適化(第3回 RBF(Radial Basis Function)モデルを用いた学習)(K)
0コメント