定义模型顾问检查支持和不支持的块和参数金宝app
您可以创建Model Advisor检查,检查块是否使用特定的块或参数值。你可以指定约束:
金宝app支持或不支持的块参数值
金宝app支持或不支持的模型参数值
金宝app支持或不支持的块
块或参数是否满足约束的组合
你也可以使用addPreRequisiteConstraintID
函数添加在Model Advisor检查实际约束之前必须通过的先决条件约束。您可以在编辑或从model Advisor中运行检查时根据这些约束检查您的模型。
例子
的sldemo_bounce
这个模型模拟了一个球在地球上的弹跳。在本例中,您创建了两个由约束组成的Model Advisor检查,然后根据这些约束检查模型。
准备工作目录
1.将当前文件夹设置为可写目录。
2.复制脚本prepare_chk_define_code
到当前文件夹并运行脚本。该脚本将本例所需的文件复制到当前文件夹。
拷贝文件(fullfile (matlabroot,“例子”,“slcheck”,“主要”,“prepare_chk_define_code.m”),...“prepare_chk_define_code.m”,“f”);运行(“prepare_chk_define_code.m”);
创建一个检查支持或不支持的块参数金宝app
首先,创建一个Model Advisor检查,其中包含三个块参数约束,c1
,c2
,c3
,指定支持和不支持的块参数值。金宝app
1.定义一个新函数。
函数constraints = createConstraints_Check1()结束
2.在函数内部,创建两个块参数约束,c1
而且c2
.
函数constraints = createConstraints_Check1() c1= advisor .author . positiveblockparameterconstraint;c1。ID =“ID_1”;c1。BlockType =“获得”;c1。ParameterName =“获得”;c1。金宝appSupportedParameterValues = {“-0.7”};c1。ValueOperator =“情商”;%等于c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2。ID =“ID_2”;c2。BlockType =“InitialCondition”;c2。ParameterName =“价值”;c2。Un金宝appsupportedParameterValues = {' 0 '};c2。ValueOperator =“乐”;%小于或等于结束
约束c1
指定增益块必须具有等于的值-0.7
.约束c2
指定不支持值小于或等于零的初始条件块。金宝app
3.创建一个正块约束,c3
,并设置约束
等于一个单元格数组的约束c1
,c2
,c3
.
函数constraints = createConstraints_Check1() c1= advisor .author . positiveblockparameterconstraint;c1。ID =“ID_1”;c1。BlockType =“获得”;c1。ParameterName =“获得”;c1。金宝appSupportedParameterValues = {“-0.7”};c1。ValueOperator =“情商”;%等于c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2。ID =“ID_2”;c2。BlockType =“InitialCondition”;c2。ParameterName =“价值”;c2。Un金宝appsupportedParameterValues = {' 0 '};c2。ValueOperator =“乐”;%小于或等于c3 = Advisor.authoring.PositiveBlockTypeConstraint;c3。ID =“ID_3”;s1 =结构(“BlockType”,“不变”,“MaskType”,”);s2 =结构(“BlockType”,“子系统”,“MaskType”,”);s3 =结构(“BlockType”,“InitialCondition”,“MaskType”,”);s4 =结构(“BlockType”,“获得”,“MaskType”,”);s5 =结构(“BlockType”,“记忆”,“MaskType”,”);s6 =结构(“BlockType”,“SecondOrderIntegrator”,“MaskType”,”);s7 =结构(“BlockType”,“终结者”,“MaskType”,”);c3.金宝appSupportedBlockTypes = {s1、s2、s3、s4, s5; s6; s7;};约束= {c1,c2,c3};结束
约束c3
指定支持的块。金宝app约束
是块约束的单元格数组。
4.通过创建另一个函数定义一个新的Model Advisor检查,check1
.使用函数Advisor.authoring.createBlockConstraintCheck
创建Model Advisor检查,矩形
,使用这些块约束。然后使用mdladvRoot.register (rec)
向Model Advisor注册块约束检查。
函数check1() rec = advisor . authors . createblockconstraintcheck (“mathworks.check_0001”,...“约束”, @createConstraints_Check1);rec.Title =例1:检查三个块参数约束;rec.TitleTips ='示例检查三个块参数约束';mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“例子:我的小组”)结束函数constraints = createConstraints_Check1() c1= advisor .author . positiveblockparameterconstraint;c1。ID =“ID_1”;c1。BlockType =“获得”;c1。ParameterName =“获得”;c1。金宝appSupportedParameterValues = {“-0.7”};c1。ValueOperator =“情商”;%等于c2 = Advisor.authoring.NegativeBlockParameterConstraint;c2。ID =“ID_2”;c2。BlockType =“InitialCondition”;c2。ParameterName =“价值”;c2。Un金宝appsupportedParameterValues = {' 0 '};c2。ValueOperator =“乐”;%小于或等于c3 = Advisor.authoring.PositiveBlockTypeConstraint;c3。ID =“ID_3”;s1 =结构(“BlockType”,“不变”,“MaskType”,”);s2 =结构(“BlockType”,“子系统”,“MaskType”,”);s3 =结构(“BlockType”,“InitialCondition”,“MaskType”,”);s4 =结构(“BlockType”,“获得”,“MaskType”,”);s5 =结构(“BlockType”,“记忆”,“MaskType”,”);s6 =结构(“BlockType”,“SecondOrderIntegrator”,“MaskType”,”);s7 =结构(“BlockType”,“终结者”,“MaskType”,”);c3.金宝appSupportedBlockTypes = {s1、s2、s3、s4, s5; s6; s7;};约束= {c1,c2,c3};结束
为复合约束创建一个检查
接下来,创建一个Model Advisor检查,其中包含三个块参数约束cc1
,cc2
,cc
.约束cc1
而且cc2
指定支持哪些块参数和约束金宝appcc
是包含cc1
而且cc2
.
1.定义一个新函数。
函数constraints = createConstraints_Check2()结束
2.创建两个块参数约束,cc1
而且cc2
,和复合约束,cc
.集约束
等于一个单元格数组的约束cc1
,cc2
,cc
.
函数约束= createConstraints_Check2() cc1= advisor .author . positiveblockparameterconstraint;cc1。ID =“ID_cc1”;cc1。BlockType =“SecondOrderIntegrator”;cc1。ParameterName =“UpperLimitX”;cc1。金宝appSupportedParameterValues = {“正”};cc1。ValueOperator =“情商”;%等于cc2 = Advisor.authoring.PositiveBlockParameterConstraint;cc2。ID =“ID_cc2”;cc2。BlockType =“SecondOrderIntegrator”;cc2。ParameterName =“LowerLimitX”;cc2。金宝appSupportedParameterValues = {“0.0”};cc2。ValueOperator =“情商”;%等于cc = Advisor.authoring.CompositeConstraint;cc.addConstraintID (“ID_cc1”);cc.addConstraintID (“ID_cc2”);cc.CompositeOperator =”和“;Model Advisor检查多个约束约束= {cc1,cc2,cc};结束
约束cc1
的二阶积分器块上限x参数的值必须等于正
.约束cc2
额外指定下限x参数的值必须为零。约束cc
指定此检查通过时,两者都要通过cc1
而且cc2
必须通过。constriants
是块约束的单元格数组。
3.在新函数中定义一个新的Model Advisor检出,check2
.使用函数Advisor.authoring.createBlockConstraintCheck
来创建Model Advisor检查函数定义的块约束createConstraints_Check2
.
函数check2() rec = advisor . authors . createblockconstraintcheck (“mathworks.check_0002”,...“约束”, @createConstraints_Check2);rec.Title =例2:检查三个块参数约束;rec.TitleTips ='示例检查三个块参数约束';mdladvRoot = ModelAdvisor.Root;mdladvRoot.publish (rec,“例子:我的小组”)结束函数约束= createConstraints_Check2() cc1= advisor .author . positiveblockparameterconstraint;cc1。ID =“ID_cc1”;cc1。BlockType =“SecondOrderIntegrator”;cc1。ParameterName =“UpperLimitX”;cc1。金宝appSupportedParameterValues = {“正”};cc1。ValueOperator =“情商”;cc2 = Advisor.authoring.PositiveBlockParameterConstraint;cc2。ID =“ID_cc2”;cc2。BlockType =“SecondOrderIntegrator”;cc2。ParameterName =“LowerLimitX”;cc2。金宝appSupportedParameterValues = {“0.0”};cc2。ValueOperator =“情商”;cc = Advisor.authoring.CompositeConstraint;cc.addConstraintID (“ID_cc1”);cc.addConstraintID (“ID_cc2”);cc.CompositeOperator =”和“;约束= {cc1,cc2,cc};结束
创建并运行模型顾问检查
1.要注册新支票,请使用sl_customization.m
文件。对于本例,将sl_customization_DefineChecks.m
文件sl_customization.m
.
函数sl_customization (cm)注册自定义支票。cm.addModelAdvisorCheckFcn (@check1);cm.addModelAdvisorCheckFcn (@check2);
2.在命令提示符下,创建例1:检查块参数约束而且例2:检查块参数约束通过输入以下命令检查:
Advisor.Manager.refresh_customizations
3.在命令提示符下,打开模型sldemo_bounce
.
open_system (“sldemo_bounce”)
4.在建模选项卡上,选择模型的顾问打开模型顾问器。
5.在左侧窗格中,选择通过产品>例子:我的小组.
6.点击运行检查.
的例1:检查三个块参数约束check产生一个警告,因为增益块的值为-0.8
.的例2:检查三个块参数约束检查通过是因为二阶积分器块同时满足这两个约束。
使用约束创建模型顾问编辑时检查
您可以使用编辑时检查来突出显示模型画布中违反块约束的块。通过在Model Advisor Configuration Editor中选择所需的检查并保存自定义配置,您可以在编辑时检查时选择Model Advisor检查评估哪个。
1.要打开Model Advisor配置编辑器,请打开Model Advisor并选择打开>打开配置编辑器.
2.创建的检查显示在通过产品>例子:我的小组.
3.在本例中,删除除例子:我的小组文件夹中。
4.点击保存并将配置另存为my_config.json
.
5.在对话框中,单击没有因为您不想将此配置设置为默认配置。
6.在Simuli金宝appnk模型编辑器中建模选项卡上,单击模型的顾问>编辑时间检查.
7.为模型顾问配置文件参数,点击浏览,并选择my_config.json
.
8.选择编辑时间检查参数,关闭“配置参数”对话框。
9.单击模型中突出显示的块以查看编辑时警告。
属性,可以从编辑时检查诊断窗口编辑块参数值修复按钮或单击不支持的参数的超链接来打开金宝app块的参数窗口。
另请参阅
PositiveBlockParameterConstraint
|NegativeBlockParameterConstraint
|PositiveModelParameterConstraint
|NegativeModelParameterConstraint
|PositiveBlockTypeConstraint
|NegativeBlockTypeConstraint
|Advisor.authoring.generateBlockConstraintsDataFile