Danil Nagy的生成设计课程主要解释了物种进化的过程及其对应的计算程序设计的模拟在设计上的应用,并介绍了Grasshopper工具的使用。
一、生成设计
什么是生成设计?生成设计是一种模拟大自然生物进化而将其用于设计的方法。大自然的进化经过了经过三个阶段:选择、繁衍、变异;而将其应用于程序中,对应为:生成、评估、进化。大自然的进化是连续的,而程序设计中的进化则是离散的。在程序设计时,需要考虑数据的表征、性能的评估以及进化算法的应用。
由于进化需要一定的随机,所以,相比复杂的神经网络,随机搜索算法更适用于模拟大自然中的变异。得益于计算机技术的发展,过去的静态程序系统也逐渐演化到如今的动态程序设计。
在程序设计的过程中,需要注意的是变量的选择,对变量的控制则是对设计的限定。而设计师需要用全新的角度、创造性的方法解决问题,所以,如何设计这些变量,决定了一件作品的基调。
大自然的进化过程
大自然的过程包括了三个阶段:选择、繁衍和变异。
- 选择:物种对生存环境的选择;
- 繁衍:物种繁衍与其有类似特征的后代的行为;
- 变异:物种后代某些特性的随机变异。
程序设计的模拟
程序设计的模拟也包括了三个过程:生成、评估和进化。
- 生成:闭环设计系统中程序空间设计;
- 评估:闭环设计系统中程序性能评估标准;
- 进化:闭环设计系统中进化算法在限定空间的搜索。
程序设计中的变异过程
在基于同类特性的基础上,选择变化的性质或特征,如连续或离散,基于规则或行为的改变。
程序设计中的模拟
程序设计中的模拟可静可动,既可以是基于有限元素分析,也可以是散射状或图状,或是基于物理形态变化或计算流图。
二、计算语言
计算设计,首先需要理解计算语言,如变量、条件、循环、类等程序设计语言,而对应于设计语言的变化,可表示为:
- 连续-形态-连续变量:使用连续变量控制形态;
- 离散-状态-离散变量:使用离散变量控制状态;
- 递归-规则-函数定义:使用函数控制递归规则;
- 行为-行为-面向对象:使用对象改变行为变化。
Rhino Grasshopper
明白了计算语言,则开始学习Rhino Grasshopper的操作,它既可通过图形界面完成,也可通过Python直接使用。具体的使用示例请参照官网(文末链接)。
三、进化算法
进化算法包括决策算法和随机算法,前者为解决问题,后者为搜索过程。核心算法包括:
决策算法-解决问题
- 直接分析(Direct Analysis)
- 梯度下降(Gradient Descent)
- 完全枚举(Exhaustive Enumeration)
- 启发式解决(Heuristic Solutions)
搜索算法-搜索过程
- 蒙特卡罗(随机抽样)(Monte Carlo)
- 随机梯度下降(Stochastic Gradient Descent)
- 超启发式搜索算法(Metaheuristic Search Algorithms)
四、案例演示
五、课程资源
1. 课程PPT
2. 课程大纲
3. Rhino3D
4. Discover
5. GHPython
6. Nature-Based Hybrid Computational Geometry System for Optimizing Component Structure
网友评论