GH小學(xué)堂之淺析Galapagos運(yùn)算器與計算機(jī)方案模擬優(yōu)化
那么今天第一篇文章我們將進(jìn)入GH小學(xué)堂,和大家簡單聊聊一個非常有趣并且與眾不同的運(yùn)算器:Galapagos運(yùn)算器。

Part 1
?基本介紹
相信大家如果是了解GH的話,肯定會其中的一個運(yùn)算器印象深刻。
首先不同與其他運(yùn)算器默認(rèn)的灰色,這個運(yùn)算器從外觀上就與眾不同,呈現(xiàn)出一個靚麗的紫色。

并且雖然它有兩個輸入端,但是不同于一般GH運(yùn)算器輸入端位于兩側(cè),它有一個輸入端竟然是位于下側(cè),除此之外當(dāng)大家嘗試像其他運(yùn)算器一樣把數(shù)值連接到這些輸入端的話,童鞋們會吃驚的發(fā)現(xiàn)無論我們連接什么數(shù)據(jù),這兩個接口就像是加了蓋子一樣的無法連接。



那么這個處處都顯得和別人不一樣的運(yùn)算器就是咱們今天課程的主角,位于Prm-util組中的Galapagos運(yùn)算器。

Part 2
?功能與使用
因為Galapagos運(yùn)算器如此的不同,眾多GH新手都對它感到困惑和不解,但是對于熟悉GH的人都知道,這個運(yùn)算器對于咱們Gh中的方案優(yōu)化是有著不可代替的重要地位的,所以下面小編就將向大家解析下這個運(yùn)算器具體的功能和用法。
Galapagos運(yùn)算器,全名Galapagos Evolutionary Solver運(yùn)算器。以我自己的看法,它的主要功能是通過遺傳算法或者退火算法,根據(jù)fitness段輸入值的極值設(shè)置,通過對于Genome端的值的測試遍歷,查找出極值狀態(tài)下對應(yīng)的Genome端參數(shù)。
當(dāng)然這樣說相信小伙伴們大多會像我之前在流動的美麗:極小曲面的制作一文中介紹極小曲面一樣,處于一個懵圈狀態(tài)。

所以下面,我們通過一個非常簡單的案例來幫助大家了解一下Galapagos運(yùn)算器的基本工作原理和具體使用方法。
我們先在GH中任意繪制一個圓形

重參之后,使用evaluate curve在上面使用0-1變化的slider滑竿,隨機(jī)提取三個點(diǎn)。

下面我們將這三個點(diǎn)使用polyline(注意C端布爾值要設(shè)置為TRUE)連接成一個三角形,使用area運(yùn)算器求出他的面積。

很明顯當(dāng)我改變?nèi)齻€滑竿數(shù)值的時候我們?nèi)切蔚拿娣e也在變化,那么這個時候如果我們想求得三個滑竿在什么數(shù)值下圍合成的三角形面積最大該怎么操作了?

雖然如果大家對于基礎(chǔ)幾何有一定掌握的話應(yīng)該都知道答案,但是在這咱們能不能通過計算機(jī)的操作幫助我們求出解了?按照基本思路,我們需要測試三個滑竿在值改變的時候?qū)?yīng)的面積,通過比較來找出最大值(更準(zhǔn)確的說我們只需要在一個點(diǎn)不動的情況下測試另外兩個點(diǎn)位置的變化,這樣才有唯一解,否則會有無數(shù)解,最大三角形沿圓轉(zhuǎn)動),但這樣毋庸置疑會花費(fèi)很多很多的時間,并且如果大家沒有掌握正確的測試方法的話,測試本身也是很難進(jìn)行下去的。而這個時候我們的Galapagos運(yùn)算器就能發(fā)揮它的用處了。
大家還記得我之前對于Galapagos運(yùn)算器功能的總結(jié)嗎?通過遺傳算法或者退火算法,根據(jù)fitness段輸入值的極值設(shè)置,通過對于Genome端的值的測試遍歷,查找出極值狀態(tài)下對應(yīng)的Genome端參數(shù)。
那么對照咱們的測試需求,很明顯我們需要的是根據(jù)三角形面積的最大值,找出對于兩個slider的數(shù)值(控制點(diǎn)的位置)。所以我們需要把面積值鏈接到fitness,而把兩個滑竿鏈接到genome。但是對于Galapagos運(yùn)算器,大家需要注意的就是,他的鏈接不是由panel或者slider鏈接過去,相反大家要先點(diǎn)擊Galapagos運(yùn)算器本身的端口,反向鏈接到輸入端運(yùn)算器。


鏈接好了之后,我們就可以雙擊Galapagos運(yùn)算器,進(jìn)入編輯界面。

在這雖然有很多參數(shù),但是最為重要的實際上是Fitness中的極值選擇,因為一般對于類似Galapagos運(yùn)算器這樣的優(yōu)化,我們都會追求一個最大值或者最小值的極值狀態(tài)。以這個例子為例,我們追求的是三角形面積的最大情況,所以我們選擇Maximize.

之后點(diǎn)擊solver,我們需要選擇我們到底采用那種算法進(jìn)行優(yōu)化結(jié)算,第一個是遺傳算法第二種是退火算法,對于他們具體的區(qū)別和適用范圍本次教程就不再展開了,假設(shè)我們選擇退火算法。

點(diǎn)擊start solver,大家可以看到,滑竿的數(shù)值就開始自行變化進(jìn)行模擬優(yōu)化了。并且三角形的形狀經(jīng)過短暫的測試就到了一個近似等邊三角形的狀態(tài),可以看到退火算法的效率還是相當(dāng)之高的。

并且我們可以看到解算的時候右下角的數(shù)值(三角形面積值)是在不斷變化修正的。

經(jīng)過多次演算優(yōu)化之后,當(dāng)大家發(fā)現(xiàn)最高數(shù)值不再改變之后就可以點(diǎn)擊stop solver停止運(yùn)算。選擇最高的那個數(shù)值,點(diǎn)擊Reinstate.

大家可以發(fā)現(xiàn)你的slider滑竿就停留在極值所對應(yīng)的數(shù)值上,你也就在GH中得到了三角形面積最大時所對應(yīng)的點(diǎn)的位置了。

Part 3
?建筑優(yōu)化
相信通過這個例子,大家對于Galapagos運(yùn)算器的功能和基本用法已經(jīng)有了一個大致的大致的了解,但是在實際的設(shè)計過程中我們又是如何使用Galapagos運(yùn)算器來優(yōu)化我們的建筑方案的了?相信這應(yīng)該也是大部分學(xué)生會感到困惑的事情。
當(dāng)然在這需要說明一下,真正實際設(shè)計過程中的計算機(jī)的方案優(yōu)化是非常復(fù)雜并且也是非常占據(jù)計算機(jī)資源的,并且還涉及到眾多復(fù)雜的建筑分析,學(xué)生階段的大家無論是軟件技能還是計算機(jī)硬件基本上是很難企及到的,所以在這,我們通過一個最簡單的理想情況下的建筑優(yōu)化例子給大家說明一下設(shè)計過程中的我們?nèi)绾瓮ㄟ^特定的參量對建筑進(jìn)行優(yōu)化。
首先說明下限制條件,我們要設(shè)計一個200平米的建筑,假設(shè)建筑為單層矩形,我們可以改變的參數(shù)是建筑的長寬比和建筑的旋轉(zhuǎn)角度。

然后我們要求出在什么樣的長寬比和旋轉(zhuǎn)角度下建筑四周墻體的有害太陽輻射最低。
首先我們使用Honeybee的seperate by normal提取我們的墻體。

之后我們使用Ladybug計算我們墻體在冬季和夏季分別的輻射量(這部分涉及到部分Ladybug的基本操作,本次教程就不做展開了)

對于有害輻射的計算我們就簡單的使用有害的夏季輻射減去有利的冬季輻射,結(jié)果的差值就是我們的有害輻射值,很明顯咱們需要通過我們建筑長寬比以及選擇角度的調(diào)整求出這個差值的最小值。

下面就要用到我們的Galapagos運(yùn)算器,類似于之前的三角形,我們把這個輻射的差值鏈接到fitness端。Genome端鏈接我們可以改變的長寬比和角度值。

最后我們只要雙擊進(jìn)入Galapagos運(yùn)算器,選擇最小值。

選擇一個解算方法,點(diǎn)擊start solver我們就可以根據(jù)輻射值進(jìn)行優(yōu)化求解了。

雖然就像之前說的,現(xiàn)實項目中計算機(jī)方案優(yōu)化遠(yuǎn)遠(yuǎn)比這個復(fù)雜很多,但是拋磚引玉,相信通過這兩個例子的介紹,大家對于Galapagos運(yùn)算器的使用和計算機(jī)方案優(yōu)化應(yīng)該也有了一個大致的了解,這也是本次小學(xué)堂想實現(xiàn)的目的。
