ラベル 衍生式设计 の投稿を表示しています。 すべての投稿を表示
ラベル 衍生式设计 の投稿を表示しています。 すべての投稿を表示

2020年4月26日日曜日

ジェネレーティブデザイン(2)

相反する課題

3つのBOXのマスの検討では、

条件

ボックス1、2、3は平面形状は変更できませんが、高さとその相対位置を変更することができる。

目標

床面積を最大化して、表面積を最小化すること

この二つの条件は一般的には相反する内容ですが、3つのBOXを適切に重なり合わせる(3つのSOLIDをブーリアン演算で結合する)ことで、表面積を抑えながら床面積を最大化することを目指します。

生成の設定について

生成の設定では既定値を受け入れました。
生成の設定
訳がちょっとおかしいので、それぞれを英語版がどのように表示しているか確かめてみました。
  • Population Size : 母数
  • Generation :世代
  • Seed :シード
となります。
母数: 各世代で生成するオプションの数。
世代:作成する世代の数。次の世代は前の世代のベスト解の二つから派生します。

母数が多ければ多いほど、世代が多ければ多いほど、設定した目標に向かってよりよい結果を得ようと進化していきますが、時間もかかってしまいます。

結果の見方

生成ボタンを押すと次の図のような結果が表示されます。
デザイングリッド
赤枠の部分を「デザイングリッド」といいます。このデザイングリッドの個々の3Dビューはマウスで回転することができます。
左上のボタン(下図緑枠)を切り替えることで、下の図のような「デザインテーブル」に切り替え一覧表示することもできます。
デザインテーブル
また、下の図の赤枠の欄は「平行座標」で、結果として各変数がどのような値になったかを示しています。
平行座標
こちらも左上のボタンで切り替えができて、「分布図」として表示することができます。
分布図

フィルタ

平行座標を使って結果をフィルタリングしてみます。まず、床面積と表面積をみて、床面積が大きく取れているうちで比較的表面積が小さなもの、つまり床面積から表面積に向かって右下がりの要素をフィルタしてみます。床面積のバーの上をドラッグして下の図のように範囲を選択します。
床面積をフィルタする
すると、上部のデザイングリッドの数が絞られてくることがわかります。
次にボックス2の高さを大きくとるとすれば、一番右の三つの指標がへの字になるような位置にフィルタを作成します。
高さにフィルタを作成
こうしたフィルタリングを繰り返して、だんだんと候補を絞り込んでいきます。
絞込

今回のような例では、決定的な方向性というのはなかなか見えてきませんが、多くのオプションの中から、適切な指標をもって選択することが可能になります。



2020年4月19日日曜日

ジェネレーティブデザイン(1)

Generative Designとは

多数の条件、多数の目的、多数の解。私たちは日常的にこのような複雑な問題を解決するために非常に多くの試行錯誤を繰り返しています。ジェネレーティブデザインはこの試行錯誤を非常にスピーディかつ大量に行ってくれます。人間はその多数の解の中から最も適切であると判断した答えを選択します。
ジェネレーティブデザインの画面
Revit2021にはジェネレーティブデザインが実装されました。これはいわゆる「最適化問題」の解法であり、古くからさまざまなアルゴリズムが研究者から提起されてきました。大変敷居の高かった最適化問題を、ジェネレーティブデザインという手法を用いて、ついに一般人が解を得られるようになりました。どんな仕組みなのか実際に触りながらジェネレーティブデザインとはどんなものなのかを体験していきましょう。

起動方法

早速使ってみましょう。
  1. Revit2021を起動し任意のテンプレートを使ってプロジェクトを作成。
  2. 管理タブ>ジェネレーティブデザインパネル>スタディを作成。
    管理タブ>ジェネレーティブデザインパネル>スタディを作成
ここで次のダイアログボックスが表示されてなかなか次へ進まない場合があります。
ジェネレーティブデザインはライセンスが別途必要
ジェネレーティブデザインを使用するにはAECコレクションを契約する必要があります。しかし、AECコレクションの契約がなくてもダイナモ(Dynamo for Revit)を使えば同じことができます。上記のダイアログを右上の✖で閉じて、今度はダイナモを起動します。

ダイナモで起動

どちらから起動しても機能はまったく同じです。
  1. 管理タブ>ビジュアルプログラミング>Dynamo
    管理タブ>ビジュアルプログラミングパネル>Dynamo
  2. ジェネレーティブデザイン>スタディを作成
    ダイナモからジェネレーティブデザインを起動する
ジェネレーティブデザインはダイナモを使って様々な新しいスタディを開発するこができるので、ちょっと「生っぽい」ですが、開発に興味がある方にはこちらがおすすめです。

基礎知識

ジェネレーティブデザインに必要な項目が4つあるので、まずこれだけは覚えておきましょう。
  • 目標
  • 定数
  • 拘束
  • 変数
の4つです。

目標~これを達成したい!

達成すべき目標です。複数あって構いません。たとえば「床面積を最大にしてかつ表面積を最小にする」など、一見矛盾したような目標でもOKです。

定数~これは動かしちゃダメ!

変更できない固定値です。部屋の中に机を配置するような場合は、部屋の形状とか机の数などが定数になります。

拘束~これだけは守ってください

「少なくとも○○が必要」といえばわかりやすいかもしれません。ビルの幅は最小20m最大50mなど、ある範囲の中でスタディを作成するようにしないと、あまり現実的でない結果が多数生成されるようになってしまいます。

変数~自由にいろいろやってみて!

自由に変更する複数値です。コンピュータはこの複数の値を様々に変化させて、多くの結果を作成します。

まずはやってみよう

スタディを作成ダイアログボックスには、あらかじめオートデスクが用意した3つのスタディタイプが表示されています。
用意された3つの例
これらは単純なように見えますが、ジェネレーティブデザインを理解するのに非常に役に立ちます。一つずつ実行しながらジェネレーティブデザインの世界に慣れていきましょう。
3つのボックスのマスをクリックしてください。すると、スタディを定義ダイアログボックスが表示されます。
スタディを定義
このスタディでは一辺が50フィートの正方形のボックスの高さと互いの位置を変更して、床面積と表面積の計算を行います。

方法

方法は「optimiza(最適化)」「Cross Product(均等分布)」「Randomize(ランダム化)」「Like this(似たもののバリエーション検討)」の4つがあります。これを変更するたびに入力条件が変更されます。
方法は4種類
まずはOptimizeを選択しておいてください。

異なる入力を選択(誤訳)→変数を選択

異なる入力はではなく、どれを変数にするか、という意味です。ボックス1~3の高さとボックス2~3の座標(ボックス1の位置は固定)のうち変更してもよい値を選択します。
変数を選択
ここでは全てにチェックを入れておきます。

目標を設定

スタディの目標を設定します。
目標を設定
ここでは床面積を最大化し、表面積を最小化することを目標としてみます。

拘束を設定

計算結果の床面積と表面積の範囲を設定します。
拘束を設定はOFF
最初はどれくらいの結果が得られるかわからないので、両方オフにしておきます

生成方法

方法としてOptimize=最適化が選択された場合、Revitは最適化エンジンとして「遺伝的アルゴリズム(GA)」を採用しています。難解な遺伝的アルゴリズムを簡単に使用できるのは素晴らしいことです。この各項目は遺伝的アルゴリズム特有の項目ですが、今回は規定値を受け入れます。

さて、生成ボタンを押してみましょう。

すぐに結果を得ることができます。
スタディ結果

実行はクラウドではなくPC上で行われます。Revitとは完全に別スレッドで動きますので、Revitの操作を妨げることはありません。マルチタスクで実行されるので非常に高速です。下の図は実行時のCPUの動きですが、すべてのCPUが稼働していることがわかります。
マルチスレッドで実行される
次回はこの結果の見方について考えてみます。