文档

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

当你扫描一个或多个参数,你改变他们的价值观之间的模拟运行,并比较和分析从每次运行输出信号数据。使用参数全面优化控制参数,估计未知模型参数和测试控制算法的鲁棒性,考虑到现实世界的不确定性系统。

你可以扫描块参数值或工作空间变量的值用来设置参数值。使用模型数据编辑器(视图>模型数据编辑器)参数选项卡中,属性检查器(视图>属性检查器),命令提示符,或脚本改变参数值之间的模拟运行。

如果你想不断改变一块参数的值,考虑在工作区中创建一个变量。您可以使用Model Explorer或编程命令来改变变量的值,而不是定位或识别模型中的块。同时,几个功能和产品,促进参数优化,评估,全面要求你设s manbetx 845置块参数值通过创建工作空间变量。

学习如何操纵参数值在创建模型的迭代过程,明白了调整和试验块参数值

基本信息访问和设置块参数值为你设计一个模型时,看到的组块的参数值。通过编程模拟模型的基本信息,如通过使用一个脚本,明白了通过编程的方式运行模拟

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

这个例子展示了如何改变一个块参数值在多个编程模拟运行。使用这种技术来确定最优的参数值,通过比较每个运行的输出信号数据。

模型的例子sldemo_absbrake使用一个常数块指定一个滑选点防抱死制动系统。模拟模型与两种不同的滑动选点值,0.24和0.25,并比较输出轮每个仿真运行的速度。

存储选点价值,基本的工作区中创建一个变量。这种方法使您能够指定一个有意义的名称的值。

打开示例模型。

open_system (“sldemo_absbrake”);

在模型中,选择编辑器视图>模型数据

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

设置改变观点下拉列表,仪表。的日志数据列显示的信号(这是一个虚拟总线)方案得到配置日志记录。当你模拟模型,稍后您可以收集和检查这些信号的值通过使用模拟数据检查员。

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

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

使用价值列设置参数值relSlip

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

在创建新的数据对话框中,设置价值0.2并点击创建。一个变量,其值0.2,出现在工作区中。现在的模型获得这个变量的相对滑移定位点。

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

relSlip = 0.2;set_param (sldemo_absbrake /期望的相对滑动的,“价值”,“relSlip”)

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

relSlip_vals = (0.24 - 0.25);

创建一个万博1manbetxSimulink.SimulationInput为每个模拟对象,你想运行(在本例中,两个)。将对象存储在一个数组变量,思敏。使用setVariable每个对象的方法来识别每一个两个实验值。

i = 1:长度(relSlip_vals)思(i) = Simulink.万博1manbetxSimulationInput (“sldemo_absbrake”);思敏(i) = setVariable(思敏(我),“relSlip”relSlip_vals(我));结束

使用sim卡函数来模拟模型。可选地,输出存储在一个变量命名simOutputs

simOutputs = sim(思);
(16 - 3月- 2018 17:13:31)运行模拟……(16 - 3月- 2018 17:13:36)完成1 2模拟运行[16 - 3月- 2018 17:13:38]完成2 2模拟运行

模型的流记录的信号,方案得到检查员,仿真数据。您可以查看信号仿真数据检查器中的数据。

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

runIDs = 万博1manbetxSimulink.sdi.getAllRunIDs ();runResult = 万博1manbetxSimulink.sdi.compareRuns (runIDs (end-1) runIDs(结束));

情节的值之间的差异Ww信号(这是一个元素的虚拟总线信号通过指定结果指数)1

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

扫描值存储在万博1manbetxSimulink.SimulationInput对象

当你写一个脚本运行许多模拟,创建一个数组万博1manbetxSimulink.SimulationInput为每个模拟对象(一个对象,你想要运行)。使用setVariablesetBlockParameter每个对象的方法来识别参数值用于相应的模拟运行。使用这种方法,您不需要使用set_param函数来修改块参数值和作业命令修改工作区之间的变量值模拟运行。

关于使用的更多信息万博1manbetxSimulink.SimulationInput运行多个模拟对象,明白了sim卡

扫描Nonscalars、结构和参数对象

如果你使用nonscalar变量、结构变量,或万博1manbetxSimulink.Parameter对象设置块参数值,使用setVariable每个方法万博1manbetxSimulink.SimulationInput对象。引用表中的示例。

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

扫描变量在模型空间的价值

如果您使用该模型空间来存储变量,当你使用setVariable的方法万博1manbetxSimulink.SimulationInput对象修改变量值,使用工作空间对参数识别包含模型:

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

捕获和可视化仿真结果

每个仿真运行时参数扫描产生输出,如信号值外港块和记录信号。

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

可视化模拟输出数据,这样你就可以比较每个参数值的影响,明白了决定如何可视化仿真数据

提高仿真速度

执行许多模拟,每个使用不同的参数值,您可以使用加速模拟模式。对于较大的模型,加速比普通模拟仿真花更少的时间来执行。如果你也有并行计算工具箱™,你可以同时使用的多核处理器执行模拟。使用参数sim卡parsim功能。

改善你的模型的仿真速度通过使用加速模拟和其他技术,知道了性能。例子和更多的信息,请参阅运行多个模拟

扫描参数值来验证系统

如果你有万博1manbetx®测试™,您可以确认您的模型仍然符合要求时使用不同的参数值。参数覆盖和测试迭代允许您为每个测试用例设置不同的参数值。有关更多信息,请参见参数将覆盖(万博1manbetx仿真软件测试)使用迭代运行的组合测试(万博1manbetx仿真软件测试)。

估计和校正模型参数

如果你有万博1manbetx仿真软件优化设计™,你可以估计模型参数值,以便模拟输出密切配合你测量的数据在现实世界中。使用这种技术来估计参数的实际值工厂模式代表一个真实的动态系统,当你不能直接测量值。这个估计可以提高植物模型的准确性。有关更多信息,请参见从测量数据估计参数(万博1manbetx仿真软件设计优化)。

调整和优化PID控制器参数

如果你有万博1manbetx仿真软件控制设计™,您可以使用PID调谐器的调优参数PID控制器块。有关更多信息,请参见PID控制器在模型调优万博1manbetx(万博1manbetx仿真软件控制设计)。

如果你有万博1manbetx仿真软件优化设计,您可以优化控制参数值,以便模拟输出满足响应要求您指定。有关更多信息,请参见优化设计以满足阶跃响应需求(GUI)(万博1manbetx仿真软件设计优化)。

相关的话题

这个主题有帮助吗?