启发式算法应用于照明设计优化
2021-08-15王爱英吴雨婷王立雄
王爱英,陈 鹏,吴雨婷,王立雄,于 娟
(天津大学 天津市建筑物理环境与生态技术重点实验室,天津 300072)
引言
照明设计优化涉及光源和灯具优化[1]、节能优化[2]、视觉舒适度要求的照明质量优化[3]、以及健康照明与智能照明大趋势下的光谱与控制优化[4, 5]等多个范畴,各优化之间关联,需要统筹优化。传统的照明设计优化是在DIALux等模拟平台上反复比选模拟方案,缺点是费时费力。研究者已经提出了用层次分析法[6]实现综合评估、用最优化方法[7]提高比选速度等方法,致力于扩展优化范围、提高优化效率。
Costa等[8]提出,建筑光环境优化属于难以确定函数表达式的“黑盒”问题。传统的梯度优化方法不适合解决“黑盒”优化,启发式算法则较易解决。启发式算法模拟自然界和社会中发生的各种优化现象,自20世纪70年代以来已经在许多工程领域得到成功应用[9]。建筑领域中,启发式算法在钢结构优化[10]、建筑性能优化[11]、建筑布局优化[12]等方面表现出很好的潜力。将启发式算法引入照明设计优化,对实现智能优化,提高照明设计的效率和质量,改善建筑光环境有重要意义。
1 应用于设计优化的启发式算法
启发式算法将优化问题中无限的解决方案抽象成巨大的有限可行解空间,利用问题拥有的启发信息来引导最优解的搜索过程,使得结果在迭代中逐步导向更符合预设目标的方向,达到减少搜索范围、降低问题复杂度的目的,常见的启发式算法见表1。这些方法适用于解决非凸的函数优化问题,能应对设计实践中的复杂情况,为设计优化的智能化、自动化提供了基础。
表1 常见的启发式算法[13-19]
设计优化可以概括为调整设计方案的部分设计要素(如建筑的空间布局、材料选择等),以实现优化目标(高工效、低能耗等)的过程。对设计优化来说,启发式算法的基本框架如图1所示:
“决策变量”指设计方案中待调整的要素,往往是多个维度的要素组合;
“目标函数”描述优化目标,是评价决策变量组合优劣的一个或多个函数;
“约束条件”是决策变量及其对应的设计方案必须满足的先决条件;
“评估”机制根据目标函数和约束条件对决策变量进行综合评价;
“更新”机制对决策变量进行改动,使其向更优方向演化;
“编码”和“解码”机制将非参数的设计要素转化为可被评估和更新机制处理的形式。
启发式算法还依种类有不同的控制参数,用来调整评估、更新等机制,设定终止条件(优化结束的条件,可以是目标函数值达到的范围、算法迭代次数等)。
启发式算法应用于照明设计优化首先要根据设计要求建立优化的数学模型,模型的特点包括决策变量是定距、定序还是定类;目标函数是一个、几个还是多个;是连续优化问题还是组合优化问题;搜索是精细的局部搜索还是广泛的全局搜索等。根据不同的启发式算法中多种多样的编码、解码、更新和评估机制来选择最佳算法解决问题。现有的照明优化研究为数学模型建立和算法选择提供了参考。
图1 启发式算法的基本框架Fig.1 The basic framework of heuristic algorithms
2 启发式算法解决的照明设计优化问题
根据设计要求和数学模型的特点,可以将启发式算法解决的照明设计优化问题分为两大类:逆设计和多目标优化。
照明逆设计是根据空间形态和空间中的光分布要求(照度、均匀度、亮度等指标)创建光源布置方案的过程。逆设计在照明设计领域的应用最早可以追溯到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个,过多可能导致方案的优化程度下降。
3 启发式算法应用于照明设计优化的实施平台
确定优化问题类型之后,需要选择平台实施优化。上述研究多基于MATLAB平台进行,但该平台与照明设计实践相去甚远;而实践应用的照明设计软件如DIALux、ReLux等均不支持利用启发式算法实现设计优化。因此,需要探索新的照明设计优化平台。因为照明效果与空间形态、表面材料关系密切,要实现全面的照明设计优化,除了照明光源信息(通过导入IES文件获取),还需要建筑空间信息,所以建筑设计软件是更有前景的优化实施平台。研究[40]证明不存在能够解决所有优化问题的通用算法,因此需要针对照明问题的特点选取算法,对应要求实施平台具备基于启发式算法基本原理的可扩展框架,提供编码、解码、评估和更新机制的模块,用户自行“组装”出合适的算法。虽然最理想的实施平台是能够通过自带的模拟工具完成所有的目标函数评估,但目前更多情况下需要和外部模拟工具联动,且需要设计师或研究者自行编程,这就要求实施平台为二次开发提供丰富的接口和简洁的调用方式,并做到能用脚本语言等易懂易学的语言读取模型信息,支持数据的导入导出。
综上,能够实施照明优化的设计软件平台需具备2大前提条件:1)建筑照明全信息集成;2)启发式算法可扩展或二次开发友好。目前,能够满足上述要求的建筑设计软件有Rhino+Grasshopper、Revit+Dynamo、Blender。
3.1 Rhino+Grasshopper
近年来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优化建筑形态参数和开窗参数,以实现高照度和低能耗。
3.2 Revit+Dynamo
信息集成方面,Revit是BIM核心建模软件,支持建筑、结构、电气、照明等多专业的协同设计。Dynamo是一款开源的可视化编程软件,以插件形式存在于Revit中,能以模块化的形式调用大部分的Revit API,获得模型中多专业的参数信息。
算法方面,目前Dynamo并未内置启发式算法,但已经有许多研究者提供了第三方算法库:Rahmani等[47]开发了NSGA-II算法库Optimo,允许用户用Dynamo节点自定义目标函数,且目标函数节点可以和Revit实时交互,实用性较强,已经有设计师用Optimo在声学、采光等领域做出了成功的优化设计实践;曹宁[48]编写了多目标粒子群算法库MOPSO,以办公室为例,以能耗和均匀度为目标,优化了位置不变灯具的光通量;胡启阳[49]编写了线性规划算法库,以冬季和夏季得热量为目标对空间和窗户形态进行了多目标优化,证明了算法的可行性。
3.3 Blender
信息集成方面,借助第三方插件,Blender支持IFC格式的BIM模型导入,还可以完成一些照明分析工作,但功能还需完善。
算法方面,Blender的优势是自带标准的Python 3解释器,因此可以在脚本中调用NumPy、SciPy等科学计算库,还可以用Python对模型进行互动操作。Plebe等基于Blender做了大量的多目标遗传算法应用于照明优化的研究[37, 50]。但Blender内的算法要基于脚本实现,要求使用者有一定的编程能力。
综上,对比信息集成、算法丰富性(可扩展)、非程序人员(设计人员)的二次开发友好性(表5),同时针对照明专业计算准确度需要获取完整的建筑照明信息的考虑,以及多专业协同设计以提升工作效率的未来趋势,Revit+Dynamo是更适合执行启发式算法主导的照明设计优化的实施平台。当然,Revit+Dynamo平台仍然需要从算法种类、设计优化的深度、适应度函数的易用性、算法运行的设计者参与程度等层面改进。
表5 启发式算法应用于照明设计优化的实施平台对比
4 启发式算法在照明设计领域的改进方向
虽然Revit+Dynamo平台有实现启发式算法的优势,但还未达到完全满意。一项针对建筑在读生和建筑师的调查显示[51],设计领域仅有6.6%人士将Dynamo作为最常用的设计平台。这和Dynamo平台提供的优化工具尚不完善有一定关系。该调查还表明,优化过程上,54.3%的受访者希望能参与算法中所有参数的调整,90.7%的受访者希望能使自己的主观选择影响优化进程;优化结果上,82.2%的受访者希望算法给出一组优化结果而不是一个;运行时间上,65%以上的受访者希望能够在1 h内完成优化。而现有的照明优化研究还不能满足上述所有要求,需要结合照明优化问题的特点对启发式算法的编码、解码、评估和更新机制做出改进。基于此结论与实施平台现状,以及建筑领域中其他专业学者对启发式算法的研究成果,提出启发式算法在照明设计领域的改进方向。
4.1 扩展算法种类
研究[52]显示,解决建筑环境的优化问题,遗传算法并不总是最优选择,粒子群算法、退火算法等也各具优势。因此:
1)逆设计方面。可以优先将退火算法、差分进化算法等主流启发式算法引入Dynamo平台。人工鱼群算法、布谷鸟搜索算法等新的启发式算法在快速得到可行解、随机寻优能力方面具有优势,也可以在算法通过对照明优化问题的测试后加入Dynamo算法库。
2)多目标优化方面。可以考虑开发NSGA-III、MOEA/D等算法插件来解决目标数目在3个以上的优化问题,有研究表明这几种算法可以在保证向更优方向演进的前提下获得具有多样性的Pareto前沿解[53]。
4.2 结合照明设计深化算法
相比采光和节能优化,照明设计优化还不够充分和深入,原因有:精确的照明模拟耗时过长,有些优化甚至需要几小时到几天;光源布置、材料选择等非参数的照明设计要素需要合理的编码方式;照明规范的强制性照明指标使得约束条件设置过多,可能导致算法无法找到最优解,等等。
1)针对照明模拟的时长和精度问题。相比高配置硬件或云端执行照明计算等手段,从算法本身做出改进来减少计算耗时是更直接高效的方式。可以改进算法结构来提高计算效率,比如将粒子群算法、人工鱼群算法等群智能优化算法并行化,就能够以增加计算机CPU占用率的方式减少计算时间;还可以简化目标函数,比如在不需要高精度计算光分布的初步设计阶段,利用光通转移理论将空间简化为三面模型[54]来近似计算照明指标。
2)针对编码和解码问题。照明设计优化的编码难点主要体现在光源布置的编码表达上。有研究允许光源位置任意的布局方式,但在实际工程中,受安装载体和空间使用限制,任意布局并不合理。可以依据设计方案先设定光源的布置规则,提取描述规则的控制参数作为决策变量,控制参数应具有:a)唯一性,算法运行中可能产生的每一组决策变量都和有效的设计方案一一对应;b)连续性,相似的设计方案编码后的形式也应相近。例如,对矩形房间内的网格布灯方式来说,设定控制参数为安装高度、横向间距、纵向间距、距墙距离,即可生成丰富合理的布灯方案。
3)针对约束条件过多导致优化困难的问题。在设定合理的约束范围限值基础上,可采用启发式算法的“内点法”对约束条件进行分析,使得更新得到的新决策变量落在约束条件范围内。内点法属于约束优化算法,通过引入效用函数的方法将约束优化问题转换成无约束问题,再利用优化迭代过程不断地更新效用函数,当迭代点靠近边界时,目标函数陡然增大,阻止迭代点穿越边界,以使算法收敛。
4.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
5 结语
在照明领域,启发式算法用以解决逆设计问题和多目标优化问题,优化目标包括根据参照光分布生成照明方案、提升工效和舒适度、减少能耗等多个方面,常见的启发式算法都得到了应用。现有的设计平台中最适合实施启发式算法照明设计优化的是Revit+Dynamo。
启发式算法应用于照明设计优化的改进方向包括:
1)扩展算法种类;
2)结合照明设计的特点,从设定算法结构、以参数化方式实现算法的编码和解码、引入效用函数设置约束条件保证算法收敛3个角度深化算法;
3)编写插件时将用户主观偏好加入算法评估和更新过程。
应此需求,在Dynamo中开发相应插件,旨在使建筑照明设计优化更加高效、精准,推动设计优化的智能化、自动化。