昨日の分をこちらに置きました。エッジの内外判定は、なかなかスマートにいっていないのですが、エッジのcurveを20分割してその21分割点がすべて敷地に入っているか否かで判定しています。周長の評価は必要に応じて追加してください。152,152行目あたりのコメントを参考に。imageのように評価変位の範囲グラフをマウスで選択すれば表示できるようでした。管理人Delaunayグラフを障害物(建物ボリューム?)間に障害物のエッジを利用して、張る、、というアイディアですが、細かなrandomドロネー網ではないので、上左図中シアン色の線のようなエッジが張られない、という点が気になります。全グラフでもいいかと思いました。どのように見ればよいのか、ちょっと掴めなかったです。一意に決まらない(どの順番で辿るか、という組み合わせが爆発する上に、辿る順番の問題は辿った距離総長を短くする、という評価で考えられることが多く、今回の問題設定と相性が悪い)ので、問題に対する解が得られにくいと思いました。したほうが、目的に近づけるのではないかと思いました。簡素にできたトラックの長さの最大化でfitness、になっていますが、部屋数とトラック総長を短く、などの評価で実際的なアプライを試してみてください。トラックのカーヴの自己交差をどのよに排除するか、は悩ましいようにも思いますが、セルを生成させて部屋の広さに条件付けした部屋数で評価すると、交差したカーヴは自動的に評価が低くなるのではないかと想像しています。トラックの中心線をどのようにレイアウトするか、という問題はかなりこの計画の根幹だと思います。この中心線の良し悪しによって、上部構造や部屋数、周遊性、ネットワークコンパクトネスなどすべてを左右するので、かなり徹底的に「中心線探し」をやるべきだと思います。3次元エッジ、閉じていないエッジでもセルが作れるように改良してあります。エッジが重なった部分は重なったエッジ同士でセルの領域を取り合ってしまうので、階ごとに分けて使う必要があります。全体のネットワークを評価するために、全フロアエッジ+シャフトエッジを扱うコンポーネントも作っています。これだとまだハンドリングが悪いかもしれませんが、とりあえずスタディなどには使えるでしょう。居室配置の感覚などをこれでつかんでください。コードの仕組みは次回スタジオで説明します。