算法优化设计 | grasshopper 中 galapagos 遗传算法的应用

引言
[#Algorithm optimization#]系列是一个进阶系列,这个系列讲的是在grasshopper里如何使用各种智能算法辅助我们进行设计。希望通过这些简单的介绍,能为设计从业者和爱好者带来些灵感。

那就进入今天的主题——#遗传算法#

本篇内容提要:

首先解释遗传算法是啥。
然后介绍如何将其运用到设计当中。
最后实践一个简单的案例。

grasshopper中利用遗传算法做的图表

遗传算法做的图表

 

先给出科学定义:
遗传算法起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。

其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

看不懂没有关系,接下来小编会尽量用人话解释。本来是想着让理论部分尽可能的精简,但是过于精简的理论,会让这次实践变成是无脑的“看说明书跟着做”,所以我决定还是要把理论详细地说明一下。

 

先举个简单的例子:

达尔文认为长颈鹿的脖子是“自然选择”反复作用的结果。相较于颈部短的长颈鹿,颈部较长的长颈鹿更有可能从艰难时期中存活过来。

那么结合中学所学的一些生物学我们可以得知:

1.生物的进化首先要有多种差异性的个体以及庞大的基因库
2.将基因翻译为生物,得出若干种表现型
3.有个自然存在的条件去淘汰不合适的生物
(即基因→表现型→通过表现型筛选)

 

那么这玩意怎么应用到设计当中呢。

我们将这套理论对应到grasshopper里,可以把遗传算法划分为三道逻辑:
1.有参数作为基因值,这些参数的每一个值都对应着你的一种设计
2.有一个解密基因的流程,将这些参数(基因)翻译为设计(表现型)
3.设置一个条件去筛选出你想要的设计

如果还是没看懂,没有关系,接下来进行实例讲解。

比如说我们在空间中有一条曲线,现要在这条曲线上套上一个box,并使得其体积为最小值。
首先要明白的一点是左侧的滑条就是我们所得到的的基因值,通过这些基因值的改变可以得到若干种不同的box(即不同的表现型)

grasshopper算法计算体积最小值

 

将我们刚刚得到的基因值以及不同box的体积(表现型)与Galapagos运算器连接(注意从galapagos运算器端引出),双击打开运算器,可以在通用设置一栏选用求最大值或是最小值,也可以限制其运行时间。往下面就可以看见Evolutionary solver(进化求解器):

population指的是个体,举个例子这里初始值为50即说明首次迭代会有50对上图提到的两个参数的随机组合。下面的Inbreeding(近亲交配)对结果不会有太大影响。

galapagos运算器

至于Annealing solver(退火算法)在设计中用处不多就不介绍了

 

设定好条件后,点击左上运算器然后开始运算。然后你可以看见这两个数值在疯狂的跳动,该运算器正为你计算最佳结果。

galapagos运算器运算最佳结果过程

 

最后得到的运算结果,上方的列表的每一个序号都对应着50个值,在49代中取得了最佳的运算结果,右下角表示的运算结果(表现型)会按照适合程度进行排序,也可以使其显示为基因型的排序,这些数值将会有利于你展示的方案的优化过程。

另外,目前在窗口只是显示较好的方案,你可以在右上角点击显示所有尝试的解决方案,这样会使你的电脑运算量增大,但更利于完整的表达优化过程。

galapagos运算器运算过程

 

今天的分享就到这里,下次会分享一个稍微复杂点的例子,给大家留下个简单的思考题吧,可以用今天学到的知识完成:
1.在一个圆圈内取三点,用遗传算法算出如何使所取三点形成的三角形的面积最大。
2.安装octopus插件,今天的内容只是用了一个条件进行优化,后面的进阶内容会介绍如何用octopus进行多个条件的优化。

原文声明:©原创作品,若您要转载内容,请联系我们,并注明原作者出处。
转载声明:本文已获原作者授权,如需转载请联系原作者。

案例文件链接点击下载提取码: bred复制
备用链接点击下载

[文章版权声明]
标注原创及部分未标注内容版权为本站原创所有,未经允许请勿转载
转载请保留原文链接及出处:https://archcookie.com/application-of-galapagos-genetic-algorithm-in-grasshopper.html
其它版权不归属于archcookie.com 的内容请联系原作者转载
如您使用本站及相关内容,则认为您已同意内容免责声明

1

评论0

请先

显示验证码
没有账号? 注册  忘记密码?

社交账号快速登录