見出し画像

2020年度第4回デジラボ:Grasshopperのコンポーネント"Wallacei"

はじめに

北九大藤田研究室M1の齋藤魁利です。今回はGrasshopperのコンポーネント"Wallacei"を遺伝的アルゴリズム、多目的最適化等の説明を簡単にしながら、使い方を学んでいきたいと思います。

Wallaceiのインストール

Wallaceiは以下のリンクからダウンロードでき、他のGrasshopperのコンポーネントと同じようにインストールすることができます。

ダウンロードしたら、zipファイルを解凍しその中のフォルダ2つを
WallaceiX
>C:\Users\ユーザー名\AppData\Roaming\Grasshopper\Libraries
Wallacei Analytics
>C:\Users\ユーザー名\AppData\Roaming\Grasshopper\UserObjects
に移動させ、Rhinoを起動させれば完了です。
詳細なインストール方法はAMDlab社がWallaceiの説明と一緒に作っていますので割愛します。
下図のような3つのコンポーネント群が表示されていればOKです。

画像5

Grasshopperのコンポーネントは下図のように整理することもできますので、時間があればやってみてもいいかもしれません。

画像1

遺伝的アルゴリズムによる多目的最適化"Wallacei"とは?

Wallaceiの使用方法の前に遺伝的アルゴリズム、多目的最適化とは何かを簡単に説明します。

遺伝的アルゴリズム(GA)とは、Grasshopper既存のGalapagosも使うアルゴリズムです。説明は静岡理工科大学の菅沼研究室がよい説明をしておられましたので引用させていただきます。

「生物は,交叉,突然変異,淘汰を繰り返しながら,環境に適合するように進化していく」と言われています.環境に適合する度合い(以後,適合度と呼びます)を数値で表せば,進化して生き残った個体の数値は徐々に高くなっていくことになります.
 適合度を最適化問題の目的関数と考えると,目的関数の値が進化と共に徐々に大きくなっていくことになります。つまり,目的関数を最大にするという最適化問題の解に近づいていくことになります.
 そこで,コンピュータ上に仮想生命を生成,かつ,その環境に対する適合度を最適化問題の目的関数に一致させ,進化の過程をシミュレーションすることによって,最適化問題を解くことが可能になります.これが,遺伝的アルゴリズム( GA: Genetic Algorithm )によって最適化問題を解く基本的考え方です.

Wallaceiでは、NSGA2(非優越ソートGA2 )で最適化をしております。

多目的最適化とは、最適化における目的関数を増やして最適化させます。
ここで重要となるのは、目的関数はそれぞれトレードオフの関係にあることです。
例えば、"建物の構造耐力と建設費用"は、耐力が大きくなれば費用がかかり、費用を減らせばその分耐力が減りと、この2つはトレードオフの関係にあるといえます。
そこで、多目的最適化を行い、"構造耐力がある程度大きいが費用がそこまでかからない"といったいいとこ取りの関係を見るけることができればよいわけです。

その他、詳細はネットの方がより分かりやすく書かれておりますので、気になったら調べて見てください。

多目的最適化の例

今回Wallaceiで最適化を行うのに次のような例題を想定します。

画像4

1.上左図のような、ある1つの土地があり、それを上右図のように同じ大きさの長方形(区画)を並べて満たします。
2.スパンは一定で、x方向y方向ともに5m~8mの間隔で行います。
ここで、"区画数と1区画の面積"は下の図のようにトレードオフの関係にあると思われます。そこで、"区画数を多く、1区画の面積を大きく"する多目的最適化(最大化)を行います。

画像4

今回行ったモデリング

今回のモデルを図とghファイルで共有します。

画像6

WallaceiXの使い方

ここでは、Wallaceiでの最適化で使うWallaceiXの使用方法を説明します。
なお、WallaceiXは最小化をする解析ですので、最大化をしたい場合は、Negativeを挟むことで行えます。

まずは、WallaceiXの入力と出力の方法です。

画像4

入力部
Genes
:変動させる変数(遺伝子)
・最小化で変動させたい変数を入力します。
・Number Slider、Gene Poolが入力できます。
Objectives:目的関数
・目的関数の結果(数値)を入力します。
・最小化したいものを全部繋げます。
Data:保存したい数値
・WallaceiXの最小化を動かす時に保存しておきたい数値を入力します。
・数値以外は、クラッシュの原因となるため、入力しないでください。
Phenotype:結果より出力したい形状
・WallaceiXの最小化の結果を選んで形状で出力することができます。

出力部
WGenomes,Fitness Values,Data
:入力された全部の変数、目的関数、数値
・WallaceiXの最小化を動かした時の全部の世代の変数、目的関数、数値を出力します。
・(世代の大きさ×世代数×入力された数)個返します。
・WGenomesの場合、Wallacei Genomesを返し、Decode Genomeで入力された全部の変数を読むことができます。
※Dataだけは出力後保存されません。保存する場合はParams、PrimitiveのDataで保存してください。(’20/8/11追記)
WPhenotype:結果より出力された形状
・Phenotypeで入力された形状を最適化結果を選んで出力することができます。
・Wallacei Phenotypeを返し、Decode Phenotypeで入力された全部の形状を読むことができます。

次にWallaceiXのインターフェースです。

画像7

Wallacei Settings:設定
・主に最小化を行う所です。
Wallacei Analytics:解析
・最小化後に最小化している時の目的関数などを解析します。
Wallacei Selection:選択
・最小化の結果を選択しPhenotypeより出力します。
Wallacei Forum:Wallaceiのフォーラム(英文)
Wallacei Primer:Wallaceiの説明書(英文)

その他最適化の動かし方など文章で説明が難しいですので、詳細は動画をご視聴いただけたらと思います。

動画

以下動画で今回のモデルの作成からWallaceiXのインターフェース、結果のまとめまでやっておりますのでぜひご視聴ください。

終わりに

今回はWallaceiの使い方を学びました。
次回はWallacei多目的最適化の効率化や解析結果を利用してソートをしたいと思います。
また、藤田研で研究中のOpenSees for GHがリリースされれば、それを使った多目的最適化をしたいと思っています。

参考になったサイト

Wallaceiホームページ
静岡理工科大学 菅沼研究室:遺伝的アルゴリズム
AMDlab社の記事
多目的最適化プラグインWallaceiについて~解析編~
多目的最適化プラグインWallaceiについて~解読編~
多目的最適化プラグインWallaceiについて~出力編~


この記事が気に入ったらサポートをしてみませんか?