计算机辅助优化流程简析
Computer Aided Optimization(计算机辅助优化)是计算机辅助工程领域一个重要技术分支,在设计阶段是一个非常有用的方法:设计变量过多时,不可能一个个去试验,借助优化算法,可以大大减少仿真次数。尤其是发展起来的智能算法,如遗传,神经网络,蚁群,粒子等算法在解决多目标优化领域有很多成功应用,非常适合仿真方面的优化。
优化功能是很多CAE软件产品中的一个模块,比如Altair OptiStruct,Ansys DesignExplorer,HFSS Optimetrics,Abaqus ATOM 以及独立的优化软件Isight, Tosca等,Matlab等科学计算软件中也提供了专门的优化工具箱,开源的就不计其数了如Tao,Petsc,Alglib,dlib等。
工程上的优化流程可以通俗的用下图来表示:
上图只是做优化一个非常简单的流程,在实际应用中会有很多的工程性问题,展开的话会有很多的子图。其中修改参数变量一项 是通过优化算法来实现的,也是本文介绍主要介绍的内容。优化算法和CAD,Mesh一样属于基础研究领域。
1. 优化算法
简单讲优化算法分两种,一种是对目标函数进行计算,对象函数表达式已知;另一种是试探法,通过各种搜索算法确定输入参数对结果的影响,来查找优化解。通常第一种算法函数的导数,梯度等可以计算出,迭代速度较快,而第二种方法适合对象函数未知,只知道优化的目标值的情况,但是收敛速度较慢,尤其是在输入参数过多,求解器一次计算时间很长的情况下,实际应用中很难得到有效解。这也是开发求解器的原因之一,知道了求解器的具体实现,优化算法能更有针对性,效率更高。
单纯的凭借算法很难解决实际工程问题,实际应用中往往利用工程和算法,经验DOE等特点选择合适的优化流程,并采用多种优化算法结合,利用等来减少迭代次数。
本文只介绍常用的搜索算法:
局部优化算法:
1. 模式搜索法,又叫Hooke-Jeeves方法
2. Rosenbrock法
3. 单纯形搜索法
4. Powell法
全局优化算法:
5. 遗传算法
6. 模拟退火算法
7. 神经网络算法
8. 蚁群算法
9. 粒子群算法
2. 优化算法与仿真软件集成
以调用求解器 Nastran为例,设计实现优化流程如下:
因为是调用第三方求解器,实现中要注意几个问题:
1. 模板文件通常在仿真软件中生成,然后通过一定方法将参数识别提取出来,然后再生成模板文件。
2. 第三方求解器要支持命令行调用(大部分软件都支持)。
3. 进程同步,确保每一步调用的前一步都已经完成。
4. 大部分软件仿真结果都以二进制格式给出,需要解析结果文件。
5. 使用文本文件交换数据。
3. 例子演示
举最简单的例子,一根长为4m的绳子,求围绕的长方形面积最大,长和宽都为1时,面积最大。
该优化问题可以用下面表达式描述
A(max)=x*(2-x) 0
文件列表:
1. InputParameter.txt
2. Template.txt
3. Input.txt
4. CalculaFence.exe
5. OptController.exe
6. ResultExtract.exe
7. Output.txt
1. 为参数文件,长和宽;
2. 模板文件;
3. 输入文件,由文件1和2中的数据生成;
4. 计算程序,读入输入文件中的数据,进行计算 即长*宽,完成后将计算结果写入结果文件7 Output.txt;
5. 控制整个计算流程,调用每一步的exe和优化算法,保证进程的同步;
6. 结果解析器,读入结果文件,提取优化算法需要的参数;
对于这类简单问题,各种优化算法都能得到1e-5精度以内的解。
本人用过Tosca 和 ISight来做研发,用来找参数的最好设置(给客户把最优数值找好,不让用户输入该参数),说实话功能很强大,当然也不是像软件所吹嘘的什么优化问题都能解决,当遇到超大规模或者设计变量过多的情况时,这些软件也无能为力。
通常优化算法参数很多,但不外乎 计算范围,收敛准则,初始值设置等
要用好优化算法,个人认为做到以下几点:
1. 了解每种算法的优缺点,每种算法都是其使用的范围,而且同一种算法,相同case,优化参数设置不同,结果也会不同。
2. 经验相当重要。在做大Case计算前,可建立小的case进行快速计算。比如可以减少网格数目加快计算,虽然可能计算不准确,但与正确结果的趋势是一样的。
3. 通过适当的人工计算,优化输入参数的数目和范围。减少不必要的计算。
4. 使用源码调用的方式减少文件读写的开销。
5. 使用DOE方法
关于优化算法的入手,个人觉得学习Matlab是个不错的选择,入门简单,可以很快掌握常用优化算法的思想。
4. AI和优化算法
名词解释:
AI - Artificial Intelligence 人工智能
CAE - Computer Aided Engineering 计算辅助工程
Tensor - 张量
GPU - Graphic Processing Unit 图形处理单元
CPU - Central Processing Unit 中央处理器
4.1. AI简介
1.1. AI概念
AI(Artificial Intelligence)人工智能,它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。简单讲人工智能就是用计算机模拟人类的行为。
人工智能发展水平:第一个阶段是计算智能,能存会算,比如我们现在使用的个人计算机;第二个阶段是认知智能,能说会听、能看会认;第三个阶段也是目前的最高阶段,是感知智能,它要求机器或系统能理解和思考。第三阶段在我们这代基本没有出现的可能性,即使出现了也不是什么坏事,毕竟人类也不傻,氢弹出现这么多年,按钮还是被牢牢控制在理智的手指下。我们主要讨论的是第二阶段。
1.2. AI的三大要素:
算法,硬件,数据。
算法是核心,硬件和数据是基础
算法:
硬件:
机器算法需要进行大量的训练和计算,传统的CPU无法满足需求,因此发展出了GPU计算,将大量的简单计算放到GPU上;谷歌甚至研发了张量计算机(张量,学力学的是不是听着好亲切?)专门用作机器学习。有人说为什么不发展更大更多更快的CPU而要转向GPU和张量计算呢?性价比!性价比!性价比!任何工程学问题都讲究性价比。
数据:
巧媳妇难为无米之炊,数据就是人工智能的“米”,人工智能的计算依赖于大量和高质量的数据输入。比如要让计算机识别阿拉伯数字,必须输入大量的数字样本进行训练,数字相对简单,如果是其他复杂的物体,比如汽车,要达到理想的识别效果,需要的数据用海量形容一点不为过。这里提一下,阿尔法狗的能力也是来自于海量的数据训练,即对大量棋局都进行过训练识别,简单说阿尔法狗下过海量盘棋。早期的电脑棋局只是预先设计好程序,按照固定的模式应对棋局走法,这与阿尔法狗有着本质的区别。
4.2. CAE中的优化算法
人工智能算法的基础是数值计算和优化算法,包括了以梯度计算为主的传统算法和诸如神经网络,蚁群,模拟退火等智能算法,以及AI机器学习算法。用过CAE优化软件的朋友对前两种算法应该不会陌生。
CAE中传统优化算法:
优化算法在CAE仿真软件中广泛使用,是设计阶段的得力助手。但现阶段CAE的优化软件也有很多不足:
1. 工程上CAE仿真时间都很长,一般规模的用例短则几小时,长则几天,迭代次数难以满足优化要求。
2. 优化变量过多,多目标优化情况下,计算能力捉襟见肘;
3. 每种优化算法尤其特定适用条件和限制,很难找到一种通用的算法解决所有优化问题;
4. CAE优化通常有很强的业务逻辑,选择合适的优化算法需要工程经验积累;
5. 理想情况下优化流程是一个自动化的过程,但由于算法本身限制和实际问题的不确定性导致在优化过程中人工干预过多,使得优化结果具有一定的主观性;
4.3. AI与CAE优化算法;
AI目前还难于应用在CAE优化领域,原因在于:
1. 从计算量上看,AI需要大量计算,而CAE本身计算量也大,用在一起计算效率低下;
2. AI多应用于图形语音识别,模式识别,预测,决策等,在日常领域有着广泛的应用基础,而CAE迭代周期长,短时间难以出有效成果;
3. AI通常需要海量训练样本,如何有效的抽取高质量CAE训练样本是个难题;
4. 从非技术角度看,目前国内CAE应用普遍停留在第一层次,能在第二层次计算一下多物理场就很不错了。(参加了2017年上海站的Ansys新品发布会,会上提出了Ansys的四个仿真层次:1. 单物理场仿真;2.多物理场仿真;3. 设计驱动仿真,即在设计阶段引入仿真,指导设计,而不是在设计完成后仿真验证;4. 业务驱动仿真,仿真与业务紧密联系,前面举过风力发电机的例子。发电机宕机->实时仿真->找到问题->修复 ->再仿真->重启运行。在这个阶段,对仿真的效率准确性都提出了非常高的要求,也是Ansys公司现在大力推广和发展的阶段)
AI在CAE领域的应用前景是非常广阔的:
1. 拿飞机设计来讲,飞机从原始设计,仿真,验证到生产试飞通常耗费几年时间甚至更长。但是如果有足够多的原始飞机设计资料经过AI训练,一种新设计的飞机,几乎不用或者少量仿真实验,就可以得到飞机设计的整个性能参数,设计成本和时间可以大大降低;
2. 针对已有仿真结果而且拓扑基本相同的零件,不用仿真计算,就可以得到新设计零件的仿真结果,而且还可以有针对的提出优化方案;
3. 老工程师凭借经验可以发现产品设计的不足,而AI不仅可以部分替代老工程师,而且分析的更精确,更加量化;
4. CAE建模仿真中的重复性劳动,比如划分网格等工作可以交给AI独立完成,而且可以在短时间内获得比人工更好的网格质量。
虽然现阶段的AI在CAE领域少有应用,但是随着AI的兴起和热门,以及软硬件的不断发展,AI应用到CAE领域只是时间问题。
审核编辑:刘清