主要内容

解算器分析器

识别求解器性能瓶颈

描述

使用解算器分析器检查求解器和模型行为,以确定可能导致仿真性能较差的问题。

使用解算器分析器分析模型中影响其模拟的模式。的解算器分析器提供关于模拟、求解器设置、事件和错误的图形和统计信息。您可以使用这些数据来识别模型中导致模拟瓶颈的位置。

此外,还有许多因素会限制模拟速度。Solver Profiler记录和报告模拟模型时发生的所有主要事件:

  • 讨论二阶导数过零事件

  • 解决异常事件

  • 解算器复位事件

  • 雅可比矩阵计算事件

这些事件对于精确的模拟是常见和必要的。然而,它们确实会产生计算成本,频繁出现会降低模拟速度甚至停滞。

可用的行动

  • 跟踪

  • 配置

  • 探索

信息窗格

  • 统计数据

  • 步长

  • 建议

打开解算分析器

通过单击Simulink右下角的超链接打开解算分析器®编辑器。

例子

全部展开

这个例子展示了如何使用模拟球飞离地面的模型来查找特定求解器事件或过零事件的源。当球静止时,零交叉点的密度增加,导致解算器变慢。

首先,打开ex_spi_show_zc模型中,点击调试的下拉菜单性能顾问,选择“求解分析器”。

点击运行对模型进行概要分析。

注意,模型有45个零交叉事件。如需获取更多详细信息,请单击总零交叉从统计窗格或零交叉从建议窗格中单击TAB,将过零表移到前面。从零交叉选项卡,你会注意到ex_spi_show_zc /开关块导致了所有45个零交叉事件。点击ex_spi_show_zc /开关从表中,所有零穿越事件在步长图中用黄色圆点表示。

如果您单击强调块跟踪选项卡,你会注意到ex_spi_show_zc /开关块导致零交叉事件在模型中突出显示。所有过零事件都是由开关块中突出显示步长情节。

相关的例子

参数

配置

分析器开始分析模型的模拟时间(以秒为单位)。这与模拟的开始时间不一样。

分析器应该对模型进行分析的模拟时间(以秒为单位)。默认情况下,分析将一直持续到模拟结束。更改此参数不会更改您在“模型配置参数”中指定的模型的停止时间。

小于模型的已配置停止时间的值将在停止概要分析和模拟StopTime

记录的最大事件数。如果日志事件的数量达到这个值,并且内存可用,则增加BufferSize.如果内存有限,请考虑降低该值。

默认情况下,分析器不保存模型的状态。启用此参数将配置分析程序将状态保存到分析程序数据MAT文件中。

如果选择此参数,它将启用状态资源管理器。

启用此参数可将Simscape状态保存到分析器数据MAT文件中。

如果选择此参数,它将启用Simscape资源管理器。

启用此参数可将过零信息保存到分析器数据MAT文件中

如果您选择此参数,它将启用零穿越资源管理器。

选项将求解器雅可比矩阵记录到内存中。此选项对于使用隐式求解器的模拟很有用。有关求解器的比较,请参见解决比较

有关求解器雅可比矩阵的更详细解释,请参见选择隐式求解的雅可比矩阵方法

日志刚度分析Simscape状态,指定为数组。此参数提供了一个时间点数组,您希望将Simscape刚度状态记录到分析器数据MAT文件中。启用此参数可在建议窗格中显示Simscape刚度选项卡。

启用此参数可将Simscape状态的刚度分析记录到分析器数据MAT文件。有关刚度的Simscape表示和其他物理系统概念的更多信息,请参见Simscape模型如何表示物理系统(Simscape)

点击自定义规则,以访问规则集。您可以更改这些规则中的大多数的阈值,还可以选择在模拟运行期间有选择地应用哪些规则。

要修改规则,请启用其自定义,然后输入所需的阈值。

自定义的规则集

的设置规则集对话框中指定自定义规则集。

创建一个规则集作为MATLAB®脚本中指定脚本的路径自定义的规则集部分的规则集对话框。

一个简单的规则集示例如下:

function diagnosticsString = customRule(profilerData) if isempty(profilerData. zcevents) diagnosticsString{1} = '没有检测到过零事件。';else diagnosticsString{1} = '检测到过零事件。';结束结束
函数的输入是一个名为profilerData.这个结构数组组织了求解器剖析器在剖析运行期间收集的所有信息。它包含以下子结构。

子结构 字段
stateInfo:存储块状态信息
  • 的名字块的名字

  • 价值:状态值

  • blockIdx:块ID

blockInfo:块和状态id的交叉引用
  • 的名字块的名字

  • stateIdx:状态ID

zcSrcInfo:存储在导致零交叉事件的块上的信息
  • 的名字块的名字

  • blockIdx:块ID

zcEvents:零交叉事件的时间戳与对应的状态id的交叉引用
  • t:事件的时间戳

  • srcIdx:块ID

exceptionEvents:异常事件时间戳、引起事件的对应状态的ID和原因的交叉引用。
  • t:事件的时间戳

  • stateIdx:状态ID

  • 导致:异常原因

resetTime:存储求解器重置的时间戳。 没有一个
吹捧:存储模拟时间。 没有一个

视图

启用此参数可在求解器分析器的步长图中突出显示求解器异常事件。

启用此参数可突出显示求解器分析器的步长图中的求解器重置事件。

启用此参数可在求解器分析器的步长图中突出显示雅可比矩阵更新事件。

启用此参数可在求解器分析器的步长图中突出显示零交叉事件。

版本历史

介绍了R2016a

Baidu
map