主要内容

优化、估计和扫描块参数值

当你扫描在模拟运行之间更改一个或多个参数的值,并比较和分析每次运行的输出信号数据。使用参数扫描来调优控制参数,估计未知模型参数,并通过考虑现实系统中的不确定性来测试控制算法的鲁棒性。

可以扫描块参数值或用于设置参数值的工作区变量的值。使用参数页上的“模型数据编辑器”选项卡建模选项卡上,单击模型数据编辑器)、属性检查器(在建模选项卡,在设计,点击属性检查器)、命令提示符或脚本,以便在模拟运行之间更改参数值。

如果您想重复更改块参数的值,请考虑在工作区中创建一个变量。您可以使用Model Explorer或编程命令来更改变量的值,而不是定位或识别模型中的块。此外,一些促进参数优化、估计和扫描的特性和产品要求您通下载188bet金宝搏过创建工作空间变量来设置块参数值。

要了解如何在创建模型的迭代过程中操作参数值,请参见调优和实验块参数值

有关在设计模型时访问和设置块参数值的基本信息,请参见设置块参数值.有关以编程方式模拟模型(例如使用脚本)的基本信息,请参见以编程方式运行模拟

扫描参数值并检查仿真结果

此示例演示如何在多个编程模拟运行之间更改块参数值。使用该技术通过比较每次运行的输出信号数据来确定最佳参数值。

示例模型ex_sldemo_absbrake使用Constant块指定防抱死制动系统的滑移设定值。用两种不同的滑移设定值0.24和0.25模拟模型,并比较每次模拟运行的输出轮速。

要存储设定值,请在基本工作空间中创建一个变量。这种技术使您能够为值分配一个有意义的名称。

打开示例模型。

open_system (“ex_sldemo_absbrake”);

建模选项卡上,单击模型数据编辑器

在模型数据编辑器中,选择信号选项卡。

设置改变观点下拉列表仪表.的日志数据列表示信号(这是一个虚拟总线)和方案得到配置为日志记录。在模拟模型时,可以通过使用Simulation Data Inspector收集这些信号的值,并在以后检查这些值。

在模型数据编辑器中,选择参数选项卡。集改变观点设计

在模型中,选择有标记的Constant块期望相对滑移.模型数据编辑器突出显示与恒定值块参数。

使用价值列,将参数值设置为relSlip

在编辑值时,旁边的relSlip,点击操作按钮(有三个垂直点)并选择创建

2 .在“创建新数据”对话框中设置价值0.2并点击创建.变量,其值为0.2,出现在基本工作区中。模型现在从这个变量获得相对滑移设定值。

或者,你可以在命令提示符处使用这些命令来创建变量并配置块:

relSlip = 0.2;set_param ('ex_sldemo_absbrake/期望的相对滑移'“价值”“relSlip”

在命令提示符中,创建一个数组来存储相对滑移设定值的两个实验值,0.24而且0.25

relSlip_vals = [0.24 0.25];

创建一个金宝app仿真软件。SimulationInput对象为您希望运行的每个模拟(在本例中为两个)。将对象存储在一个数组变量中,思敏.使用setVariable每个对象的方法,以确定每个两个实验值。

i = 1:length(relSlip_vals) simIn(i) = 金宝appSimulink。SimulationInput (“ex_sldemo_absbrake”);simIn(i) = setVariable(simIn(i),“relSlip”relSlip_vals(我));结束

使用sim卡函数来模拟模型。可选地,将输出存储在名为simOutputs

simOutputs = sim(simIn);
[26-Feb-2022 15:18:18]运行模拟…[26-Feb-2022 15:18:20]完成2次模拟运行中的2次

该模型对记录的信号进行流式处理,而且方案得到,转到模拟数据检查器。您可以在仿真数据检查器中查看信号数据。

比较最近两次模拟运行的输出数据。

runIDs = 金宝appSimulink.sdi.getAllRunIDs();runResult = 金宝appSimulink.sdi.compareRuns(runid (end-1), runid (end));

的值之间的差Ww信号(是虚拟总线信号的一个元素)通过指定结果索引1

signalResult = getResultByIndex(runResult,1);情节(signalResult.Diff);

将扫描值存储在金宝app仿真软件。SimulationInput对象

编写脚本以运行许多模拟时,创建一个数组金宝app仿真软件。SimulationInput对象(要运行的每个模拟对应一个对象)。使用setVariable而且setBlockParameter方法,以识别用于相应模拟运行的参数值。使用这种技术,可以避免使用set_param函数修改块参数值和分配命令以在模拟运行之间修改工作区变量值。

有关使用的更多信息金宝app仿真软件。SimulationInput对象以运行多个模拟,请参见sim卡

扫描非标量、结构和参数对象

如果使用非标量变量、结构变量或金宝app仿真软件。参数对象来设置块参数值,请使用setVariable各方法金宝app仿真软件。SimulationInput对象。参考表中的例子。

场景 例子
MATLAB®变量,myArray,其值为数组。您需要设置数组中的第三个元素(假设基于一的索引)。
setVariable(思敏,“myArray(3)”, 15.23)
MATLAB变量,myStruct,它的字段名为field1
setVariable(思敏,“myStruct.field1”, 15.23)
参数对象,myParam,他的价值属性是标量。
setVariable(思敏,“myParam。价值”, 15.23)
参数对象,myArrayParam,他的价值属性是一个数组。你要设置数组中的第三个元素。
setVariable(思敏,“myArrayParam.Value(3)”, 15.23)
参数对象,myStructParam,他的价值属性是一种结构。该结构有一个名为field1
setVariable(思敏,“myStructParam.Value.field1”, 15.23)

模型工作区中变量的扫描值

如果使用模型工作区存储变量,则在使用setVariable方法金宝app仿真软件。SimulationInput对象修改变量值时,请使用工作空间参数来标识包含的模型:

setVariable(思敏,“myvar#”, 15.23,“工作区”“myModel”

捕获和可视化仿真结果

在参数扫描期间运行的每个模拟都会产生输出,例如来自的信号值外港块和从日志信号。

您可以在变量和对象中捕获这些输出,以便以后进行分析。有关更多信息,请参见导出仿真数据

若要可视化模拟输出数据,以便比较每个参数值的效果,请参见决定如何可视化模拟数据

提高仿真速度

要执行多个使用不同参数值的模拟,可以使用加速模拟模式。对于较大的模型,加速模拟比普通模拟执行的时间更短。如果您还拥有并行计算工具箱™,则可以使用处理器的多个核心同时执行模拟。的参数sim卡而且parsim功能。

若要使用加速模拟和其他技术来提高模型的模拟速度,请参见优化性能.有关示例和更多信息,请参见运行多个模拟

扫描参数值以测试和验证系统

如果你有金宝app®测试™,您可以确认您的模型在使用不同的参数值时仍然满足要求。参数覆盖和测试迭代使您能够为每个测试用例设置不同的参数值。有关更多信息,请参见参数将覆盖(金宝app仿真软件测试)而且测试迭代(金宝app仿真软件测试)

估计和校准模型参数

如果你有金宝appSimulink设计优化™,您可以估计模型参数值,以便模拟输出与您在现实世界中测量的数据紧密匹配。使用此技术来估计模型中参数的实际值工厂模式,它表示现实世界系统的动态,当您不能直接测量值时。这种估计提高了工厂模型的准确性。有关更多信息,请参见从实测数据估计参数(金宝appSimulink设计优化)

调优PID和控制器参数

如果你有金宝appSimulink控制设计™,可以使用PID调谐器来调优a的参数PID控制器块。有关更多信息,请参见Simulink PID控制器整定金宝app(金宝appSimulink控制设计)

如果你有金宝appSimulink设计优化,您可以优化控制参数值,使模拟输出满足指定的响应要求。有关更多信息,请参见优化设计以满足阶跃响应要求(GUI)(金宝appSimulink设计优化)

相关的话题