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が稼働していることがわかります。
マルチスレッドで実行される
次回はこの結果の見方について考えてみます。