算法优化设计 | grasshopper 中 Octopus插件的使用

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

(1)如果没看过上期遗传算法基础最好先去看一遍,这将会对你理解这期的内容有十分重要的作用。
(2)本期内容要用到Octopus插件,如果大家没有下载,可以在建筑曲奇网站直接搜索下载,或者文章附件随同案例一同下载
(3)学习Octopus的主要目的在于优化方案,提高效率。各位要明确这一点,炫酷的图表表达只是Octopus的一个优点。而且有一说一这种图表颜值虽高,但别人看了以后可能就只会感叹一句,然后完全不知道你在表达什么。 

➤ 正式内容
上次就说到Octopus可以进行多个目标的优化,不仅如此Octopus还能通过布尔值设置约束条件。我看官方给的案例不错,今天就讲解这个案例。

算法优化设计-grasshopper-中-Octopus插件的使用-官方示例.

官方示例

蓝白色的是风车 黄白色的是城镇 红色的是禁止区域

现在要做的目标优化有三点:
(1)将风车放置到地形的最高处。(地形的高度变化已经用颜色渐变表示,其中最高点是绿色锥体处)
(2)将风车放到离城镇最近的地方。
(3)风车不许放到禁止区域内。

可以很明显看到,做这个设计时不可能同时最大化的满足前两点,必定要有所取舍,所以就要调用今天的主角:Octopus

还记得上次说过的#遗传算法#的逻辑吗?首先要有控制表现型的基因值,显然这里的基因值控制的就是风车在#地形#上的位置。

算法优化设计-grasshopper-中-Octopus插件的使用

算法优化设计-grasshopper-中-Octopus插件的使用

同样要把作为表现型的数值输入至Octopus,可能细心的人发现了,这里与galapagos有几点不同:
(1)将输出的风车所处高度变为负值,因为Octopus采取坐标轴的形式表达,所以总是显示最小值(坐标轴原点),求最大值时将其变为负值有利于图表表达。
(2)因为Octopus采用坐标轴显示,所以可以加上文字显示在坐标轴上。
(3)这里涉及多个目标条件优化,我们只需将两个目标条件组合成一组接入Octopus即可。
(4)Octopus有个P输入端是可以接入现有的表现型,PS输出端可以输出你所得到的解决方案与输入方案的变化值。

算法优化设计-grasshopper-中-Octopus插件的使用
接下来讲如何设定约束条件。
相信大家到投影点到平面上及判断点是否在禁止区域内都能看懂。后面的电池可能要解释一下。因为Point In Cruve这一电池在点在曲线外时输出值为0,点在曲线内时输出值为2。

而布尔值TURE=1、FLASE=0。Gate Not可将输入的布尔值执行否定处理,所以输入值为FLASE时将其否定后输出的布尔值就是TRUE。将输出的布尔值接入Octopus即完成了约束条件的设置。

算法优化设计-grasshopper-中-Octopus插件的使用-设置约束条件

可算是把这个部分的电池图讲完了,然后双击Octopus就可以打开运算界面了。

算法优化设计-grasshopper-中-Octopus插件的使用-运算界面
打开运算器,点击start。
算法优化设计-grasshopper-中-Octopus插件的使用-开始运算
然后中间的坐标轴就会生成若干个小方块,不断地在运算。

算法优化设计-grasshopper-中-Octopus插件的使用-运算过程
运算一段时间后的成果,有必要给大家解释一下这个图的意义:
图里的每一个小方块都代表着一种解决方案,还记得上文提到的把高度变为负值的操作吗。

通过那个操作,使得坐标轴原点就是同时最大化满足那两个条件的位置。而我们最后得到的这条曲线在逼近坐标轴原点,我们就可以在曲线中间段去选取合适的方案。

算法优化设计-grasshopper-中-Octopus插件的使用-运算过程

点击你看中的小方块就可以查看其相应的解决方案,也可以标记它然后继续运算看有没有更合适的方案。

算法优化设计-grasshopper-中-Octopus插件的使用-运算过程设置
这种两者相矛盾的目标条件靠人的计算显然非常花时间,在我们的设计中常遇到这种设计要求,学会Octopus会对设计起到很大的辅助作用。前文也说到了Octopus的另一个优点在于其支持炫酷的图表表达。(如下图)

这种图表表达的信息和上文那种是一致的,点击左上的AxeView后选择MutiAxeViewOn即可以这种形式显示。

算法优化设计-grasshopper-中-Octopus插件的使用-运算过程
还可以直接以表现型显示,然后标记你想要的解决方案。
算法优化设计-grasshopper-中-Octopus插件的使用-运算过程
本文标题图片就是以这种方式表达的。


本期分享接近尾声,不知道各位有没有发现最后得到的图和文章开头的图差别在哪,其实就是目标条件数量不同,这个案例的目标条件数是两个,文章开头的图目标条件有五个。相信大家读懂这个案例后也能知道目标条件更多时应如何连接电池图。

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

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

0

评论0

请先

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

社交账号快速登录