![見出し画像](https://assets.st-note.com/production/uploads/images/84862451/rectangle_large_type_2_0a06cb545118a1f91a8bdbfabc185bd3.png?width=1200)
H鋼単純梁の最適化手法(Galapagos)
H鋼を使った単純梁の最適化手法を提案しています。
他にも、Excelソルバーを用いた方法や、GHプラグインであるKaramba3Dを使用した方法を解説しています。
概要説明
Excelで行った処理をgrasshopper上で再現し、同時にモデリングの更新を行います。
ブラックボックス化されやすい最適化手法の中身を知ることを目的としているため、回りくどいやり方になっていますが、理解しやすい内容となっていますので是非お試しください。
目的関数:H鋼断面積(コスト)
変数
・H鋼 幅B
・H鋼 せいH
制約条件
・たわみ
・曲げ応力度
・ウェブ幅圧比
全体像
![](https://assets.st-note.com/img/1660537992283-odV3OHX6GT.png?width=1200)
左下の「最適化用断面」というnumbersliderのグループがH鋼断面の入力です。
そこから、右に3つ並ぶ計算処理のグループに値がつながります。
計算処理で出た値に対し、Panelに示した制約条件との上下関係を「制約条件」クラスターで処理し制約条件を組み込んでいます。
ピンクのコンポーネントが「Galapagos」という最適化コンポーネントです。目的関数と変数をつなぐことで簡単に最適化を行います。
これと同時に、最適化用断面から H鋼モデリングに繋いでモデルの出力も行います。
ツール作成方法
データ配布
入力(最適化用断面)
![](https://assets.st-note.com/img/1660538714757-w2hSlkTDXv.png?width=1200)
numbersliderを使うことで、最適化の変数として扱うことができます。
H鋼の「幅」「せい」「ウェブ厚」「フランジ厚」「フィレット」をnumbersliderで入力しました。
モデリング
「H鋼モデリング」クラスターでH鋼をRhino画面に表示します。
![](https://assets.st-note.com/img/1660540555051-poWiAKAeLL.png?width=1200)
制約条件の設定
計算処理を行うExplessionコンポーネントを使って、断面二次モーメントを算出しています。(フィレット部分無視)
![](https://assets.st-note.com/img/1660538911579-HWMahSFBqS.png?width=1200)
ここで算出した値が、Panelの制約値を上回ると、制約条件コンポーネントから体積が出力。
![](https://assets.st-note.com/img/1660539208697-Q3ANwvxioX.png?width=1200)
下回ると、制約条件がNGであったと判断し、非常に大きい値(10^10)を出力します。
![](https://assets.st-note.com/img/1660539201217-rFZstDVIwy.png?width=1200)
曲げ応力度は断面係数。ウェブ幅圧比。をそれぞれ同じように処理し、additionコンポーネントで足し合わせます。
![](https://assets.st-note.com/img/1660539312523-ShYfOgMvgn.png?width=1200)
すると、目的関数は、すべての制約値がOKの場合のみ体積の足し合わせが出力され、NGが1つでもあると非常に大きい値(10^10)が出力されることになります。
![](https://assets.st-note.com/img/1660540966786-LOM9HESe4U.png?width=1200)
ここまでの制約条件は、Excelでの値を参照しています。
制約値も計算で出すことはできますが、今回は簡単のため、値を直接入力しています。
最適化処理
最適化処理は、galapagosコンポーネントを用いて行います。
Genome端子を変数につなぎ
Fitness端子を目的関数(右上から移動しました)につなぎます。
変数は、ウェブ厚なども設定できますが、まずは簡単のために「幅
」「せい」のみとしました。
![](https://assets.st-note.com/img/1660539510218-3HlBU3srNK.png?width=1200)
galapagoコンポーネントをダブルクリックすると下のようなウインドウが開きます。「Fitness」をMinimizeとすることで、目的関数を最小化する設定にできます。
![](https://assets.st-note.com/img/1660539684963-GSFAHghKe9.png?width=1200)
上のタブからSolverをクリックし、開いた画面のStert Solverをクリックすることで最適化処理が始まります。
![](https://assets.st-note.com/img/1660539806941-uNC7szliOh.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/84762801/picture_pc_fb0f0fba5c51c9880a126638eafd13ad.gif)
ある程度進んだら、StopSolverをクリックすることで処理が停止します。
![](https://assets.st-note.com/img/1660539898235-f8hX1Sxkqy.png?width=1200)
ここで使われているアルゴリズムは遺伝的アルゴリズムと、焼きなまし法です。
左上のアイコンで、ピンクの方が遺伝的アルゴリム、緑の方が焼きなまし法となります。
まとめ
回りくどい方法でしたが、最適化の流れがわかってもらえたことと思います。
特に、制約条件の加え方は応用が効きますので、是非覚えていてください。