首页/文章/ 详情

CAE利用人工智能和机器学习加速包装设计

2小时前浏览75


 


为什么包装行业需要仿真?


 


几乎所有到达您家门口或当地超市货架上的产品都因其包装而在旅途中保持新鲜、干净且完好无损。从盐到智能手机,消费品的包装必须经过精心设计,以确保它不会在生产线中造成问题,并且足够坚固和防水,能够承受运输压力,同时又要轻便,对购买者有吸引力。可持续发展目标增加了额外的挑战,因为必须减少材料的使用,并增加回收、可回收或可生物降解材料的比例。

使用 SIMULIA Abaqus 技术进行有限元分析 (FEA) 仿真可帮助设计人员和包装经理了解包装在现实场景中的性能,而无需构建物理原型。它还支持实验设计 (DoE) 和优化研究,可以探索整个设计空间,以找到不同因素之间的最佳权衡。

从设计周期一开始就使用仿真是最有用的。统一建模和仿真 (MODSIM)允许在初始概念阶段使用仿真,直接根据设计数据构建仿真模型。这不仅加快了开发进程,还意味着可以更早地发现潜在问题并找出并解决根本原因。

人工智能和机器学习如何帮助包装模拟?


 



支持 AI 的 MODSIM 是 MODSIM 的下一步,利用机器学习的力量使仿真速度更快,从而对设计人员更有用。通过经典的有限元分析,对于每个设计变体,都必须从头开始再次模拟物理过程。人工智能机器学习可以立即为任何设计变体提供结果并加速流程。



只需要执行一些覆盖包装设计空间代表性区域的模拟。然后将它们用于训练神经网络,该网络学习几何形状与其物理属性的关系。时间瞬态和稳态标量物理响应以及 3D 全场预测都可以建模,从而为产品设计提供信息丰富且更加高效的环境。



生成的替代模型根据进一步的模拟进行验证,如果达到可接受的精度水平,则可以使用它来计算任何设计变体的包装行为。



使用机器学习,设计人员可以在几秒钟内找到最佳权衡,并通过实时反馈了解设计变更的影响。探索更多的设计空间可以显着缩短封装开发过程,同时实现雄心勃勃的成本、重量和可持续性目标。借助支持 AI 的 MODSIM,模拟和机器学习工具也可以在易于使用的界面中使用,为非专家用户提供这些工具。人工智能并没有取代人类的工作,而是与设计师一起工作,提供有关设计的即时反馈。


 结论


人工智能和机器学习正在帮助 CPG 行业应对现代包装设计的挑战。机器学习加速了模拟和设计探索过程,帮助设计人员减轻重量和成本,并提高强度和可持续性。达索系统的人工智能解决方案集成到其既定的消费品行业工作流程中,将机器学习技术与一流的物理模拟技术相结合。

*文章来源于达索官网


来源:ABAQUS仿真世界
Abaqus材料人工智能
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-23
最近编辑:2小时前
yunduan082
硕士 | 仿真主任工程... Abaqus仿真世界
获赞 160粉丝 249文章 335课程 0
点赞
收藏
作者推荐

Abaqus脚本升级:From Python 2 to Python 3

您是否在 Abaqus 2024 版本中运行 Python 脚本时遇到问题?可能是的。也许您已经知道,我们必须在 Abaqus 2024 中从 Python 2 升级到 Python 3。从Abaqus 2024开始,CAE中的Python版本是3.10!这是一个期待已久的更新(从 Python 2.7 到 3.10),它增加了 FEA 的更多可能性,并将模拟工作流程推向新的极限。 从现在开始,我们可以利用 Python 2.7 中不可用的许多Python 3.10 功能,例如:f 字符串、数据类、模式匹配、数据类型、更好的错误消息、更轻松的调试、性能改进等等。 此重要更新可能需要您更新“旧”Python 脚本。虽然听起来很麻烦,但在大多数情况下,如果有必要的话,改变会很小。 Abaqus 2024在 Python 环境方面引入了重大更新。从现在开始,Abaqus 将 Python 2.7 抛在一边, Python 3.10 崛起! “我可以像以前一样使用Python 2.7 脚本和插件吗?” 我建议您在 Abaqus 2024 中尝试脚本并评估它们是否仍然有效。尽管更新听起来像是一个巨大的变化,但实际上并非如此,并且您的许多脚本可能仍然可以正常工作。但… “如果我的旧 Python 2.7脚本无法在Abaqus 2024中运行怎么办?” 1、有两个方法来升级 Python 脚本。 1.1.自动升级您的脚本Abaqus 提供了一个转换工具,可以自动将脚本从 Python 2.7 升级到 Python 3。该实用程序 ( abqPy2to3 ) 可以从 Abaqus/CAE或命令行执行。 我们可以从目录中批量升级脚本,也可以选择单个文件。例如,在图中,我正在将脚本从 Abaqus 2019 升级到 Abaqus 2024,并且我将保留原始文件的备份。升级之前,我们可以在浏览器上“预览更改” : 就我而言,唯一改变的行解决了 zip 函数的问题。在 Python 3.10 中, zip函数不返回列表,而是返回“可迭代”对象。这就是升级程序实用程序在我的脚本中进行更改的原因,将可迭代对象显式转换为列表。 检查更改后,我们可以单击“升级脚本” ,就是这样! 注意:会弹出一个带有日志信息的辅助窗口,其中包含进程的详细信息和备份文件的名称。 在我看来,通过预览运行此自动升级程序是了解 Python 脚本中最相关更改的最佳方式: >> abaqus python -m abqPy2to3 <files/directories> 请注意,“ abaqus ”命令取决于您的 Abaqus 2024 设置(例如 abq2024、abq24...)。此命令接受文件列表或目录列表(相对或绝对路径)。在后一种情况下,它将递归遍历所有子文件夹寻找Python文件(带有'py'扩展名) 。在极少数情况下,自动升级实用程序可能无法按预期工作。例如,在涉及其他模块或库的复杂脚本中。这些 Python 程序需要用户进行一些手动干预。1.2.手动升级您的脚本在极少数情况下,自动升级实用程序可能无法按预期工作。例如,在涉及其他模块或库的复杂脚本中。这些 Python 程序需要用户进行一些手动干预。 根据我的经验,将脚本从 Python 2 升级到 Python 3.10 最常见的更改如下: print语句已被弃用,取而代之的是 print 作为函数。Python# Python 2 accepts both formsprint 'Hello World!' # print statementprint('Hello World!') # print function# Python 3 only accepts print as a functionprint('Hello World!') 复制zip或dict.keys和dict.values等函数返回Python# Some datapx = [0.0, 0.5, 1.0]py = [0.2, 0.6, 1.0]# === Python 2 ===points = zip(px, py) # List: [(0.0, 0.2), (0.5, 0.6), (1.0, 1.0)]p1 = points[0] # Index listp1, p2, p3 = points # Unpacking listfor x, y in points: # Iterate through the list pass# === Python 3 ===points = zip(px, py) # Iterable: [(0.0, 0.2), (0.5, 0.6), (1.0, 1.0)]# p1 = points[0] # Indexing is NOT allowed in iterablesp1 = list(points)[0] # Workaround: convert to list# p1, p2, p3 = points # Unpacking iterable is NOT allowedp1, p2, p3 = list(points) # Workaround: convert to listfor x, y in points: # Iterating is allowed in iterables pass Python 3 中的整数除法用//表示。整数 (a/b) 之间的常规除法总是会产生浮点数!请看下面代码片段中的第一个示例。Python# === Python 2 ===print(8/3) # Output: 2print(8./3) # Output: 2.66666666666667print(8.//3) # Output: 2.0# === Python 3 ===print(8/3) # Output: 2.66666666666667print(8./3) # Output: 2.66666666666667print(8.//3) # Output: 2.0 2. 在 Abaqus 2024 中使用 Python 3如果我们将 Python 3.10 与 Python 2.7 进行比较,我们会发现一些新功能将使我们的脚本更加实用和可读!从Python 3.6开始,我们可以使用所谓的f-strings 。 F 字符串有助于通过{ } 占位符将变量包含到字符串中。 代码片段中查看 f 字符串的强大功能和灵活性。 Python# Example 1 - Basic usagename = 'Peter'hello = f'Hello {name}!'print(hello)# Output: Hello Peter!# Example 2 - Format floatsfrom math import piprint(f'pi = {pi:f.6}')# Output: pi = 3.141596# Example 3 - Inline operationssome_numbers = [2, 4, 8, 16]print(f'The list contains {len(some_numbers)} items')# Output: The list contains 4 items# Example 4 - Debugging variables quickvar1 = 10var2 = 4var3 = Falsevar4 = -1e6print(f'{var1 = }')print(f'{var1 + var2 = }')print(f'{var3 = }, {var4 = :g}')# Output: var1 = 10# var1 + var2 = 14# var3 = False, var4 = -1e+06# Example 5 - Some tricks with stringstitle = 'Results'print(f'{title:20}:')print(f'{title:^20}:')print(f'{title:-^20}:')# Output: Results :# Results :# ------Results-------:# ---End of file--- 类型提示 这个话题对于 Python 用户来说听起来有点麻烦,因为 Python 是一种动态类型语言。这是否意味着我们从现在开始就必须指定数据类型?并不是这样的,我们不必这样做,但我们现在有这个选择。为什么我们要声明变量的类型或函数的参数和输出? 声明数据类型(类型提示)有几个原因: 调试。发现一些错误变得更加容易。可读性和文档。如果我们读取函数所需的数据类型,就会更容易理解该函数的要求并追踪潜在的错误。改进 IDE 和 linting 。如果您在 PyCharm、VS Code 或类似工具中进行编码,那么在使用类型提示时 IDE 将更加有帮助且响应更快。写作前要三思。类型提示迫使您提前考虑您的程序:涉及的数据类型、功能方面(重载方法、多个返回类型)等。Python# Type hinting in a functiondef myfunction(x: int) -> str: return f"Message: {x + 5}"# Type hinting of a variablevar: int = 10print(myfunction(var))# Output: Message: 15 数据类如果您通过实现和使用自己的类来进行面向对象编程(OOP),那么您将会喜欢数据类。 数据类就是这样一个类,专门用于表示:Data 。 数据类提供了简化对象创建的特定功能,例如:默认值、数据的直接表示 (__repr__)、属性初始化、数据保护(冻结)等等。在下面的代码片段中,您可以看到一些正在发挥作用的主要功能。 Python# Import required (decorator)from dataclasses import dataclass# Declaration of the dataclass@dataclassclass importedPart: file: str dims: int = 3 # default value is 3 (3D) info: str = "" # default value is empty# Create objectmypart = importedPart(R"C:\CAD\bolt_M3x40.stp", 3, "Bolt M3x40")print(mypart)# Output: importedPart(file='C:\\CAD\\bolt_M3x40.stp', dims=3, info='Bolt M3x40') 结构模式匹配如果要使用某种switch-case 语句,这将改变游戏规则。到目前为止,我们一直在 Python 中使用 if-else 语句,直到……Python 3.10! 结构模式匹配解决了 Python 中的这一缺陷,而且确实做到了! Python # Option written by the useroption = 'new'# Structural pattern matchingmatch option: case 'new': print('Creating new file') case 'save': print('Saving current file') case other: print('Unknown command: {other}')# Output: Creating new file 还有更复杂的选项: Python# Option written by the useroption = 'open bolted_joint_4x3_M12'# Structural pattern matchingmatch option.split(): case ['new', filename]: print(f'Creating new file: {filename}') case ['open', filename]: print(f'Opening file: {filename}') case ['quit'|'close']: # Matches ['quit',] or ['close',] print('Bye bye!') case _: # Matches anything else print(f'Unknown command: {option!r}')# Output: Opening file: bolted_joint_4x3_M12 通过使用类作为匹配模式、可变数量的参数,结构模式匹配更进一步。正如我们所看到的, Abaqus 2024 中引入的 Python 3.10 涉及我们的 Python 脚本中的一些重要更改。如有 必要,我们必须对其进行测试和升级。 然而,此更新为 Abaqus 的现代 Python 脚本开发带来了更多优势, Abaqus 现在可以导入 pandas、pytorch 等新功能包。 来源:ABAQUS仿真世界

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈