关于计算机是否能够协助建筑学中核心且需要人类创造力的“设计过程”,早在1960年代就已是当时建筑学会议或期刊上不断被讨论的议题。其中一场著名的会议是1964年末在波士顿举办的“建筑学和计算机”大会 (Architecture and the Computer)’。相关人士齐聚一堂,与会者中不仅有包豪斯院校的创办人沃尔特·格罗皮乌斯,还有马文·闵斯基等人工智能领域的学者以及IBM等大型科技企业的研究人员。会议中激辩的议题集中在计算机是否能够以及如何处理设计过程上。
倘若想要让计算机介入处理建筑设计的核心过程中,就意味着首先要承认设计是一个“解决问题”(problem-solving)的过程,而不是无法被描述的建筑师的天才与灵感。对于任一问题,只有在它首先被抽象描述为一个数学模型后,才能使用计算机对其进行计算求解。在会议中,建筑教育家罗斯顿·兰道(Royston Landau)提到了克里斯托弗·亚历山大和约翰·克里斯托弗·琼斯(John Christopher Jones)在设计过程中所使用的启发法,并强调了其重要作用。他将建筑设计作为归纳(induction)类型的问题,并认为建筑“形式”是建筑师为解决问题而提出的假设。相对地,麻省理工建筑学院的教授斯坦福德·安德森(Standford Anderson)则批判了这种将建筑设计看作解决问题的观点。而建筑设计是否能被认为是一个“解决问题”的过程,直到今天仍然在被争议和讨论中。
如果我们先抛开这些争议,接受“建筑设计是一个解决问题的过程”的观点,那么,要设计出一个在特定条件下“最好”的建筑就意味着需要为这个问题找到一个“最优解”。而人类对于求解问题的最优解的探索有着漫长的历史,一代代数学家们研究出了各种计算方法。早在17世纪的欧洲,费马(Pierre de Fermat)就提出了著名的费马引理(Fermat’s theorem)来处理极值问题(maxima and minima);随后出现了拉格朗日乘数法 (Lagrange Multiplier Method);19世纪,法国数学家柯西(Augustin Louis Cauchy)提出了梯度下降法(Gradient descent);到了20世纪前叶,为了解决社会生产中的实际工程问题,苏联数学家康托罗维奇(L.V.Kantorovich)提出了解决下料问题和运输问题两种线性规划²(linear programming)问题的求解方法。20世纪40年代之后,随着计算机的出现与介入,人们有了强有力的工具,最优化理论及其算法迅速发展起来,在生产生活中发挥越来越大的作用。
最优化理论研究的是最优化问题(optimization problem),即是从所有可行解(feasible solution)中寻找到最优解(optimal solution)的问题。最优化问题包含三个基本要素:用于衡量优化结果好坏的目标函数 (objective function)、需要通过数据来确定的变量(variable),以及需要满足的约束条件(constraints)。基于这三个要素,一个问题的最优解就可以被描述为:在一定的约束条件下,求解出目标函数最大或最小值,这个极值所对应的变量取值,就是此问题的最优解。因此接下来对最优化问题的探究,就可以明确为如何求得目标函数的最大或者最小值以及它们对应的变量取值,这个求解过程也就是最优化问题的算法设计。前面已经回溯了历史上求解最优化问题的一些经典方法(例如费马引理、拉格朗日乘数法等),随着计算机的使用,特别是机器学习(Machine Learning)技术的使用,针对求解最优化问题已经有了更多高效的优化算法。机器学习的一些常用算法将会在第四章和第五章中具体介绍。
从数学角度初步了解了如何求解问题的最优解之后,我们可以进一步审视建筑设计是如何作为最优化问题被处理的。
当我们认同建筑设计问题可以作为最优化问题被求解的时候,它就可被视为这样一种过程:首先生成一群由各种可行解所构成的解空间 (solution space),从中找到针对该设计问题的最优解。如果我们把某个建筑设计问题视为一个起始点X,那么该点可以以抽象化的形式,类似于一种树状结构连接到各个可能的解,如建筑设计方案Y、Y₂……Y(图3.2.1)。这些可行解的集合即解空间。
图3.2.1起始点和可能性
如何从解空间的无数个可能性中找到最优解,《控制论和科学方法论》一书提出了较为容易理解的步骤:
i.列举这个解空间的各个可能性(例如将某个设计环节中可能的解都列举出来);
ii.为该解空间中指定出目标(例如某个设计可能性必须满足特定的指标);
iii.通过控制条件来使得该系统逐渐向目标前进,最终找到最优解。
对照前述最优化问题中的三要素,这里提到的“目标”可被理解为目标函数,“控制条件”可被理解为约束条件;Y,可被理解为变量。而我们试图寻找的最好的那个建筑设计方案,就是满足目标函数的最优解Y。
在进一步讨论作为最优化问题处理的建筑设计中所使用的算法及其特点之前,需要明确并不是所有的优化算法都适用于建筑设计。因为尽管可以依赖计算机强大的运算能力,但是如果求解一个建筑设计问题需要消耗过量的计算资源(时间或者存储量),那么即使这个算法在理论上是可行的,但实际上这个问题仍然可能是无法被求解的1。所以通常使用计算机求解一个问题,如果其算法运行需要消耗大量的时间或者存储量,我们就说这个问题的复杂度较高。
建筑设计领域的问题,通常由于复杂度较高,很难获得在数学意义上的最优解。不过,在现实世界的实践中我们往往也不一定非得找到绝对最优解。很多时候近似的最优解就已经足够满足我们的需求,在实际寻找的过程中也更具有可行性。随着计算机技术和算法的发展,如今已有相当成熟的“智能”算法用于求解复杂度较高的最优化问题,例如近似算法(Approximation Algorithm)和随机化算法(Randomized Algorithm)。虽然这些算法没有降低问题本身的难度,但降低了求解问题的开销,从而实现了求解。
除了近似算法和随机化算法,启发式算法(Heuristic Algorithm)也是一种解决高复杂度最优化问题的方法。在启发式算法里也使用了近似的方法,但与近似算法的不同在于,它没法保证其找到的解的质量。启发式算法在早期人工智能领域是一个相当重要的算法,从20世纪40年代开始伴随着人工智能早期的符号学派发展起来,在后续章节中我们将会持续看到它的身影。
启发式算法发展至今并没有一个确切的学术定义,但是我们可以理解为它在某种程度上综合了近似和随机化的概念,是一种能够比较快地找到比较好的解的实用算法。在建筑设计中有一定应用的模拟退火算法 (Simulated Annealing)、遗传算法(Genetic Algorithm)、粒子群算法(Particle Swarm Optimization)等都是基于启发式算法。它们通过模拟自然界中能量的耗散过程以及群体动物的“智能”行为等,在可行解中随机采样,来逐步完成搜索过程,找到一个较好的解。
例如,在一个城市音乐厅项目中,我们将目标设定为“设计一个有最多交流聚集的公共空间的音乐厅”,并采用优化算法来寻找其最优解或者近似最优解。随着这个极值的获得,能够决定建筑形态的参数也就相应确定下来,音乐厅的形态也就生成了。计算机的生成性,或者说它进行“设计”的能力,就在寻找最优解的过程中表现了出来。优化算法寻找最优解的过程并不受人类设计师的干涉,而是机器学习的结果。设计师们在计算机生成形态之前无法知道最终会出现怎样的建筑形态。
至于一个建筑设计问题中的目标是什么,又该由谁确定,则是另一个大的议题,本书不在此展开讨论。但按照不同的目标(例如,建筑师想要将音乐厅的目标设定为有最多交流聚集的公共空间,而城市管理部门想要它是最小能耗的,而建造商想要它的建造成本最低,等等)被优化出来的设计方案,至少提供了多个备选项,可供相关人员选择和确定。建筑设计实践中,还会遇到需要同时满足多个相关目标的问题,即多目标优化问题(multi-objective optimization)。例如,在建筑结构的设计中,可能需要设计一个同时满足最轻重量、最低造价和最合理形式几个目标的结构,这时就需要构建多目标函数’。但多目标优化问题中各个目标之间可能是互相矛盾的,在某个单一目标函数取得极值时其他目标函数有可能无法达到极值。要同时满足各目标一起达到极值的可能性很低,所以只能采用一定的方法试图对各个目标函数进行折衷,以使得各个目标函数尽可能达到极值。一些启发式算法也常被用于解决多目标优化问题。
本节简要介绍了最优化问题及其部分算法。伴随计算机的介入,用于寻找最优解的优化算法也和机器学习有了无法脱开的关系。本节还提及了一些已经被应用到建筑设计领域的优化算法,但更多的优化算法,如深度学习中的人工神经网络等,将会在后面章节中陆续介绍。除了算法,数据是机器学习中另一个非常重要的要素。下一节将会详细介绍机器学习的基本概念及与之相关的数据。