王愛英,陳 鵬,吳雨婷,王立雄,于 娟
(天津大學 天津市建筑物理環境與生態技術重點實驗室,天津 300072)
照明設計優化涉及光源和燈具優化[1]、節能優化[2]、視覺舒適度要求的照明質量優化[3]、以及健康照明與智能照明大趨勢下的光譜與控制優化[4, 5]等多個范疇,各優化之間關聯,需要統籌優化。傳統的照明設計優化是在DIALux等模擬平臺上反復比選模擬方案,缺點是費時費力。研究者已經提出了用層次分析法[6]實現綜合評估、用最優化方法[7]提高比選速度等方法,致力于擴展優化范圍、提高優化效率。
Costa等[8]提出,建筑光環境優化屬于難以確定函數表達式的“黑盒”問題。傳統的梯度優化方法不適合解決“黑盒”優化,啟發式算法則較易解決。啟發式算法模擬自然界和社會中發生的各種優化現象,自20世紀70年代以來已經在許多工程領域得到成功應用[9]。建筑領域中,啟發式算法在鋼結構優化[10]、建筑性能優化[11]、建筑布局優化[12]等方面表現出很好的潛力。將啟發式算法引入照明設計優化,對實現智能優化,提高照明設計的效率和質量,改善建筑光環境有重要意義。
啟發式算法將優化問題中無限的解決方案抽象成巨大的有限可行解空間,利用問題擁有的啟發信息來引導最優解的搜索過程,使得結果在迭代中逐步導向更符合預設目標的方向,達到減少搜索范圍、降低問題復雜度的目的,常見的啟發式算法見表1。這些方法適用于解決非凸的函數優化問題,能應對設計實踐中的復雜情況,為設計優化的智能化、自動化提供了基礎。
表1 常見的啟發式算法[13-19]
設計優化可以概括為調整設計方案的部分設計要素(如建筑的空間布局、材料選擇等),以實現優化目標(高工效、低能耗等)的過程。對設計優化來說,啟發式算法的基本框架如圖1所示:
“決策變量”指設計方案中待調整的要素,往往是多個維度的要素組合;
“目標函數”描述優化目標,是評價決策變量組合優劣的一個或多個函數;
“約束條件”是決策變量及其對應的設計方案必須滿足的先決條件;
“評估”機制根據目標函數和約束條件對決策變量進行綜合評價;
“更新”機制對決策變量進行改動,使其向更優方向演化;
“編碼”和“解碼”機制將非參數的設計要素轉化為可被評估和更新機制處理的形式。
啟發式算法還依種類有不同的控制參數,用來調整評估、更新等機制,設定終止條件(優化結束的條件,可以是目標函數值達到的范圍、算法迭代次數等)。
啟發式算法應用于照明設計優化首先要根據設計要求建立優化的數學模型,模型的特點包括決策變量是定距、定序還是定類;目標函數是一個、幾個還是多個;是連續優化問題還是組合優化問題;搜索是精細的局部搜索還是廣泛的全局搜索等。根據不同的啟發式算法中多種多樣的編碼、解碼、更新和評估機制來選擇最佳算法解決問題。現有的照明優化研究為數學模型建立和算法選擇提供了參考。
圖1 啟發式算法的基本框架Fig.1 The basic framework of heuristic algorithms
根據設計要求和數學模型的特點,可以將啟發式算法解決的照明設計優化問題分為兩大類:逆設計和多目標優化。
照明逆設計是根據空間形態和空間中的光分布要求(照度、均勻度、亮度等指標)創建光源布置方案的過程。逆設計在照明設計領域的應用最早可以追溯到1993年Schoeneman等[20]的研究:建立光源數量、位置和配光不變的虛擬空間,用戶手動繪制出參照光分布,程序以約束最小二乘法擬合出各個光源提供的光通量。該研究還指出,參照光分布條件下,對光源位置和強度的逆設計是非線性約束優化問題。表2例舉了啟發式算法解決的照明逆設計問題。應用啟發式算法使非線性約束優化問題的計算難度大大降低,可調優的參數范圍大大增加。
表2 啟發式算法解決的照明逆設計問題舉例
當設計需要優化的目標較多且有目標存在矛盾時,就不宜采用逆設計策略。這類問題往往需要多個目標間的均衡和取舍,選出若干較合理的方案,即多目標優化。多目標優化算法可以分為經典方法和Pareto排序方法兩大類:基于經典方法的多目標優化通過一些適配方法將多個目標整合成單一的目標函數,算法運行一次產生一個優化結果;基于Pareto排序方法的多目標優化則對各個目標進行綜合排序,運行一次可得到一組在各個目標間偏重不同的結果,即Pareto前沿解。基于經典方法的多目標優化中可以嵌入多種多樣的啟發式算法(表3),基于Pareto排序方法的多目標優化問題NSGA-II算法占絕對優勢(表4)。
逆設計往往需要一組給定的參照值。能夠確定存在完全符合參照值要求的方案時,可設約束也可不設約束。如果求目標的最低值(也可理解為參照值設為0),則要根據實際情況設置約束條件以保證生成有意義的方案。這時,生成的最優解往往會分布在約束條件限定出的邊界上,比較考驗算法的全局搜索能力。
表3 基于經典方法解決的照明多目標優化問題舉例
表4 基于Pareto排序方法解決的照明多目標優化問題舉例(算法均為NSGA-II)
經典方法可以解決目標有矛盾或無矛盾的多目標優化問題。目標有矛盾時,在目標函數設計中要注意使各個目標同向。例如高照度和低眩光是一對相反的目標,但算法解決的是最小化問題,就要對照度值求倒數或求相反數,這樣,照度變高或眩光變低才都會使目標函數減小。還要用歸一化等方法將各目標的變化范圍統一,保證所有目標都能得到優化,再在歸一化的數值基礎上確定各目標的權重值。理論上經典方法的最優解可以收斂到穩定的范圍內,優化程度與算法的局部搜索能力有關。
以Pareto排序方法解決多目標優化時,優化目標間應當存在矛盾,即決策變量使得一個目標變優時可能使另一個目標變劣,如均勻度和能耗,或2種偏好不同的人群的舒適度。若部分子目標間沒有矛盾,則應參考經典方法,將這些子目標整合成一個目標。存在矛盾的目標一般不需要做歸一化處理。理論上得到的最優解集是真實Pareto前沿解的子集,因此該方法具有不確定性。以方案的優化程度為重時,可以選擇經典方法,以方案的多樣性為重時,可以選擇Pareto排序方法。此外,NSGA-II解決的存在矛盾的目標數量一般不超過3個,過多可能導致方案的優化程度下降。
確定優化問題類型之后,需要選擇平臺實施優化。上述研究多基于MATLAB平臺進行,但該平臺與照明設計實踐相去甚遠;而實踐應用的照明設計軟件如DIALux、ReLux等均不支持利用啟發式算法實現設計優化。因此,需要探索新的照明設計優化平臺。因為照明效果與空間形態、表面材料關系密切,要實現全面的照明設計優化,除了照明光源信息(通過導入IES文件獲取),還需要建筑空間信息,所以建筑設計軟件是更有前景的優化實施平臺。研究[40]證明不存在能夠解決所有優化問題的通用算法,因此需要針對照明問題的特點選取算法,對應要求實施平臺具備基于啟發式算法基本原理的可擴展框架,提供編碼、解碼、評估和更新機制的模塊,用戶自行“組裝”出合適的算法。雖然最理想的實施平臺是能夠通過自帶的模擬工具完成所有的目標函數評估,但目前更多情況下需要和外部模擬工具聯動,且需要設計師或研究者自行編程,這就要求實施平臺為二次開發提供豐富的接口和簡潔的調用方式,并做到能用腳本語言等易懂易學的語言讀取模型信息,支持數據的導入導出。
綜上,能夠實施照明優化的設計軟件平臺需具備2大前提條件:1)建筑照明全信息集成;2)啟發式算法可擴展或二次開發友好。目前,能夠滿足上述要求的建筑設計軟件有Rhino+Grasshopper、Revit+Dynamo、Blender。
近年來Rhino因其強大的造型能力受到建筑師青睞,基于該平臺的可視化編程插件Grasshopper使啟發式算法應用于設計優化的難度大大降低。
信息集成方面,Grasshopper可以通過安裝插件和建筑環境模擬軟件實現信息數據共享,例如通過Geco[41]插件將模型導入Ecotect,或通過Ladybug、Honeybee系列插件[42]調用Radiance做采光和照明分析。
算法方面,Galapagos[43]是Grasshopper內置模塊,可以實現遺傳算法、退火算法等單目標優化算法;Octopus[44]是一款第三方插件,目前支持多目標優化算法SPEA2、分類算法SVM(支持向量機)、人工神經網絡等,并支持在進化過程中由用戶參與更新。基于這些工具可以在Grasshopper中搭建優化框架。陳航[45]使用Ladybug和Honeybee建立建筑性能模擬平臺,以Octopus進行優化,得到了以低能耗、高舒適度為目標的窗口設計方式。Chang等[46]利用Galapagos優化建筑形態參數和開窗參數,以實現高照度和低能耗。
信息集成方面,Revit是BIM核心建模軟件,支持建筑、結構、電氣、照明等多專業的協同設計。Dynamo是一款開源的可視化編程軟件,以插件形式存在于Revit中,能以模塊化的形式調用大部分的Revit API,獲得模型中多專業的參數信息。
算法方面,目前Dynamo并未內置啟發式算法,但已經有許多研究者提供了第三方算法庫:Rahmani等[47]開發了NSGA-II算法庫Optimo,允許用戶用Dynamo節點自定義目標函數,且目標函數節點可以和Revit實時交互,實用性較強,已經有設計師用Optimo在聲學、采光等領域做出了成功的優化設計實踐;曹寧[48]編寫了多目標粒子群算法庫MOPSO,以辦公室為例,以能耗和均勻度為目標,優化了位置不變燈具的光通量;胡啟陽[49]編寫了線性規劃算法庫,以冬季和夏季得熱量為目標對空間和窗戶形態進行了多目標優化,證明了算法的可行性。
信息集成方面,借助第三方插件,Blender支持IFC格式的BIM模型導入,還可以完成一些照明分析工作,但功能還需完善。
算法方面,Blender的優勢是自帶標準的Python 3解釋器,因此可以在腳本中調用NumPy、SciPy等科學計算庫,還可以用Python對模型進行互動操作。Plebe等基于Blender做了大量的多目標遺傳算法應用于照明優化的研究[37, 50]。但Blender內的算法要基于腳本實現,要求使用者有一定的編程能力。
綜上,對比信息集成、算法豐富性(可擴展)、非程序人員(設計人員)的二次開發友好性(表5),同時針對照明專業計算準確度需要獲取完整的建筑照明信息的考慮,以及多專業協同設計以提升工作效率的未來趨勢,Revit+Dynamo是更適合執行啟發式算法主導的照明設計優化的實施平臺。當然,Revit+Dynamo平臺仍然需要從算法種類、設計優化的深度、適應度函數的易用性、算法運行的設計者參與程度等層面改進。
表5 啟發式算法應用于照明設計優化的實施平臺對比
雖然Revit+Dynamo平臺有實現啟發式算法的優勢,但還未達到完全滿意。一項針對建筑在讀生和建筑師的調查顯示[51],設計領域僅有6.6%人士將Dynamo作為最常用的設計平臺。這和Dynamo平臺提供的優化工具尚不完善有一定關系。該調查還表明,優化過程上,54.3%的受訪者希望能參與算法中所有參數的調整,90.7%的受訪者希望能使自己的主觀選擇影響優化進程;優化結果上,82.2%的受訪者希望算法給出一組優化結果而不是一個;運行時間上,65%以上的受訪者希望能夠在1 h內完成優化。而現有的照明優化研究還不能滿足上述所有要求,需要結合照明優化問題的特點對啟發式算法的編碼、解碼、評估和更新機制做出改進。基于此結論與實施平臺現狀,以及建筑領域中其他專業學者對啟發式算法的研究成果,提出啟發式算法在照明設計領域的改進方向。
研究[52]顯示,解決建筑環境的優化問題,遺傳算法并不總是最優選擇,粒子群算法、退火算法等也各具優勢。因此:
1)逆設計方面。可以優先將退火算法、差分進化算法等主流啟發式算法引入Dynamo平臺。人工魚群算法、布谷鳥搜索算法等新的啟發式算法在快速得到可行解、隨機尋優能力方面具有優勢,也可以在算法通過對照明優化問題的測試后加入Dynamo算法庫。
2)多目標優化方面。可以考慮開發NSGA-III、MOEA/D等算法插件來解決目標數目在3個以上的優化問題,有研究表明這幾種算法可以在保證向更優方向演進的前提下獲得具有多樣性的Pareto前沿解[53]。
相比采光和節能優化,照明設計優化還不夠充分和深入,原因有:精確的照明模擬耗時過長,有些優化甚至需要幾小時到幾天;光源布置、材料選擇等非參數的照明設計要素需要合理的編碼方式;照明規范的強制性照明指標使得約束條件設置過多,可能導致算法無法找到最優解,等等。
1)針對照明模擬的時長和精度問題。相比高配置硬件或云端執行照明計算等手段,從算法本身做出改進來減少計算耗時是更直接高效的方式。可以改進算法結構來提高計算效率,比如將粒子群算法、人工魚群算法等群智能優化算法并行化,就能夠以增加計算機CPU占用率的方式減少計算時間;還可以簡化目標函數,比如在不需要高精度計算光分布的初步設計階段,利用光通轉移理論將空間簡化為三面模型[54]來近似計算照明指標。
2)針對編碼和解碼問題。照明設計優化的編碼難點主要體現在光源布置的編碼表達上。有研究允許光源位置任意的布局方式,但在實際工程中,受安裝載體和空間使用限制,任意布局并不合理。可以依據設計方案先設定光源的布置規則,提取描述規則的控制參數作為決策變量,控制參數應具有:a)唯一性,算法運行中可能產生的每一組決策變量都和有效的設計方案一一對應;b)連續性,相似的設計方案編碼后的形式也應相近。例如,對矩形房間內的網格布燈方式來說,設定控制參數為安裝高度、橫向間距、縱向間距、距墻距離,即可生成豐富合理的布燈方案。
3)針對約束條件過多導致優化困難的問題。在設定合理的約束范圍限值基礎上,可采用啟發式算法的“內點法”對約束條件進行分析,使得更新得到的新決策變量落在約束條件范圍內。內點法屬于約束優化算法,通過引入效用函數的方法將約束優化問題轉換成無約束問題,再利用優化迭代過程不斷地更新效用函數,當迭代點靠近邊界時,目標函數陡然增大,阻止迭代點穿越邊界,以使算法收斂。
對應于Revit+Dynamo作為照明設計優化優選實施平臺的結論,以及上述滿意度調查和算法深化要求,需要編寫以下插件,保證啟發式算法與實施平臺的深度融合:
1)變量范圍生成器,根據設計基礎條件和約束條件估算決策變量的初始范圍;
2)約束條件求解器,根據設計目標和照明規范判定算法生成的決策變量是否有效;
3)目標函數求解器,支持“黑盒”式優化,即通過非數學函數的形式求出目標函數值;
4)偏好選擇工具,支持將主觀評價函數,即反映用戶主觀偏好的函數加入啟發式算法的評估和更新過程;
5)算法求解器,提供可供用戶自由選擇的啟發式算法庫,支持根據算法類型輸入不同控制參數;
6)編碼和解碼器,集成在每個模塊之內,根據不同啟發式算法結構在每次迭代的更新之前執行編碼過程,評估之前執行解碼過程。
插件間關系如圖2所示。
圖2 基于Revit+Dynamo的照明設計優化插件框架Fig.2 Framework of lighting design optimization plug-in based on Revit+Dynamo
在照明領域,啟發式算法用以解決逆設計問題和多目標優化問題,優化目標包括根據參照光分布生成照明方案、提升工效和舒適度、減少能耗等多個方面,常見的啟發式算法都得到了應用。現有的設計平臺中最適合實施啟發式算法照明設計優化的是Revit+Dynamo。
啟發式算法應用于照明設計優化的改進方向包括:
1)擴展算法種類;
2)結合照明設計的特點,從設定算法結構、以參數化方式實現算法的編碼和解碼、引入效用函數設置約束條件保證算法收斂3個角度深化算法;
3)編寫插件時將用戶主觀偏好加入算法評估和更新過程。
應此需求,在Dynamo中開發相應插件,旨在使建筑照明設計優化更加高效、精準,推動設計優化的智能化、自動化。