创建仿真时,通常是从构建正向模型,提供各种输入,然后查看结果开始。但是,如果您有一组结果并想找到提供相同结果的输入值怎么办?在这里,我们展示了如何使用参数估计研究步骤,该步骤可帮助您构建一个反向模型并求解模型输入的最佳值。
教程视频:在comsolMultiphysics®中进行参数估计研究
使用参数估计研究步骤进行反向建模
假设您有一组外部数据(来自实验测量或参考数据集合),您需要在之后对模拟进行建模。在这种情况下,您可以使用逆建模。顾名思义,逆建模是当您采用反向建模方法来解决问题:而不是解决结果,而是解决输入。
为了获得所需的仿真结果,您可能需要调查或尝试一些模型输入,例如材料属性。在求解这些输入的值时,您正在寻找为您提供一组外部数据和仿真结果之间最接近的匹配的最佳值。一种自然的方法是最大程度地减少数据集之间差异的平方之和。因此,有效的建模策略是将问题提出为最小二乘优化问题。要简化设置和解决问题的过程,您可以使用参数估计在ComsolMultiphysics®软件中学习步骤。
使用参数估计研究步骤,研究必须取决于时间,并且需要获得优化模块的许可。此外,需要通过插值函数或用户定义的参考表达式包含一组参考数据。请注意,参考数据必须取决于时间或单个参数的函数。
设置窗口的窗口参数估计学习步骤。
这参数估计研究步骤对于各种反向建模问题(主要是参数估计)很有用。目的是估计所需模型输入(即参数)的值,该值提供了对价值(以及属性本身)影响目标函数的方式的见解。
该功能的最典型用途也许是曲线拟合或类似的数据拟合应用程序。此过程涉及将函数拟合到一系列数据点。函数的拟合是通过估计功能中使用的系数的值来完成的,从本质上将参数化的分析函数拟合到数据集合中。通过将曲线拟合到一组数据点,我们可以将值插值从函数到无明确可用的区域。
在教程视频中此博客文章的顶部,我们通过修改版本的参数估计肘支架教程模型。在计算这项研究之前,我们需要正确定义问题……
在comsolMultiphysics®中进行参数估计研究
进行参数估计研究通常涉及三个主要步骤:
- 陈述:准备定义,例如参数,变量和函数
- 研究设置:自定义研究的各个方面并计算它
- 研究后:后处理可视化和比较模拟和实验结果,并提取估计模型输入的最佳值
让我们看一下如何完成这些步骤以及设置时要考虑的重要因素参数估计在模型中学习步骤。
步骤1:准备参数估计的定义
在进行参数估计研究之前,我们必须创建提出问题所需的定义。这通常涉及创建参数,函数和变量的组合。首先,我们定义了要为其估计值的模型输入的参数。接下来,我们通过定义参考函数或表达式来包括外部数据。最后,我们定义一个变量,该变量从仿真结果中提取和评估输出数量,该变量与测量的输出数据进行了比较。
在上面的视频中,我们在肘部支架上执行了时间依赖的传热分析。然后将来自传热模拟的模型数据与实验数据进行比较,该数据用于估计材料的导热率的值。
在里面固体中的传热节点,导热率由k。因此,我们创建一个名称的参数k,输入其值的粗略估计,然后将其在适当的节点中使用以定义导热率。
左:参数估计研究中使用的参数,包括参数k用于估计导热率。右:节点(命名实心1)我们使用参数k来定义要估计的材料属性。
接下来,我们创建一个定义,以便我们可以将来自外部文件的数据实现到comsol®软件中。在这种情况下,参考数据是在逗号分隔值(CSV)文件中包含的时间相关温度测量值的集合。通过添加一个插值功能到我们的模型组件,然后使用从文件加载按钮。数据自动以表格格式自动导入,第一列包含时间,第二列包含温度测量值。
这插值函数将参考数据纳入模拟。这从文件加载按钮用于将外部文件导入该功能。
在下面单位部分,我们只需输入参数(时间)和函数(温度)的各个单元。我们不需要关注为插值和外推该功能的设置,因为研究仅计算在参数或t功能列。因此,数据点之间的平滑性和数据范围之外的函数的行为无关。
现在,我们需要定义一个表达式以从仿真结果中提取温度数量。(以后将该数量与插值函数中的温度测量值进行比较。)我们要提取和使用以进行比较的数量是括号右端右端的平均温度。
由于我们想获得数量的平均值(温度),因此我们首先添加平均的组件耦合定义节点。然后,我们选择要获得平均温度的几何形状(即,肘部支架顶部右端的边界)。注意括号中的标签平均的组件耦合,Aveop1,因为这将在表达式中用于定义我们的变量。
这平均的组件耦合(以蓝色突出显示)有助于我们获得所选几何形状数量的平均值。
为了比较计算结果和实验结果,我们必须定义一个变量来从仿真结果中提取数量,因此计算时值。由于我们正在查看几何学的特定部分,因此我们定义了一个局部变量定义节点或定义功能区选项卡。(全球变量不适合我们的研究,因为全球定义节点在范围上是全局的,并定义,应用或评估整个模型几何形状的表达式。)
定义变量时,我们命名塔夫,因为我们正在寻求获得平均温度(t)。为了表达式,我们可以召集平均的较早通过输入创建的组件耦合Aveop1。然后,我们通过输入变量来指定所需的平均值t(用于温度)括号中。
定义的变量,后来在参数估计学习步骤。
步骤2:设置和计算研究
现在我们可以添加并设置参数估计研究步骤,为此已经处理了几个设置。参考数据和研究步骤选择自动链接到包含外部数据和时间依赖性研究的插值函数。
表达在模型表达式在参考函数中指定的每个时间步中评估字段,然后将字段与外部数据进行比较;即,在插值函数的参数列中的每一次。因此,此字段是我们进入本地变量的地方,塔夫。
请注意,在语法中模型表达式字段在下面的图像中,我们通过在变量名称之前将其包括在内,从而指定了本地变量1组件1的位置。原因是参数估计学习步骤是全球的。结果,除非我们在表达式中指示它们的范围,否则研究步骤不会在组件中本地定义的变量“看到”。对于全局变量,我们只需在模型表达式场地。要自动指定其范围输入变量,您可以使用自动完成从定义列表中选择并输入变量的功能。
左:使用自动完成功能可以选择前面定义的局部变量。右:完整设置的屏幕截图参数估计学习步骤。
现在,我们只需要确定要估计的参数并选择优化方法。我们提供了对参数下的参数的粗略估计初始值列,为参数可以采用的值添加一个上和下限,并设置规模价值。应用适当的量表很重要,因为它可以大大减慢优化求解器的收敛性或完全阻止其完全收敛。使用默认值适用于肘部支架示例,但可能并不总是合适的。(有关更多信息,请阅读有关参数估计的一章优化模块用户指南)
接下来,我们要选择适当的优化算法并计算它。不同的方法适用于某些用例,这些用例在视频中进行了详细讨论。由于我们要估计的参数控制材料属性的值 - 并且我们希望对该值强加上下界限 - 我们使用SNOPT方法。
步骤3:比较结果并提取输入值
一旦模型完成求解,我们就需要执行一些其他后处理。我们可以通过绘制结果来可视化和比较两组数据,然后我们可以为估计的模型输入提取最佳值。要查看和比较单个图上的两组数据,我们添加了一个新的1D情节组并包括两个全球的在它下面的地块。一全球的绘图显示仿真结果,而另一个显示参考数据。
由于我们的插值函数是数据点的集合,因此我们希望它作为点图出现。为此,我们更改数据点的时间选择,以便仅在函数的参数列指定的时间绘制它们。此外,我们调整了该设置着色和风格部分以进一步区分两组数据。
比较模拟和实验结果。需要调整设置窗口中的突出显示部分,以将实验数据显示为点图。
该图表明,模型结果与实验数据非常匹配。现在,我们可以提取肘部支架材料的热导率的最佳值。为此,我们添加了全球评估节点下的节点结果标签(或下方派生值节点)。在设置窗口中,我们要做的就是更新时间选择选项最后的因此,由于热导率与时间无关,因此我们可以在最后一个时间步骤中评估值。
设置窗口的窗口全球评估节点。
输入参数后k在里面表达字段,我们单击评估并提供该参数的最佳值。
导热率的最佳值。
如上所示,〜0.27 w/(m*k)的热导率提供了模拟温度结果,可以从实验数据中获得最佳匹配测量。
通过参数估计研究步骤进行反向建模
在comsol多物理学中参数估计研究步骤有助于估计模拟输入的最佳值。通过估计定义模型各个方面的值,您可以研究问题的各个部分,这些部分可以阻碍或帮助将计算结果与外部文件的数据集最好地匹配。
此功能还使您能够通过简化和加快定义,设置和解决最小二乘优化问题的过程来解决其他类型的逆建模问题。有关此有用的学习步骤的更多详细信息,观看此帖子顶部的教程视频,它提供了有关如何使用简单示例使用此功能的指导。
其他资源
要了解有关comsol多物理,其用例和各种研究步骤设置中参数估计的更多信息,请阅读有关参数估计的章节优化模块简介和优化模块用户指南文档。
一个参数估计的归档网络研讨会也可用。(请注意,存档的网络研讨会使用优化界面而不是参数估计研究步骤。)
评论(5)
史蒂文·德拉鲁(Steven Delrue)
2018年3月29日嗨,Amelia,谢谢您的博客!在COMSOL中进行反向建模确实有帮助。
Amelia Halliday
2018年5月4日很高兴您发现这篇文章有帮助的史蒂文!
Abimbola Ashaju
2019年7月7日嗨,阿米莉亚,
感谢您的教程。是否有任何方法可以规避固定问题的参数估计。为了立即解决取决于反应物浓度的流场吗?
Abimbola Ashaju
2019年7月7日嗨,阿米莉亚,
感谢您的教程。是否有任何方法可以规避固定问题的参数估计。例如,求解取决于反应物浓度的速度流场?
穆罕默德·苏勒曼
2020年11月13日有趣的有用工作。您在哪里获取参考数据,它是什么来源,您想分享?