学习
实践
活动
工具
TVP
写文章

FEM之优化算法(1)

优化本来和仿真没什么关系。但是优化在设计阶段是一个非常有用的方法,设计变量过多时,不可能一个个去试验。借助优化算法,可以大大减少仿真次数。尤其是发展起来的智能算法,如遗传,神经网络,蚁群,粒子等算法在解决多目标优化领域有很多成功应用,非常适合仿真方面的优化。

目前比较常用的商业优化软件有Optimus,Isight,Tosca等,不仅能直接提供优化算法,还提供了很多CAE软件的接口,能直接调用CAE软件。有些仿真软件里也提供了优化功能。开源的就不计其数了如Tao,Petsc,Alglib,dlib等。

本人用过Tosca 和 ISight来做研发,用来找参数的最好设置(给客户把最优数值找好,不让用户输入该参数),说实话功能很强大,当然也不是像软件所吹嘘的什么优化问题都能解决,当遇到超大规模或者设计变量过多的情况时,这些软件也无能为力。

通常优化算法参数很多,但不外乎 计算范围,收敛准则,初始值设置等

要用好优化算法,个人认为做到以下几点:

1. 了解每种算法的优缺点,每种算法都是其使用的范围,而且同一种算法,相同case,优化参数设置不同,结果也会不同。

2. 经验相当重要。在做大Case计算前,可建立小的case进行快速计算。比如可以减少网格数目加快计算,虽然可能计算不准确,但与正确结果的趋势是一样的。

3. 通过适当的人工计算,优化输入参数的数目和范围。减少不必要的计算。

4. 使用源码调用的方式减少文件读写的开销。

5. 使用DOE方法

关于优化算法的入手,个人觉得学习Matlab是个不错的选择,入门简单,可以很快掌握常用优化算法的思想。

早期曾写过一些优化算法,但是太简单,看了开源的优化库后,觉得开源的算法库是一个不错的选择。后续将介绍使用开源优化算法库 调用CAE软件和自己写的求解器 来优化参数设计。

题外话

有人说现在CAE领域软件已经很成熟了,为什么还要自己写程序实现求解器,优化算法这些毫无利益可图的东西。原因很多,其中一点主要还是提高效率。

试想一堆货物3,4吨,用标配5吨重的货车可以运载。但几十公斤的货物也用标配的货车运是不是太浪费?又或者1百吨的货物是拆成每份5吨用标配的货车运,还是再造一辆1百吨的货车?自己开发的求解器更高效的求解实际工程问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806G1M8K800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券