我想通过让优化器对CAD文件进行更改来优化设计,然后在FEM中对其进行分析,然后将结果反馈到优化器中,以基于FEM对设计进行更改,直到解决方案收敛到最佳(质量,刚度,否则)。

这是我的构想:


在CAD软件(例如CATIA)中创建零件的蓝图。
从编程语言(例如Python)中运行优化程序代码(例如fmincon)。优化器的参数是CAD模型的参数(角度,长度,厚度等)。
优化器评估某个设计(参数集)。编程语言调用CAD软件,并相应地修改设计。
编程语言会提取一些信息(例如质量)。
然后,编程语言将提取STEP文件,并将其传递给FEA解算器(例如Abaqus),并在其中执行预定义的分析。
编程语言会读取结果(例如,最大范·米塞斯压力)。
CAD和FEM的结果(例如质量和应力)被馈送到优化器,优化器相应地更改了设计。
直到收敛。


我知道这是从封闭的体系结构(例如isight)中存在的,但是我想使用一种开放的体系结构,其中从开放的编程语言(最好是Python)中调用优化器。

最后,这是我的问题:


是否可以按照我的描述完成?
参考资料,教程好吗?
您推荐使用哪些软件进行编程,CAD和FEM?

最佳答案

是的,可以做到。您要描述的是一个小型参数化结构尺寸的多学科优化(MDO)环境。在您甚至开始编写工具或环境的代码之前,我建议先在几个方面做一些准备工作


仔细制定最小化问题(最小化f(x),其中x是包含...变量,受...约束等的向量)
调查并确定感兴趣的单个工具
每个工具如何工作?输入变量?输出变量?
在设计结构矩阵(也称为N ^ 2图)中概述工具如何将信息(变量)相互传递
哪种优化器最适合您的问题(MDF?)
确定合适的收敛容差


一旦采取了上述步骤,我便开始考虑MDO实施细节。 Python虽然不是最快的语言,但却是理想的环境,因为Python内置了许多工具来解决MDO问题,例如您拥有的工具和开发时间短。我建议使用以下软件包


OpenMDAO(http://openmdao.org/):由NASA Glenn研究中心编写的现代MDO平台。这些教程很好地帮助您入门。请注意,Sellar问题中的每个“纪律”(本教程的第二个问题)都将包含对您的工具的调用,而不是闭合形式的方程式。只要您遵循OpenMDAO的类框架,它就不会在乎每个学科是什么并将其视为黑匣子。不管输入和输出之间发生了什么。
Scipy和numpy:两个科学和数值优化包


我不知道您可以使用什么软件,但是这里有一些与工具有关的技巧可以帮助您进行工具调查和识别:


Abaqus具有Python API(http://www.maths.cam.ac.uk/computing/software/abaqus_docs/docs/v6.12/pdf_books/SCRIPT_USER.pdf
如果您需要使用没有API的程序,则可以使用Python的win32com或Pywinauto(GUI自动化)程序包来自动化GUI。
对于FEM / FEA,我在以前的项目中同时使用了MSC PATRAN和MSC NASTRAN,因为它们具有命令行界面(阅读:易于通过Python进行界面)
HyperSizer还具有Python API
安装Pythonxy(https://code.google.com/p/pythonxy/)并使用Spyder Python IDE(随附)
CATIA可以使用win32com进行自动化(有关如何操作的快速Google搜索:http://code.activestate.com/recipes/347243-automate-catia-v5-with-python-and-pywin32/


注意:要给您一些开发时间框架,您要问的内容可能至少需要两周的时间才能完成开发。

我希望这有帮助。

关于optimization - CAD自动化设计,FEA分析和优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31766396/

10-13 05:26