主要内容

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

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

您可以扫描块参数值或用于设置参数值的工作区变量的值。使用参数选项卡中的模型数据编辑器(在造型选项卡上,单击模型数据编辑器),物业督察(在造型选项卡,在设计, 点击物业检查员)、命令提示符或用于在模拟运行之间更改参数值的脚本。

如果希望重复更改块参数的值,请考虑在工作区中创建一个变量。您可以使用Model Explorer或编程命令更改变量的值,而不是在模型中定位或标识块。另外,一些有助于参数优化、估计和清除的特性和产品要求您下载188bet金宝搏通过创建工作区变量设置块参数值。

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

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

扫描参数值并检查模拟结果

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

模型的例子ex_sldemo_absbrake.使用恒定块来指定防锁制动系统的滑动设定值。使用两个不同的滑动设定值,0.24和0.25模拟模型,并比较每个模拟运行的输出轮速度。

要存储设定值值,请在“基础工作区”中创建变量。此技术使您可以为该值分配有意义的名称。

打开示例模型。

Open_System(“ex_sldemo_absbrake”);

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

在“模型数据编辑器”中,选择信号标签。

设定改变看法下拉列表仪表这个日志数据列显示信号(这是一个虚拟总线)和SLP.配置为日志记录。当您模拟模型时,您可以通过使用Simulation Data Inspector收集并稍后检查这些信号的值。

在“模型数据编辑器”中,选择参数制表符设置改变看法设计

在模型中,选择标记的Constant块期望相对滑动这个模型数据编辑器highlights the row that corresponds to the恒定值块的参数。

使用价值列将参数值设置为relslip.

在编辑值时,在relslip.,单击“操作”按钮(具有三个垂直点)并选择创造

在“创建新数据”对话框中,设置价值0.2然后点击创造.一个变量,其值是0.2,出现在基础工作区中。该模型现在从该变量获取相对滑移设定值。

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

Relslip = 0.2;set_param(“ex_sldemo_absbrake/所需相对滑移”“价值”“relSlip”

在命令提示符下,创建一个数组来存储相对滑动设定值的两个实验值,0.240.25

relSlip_vals = [0.24 0.25];

创建一个金宝appsimulink.simulationInpul.对象,用于要运行的每个模拟(在本例中为两个)。将对象存储在单个数组变量中,西班.使用可遗漏的每个对象的方法以识别两个实验值中的每一个。

为了i = 1:长度(relslip_vals)simin(i)= simuli金宝appnk.simulationInput(“ex_sldemo_absbrake”);Simin(i)= SetVariable(Simin(I),“relSlip”,relslip_vals(i));结尾

使用SIM函数来模拟模型。可选地,将输出存储在一个名为SimOTUPS.

simOutputs = sim(思);
[01-Sep-2021 14:29:01]运行模拟…[01- 9 -2021 14:29:05]完成2次模拟运行中的2次

该模型流流记录信号,SLP.,仿真数据检查器。您可以在仿真数据检查器中查看信号数据。

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

runids = 金宝appsimulink.sdi.getallAllrunids();runresult = 金宝appsimulink.sdi.compareruns(runids(end-1),runids(end));

把这些值的差画出来WW.信号(虚拟总线信号的一个元素),指定结果索引1

signalResult = getResultByIndex(RunResult,1);绘图(SignalResult.diff);

存储扫描值金宝appsimulink.simulationInpul.对象

当您编写脚本以运行许多模拟时,创建一个数组金宝appsimulink.simulationInpul.对象(每个要运行的模拟都有一个对象)。使用可遗漏的setBlockParameter.每个对象的方法,用于识别用于相应模拟运行的参数值。通过这种技术,避免使用set_param.函数修改块参数值和赋值命令,以在模拟运行之间修改工作区变量值。

有关使用的更多信息金宝appsimulink.simulationInpul.对象运行多个模拟,请参阅SIM

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

如果使用非标量变量、结构变量或金宝appSimulink.Parameter.对象设置块参数值,使用可遗漏的每个方法的方法金宝appsimulink.simulationInpul.目的。请参阅表中的示例。

场景 例子
马铃薯®变量,myArray,其值为数组。您希望设置数组中的第三个元素(假设基于1的索引)。
setVariable(simIn,'MyArray(3)', 15.23)
MATLAB变量,mystruct.,它有一个名为field1
setVariable(simIn,“myStruct.field1”, 15.23)
参数对象,my,谁的价值属性是一个标量。
setVariable(simIn,“myParam。价值”, 15.23)
参数对象,myarrayparam.,谁的价值属性是一个数组。你想设置数组中的第三个元素。
setVariable(simIn,'myArrayParam.Value(3)', 15.23)
参数对象,myStructParam,谁的价值属性是一种结构。该结构有一个名为的领域field1
setVariable(simIn,“myStructParam.Value.field1”, 15.23)

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

如果您使用模型工作区来存储变量,当您使用可遗漏的A.的方法金宝appsimulink.simulationInpul.对象修改变量值,使用工作空间用于标识包含模型的配对参数:

setVariable(simIn,'myvar', 15.23,'工作区'“我的模型”

捕获和可视化仿真结果

参数扫描期间的每个模拟都会产生输出,例如信号值外埠块和记录信号。

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

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

提高仿真速度

要执行许多使用不同参数值的模拟,可以使用加速模拟模式。对于较大的模型,加速模拟的执行时间比普通模拟要少。如果您也有Parallel Computing Toolbox™,那么您可以使用处理器的多核来同时执行模拟。使用SIMparsim功能。

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

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

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

估计和校准模型参数

如果你有金宝appSimulink设计优化™,您可以估计模型参数值,以便模拟输出与您在现实世界中测量的数据紧密吻合。使用这种技术来估计参数在实际世界中的值植物模型,这代表了实际系统的动态,当您无法直接测量值时。该估计提高了植物模型的准确性。有关更多信息,请参阅根据测量数据估计参数(金宝appSimulink设计优化)

调谐和优化PID和控制器参数

如果你有金宝appSimulink Control Design™,您可以使用PID调谐器调整A的参数PID控制器堵塞。有关更多信息,请参阅Simulink中的PID控制器整定金宝app(金宝app仿真软件控制设计)

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

相关话题