一个新的一阶保持!
如果您注意到详细信息,您可能已经注意到在Matlab R2019B中,我们删除了一阶持有从Simulink库浏览器的离散部分块。金宝app
同时,我们在Simulink库的连续部分中添加了一个新的金宝app一等舱堵塞。
为什么新的第一订单持有?
Simulink用户最常问我的一个问题是:如何加速我的模型?金宝app
这种新的一阶保持块是专门为改善一个常见模型族的性能而设计的:一个连接到离散控制器的连续可变步长对象。
作为一个例子,让我们使用Simscape Multibody附带的反铲示例,我离散控制器以使其以10毫秒的速率运行。
如果我通过模拟此模型解算器分析器,我可以观察到模型需要大约110秒钟来完成60秒的模拟。这需要16917仿真步骤,最重要的是,6025个求解器重置正在触发6214雅比亚更新。
如果您进行数学,则为0.01分的离散速率为6000步。在Si金宝appmulink中,每次驱动连续工厂的离散信号的值都会发生变化,触发求解器复位。根据各种标准,求解器重置事件也可以触发雅可比更新 - 雅可比更新是一种昂贵的操作,呈指数级尺寸缩放。
一等舱
让我们尝试在控制器和工厂之间插入新的第一订单保存块,并重新运行求解器分析器。
现在,模拟只需16秒钟,大多数数字都很明显:
从110秒到16秒......这是一个很好的加速!
何时使用第一个订单?
既然您看到了如此重大的改进,您可能会想知道为什么我们每次都是离散信号馈送连续块时我们都不会自动应用这种技术。原因是准确性。
为了说明在引入新的一阶保持时所做的权衡,让我们使用一个更简单的示例。以下示例是一个简单的质量弹簧减振器系统,由采样时间为1秒的离散斜坡信号驱动。如您所见,每次输入信号改变时,它都会使质量弹簧减振器系统振荡:
如果我们介绍一阶保持块,我们可以看到结果变化显着:
原因是,因为它的名称意味着,新的第一阶保持块在离散速率的步骤之间插入,以向积分器块提供连续信号。这是一个数字,示出了块之前和之后的信号:
我会以粗体重复:新的一阶保持块可以显著加快某些模拟。。。但它也会影响结果。伟大的力量带来了巨大的责任:-)
若要查看一阶保持是否可以帮助您,请尝试使用解算器探查器。如果您看到由离散信号触发的大量解算器重置,并且这些重置触发雅可比矩阵更新,则新的一阶保持块可能会加快您的模拟速度。之后,由您判断离散信号是否会引入量化效果te会对结果产生显著影响。如果你对它对结果的影响没有意见,那你就可以去了。
现在轮到你了
请尝试新的连续第一次订单保留,并在下面的评论中告诉我们它是如何为您工作的。
评论
要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。