見出し画像

Galapagos-最適化

『Galapagos』は、遺伝的アルゴリズムにより最適化を行うコンポーネントです。
なんと別途アドオンを入れなくてもデフォルトで使用できます
ただし、目的関数は1つとなっており、多目的最適化を行いたい場合は、別アドオンで『Octopus』を使用します。

では、

『Galapagos』について、事例を元に解説

していきます。

画像2

Rhino上で適当に描いた多角形CurveをGrasshopperの『Curve』コンポーネントで取得し、
任意の回転角をスライダーで変化させ、そのときのBoundingBox(Curveを包絡する矩形)の面積を最小化することを考えます。

上図は回転角0°のときで、面積は約872でした。
次に、角度を適当に変化させると、下図のように、面積は約1051となりました。

画像3

では、回転角をいくつにした時が最もBoundingBoxの面積を小さくできるでしょうか?
実際の問題をイメージすると、ある形状を板取りする際の効率化問題ですね。

『Galapagos』コンポーネントは少し変わっていて、インプット・アウトプットが左右にある一般的なコンポーネントの形状と異なります。
コンポーネントの左側にある『Genome』が変化させるパラメータの接続になり、下側にある『Fitness』が最大化または最小化したい目的関数(値)の接続になります。

注意点

として、接続する際には、『Galapagos』コンポーネントからワイヤーを引っ張り出し、それぞれのナンバースライダーや目的関数(値)コンポーネントにつなぎます
逆はなぜか接続されてくれません

『Galapagos』は単一最適化なので、『Fitness』に接続することができるのは1つだけとなります。
『Genome』につなぐパラメータは複数でも可能です。その場合は、Shiftキーを押しながら追加のコンポーネントを接続します。

では、次に

最適化を実行

します。

画像4

『Galapagos』コンポーネントをダブルクリックすると、上図のパネルが立ち上がってくるので、ここで最適化する際の設定を行います。
必ず触らないといけないのは、GenericにあるFitnessの『Minimize』か『Maximize』です。『-』『+』のマークをクリックすることで切り替わります。
その他、詳細設定もできますが、特に触らなくても実行可能です。

設定ができれば、いよいよ最適化の実行です。『Solvers』タブに切り替えます。

画像5

あとは『Start Solver』をクリックすれば、最適化の計算が開始されます。

実行時の設定

として、右側に並んだ時計のようなマークを1番左にすると各パラメータ値ごとにRhino上で表示され、頑張っている感が出ます。
左から2番目だと各世代ごとに最もよかった結果だけが表示され、世代ごとに切り替わっていきます。
3番目だと、すべての世代計算後に最良の結果に表示が切り替わります。

各世代ごとに数十の結果が残ってますので、パネル右下の帯の部分でクリックし、『Reinstate』ボタンをクリックすることで、結果を確認することができます。帯の左の数値は結果(値)です。

今回の事例では、186°のときに最も面積が小さくなり、約826だったようです。

↓GHデータが以下からダウンロードできます↓

いつもサポートいただきありがとうございます! これからもあなたの代わりに役立つ記事を更新し続けていきます。 どうぞよろしくお願いします。