如何使用 Grasshopper 生成若干點之間的最短路徑 (Minimal Path)?

請問右邊的這個圖形是怎麼生成的?在grasshopper裡面又怎麼操作呢?
對這個問題的資料進行補充如下:1:(grasshopper社區提問)http://www.grasshopper3d.com/forum/topics/minimal-path-system?commentId=2985220%3AComment%3A146627
2:Threads on Vimeo
3:wooly paths 2 on Vimeo(部分網站可能需要翻牆)

說明:1、首先我並不了解圖中問題的生成邏輯,(學建築學的沒有研究過圖論,實在是能力有限)但是可以確定的是它一定是按照minimal path的邏輯進行的。
2、補充的這幾個鏈接是否可以解決圖中問題,乃至於生成同樣的結果我自己也存有疑惑。
3、提問的目的是進行討論、分享資料、亦或是有經驗者的答疑解惑也好。質疑問題本身並不能解決問題,不如將自己能查到的文獻分享上來大家共同解決。
4:若是問題真的有不清楚的地方歡迎修改。另外感謝對本問題分享資料和進行修改的同志們!
5:補充題圖來源:ISSUU - AA Landscape Urbanism: Weave, rethinking the urban surface by AA Landscape Urbanism(AA Landscape Urbanism page 37~51)


題主po的圖和鏈接牽扯到了好幾個概念,先大概描述下問題的背景,然後在最後給出如何實現視頻中的結果的gh,趕時間的朋友可以直接拖到最後看gh的截圖。

Minimal path system 是 2015 Pritzker Architecture Prize 獲得者,剛去世不久的建築師,結構工程師Frei Otto於上世紀90年代初提出的一個優化路徑長度的模擬系統。

Frei Otto非常善於利用各種材料本身的特性來研究一些自然結構,並進行人為模擬,他相信物質本身有一張自我組織(self-organize)的力量,能夠幫助人們得到相對優化的方案。比如 Occupation with simultaneous distancing and attracting forces 這個實驗,他利用聚苯乙烯碎屑的互相吸附力與磁針之間的斥力,在水中讓他們形成一個穩態,用以模擬物質在引力和斥力作用下形成的穩定分布結構,這同時也是Frei Otto的城市理論研究的一個重要框架。

如圖,最初凌亂分布的聚苯乙烯碎屑最後均勻的吸附在最近的磁針上,而磁針因為彼此斥力而保持一定的距離,形成了一種近似六邊形的網格。

回到路徑研究的話題上來,在這個領域的研究中,Frei Otto 定義了三種不同的基本形式:1. Direct path networks, 2. Minimal path networks, 3. Minimizing detour networks。

題主貼出來的圖中,最左邊那一列就是屬於 1. Direct path networks, 即連接所有目的地的點,獲得最直接,也最不費腦子的路徑。下圖是Rhino 中五個點全部連接的一個 Direct path networks.

而對於Minimal path networks的研究,Frei Otto再次使出了殺手鐧,即利用物質本身屬性,來研究模擬自然條件下所存在的最節約能量的穩態。這次他使用的道具是肥皂,就是男生平時在澡堂里撿的那種。

在評論貼出的鏈接中有這麼張圖,說的就是肥皂泡模擬的Minimal path system,所謂的最短路徑,就是優化之後的所有線段的長。圖中有比較,原來三點之間的Direct path長度為2,但是利用肥皂泡原理得到的120°夾角路徑,長度為1.93,實現了路徑長度的優化。minimal path system, 顧名思義,通過這個嚴格的數學方式得到的最終結果,路徑總長是唯一的一個定值,也就是理論上的最小值,這個模型最終是一個樹狀模型,沒有任何冗餘的連接。

第三個基本形式Detour path networks中出現了Frei Otto另一個非常有名的模擬實驗,是的,他又用道具了,這次用到的是羊毛線模型 Wool-thread model. 左圖為連接各個目的點的乾燥的羊毛,右圖為濕潤的羊毛。濕潤的羊毛彼此之間因為水的張力作用吸附在了一起,形成了多個路徑變為一個路徑的轉變。這個實驗的意圖在於減少各個目的點的Direct path的總長度,同時讓繞圈因素維持在一個比較低的範圍。個人感覺3. Detour path networks 和 2. Minimal path networks 有很多相似點,都是為了縮短路徑,不同處在於,後者2更傾向於用一個完美的數學思路來模擬,得到的是唯一解。而前者3得到的模擬結果並不是唯一的,因為諸多影響因素的不同,而最終會得到不同的結果,但是這些結果的共同目標都是優化路徑總長度。

對於Detour path system的利用也是非常廣泛,因為在建築行業中,設計並不是唯一解,比如說做城市設計,絕對不會有要求說這片地最後的道路總長一定要滿足Minimal path的理論最小值。相反,一個有多個可控參數,可調整又可優化路網總長度的模擬工具不是更好?Detour path system 橫空出世,來看Zaha hadid事務所2006年在伊斯坦布爾做的這個城市設計,官網有一個視頻,模擬了如何從Direct path到優化後的道路(下圖的形狀)的漸變過程,形象生動。我把鏈接貼出來Kartal Masterplan Vimeo需翻牆。

----------------------------------------------------------------------------------------------------------------------------------------

說了一大堆介紹問題背景的話,現在回到問題上面來,說到這裡,相信大家應該已經熟悉這幾個名詞的概念了。題主貼出來的圖屬於2. Minimal path system,在圖下面貼的那兩個Vimeo的視頻,模擬的是3.Detour path system,不過說實在的,目的類似,平時做做設計的時候也不用分那麼清楚。

下面我來模擬一下視頻中出現的那個線路優化的過程。首先我在rhino中創建了一個方形,任意選取了邊長上的一些點,可以想像這個方形是一個城市範圍,或者一個建築,而那些選定的點是你想在其彼此之間創建連接的功能空間。先上最粗暴的方式 1. Direct path

圖中的綠線代表了所有需要的功能之間的連接,如果最後他們都變成交通空間的話甲方一定會瘋的。於是我們用Frei Otto的羊毛線模型來模擬優化以下這個粗暴的路網系統,在藉助Grasshopper的優化之後(有使用Kangaroo),可以得到和真實羊毛模擬非常近似的結果。

屏幕截圖實在太糙,不能忍。上個Diagram表達一下。如下圖,紅點是上文中所提到的目的點,即需要連接的功能空間,彼此之間淡淡的虛線是Direct path,圖中加粗了的粗線是優化後的結果,當然這個優化結果你可以通過調節Grasshopper中的一些參數值來控制吸附強度和影響範圍,從而影響新路網的最終形態。可以發現,圖中很多粗暴的直線連接都在一股吸附力的作用下黏在了一起,從而減少了總路徑的長度。

附上Grasshopper definition圖,簡單說明下原理。

看到這個圖是不是發現好短好簡單,作為最短路徑生成的GH,他自己好意思長?

這個definition運行的原理就是把原Direct path的線切分成若干段之後接入一個彈力(Spring from line),切分的點接入一個引力(Powerlaw),然後用Kangaroo運算器就能完成模擬過程,最終那些且分點和線段在引入力的作用下重新排布,最後一個電池(curve from control points)就是從運算後得出的點重新組建成新的Curve,也就是我們需要的優化路徑。

至於你要做的事情就是接入你的基本路徑curve,在第一個input接入那堆Direct path,這個你想GH做也行,直接手動連也很快,隨意。然後根據模型中的線間距調節影響範圍和吸附力大小,就是控制接入Powerlaw的那兩個滑條的讀數。至於setting可以直接用默認的參數,不會有什麼太大影響,變化快慢和強度通過上述值和Timer(圖中是1ms)的時間控制就能完成。

接下來輪到題主貼出來的那張圖,也就是關於 2. Minimal path system 應該如何通過steiner tree的演算法實現。
這個我不會。

----------------------------------------------------------------------------------------------------------------------------------------

先寫到這了,看情況再補充,正如我前面提到過的,Minimal path 是一個唯一解的完美模型,對於一個做設計的建築師是否需要用到這個模型,有待討論。個人覺得,這個系統可能更適合用在更加精確的結構研究上吧。上面有不少文字是自己的理解,可能會有理解偏差甚至出錯的地方,歡迎指正。


羊毛吸引的演算法看似很牛逼,但是應用到道路系統上是根本不成立的。如果一個城市的道路都是最短的,那他的效率只在車輛數非常小的情況下效率最高。比如拿北京而言,如果北京的車輛只有現在的5%-10%,那這個系統可能有效降低了交通成本。但是真正考慮到實際系統時,道路的飽和程度是非常高的。如果多條道路互相吸附重疊,隨意軟體模擬一下就會發現交通燈的等待時間會以排列組合的複雜度般地增高(比如6叉路口之類,想想交通燈怎麼分配)。與此同時,因為道路的總長度縮短了,而且部分道路在兩個節點之間非常近的時候,道路容納車輛的效率降低了,很多車根本就開不到道路上,經過的一段道路的車無法進入下一段道路,就會造成交通節點的極端擁堵。如果真的研究過圖論,在非拓撲的情況下(無立交橋)只有方格路網的效率是最高的,而在一定條件下有更高效率的結構是六邊形路網(如果你願意生活在視線永遠不能穿透任何空間的街區里的話)。所以這個理論只是沽名釣譽而已,玩玩就好,不必當真。


galapagos遺傳演算法模塊計算
通過模擬退火演算法和遺傳演算法結合,無限接近最優解


學習一個


3.5 號晚上更新,經歷了一天的波折我發現這是人類智慧才能理解的題目了GG思密達HHHHH歡迎反對加沒有幫助,右邊圖形我都不知道是怎麼個Minimal了,甚至之前提到的1L回復的研究問題我都沒辦法想明白,題主的問題也沒有定義清楚,求各位大神碾壓么么噠

//鑒於題主修改了問題,我也就順著題主給的資料來根據自己的見解答一答
首先希望題主給出問題的圖片的來源,翻了蠻久都沒找到,因為如果要解決問題,我更希望能看到原來這張圖片是如何出現的,而並不是連所謂的答案本身怎麼來都沒搞清楚就去想像一個問題如何如何;
再者根據視頻Wooly path2 on vimeo 或者第一個視頻Threads on vimeo, 所有點對之間都不會形成環路,這種情況下才有討論Minimal path 的可能;而很遺憾的是題主的圖中並不是如此,可能圖中會有很多環路,而且所謂的 「用minimal path 邏輯生成的圖」 也是存在環路的,這個問題就顯得很離奇,所以我才強調原題中圖的來源是哪裡;如果圖中沒有環路,那麼可以維基百科一下Steiner Tree的解法;
另外關於學建築學沒有研究過圖論這種事情就請不要當成理由啦,我就是學著建築一邊在碼代碼的人啊,所以才會理解題主也理解很多在說這個問題有問題的人,希望題主能進一步把問題弄清楚
3.15更新


推薦閱讀:

女生該不該選擇建築系?
建築系做模型有何奇技淫巧?
建築學學生做作品集時對自己之前的設計不滿意怎麼辦?
為什麼 2012 年的建築普利茲克獎要頒給中國建築師王澍?
建築系女生成長為建築師有哪些困難?

TAG:數學 | 幾何學 | 建築學 | Grasshopper | 參數化設計 |