Modelica 我可以通过设置Dymola中状态变量的最小和最大边界来确保收敛吗?

Modelica 我可以通过设置Dymola中状态变量的最小和最大边界来确保收敛吗?,modelica,dymola,Modelica,Dymola,上个月,我在Dymola中努力改进模型的收敛性能。现在我在想,如果我定义状态变量的min和max属性,比如最大质量流量为10000kg/s,最小质量流量为0.01kg/s,在迭代过程中,当结果达到max或min边界时,迭代是继续还是停止? 我在考虑当迭代结果到达边界时,迭代是否会反方向反弹,这可能会确保我的模型收敛 我准备对我的想法做一些测试,如果有人有相同的问题或意见,欢迎评论或回答 为变量设置最小/最大值不太可能显著提高Dymola的性能 如果变量的最小/最大断言处于活动状态,则解算器将拒绝

上个月,我在Dymola中努力改进模型的收敛性能。现在我在想,如果我定义状态变量的min和max属性,比如最大质量流量为10000kg/s,最小质量流量为0.01kg/s,在迭代过程中,当结果达到max或min边界时,迭代是继续还是停止? 我在考虑当迭代结果到达边界时,迭代是否会反方向反弹,这可能会确保我的模型收敛


我准备对我的想法做一些测试,如果有人有相同的问题或意见,欢迎评论或回答

为变量设置最小/最大值不太可能显著提高Dymola的性能


如果变量的最小/最大断言处于活动状态,则解算器将拒绝值超出边界的步骤,并且当前不会尝试以巧妙的方式将它们映射回有效值。这可能会跳过一些基于越界值的计算,但很少会有太大的影响,而且还会有拒绝步骤等的成本。

设置变量的最小值/最大值不太可能显著提高Dymola的性能


如果变量的最小/最大断言处于活动状态,则解算器将拒绝值超出边界的步骤,并且当前不会尝试以巧妙的方式将它们映射回有效值。这可能会跳过一些基于越界值的计算,但很少会有太大的影响,而且拒绝该步骤也有成本等。

我的测试验证了你的观点,我尝试为热工液压系统中的质量流量、焓和压力添加最小/最大属性,但这并没有提高收敛性能。所以我想最好提供一个更好的开始值。但我想知道,如果我在没有使用同伦的情况下,在我的模型中遇到初始化失败,是否有一种方法可以找到导致发散的初始值?或者我必须检查Dymola中的每个迭代变量?您可以选择在初始化失败的情况下创建部分结果文件。结果文件不一致=错误,因为初始化未完成,但它描述了目前的状态,因此一些变量可能会给您提供线索。我的测试验证了您的观点,我尝试为热工液压系统中的质量流量、焓和压力添加最小/最大属性,但这并没有提高收敛性能。所以我想最好提供一个更好的开始值。但我想知道,如果我在没有使用同伦的情况下,在我的模型中遇到初始化失败,是否有一种方法可以找到导致发散的初始值?或者我必须检查Dymola中的每个迭代变量?您可以选择在初始化失败的情况下创建部分结果文件。结果文件不一致=错误,因为初始化未完成,但它描述了当前的状态,因此一些变量可能会给您提供线索。