Dymola 初始化过程中使用的非线性求解器是什么?
What is the non-linear solver used in Dymola initialization process?
我经常遇到如下所示的初始化问题,它说some kind of non-linear solver will attempt to handle this problem
。据我所知,Dymola在得到原始DAE系统的BLT形式后,使用牛顿法求解方程,那么这个非线性求解器到底是什么?
一般来说,Modelica 仿真环境需要做的不仅仅是依赖基于基于导数的优化算法的已知求解器。它可以基于已知的具有自适应能力的求解器来在求解器(线搜索或信赖域方法)之间切换并尝试不同的求解器参数。此外,在初始化问题的高级实例中,需要全局优化策略来避免质量差或发散的局部最优。
推理:存在严重障碍,可能会阻碍识别初始化问题的半最优且不一定是最优解:
需要良好的初始猜测才能收敛到正确的最优值,残差成本函数在数值上接近于零
为基础优化成本函数计算的 Jacobian(或 Hessian)通常是奇异的。这里宁愿使用伪反演(不一定由常见的求解器提供)
由于潜在问题的大规模性质,不同变量和初始条件的值将位于较大的数值范围内。这会导致已知标准求解器的数值不稳定。在此,遵循缩放技术(通过对数缩放技术将考虑中的所有优化变量转换为值 1 或更小的值范围)。此类技术通常不由常见的求解器提供,需要外部应用于成本函数的制定。
建模者提供的初始条件可能不完整且不一致,模拟环境需要实施严格的启发式算法来为求解器猜测一个好的起始值。
参考文献:
我经常遇到如下所示的初始化问题,它说some kind of non-linear solver will attempt to handle this problem
。据我所知,Dymola在得到原始DAE系统的BLT形式后,使用牛顿法求解方程,那么这个非线性求解器到底是什么?
一般来说,Modelica 仿真环境需要做的不仅仅是依赖基于基于导数的优化算法的已知求解器。它可以基于已知的具有自适应能力的求解器来在求解器(线搜索或信赖域方法)之间切换并尝试不同的求解器参数。此外,在初始化问题的高级实例中,需要全局优化策略来避免质量差或发散的局部最优。
推理:存在严重障碍,可能会阻碍识别初始化问题的半最优且不一定是最优解:
需要良好的初始猜测才能收敛到正确的最优值,残差成本函数在数值上接近于零
为基础优化成本函数计算的 Jacobian(或 Hessian)通常是奇异的。这里宁愿使用伪反演(不一定由常见的求解器提供)
由于潜在问题的大规模性质,不同变量和初始条件的值将位于较大的数值范围内。这会导致已知标准求解器的数值不稳定。在此,遵循缩放技术(通过对数缩放技术将考虑中的所有优化变量转换为值 1 或更小的值范围)。此类技术通常不由常见的求解器提供,需要外部应用于成本函数的制定。
建模者提供的初始条件可能不完整且不一致,模拟环境需要实施严格的启发式算法来为求解器猜测一个好的起始值。
参考文献: