今日主题:种树
01
引入
Introduction
在使用grasshopper进行结构优化的时候,我们经常会使用到GH自带的优化算法galapagos。其中自带的遗传算法以及退火算法也可以解决大部分的优化问题。但随着需求的提升以及多专业合作愈发频繁,单目标优化算法已无法满足一些问题。本篇以Wallacei插件为例,浅谈gh中的多目标优化。
Wallacei(https://www.wallacei.com/about)是一个基于NSGA-2的多目标非支配排序遗传算法优化引擎,关于NSGA-2算法的逻辑本文不再详细论述,可参考(非解构2019-10-21)
在开始实际应用多目标优化之前,首先需要理解的是Pareto optimum(帕累托最优)。相较于单目标优化能产生最优解,多目标优化,特别是对于互相矛盾的优化目标,其结果为Pareto Front(帕累托前沿)。
02
举例
Example
为了便于理解,让我们假设现在有一个问题:有一个建立在高低起伏山坳里的村子,如下图所示(绿色方块为村庄,红色曲面为山)。圣诞节到了,要种圣诞树,如果我们希望圣诞树能被更多人看到,那么圣诞树就要种到最高点。但是同时村里的人希望圣诞树离村庄越近越好。
此时,两个目标就出现了。一、圣诞树要种的位置高;二、圣诞树要离村庄近。
而树的位置,是这个问题中的可变量。
例子示意图
在Wallacei X的输入端示意如下:
(具体Wallacei教程可参见: https://www.wallacei.com/learn)
根据Wallacei的多目标非支配排序遗传算法计算之后,结果如下图中绿色点所示。可以发现,优化结果不再是单一的值,而是一堆的点。
即当设置的目标为两个之后,优化结果是一个集合。这个集合内,所有的点都是最优解。而这些解的不同点在于,他们对于两个目标的权重不同。这里的优化即为Pareto optimum(帕累托最优)。
Wallacei优化过程示意
Wallacei优化后所得圣诞树的点位最优解
黄色线段为Wallacei优化后所得圣诞树的点位最优解
03
延伸及结语
Conclusions
除了做简单的距离目标之外,Wallacei的优势更在于输出结果的可视化。感兴趣的小伙伴可以自行了解。以下就放一张在建筑找形的例子:
当然,除了本文介绍的Wallacei,GH中也有其他的多目标优化算法,例如同样使用NSGA-2的DSE以及基于SPEA-2 算法的Octopus。相对于其他插件,Wallacei拥有较高的选择自由度以及方便的后处理图表。
遗传算法有着较高的迭代次数要求,根据变量数量、范围及问题复杂程度,往往需要进行数千次运算。因此Wallacei以及其他采用遗传算法的插件并不适用于那些单次运算时间可能长达半小时至几小时的结构整体模型优化问题。但对于一些计算量较小结构,例如桁架,或者其他的的多参数,多目标优化,Wallacei可以非常直观,快捷的解决问题。
11.11,YJK-GAMA公测开启 加入QQ群,您有机会成为我们 首批尊贵用户 转自:非解构-公众号 转自:非解构-公众号