はじめに
かんじさんのツイートのお題が面白そうなので Rhinocros + Grasshopperでチャレンジしてみた
前提の整理
対称となるパーツは基準となるカーブがあり左右に60mmオフセットした幅120mmの曲線材と考える。
そのパーツを分割して幅200の板から作成することを考える
(画像はかんじさんの投稿から引用)
まず2分割して必要な板幅を考える
取り出したカーブの始点・終点を結ぶ直線をX軸としたPlaneを作る
取り出したカーブを左右に60mmオフセットする。そこに Divide Curve で適当な数(ここでは20個)の点を作成する
Plane Coordinates > Bounds > Number をつなげて必要な板長さと板幅を求める
Rectangle で四角形を書き Text Tag で寸法を表示した
Galapagosで最適化してみる
板幅の最大値を計算してGalapagosのFitnessをつなげる。
Genomeは最初に作成したスライダーに接続する
Galapagos Editor内のOptionタブでFitnessはMinimizeに設定する
SolversタブのStart Solverで最適化を始める
残念ながら2分割では板幅200mmには納まらなかった
分割数を増やしてみる
SliderではなくGene Poolをつないだ。Gene Count は2にするとカーブが3分割される
GalapagosのGenomeの接続先をGene Poolに変更する
Gene Count を3にして4分割で最適化を実行。ぎりぎり板幅200mmに納まった!
分割数を自動で決められないかを考えてみる
Gene PoolのGene Count を10に増やす。切断数というSliderとSplit List を追加してGene Poolの値をいくつ取り出すかを変えられるようにした。
板幅の制限値を超えていないかという評価と切断数が少ないほど良いという評価を考慮した式をこんな感じに設定してみた。このあたりの式や係数を考えるのは試行錯誤が結構必要な感じ
最適化を実行したら5分割になった。手動で分割数を決めたときは4分割だったので多くなっている。手間なく分割数を決められることを良しとするかギリギリまで攻めることを良しとするかで選べば良さそう