【Ladybug+Honeybee】×【galapagos】日射解析とグリッドサイズの最適な設定について 応用編

皆様こんにちは。
AMDlabの前川です。

今回は前回の記事で使用したモデルをベースにgalapagosをつかった最適化について実践を通して解説していきます。

今回は窓の外に、このような縦型ルーバーを可能な限り日射を遮るような角度で設置することを想定して、最適化のための変数モデル作成と解析を行います。

 

変数モデルを作成していきましょう。

まず、窓際に並行な線を引いて[curve]に格納したのもを[divide curve]につないで、線を分割します。(分割数はcountに任意の整数を繋ぐことで指定できます。)

 

次に、[domain box]の原点を先ほどの線の分割点に設定して、x,y,zそれぞれのサイズを入力します。(今回は厚み20mmで高さが2000mm,幅が200mmのルーバーとします。)

 

配置したルーバーを任意の値で回転させていきましょう。
[rotate axis]のGに[domain box]の出力端子ををつなぎます。
X(axis)には回転の基準となる軸を入力する必要があるので、[LineSDL]に先ほど線を分割しでできた点の座標と[Unit Z]を繋ぐと、各ルーバーの回転の基準軸が生成されます。

 

次に[genepool]のgene数=10 ,domain=[-1 to 1]として、出力端子を[rotate axis]のA(angle)に繋ぎます。
(角度は弧度法なのでルーバーの可動域は初期位置を中心として両側に約60度程度となります。)

 

genepoolのスライダーを動かすと、ルーバーの角度が変化することが確認できます。

これで変数モデルが完成しました。

あとはルーバーのジオメトリを[radiationAnalysis]のcontextにctrlキーを押しながらつなげばルーバーによる影響も加味した解析結果が表示されます。

 

ここからが最適化パートです。

garapagosのコンポーネントです。
genomeに変数、fitnessに最大化もしくは最小化したい値を繋ぎます。

 

 

このケースではgenomeに先ほど作成した[genepool]を繋ぎ、Fitnessには[radiationAnalysis]のradiationResultから出力される各グリッドの積算日射量を[MassAddition]というコンポーネントで一つの値にまとめたものに繋ぎます。

中身をみてみましょう。

optionタブのFitnessがmaximizeかminimizeが選択できます。
今回は積算日射量を最小化することが目的なので、minimizeを選択します。

Runtime Limitで時間を指定することで、解析時間を指定することもでますが今回は設定しないでおきます。

 

遺伝的アルゴリズムと焼きなまし法が選択できます。今回は前者を選んでソルバーを回します。
ちなみに今回は解析グリッドサイズを300[mm]にして解析を行っています。
本来であればもう少しグリッドサイズを小さくして解析を行った方が良いのですが、今回はスピード重視で解析を行っています。

 

数十世代で既に収束しかけていますが、試しにもう少し放っておくと、以下の結果が得られました。

今回は解析グリッドサイズの設定がかなり粗いですが、もう少し細かい設定にすると結果が変わってくると思います。
(細かい設定で最適化する場合はスペックの高いPCを使用することをおすすめします。。)

一応プログラムのキャプチャも載せておきます。

galapagosを使った最適化についての説明は以上です。

今回伝えたかったことは、検討したいモデルの変数(genome)と、モデルの形状を評価する値(fitness)をgrasshopperで設定することができれば最適化をかけられるということでした。

次回は、評価値が複数ある場合の最適化をやってみようと思います。
それでは今日はこの辺で。

ARTICLES