Galapagos-最適化
『Galapagos』は、遺伝的アルゴリズムにより最適化を行うコンポーネントです。
なんと別途アドオンを入れなくてもデフォルトで使用できます。
ただし、目的関数は1つとなっており、多目的最適化を行いたい場合は、別アドオンで『Octopus』を使用します。
では、
『Galapagos』について、事例を元に解説
していきます。
Rhino上で適当に描いた多角形CurveをGrasshopperの『Curve』コンポーネントで取得し、
任意の回転角をスライダーで変化させ、そのときのBoundingBox(Curveを包絡する矩形)の面積を最小化することを考えます。
上図は回転角0°のときで、面積は約872でした。
次に、角度を適当に変化させると、下図のように、面積は約1051となりました。
では、回転角をいくつにした時が最もBoundingBoxの面積を小さくできるでしょうか?
実際の問題をイメージすると、ある形状を板取りする際の効率化問題ですね。
『Galapagos』コンポーネントは少し変わっていて、インプット・アウトプットが左右にある一般的なコンポーネントの形状と異なります。
コンポーネントの左側にある『Genome』が変化させるパラメータの接続になり、下側にある『Fitness』が最大化または最小化したい目的関数(値)の接続になります。
注意点
として、接続する際には、『Galapagos』コンポーネントからワイヤーを引っ張り出し、それぞれのナンバースライダーや目的関数(値)コンポーネントにつなぎます。
逆はなぜか接続されてくれません。
『Galapagos』は単一最適化なので、『Fitness』に接続することができるのは1つだけとなります。
『Genome』につなぐパラメータは複数でも可能です。その場合は、Shiftキーを押しながら追加のコンポーネントを接続します。
では、次に
最適化を実行
します。
『Galapagos』コンポーネントをダブルクリックすると、上図のパネルが立ち上がってくるので、ここで最適化する際の設定を行います。
必ず触らないといけないのは、GenericにあるFitnessの『Minimize』か『Maximize』です。『-』『+』のマークをクリックすることで切り替わります。
その他、詳細設定もできますが、特に触らなくても実行可能です。
設定ができれば、いよいよ最適化の実行です。『Solvers』タブに切り替えます。
あとは『Start Solver』をクリックすれば、最適化の計算が開始されます。
実行時の設定
として、右側に並んだ時計のようなマークを1番左にすると各パラメータ値ごとにRhino上で表示され、頑張っている感が出ます。
左から2番目だと各世代ごとに最もよかった結果だけが表示され、世代ごとに切り替わっていきます。
3番目だと、すべての世代計算後に最良の結果に表示が切り替わります。
各世代ごとに数十の結果が残ってますので、パネル右下の帯の部分でクリックし、『Reinstate』ボタンをクリックすることで、結果を確認することができます。帯の左の数値は結果(値)です。
今回の事例では、186°のときに最も面積が小さくなり、約826だったようです。