当结构设计遇到机器学习
当结构设计遇到机器学习
公众号:非解构 · 作者:上叶侬(用户提供链接,标记为上叶侬)
对于广大的结构工程师来说,机器学习似乎是个距离我们很远又很近的词。说它离我们很远,是因为大部分的工程师都只泛泛地听说过相关的一些概念,只知道在类似图像识别,语义识别之类的场景下应用很广泛,但是并不理解这些所谓的机器学习在我们实际的工作中能发挥什么用处。说它离我们很近,是因为当下有很多咋咋呼呼的网文动不动就出来说要用AI生成图纸,动不动就要取代工程师的工作,贩卖各种焦虑。
那么到底什么是机器学习?




来看知乎上各路大神写的关于机器学习的定义,概括下来,就是让电脑通过算法,从一堆已有的数据中,提取,分析和生成对使用者有用的信息。
我们再来看看有本介绍机器学习的书的目录:

Python机器学习算法目录 0 绪论 1 第一部分 分类算法 1 Logistic Regression 10 2 Softmax Regression 27 3 Factorization Machine 40 4 支持向量机 58 5 随机森林 89 6 BP神经网络 114 第二部分 回归算法 7 线性回归 138 8 岭回归和Lasso回归 155 9 CART树回归 172 第三部分 聚类算法 10 K-Means 190 11 Mean Shift 206 12 DBSCAN 222 13 Label Propagation 237 第四部分 推荐算法 14 协同过滤算法 250 15 基于矩阵分解的推荐算法 265 16 基于图的推荐算法 280 第五部分 深度学习 17 AutoEncoder 294 18 卷积神经网络 309 第六部分 项目实践 ✦ 不要在意其中的每个算法,我们只看每个部分的大标题,分类算法,回归算法,聚类算法,推荐算法和深度学习。从简单的字面意思,我们就能大概理解这本书中所阐述的机器学习算法到底能干什么: 分类算法:根据样本特征,将样本划分到指定的类别中; 回归算法:得到样本和某些连续标签之间的映射关系,简单来说,拟合一组随机分布的点,形成一个连续的函数,就是一种回归; 聚类算法:训练样本中只包含样本特征,不包含标签信息。利用样本的特征,将具有相似属性的样本划分到同一类别中。概括来说,就是帮助你对数据进行分组; 推荐算法:通过算法帮助用户在海量的信息中找到自己感兴趣的内容,比如淘宝收集你搜索的信息,然后给你推荐相关的商品; 深度学习:通过神经网络技术自动提取数据特征,实现自我学习的目的;
通过以上大标题,先不具体讲算法的原理,只从作者粗浅的认知中大致地概括一下机器学习的功能点:分类和拟合。 通过算法,自动地根据特征,将一组数据样本进行分组,这就是分类,诸如聚类算法。如下图中,二维坐标系中有一组点,通过聚类算法可以自动地将这组点根据坐标关系分成三组。

通过算法,自动建立起一组数据的内在关系,并根据这组关系,对其他样本点进行预测,这就是拟合。回归算法,神经网络等都应该属于拟合的范畴。 如下图所示,蓝色的是我们的样本点,红色和绿色的两根线条,是通过算法得到的回归曲线。我们可以根据这个回归曲线预测在这两条回归曲线上任意点的值。

再比如通过机器学习,根据建筑方案生成结构方案,也是一个拟合的过程:获取先前已有的一些已经建成的项目的建筑图纸和结构图纸,通过算法进行训练和分析,形成了一套建筑图纸和结构图纸之间的拟合关系。如果我有一个新的建筑方案,那么我们就可以根据先前建立的拟合关系,预测这个建筑方案的结构方案。这个过程就是一个拟合+预测的过程。
今天,我们就通过一个小例子介绍一下机器学习如何运用到我们结构设计中去,希望能够抛砖引玉,给大家一些启发。
通过机器学习帮助我们配柱筋
那如何通过机器学习帮助我们配柱筋呢?!在这里,当然不是说直接生成柱施工图,而是通过机器学习的算法,帮助我们分析柱配筋的数据。 我们在配柱筋的时候,经常会碰到这样一个问题,就是当有很多相同截面的柱子的时候,往往需要通过根据柱钢筋的计算面积,对柱筋进行归并,从而减少柱配筋的种类。在传统的工作流中,我们要手动地去校对每一根柱子,费时费力,还容易出错。如图所示,这个规模的地库一共有1539根柱子。600×600的柱子共有672根。以往的设计流程中,我们需要手动地校验每根柱子的配筋。这样体量的地库的工作量是不言而喻的。


而说到柱配筋的归并,这本质上就是一个简单的分类问题。我们是否可以通过聚类算法,对模型计算得到相同截面的柱配筋进行分类,从而快速地对柱筋进行归并?当然是可以的。 我们可以很方便地通过YJK-GAMA获取所有600×600的柱子的配筋数据:



首先启动Y-GAMA,在计算完YJK模型后,把界面切换到设计结果下界面下。调用构件指标(构件)卡片,切换到柱配筋模式。在模型代理入口中接入任意路径的模型代理,在构件入口中接入筛选出的600×600的柱子,双击Json模式,将卡片切换至设计结果模式。此时,我们可以获取所有600×600的柱的配筋信息。

有了这些数据作为基础,我们就可以调用机器学习里面的聚类算法了。
由于目前Y-GAMA尚未提供相应的机器学习模块,我们需要将数据发送至grasshopper,借助grasshopper的插件Lunchbox中的机器学习算法,对数据进行分析。 下载链接: https://www.food4rhino.com/en/app/lunchbox 我们通过YJK-GAMA与grasshopper的接口卡片,将YJK中获取的柱配筋数据发送至grasshopper。这里发送柱子的角筋,XY向纵筋和箍筋。为了方便预览,还发送柱子的单元线。由于柱的纵筋和箍筋都有两个测站,我们取较大的配筋值作为需要分析的数据。

grasshopper接收完数据后,我们将所有数据进行合并,形成672个样本点,每个柱子作为一个样本。

接下来,我们调用lunchbox中的聚类算法K-Means。


将训练完的数据接入预览模块:

此时,我们就可以预览通过聚类算法分组后的结果:

聚类算法得到的值,就是每个柱子所属类别的编号。这样,我们就完成了根据配筋对所有600×600的柱子进行归并的过程。 这个结果不仅可以预览,也可以通过YJK-GAMA的excel接口和cad接口,直接与cad图或者excel表格进行交互。 通过这种方式,我们可以不用再费劲地校对每一个柱子,只需要根据算法分析得到的结果,自动地获取分类结果,可以很大程度地提高我们的工作效率。
后记 本文通过这个小案例想告诉大家,机器学习并不是什么神乎其神的技术。追根究底,主要就是两点:分类和拟合。大家可以基于这两点,探讨各种各样的算法在我们结构设计中的应用。
机器学习需要大量的数据作为支撑。在我们以往的工作流中,虽然YJK的计算数据中包含了个各种各样的数据,但是系统地处理各种各样的数据无疑是困难的。比如柱配筋的数据,它被存储在软件的界面上,被存储在cad图纸中,被存储在每个.out文件中。对普通工程师来说,我们可以很方便地拿到一个柱子的数据,但是很难同时拿到1000根柱子的数据。 而通过YJK-GAMA,这都不再是问题。我们可以很方便地整合模型的建模数据,也可以很方便系统地整合分析结果的数据。基于各种各样的数据,再结合相应场景下的算法的应用,相信还会有更多机械重复的工作,可以逐渐地被电脑取代。
我们经常所说的数字化设计,不仅仅是将我们的生产成果数字化,同时还需要充分发挥我们生产过程中产生的数据的价值。只有通过系统的整合的数据,才能便于我们进行系统的分析和应用。
在当前的技术条件下,类似于让机器学习算法直接帮我们生成图纸这样的应用场景,似乎是一条看似美好实则艰辛的道路。想象中可以一蹴而就的过程其实是高估了机器学习的能力也低估了结构工程专业的复杂程度。 但根据大量现有的模型和分析结果数据,结合经典的机器学习算法,提高我们结构工程师的工作效率,并没有那么难!
欢迎志同道合的伙伴们加入我们, 一起来做点好玩的事情。 跨界结构师招募 | 非解构数字科技

联系我们“大菲儿”。 加入“建筑结构数智化设计”微信交流群, 一起来交流探讨数字化、智能化等前沿技术 在建筑设计行业中的运用。

接下来我们还会给您带来更多的惊喜,关注 我们公众号吧!
本文档由AI从非解构公众号自动采集整理,仅供学习参考。
LOADING…