多目的最適化プラグインOctopusについて

こんにちは。
AMDLabの藤井です。

今回は、最近個人的に使用する機会があったので、Grasshopperの多目的最適化のプラグインであるOctopusを紹介したいと思います。
Grasshopperには、最適化を行うコンポーネントとして、Galapagosが既に入っています。
しかし、Galapagosでは、目的関数を一つしか設定できません。
つまり最適化を行う上で、最小化もしくは最大化したいと思う値を一つしか設定できないということです。

何かをデザインする上で、形状は非常に多くのパラメータによって決定します。
ある設定した条件全てにおいて、最適に近いといえる形状を探索するには、目的関数は複数必要になるかと思います。
ここでOctopusの出番です。Food4RhinoからDLできます。
多目的最適化の手法はいくつかありますが、Octopusでは遺伝的アルゴリズムを用います。
Octopusを使うことで、デザイナーは、最適化のプログラムにそれほど時間を費やすことなく、よりデザインに集中することができます。

コンポーネントの説明です。

P:Pheotype…最適化の結果得られる形状
G:Genes…遺伝子(変化させたい値。Number Slider等)
複数のNumber Sliderが必要な場合は、「Gene Pool」を使用すると管理が楽で便利です。
O:Objectives…目的関数(最小化させたい値。データを格納したコンポーネント。)

下図がOctopusコンポーネントをダブルクリックしたら出てくる画面になります。

画面左側で結果の表示方法の設定を行います。
パレート解やエリートを表示するか等です。
画面右側で、最適化のパラメータの設定を行います。
個体数、世代数、突然変異率等の最適化手法のパラメータの設定や、SPEA-2やHypEで行うかの設定です。
デフォルト値でも問題ないですが、最初簡単に当たりをつけたい時は、個体数(Population Size)を小さくしてやると時間短縮にもなるので良いかと思います。
画面下側で、収束具合の表示や、どの軸にどの目的関数を当てるか、制約条件等の設定を行います。
画面上には、X、Y、Z、色、大きさの計五次元で表示できます。
右上のStartで最適化開始です。

ツールバーのCubeView>>Show Delaunay Front Meshで、パレート解を結んだメッシュを作成できます。
メッシュの滑らかさも調整できます。

出てきた個体を選択し、右クリックすると、Reinstate Solution等その個体に対する操作方法が選択できるようになります。
Reinstate Solutionを選択すると、その時のパラメータ値をGrasshopper上に再現できます。
また、Markすると個体に目印が付き、わかりやすくなるうえ、今後最適化を再開すれば、その後の展開でのその個体の位置付けが見やすくなります。

Navigationタブの隣にあるExportを選択すると、テキストデータに結果を書き出すことも可能です。

Octopusでは、一度に五次元までの表示が可能ですが、実際三次元を超えるとなかなか最適解の判断が難しくなってきます。
多目的最適化では、目的関数が最適化に寄与する影響の大きさの調整がそれぞれで必要になると思うので、目的関数が増えるとそこの難しさもあります。
Octopusは、UIが見やすく非常に強力なプラグインですが、使用する際は、結果を見ながら本当に最適解となっているのかを考えながら判断する必要がありますね。

今回はこの辺で。

ARTICLES