ALGORITHMIC DESIGN / INDUCTION DESIGN

形力-1 プログラム: INDUCTION DESIGN-V2005
形力-2 プログラム: INDUCTION DESIGN-V2006
形力-3 プログラム: INDUCTION DESIGN-Ⅷ2012

ALGORITHMIC DESIGN / ALGODesign

注:以下で「形力‐2」と記していない場合は「形力-1」に関する記述 (2006時点)
「形力-3」(シェル版) は → ALGODEX 頁

INDUCTION / ALGORITHMIC :ひとつの方法のふたつの名前

形力-2

設計行為とは結局、設計者の「意思」によって裏付けられた、課題への「解答」である。 この、「課題を解く」というプロセスを、科学的な(ということは検証可能な)プロセスに近づけようとするのが 「INDUCTION DESIGN」 の意図である。
inductionという言葉には、設計行為が、今までのように「ただひとつの解答を絶対化する決定」ではなく、「よりよい解答を誘発する過程」、に接近するという意味がある。

コイルに磁石を近付けると、電流が発生する。電気を直接流すのではなく、磁界を変化させることで、結果として電流を発生させている。これは誘導電流と呼ばれる。
設計でも、直接、最終結果としての設計図を描くのではなく、求められる条件とそれを処理するプログラムを用いて、結果として、「よい設計」を「発生させる」方法が考えられる。それが「INDUCTION DESIGN」だ。

また一方、同じ設計方法を、解答を得るための「手続きを明らかにする」という点に力点を置けば、「ALGORITHMIC DESIGN」 と呼ぶことができる。

algorithmとは、この場合はこうする、それを次にはこうする、という「手順」のことである。
設計に求められる価値基準や重みづけ、処理の順序などを定め、その手順を用いて設計を行うことで、よりよい解答を得ようというのが 「ALGORITHMIC DESIGN」 だ。
ここでいう「手順」は工程表のようなリニアなものにはならない。行ったり来たりの輻輳する処理が必要で、コンピュータプログラムが欠かせない。

このふたつの呼称は、同じ新たな設計方法の、どの性格をより強く見るかによる違いだ。
「インダクション デザイン」 という呼称は設計行為の「作用」に注目した場合であり、 「アルゴリズミック デザイン」 は設計行為の「形式」に着目した呼び名である。

形態発生+構造最適(高適)化

新水俣門
形力-1プログラム によってつくられた。

これはALGORITHMIC DESIGN「 誘導都市/INDUCTION DESIGN 」シリーズで初めての公開プログラムであり、「ウエブ フレーム」プログラムの発展版のひとつである。

「INDUCTION DESIGN」シリーズの-Ⅲにあたる 「WEB FRAME」は、「形態発生+評価選択」プログラムであったが、構造力学は含まれていなかった。
構造との統合プログラムは「換気塔・WING」で意図したが未完となった。
その意を継いで、構造力学上の処理を組み込んだものがこのプログラム「形力-1」(KeiRiki-1)である。
(本プログラムではその効果を明瞭に示すために、評価プロセスは入れていない。 評価プロセスの開発は、別途「INDUCTION DESIGN-IV :流れのプログラム」で並行して行っている)

そして「形力-2」(KeiRiki-2)は 「形力-1」の発展版プログラムとして、壁や屋根のような「面」を持つ建築体を扱えるようにした。

「条件」と「最適(高適)化」、その定義

形力-1の作動過程

このプログラムの目的は、「必要な条件を解いた形態を発生させること」と、「その形態に与えた荷重を支持することに高い適合性を持つ(=高適(最適))な」構造を生成すること」である。

ここで、「必要な条件」とは、場合により様々である。何をどう、どこにどんなふうにつくりたいのかによって「条件」はそれぞれ異なる。
しかしそれでは先に進まないので、このプログラムでは条件の種類と範囲は後述のように決めている。

これとは違う条件の設定ももちろんありうる。
違う条件を解きたければ、違うプログラムをつくればよい。
大事なのは何を条件にするのかではなく(条件は無限にある)、選んだ条件をきちんと解くプログラムが可能なことの、「実証」である。

また、「高適(最適))な構造」とは何か、にも定義が必要だ。

ここでは「重量」を「高適(最適)」の基準としている。
つまり、「生成された形態を基本に、設定した荷重のもと、設定した部材を使って、部材総重量が最小の構造をつくる」ことを高適(最適)と定義した。

高適(最適)、の定義は他にもありえる。部材の数、種類の少なさ、断面変化の程度、等。それらの定義を選択する場合には、それを解くプログラムをつくればいい。
ここでも、何が高適(最適)かが重要なのではなく、選んだ高適(最適)基準を解くプログラムの「有効性の実証」に目的がある。

「形力-1」プログラムは、これらふたつの過程を一体化したものである。
ひとつは「形態発生プログラム」、もうひとつは「構造高適化(最適化)プログラム」だ。

「形力-1」プログラムにより、設計者は任意*の全体形状をつくり、そこに自分で設定した条件下で網目状の形態を発生させ、その形態に任意の荷重条件を与え、その荷重条件下での構造高適(最適)化案を得ることができる。 (*本プログラムで可能な範囲内での任意)

プログラムの各過程でどのような設定をするかにより、結果は毎回変わる。
連続面の形状と大きさ、形態発生時の各選択値、開口部の指定、そして高適化(最適化)時の部材の選択、そのどの段階の捜査でも結果は変わる。
しかしどの結果も、ただバリエーションを並べているのではなく、設定した条件を解いた、「解答」として現れる。

「高適/最適」、用語について

最適、ということばは、構造力学での用語だが、内容からいって、用語としてはかならずしも「最適」とはいえない面もあるように思われる。
構造力学でいう最適とは、あくまで、「選択した条件下で、他の案よりよく条件を満たす度合いが大きいとほぼみなせる解」という、相対的かつ近似的な答え、である。他にもっとよい案が絶対ないとはいえない。
その点で、日本語の最適の「最」(そして英語の「optimal」)は、この場合は「最適」かどうか。
ここは、「高適」(=高度適合)と表記したほうが、無理がないかもしれない。
(英語表記ではaptimized-aptimization を提案している)

いいもの、は、いくつあってもいいが、最高はひとつでないと、語義に抵触することもある。
専門用語は日常用語とは別の定義であっていいが、先に日常用語がある場合は、その意味を尊重することが望ましい。
(この用語の件は、「最適化」概念と方法の「質」に疑念を呈するものではない)

「形力-2」で可能になった主な点

形力-1
形力-2 では 面を張ることができる。各面の受ける風荷重が架構の高適化に反映される。

1-面を持つ建築を扱える
2-高適化(最適化)後も初期形態を概ね維持する
3-形態発生・構造高適化(最適化)後の形態変更が可能
4-コマンドとインターフェイスの改良

:その説明: 1-「面を持つ建築を扱える」点について:

「形力-1」は「新水俣門」のように面を張らない「純」構造体を対象にしたプログラムであった。
これに対して「形力-2」では、ガラスや壁などの「面」を張った、より一般的な建築体を扱うことができる。

これは、「面が受ける風荷重」を自動的に構造検討条件にするということである。 一方、ガラスや壁のない開口部を任意に設けることも可能である。任意の面に面を張らない選択をすることで、そこは風荷重を受けない開口部となる。

2-「高適化(最適化)後も初期形態を概ね維持する」点について:

「形力-1」では、高適化過程で応力負担の少ない部材は消去されるが、それにより、全体の形態が初期設定のものとは変わってしまう。つまり意図した形態と成果品とはやや異なったものになる。

「形力-2」でも同様に、高適化(最適化)過程で部材が消去されるが、では消去された部材が受け持っていた面の荷重を「形力-2」では他の部材が支持するため、もとの形態が維持される。
つまり、意図した形態を、高適化(最適化)後もほぼ維持することができる。
これは上記1-と連動する機能である。

3-「形態発生/構造高適化(最適化)後の形態変更が可能」な点について:

プログラム上での形態発生はパラメータ設定により行われるため、発生する「枝」のひとつひとつを任意に操作しているわけではない。
これは「形力-2」でも同様であるが、その結果として生成されれる形態に対して、部材(線・面)の任意変更を可能にした。
この操作は構造高適化(最適化)の後でも可能で、形態を変更して再度高適化(最適化)を行うこともできる。
この処理は、交点と部材の追加・消去コマンドを使って直観的に行うことができる。

4-「コマンドとインターフェイスの改良」について

上記の新機能に合わせたコマンドの追加に加えて、「形態形成(shape edit)で複数の点を選択可能化」、「風荷重の方向の表示」、「補助グリッド面の位置指定」、「高適化(最適化)結果の可否の表示」、等、適宜改良を行っている。

プログラムの使用について

公開版プログラム「形力-1w」 および「形力-2」 はこのサイトからダウンロードして無料で使用することができます。
ただし、他のプログラムに組み込む場合や商業利用等には、著作者の了承を受けることが必要です。(条件によっては了承されないこともあります)

本プログラムを使用又は利用あるいは参照して作成した 成果品・研究・プログラム等の 、発表または公表あるいは出版等を行う場合は、 本プログラムを使用または利用あるいは参照した旨を 、プログラム名と著作者の名前とも、 表記する必要があります。

この「公開版プログラム」は研究教育用であり、実際の建築設計にそのまま使うためのものではありません。このプログラムの使用により生じるいかなる事態に対しても、著作者はその責を負いません。
プログラムの使用に関する質問には答えられません。 建設的な提案や意見は受けますが、返事はできないことが多いと思います。
「形力-1w」は「新水俣門」の設計で実際に使用したプログラム「形力-1」の公開版で、ほとんどの機能は共通です。
その他、プログラムのread me 記載事項を了承の上で使用ください。

形力プログラムのファミリー:

「形力-1」  「新水俣門」で使用したプログラム
「形力-1w」 本サイトでの公開版プログラム
「形力-2」   本サイトでの公開版プログラム:「形力-1w」の発展版

著作者 :渡辺 誠、大崎 純、千葉 貴史

クレジット:
コンセプト・ディレクション・デザイン: 渡辺 誠
高適化(最適化)プログラム: 大崎 純
アプリケーションプログラム: 千葉 貴史

DISCLAIMER:
"KEIRIKI-1W"(THE PROGRAM) IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THE PROGRAM OR THE USE OF THE PROGRAM.

"KEIRIKI-2"(THE PROGRAM) IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THE PROGRAM OR THE USE OF THE PROGRAM.

ダウンロード 「形力-2」:800KB

ダウンロード 「形力-1w」:900KB

「形力-1」プログラムの内容

A-「形態発生プログラム」

1- 全体の曲面を決定する : Mode(プログラム実行時のツール表記:以下同)

Select Mode : まず、面の全体形状を設定する。
ここでの形態とは、連続した曲面である。
平面およびアーチ状の曲面と、そこに捩れを加えた任意の面の3種が可能である

Shape Edit Mode : 選択した3者の基本形を任意に変形する、直感的操作方式にしてある

Edit -- Add Hole : 作成した面に開口部を指定する。
これは次の過程の形態発生時の忌避領域となり、その範囲には形態が発生しない。この領域は指定後の変形もできる。
(忌避領域内は絶対条件とはしていないので、指定領域内に形態が発生することもある)

2- 形態を発生させる : Gene-mize - Generate

次に、その面内に網目状の形態を発生させる。(これが次の工程で処理されて構造部材となる)

形態は、全体が同時に出現するのではなく、方向性を持って成長する。それは形態発生の方法に枝分かれのような逐次形成方式をとっていることによるが、これは同時に生物の形態生成方式との関連を意図している。
この過程での「条件」はパラメータの選択による。(簡易設定モードとマニュアル設定モードが用意されている)

ここで、全体のスケール(size)も決める。
前述のように、この形態発生プログラムは「評価」回路を持たない。 入力したパラメータどおりに形態が発生される。その評価と選択は設 計者に任されている。 (ここに評価機能を組み入れたプログラム「流れのプログラム」は別途 継続開発中)

B-「構造最適化(高適化)プログラム」

3- 荷重を設定する : Load Edit Mode

発生プログラムで得られた形態に負荷される「自重と風荷重」は、自動的に設定される。
このプログラム(「形力-1」)は面を張らない架構を想定しているため、風荷重は網目状の部材にかかるものを対象にしている。
そこに、設計者が任意点に個別の荷重を与える。 これは、部分的に床を支持する、面を張る、等の設計条件に相当する。 (鉛直荷重のみの簡易モードと、任意方向の載荷ができるマニュアルモードとが用意されている)
注:「形力-2」では、面を張った形態を扱うことができる

4- 構造高適化(最適化)を行う : Gene-mize -- Optimize

ここで使用する部材の種類を選択する。
全体のサイズにより部材は単一材と二重材の2タイプがあり、部材幅はS・M・Lの3種を選択する。
ここで二重とは、同一部材が平行に二枚あり、その間隔は応力によらず一定という設定。
ここでも全体のサイズから部材が自動選択される簡易モードと、マニュアル選択モードが用意されている。

これらの条件下でプログラムは処理を行う。
そのアルゴリズムの基本は、「応力が他に比して大きい部材のサイズを増す」過程の繰り返しである。繰り返し回数または開口率の制限に達したら、今度は逆に応力制限を越えない(=大丈夫な)限り、部材サイズを下げていく。
最後に接続相手のいない部材を消去する。

ここで得られた架構が、高適化(最適化)された構造となる。
この一連の過程は自動的に行われる。
(増加や減少の順序アルゴリズム等により結果は変わるので、ここでいう高適(最適)とは絶対唯一のものではない)
部材の適否の判定は日本の規定(鋼構造設計基準)に準拠している。

プログラムを実行すると、構造的に条件を満たさない場合も形状は表示されるが、 条件を満たさない部材は赤系の色で表記されるので、それを参考に全体の部材サイズを再選択し、再度高適化(最適化)することができる。
この過程は繰り返し行うことが可能である。
注:「形力-2」では、上記の結果に「任意部材および面の、消去・追加」を施した上で、再度構造高適化を行うことができる。

「形力-1」プログラムの パラメータとアルゴリズムの説明

注:下記の説明は「形力‐1w」についてのもの。
 「形力‐2」のアルゴリズムの説明は後日予定。

「形力1-w」プログラム:

このプログラムは、指定した連続曲面(または平面)上に、指定した条件に基づく網目状の構造体を得るものである。

全体の流れ:

1. 全体の面状を決定する
2. 指定した条件の形態を発生させる
3. 荷重を設定する
4. 部材を選択する
5. 構造最適化(高適化)を行い、結果を得る

用語:

形態  :連続曲面(または平面)。一定条件下で任意設定。
節点  :上記面上に配される点。
枝   :その節点と節点を結ぶ線分。
分岐  :一点から二本の枝が始まること。
忌避領域 :面上で、点と枝の存在できない範囲。一定条件下で任意設定。

A-「形態発生プログラム」

1- 入力する変数 (KeiRiki-1wから入力)

1. Iran 乱数の初期値。任意の自然数。Iranを変更すると解は変わる。
2. Npmax 節点の数の最大値(4000以下)。先端の全ての節点からの分岐を1つのステップとするため,ステップ終了時に節点の数がNpmaxを超えた時点で終了。また, 後処理で節点が削除されることもあるので,Npmaxはあくまで概算値。
3. Nfp 最下辺に最初に配置する節点(=成長点)の数。配置は下記3で任意入力。
4. Xfp(Nfp個) 最下辺に最初に配置するNfp個の成長点のx座標。0<Xfp<1。
5. L0 枝の長さの標準値。0.1~0.2程度が適当。
6. ΔL 枝の長さのばらつき。標準値に対する割合なので0.2程度が適当。
7. θ 分岐角度の標準値。20~30度程度が適当。
8. Δθ 枝の分岐角度のばらつき。標準値に対する割合なので0.2程度が適当。
9. Lmin 枝の最小値(閾値)。長さがLmin以下の枝を削除して,両端の節点を結合。標準値に対する割合なので0.1~0.2程度が適当。
10. θmin 分岐角度の最小値(閾値)。分岐角度がθmin以下のとき,一方の枝を削除して,先端の2つの節点を結合。標準値に対する割合なので0.1~0.2程度が適当。
11. Stype 曲面タイプ
12. Rx, Ry 忌避領域(円)の中心
13. Rr 忌避領域の半径

2- アルゴリズム

形態を0<x<1, 0<y<3 に正規化された平面に生成した後,曲面あるいは立方体にマッピングする。

1. 最下辺にNfp個の成長点を定め,その座標を(Xi,Yi),(I=1,2,…,Nfp)とする。 ここで,下辺の両端の座標は(0,0), (1,0)である。

2. 成長方向をθi=(0,1), (I=1,2,…,Nfp)とする。

3. 全ての成長点に対して以下の操作を行なって,2つの枝を分岐させる(k=1,2)。

① 区間[0,1]の一様乱数rを発生させ,枝の長さLkを次式で定める。
  Lk=L0[1+ΔL](0.5-r)]

② 区間[0,1]の一様乱数rを発生させ,枝の方向θk(k=1,2)を次式で定める。
θ1=θi -(θ0/2)[1+Δθ](0.5-r)]
θ2=θi +(θ0/2) [1+Δθ](0.5-r)]

③ 節点iからθkの方向にLだけ進んだ点を節点とし,枝を加える。

④ 枝が忌避領域(節点と枝の存在できない範囲)の境界と交差する場合,その交点を新しい節点とする。

⑤ 枝が既存の枝と交差する場合は,その既存の枝の両端の節点の中で節点iから遠い方と節点i結び,節点数を増やさずに枝のみ更新する。

⑥ 新しい節点を成長点とし,追加された枝の方向を成長方向とする。

4. 節点と枝のリストを更新する。

5. 節点数がNpmax以下ならば3へ。

6. 以下の操作を繰り返し,短い枝及び小さい分岐角度がなくなれば終了。

① 長さがL0 ×Lmin以下の枝があれば,その枝を消去して両端の節点を結合する。

② 角度がθ0 ×θmin以下の分岐があれば,短いほうの枝を削除する。

③ 枝が結合されていない節点を消去。

B- 「高適化(最適化)プログラム」

1- opt.dat:入力する変数

「KeiRiki-1wから入力」と書かれていない変数は,opt.dat を直接変更する。

1. E, ν,ρ 弾性係数,ポアソン比,重量密度。(デフォールトは鋼材)

2. h 板厚(Nplateが2のときは,フランジの厚さ)(KeiRiki-1wから入力)

3. σb 応力の上限値。得られる部材が細すぎるときは小さくする。 太すぎるときは大きくする。(デフォールトは鋼材の標準値*)

4. Sx, Sy, Sz x, y, z 方向のスケール。(KeiRiki-1wから入力)

5. Ncs 断面積の種類数。(KeiRiki-1wから入力)

6. Stype 曲面タイプ(1:ベジエ曲面, 1以外:立方体)(KeiRiki-1wから入力)

7. Nmax 最大繰返し数

8. Dmax 最大充実率 (充実率:部材合計面積の、形態面の全表面積に対する比。 1-開口率)

9. IC 後述の5)漸減過程の種類。計算時間短縮のため1(ステップ1のみに固定)

10. Is 自動スケーリング(1:あり,1以外:なし) (KeiRiki-1wから入力)

11. Nplate 部材の板の枚数(1:シングル,2:ダブル)(KeiRiki-1wから入力) (Is=1のときは無効)

12. Dplate 板の距離(KeiRiki-1wから入力) (枚数が2のときのみ,Is=1のときは無効)

2- dv.dat:入力する変数(KeiRiki-1wから入力)

ランク1,2, …, Ncsの部材の幅 Wi (i=1,2, …, Ncs)。
最適化(漸増過程)での計算時間を減少させたいときにはWi (i=2, …, Ncs)を増加させる。
最小ランクの部材が多すぎるときにはWi (i=2, …, Ncs)を減少させる。逆に,最大ランクの部材が多すぎるときには増加させる。 W1.は変更しない。

3- load.dat:入力する変数(KeiRiki-1wから入力)

Nload 載荷条件の数=荷重を与える節点の数。
Iload 載荷条件番号=上記節点の通し番号。
Jmin, Jmax 節点番号の範囲。節点Jmin,からJmaxに次行の荷重を載荷する。
Px, Py, Pz 荷重ベクトル(Px,Py,Pz)の載荷

各過程ごとに,以下の順に表示。
1. 幅を増加させる部材の番号,部材体積,最大応力比,充実率 (result.dat)
2. 終了後,応力比が1を超えている部材の番号と応力比を出力 (violate.dat)

4- アルゴリズム:漸増過程

一般にgreedy method(貪欲法)といわれるheuristics(発見的手法)であり,最初に全部材の幅を微小値(最小ランク)とし,応力比が最大となっている部材のランクを1つ上げる操作を繰り返す。
応力制約あるいはひずみエネルギー制約の下で部材体積の総和を最小化する最適設計問題の近似解となっている。

1. 全ての部材の幅を最小レベル(微小値)にする

2. 荷重の計算

a- 風荷重

単位面積 (1m2)あたり3.372 kN(充実率0.3を基準とする)。
立方体の場合は鉛直面のみに載荷。 ベジェ曲面の場合は全節点に載荷。
部材の中央にy方向に載荷(両端節点に1/2ずつ載荷)

b- 自重

単位体積あたり重量と部材体積から算定
部材の中央に,鉛直下向きに載荷(ただし両端節点に1/2ずつの載荷として処理)

3. 剛性方程式を解いて応力比(最大応力の許容値に対する比)を計算
許容応力は,鋼構造設計規準*で計算。
風は正負2方向を処理。

4. 部材幅が上限値より小さく,応力比が最も大きい部材の幅を1ランク増やす
繰返し数がNmaxを超えたとき,あるいは充実率がDmaxを超えたとき終了。

5. ステップ1へ

5- アルゴリズム:漸減過程

ステップ1 : 1つの部材幅を1ランク下げても,「最大ランクでない全ての部材」で応力制約を満たすとき,部材幅を1ランク下げる操作を繰り返す。**

ステップ2 : 接続する部材がない部材と,片持ち梁形式で先端に付加荷重が作用していない 部材を除去する操作を繰り返す。

注:
* 鋼構造設計基準による
** 「形力-1w」(:公開版プログラム)では、「ステップ1」は計算時間短縮のため 作動させていない。
使用単位: 長さ: m, 力: kN
Z座標が0の節点は自動的に支点として固定される。

「ALGODEX」頁にも「形力-2」と、「形力-3」(シェル版)の記述とmovie、プログラム、があります。