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

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

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

如果要重复更改块参数的值,请考虑在工作区中创建变量。您可以使用模型资源管理器或程序化命令更改变量的值,而不是定位或识别模型中的块。此外,若干特性和产品促进参数优化,估计和扫描要求通过创s manbetx 845建工作区变量来设置块参数值。

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

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

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

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

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

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

打开示例模型。

Open_System('sldemo_absbrake');

在这一点造型选项卡,单击模型数据编辑器

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

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

在“模型数据编辑器”中,选择参数标签。放改变视图设计

在模型中,选择标记的常量块期望的相对滑动。模型数据编辑器突出显示与对应的行恒定价值块的参数。

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

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

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

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

Relslip = 0.2;set_param('SLDEMO_ABSBRAKE /期望的相对滑动''价值''relslip'

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

Relslip_vals = [0.24 0.25];

创建一个万博1manbetxsimulink.simulationInpul.对于要运行的每个模拟的对象(在这种情况下,两个)。将对象存储在单个阵列变量中,西班。使用可遗漏的每个对象的方法以识别两个实验值中的每一个。

为了i = 1:长度(relslip_vals)simin(i)= simuli万博1manbetxnk.simulationInput('sldemo_absbrake');Simin(i)= SetVariable(Simin(I),'relslip',relslip_vals(i));结尾

使用SIM函数来模拟模型。(可选)将输出存储在命名的变量中SimOTUPS.

simoutpuls = sim(simin);
[29-Feb-2020 02:23:51]运行模拟...... [29-FEB-2020 02:23:53]完成了2个模拟运行中的1个[29-FEB-2020 02:23:54]完成了2个2仿真运行

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

比较两个最新仿真运行的输出数据。

runids = 万博1manbetxsimulink.sdi.getallAllrunids();runresult = 万博1manbetxsimulink.sdi.compareruns(runids(end-1),runids(end));

绘制值之间的差异WW.信号(这是虚拟总线信号的元素you ..)通过指定结果索引1

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

存储扫描值万博1manbetxsimulink.simulationInpul.对象

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

有关使用的更多信息万博1manbetxsimulink.simulationInpul.对象运行多个模拟,请参阅SIM

扫描非卡尔,结构和参数对象

如果您使用非卡拉尔变量,结构变量或万博1manbetxSimulink.Parameter.对象设置块参数值,使用可遗漏的每个方法的方法万博1manbetxsimulink.simulationInpul.目的。请参阅表中的示例。

设想 例子
马铃薯®多变的,myArray.,其值是数组。您希望在数组中设置第三个元素(假设基于一个基于一个索引)。
可定义(Simin,'MyArray(3)',15.23)
matlab变量,mystruct.,那是一个名为的领域Field1.
可定义(Simin,'mystruct.field1',15.23)
参数对象,my,谁的价值属性是一个标量。
可定义(Simin,'myparam.value',15.23)
参数对象,myarrayparam.,谁的价值属性是一个数组。您希望在数组中设置第三个元素。
可定义(Simin,'myarrayparam.value(3)',15.23)
参数对象,MyStructParam.,谁的价值属性是一种结构。该结构有一个名为的领域Field1.
可定义(Simin,'mystructparam.value.field1',15.23)

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

如果使用模型工作区存储变量,请使用时可遗漏的A.的方法万博1manbetxsimulink.simulationInpul.对象修改变量值,使用工作区对识别包含模型的参数:

可定义(Simin,'myvar',15.23,'工作区''mymodel'

捕获和可视化仿真结果

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

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

要可视化模拟输出数据,因此您可以比较每个参数值的效果,请参阅决定如何可视化模拟数据

提高模拟速度

要执行许多每个使用不同参数值的模拟,可以使用加速的仿真模式。对于较大的模型,加速模拟需要比正常模拟更少的时间来执行。如果您还有并行计算工具箱™,则可以使用处理器的多个核心同时执行模拟。使用论点SIMParsim职能。

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

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

如果你有万博1manbetx®TEST™如果使用不同的参数值,您可以确认您的模型仍然符合要求。参数覆盖和测试迭代使您可以为每个测试用例设置不同的参数值。有关更多信息,请参阅参数覆盖(万博1manbetxSimulink测试)和测试迭代(万博1manbetxSimulink测试)。

估计和校准模型参数

如果你有万博1manbetxSimulink Design Optimization™,您可以估计模型参数值,以便仿真输出紧密地符合您在现实世界中测量的数据。使用此技术估计a中的参数的实际值植物模型,这代表了实际系统的动态,当您无法直接测量值时。该估计提高了植物模型的准确性。有关更多信息,请参阅估计测量数据的参数(万博1manbetxSimulink设计优化)。

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

如果你有万博1manbetxSimulink Control Design™,您可以使用PID调谐器调整A的参数PID控制器堵塞。有关更多信息,请参阅Simulink中的PID控制器调整万博1manbetx(万博1manbetxSimulink控制设计)。

如果你有万博1manbetxSimulink设计优化,您可以优化控制参数值,以便仿真输出满足您指定的响应要求。有关更多信息,请参阅设计优化,以满足步骤响应要求(GUI)(万博1manbetxSimulink设计优化)。

相关话题