2

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

这就是我的设想:

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

我知道这存在于封闭体系结构(例如 isight)中,但我想使用开放体系结构,其中从开放编程语言(理想情况下是 Python)中调用优化器。

最后,这是我的问题:

  • 可以按照我描述的那样完成吗?
  • 请参考,教程?
  • 对于编程、CAD 和 FEM,您推荐哪些软件?
4

1 回答 1

6

是的,这是可以做到的。您所描述的是一个小型参数结构尺寸调整多学科优化 (MDO) 环境。在你开始编写工具或环境之前,我建议在几个领域做一些初步工作

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

一旦完成了上述步骤,我就会开始思考 MDO 的实现细节。Python 虽然不是最快的语言,但将是一个理想的环境,因为 Python 中内置了许多工具来解决 MDO 问题,例如您拥有的工具和低开发时间。我建议使用以下软件包

  • OpenMDAO(http://openmdao.org/):由美国宇航局格伦研究中心编写的现代 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 自动化(快速谷歌搜索如何做到这一点:http ://code.activestate.com/recipes/347243-automate-catia-v5-with-python-and-pywin32/ )

注意:为了给您某种开发时间框架,您所要求的可能需要至少两周的时间来开发。

我希望这有帮助。

于 2015-08-03T06:20:39.293 回答