Задайте проверки Model Advisor на поддерживаемые или неподдерживаемые блоки и параметры

Для руководств по моделированию, которые требуют, чтобы вы использовали подмножество блока или значений параметров, можно создать регистрации Model Advisor, которые вы задаете эти ограничения:

  • Поддерживаемые или неподдерживаемые значения параметров блоков

  • Поддерживаемые или неподдерживаемые значения параметра модели

  • Поддерживаемые или неподдерживаемые блоки

  • Проверяйте на или блоки, или параметры соответствуют комбинации ограничений

Можно также создать ограничения, которые проверяют на необходимые как условие ограничения прежде, чем проверять фактическое ограничение. Можно проверять модель по этим ограничениям, как вы редактируете или осуществляете проверки в интерактивном режиме после того, как вы завершаете свой проект модели.

Пример

sldemo_bounce модель симулирует мяч, возвращающийся на Земле. В этом примере вы создаете две проверки Model Advisor, состоящие из ограничений. Затем проверяйте свою модель по тем ограничениям.

Создайте ограничения параметров блоков

  1. Создайте эти ограничения параметров блоков:

    c1=Advisor.authoring.PositiveBlockParameterConstraint;
    c1.ID='ID_1';
    c1.BlockType='Gain';
    c1.ParameterName='Gain';
    c1.SupportedParameterValues={'-.7'};
    c1.ValueOperator='eq';
    
    c2=Advisor.authoring.NegativeBlockParameterConstraint;
    c2.ID='ID_2';
    c2.BlockType='InitialCondition';
    c2.ParameterName='Value';
    c2.UnsupportedParameterValues={'0'};
    c2.ValueOperator='le';
    

    Ограничение c1 указывает, что блок Gain должен иметь значение, равное -.7. Ограничение c2 указывает, что блок Initial Condition должен иметь значение, меньше чем или равное нулю.

  2. Создайте это положительное ограничение параметра модели.

    c3=Advisor.authoring.PositiveModelParameterConstraint;
    c3.ID='ID_3';
    c3.ParameterName='SolverType';
    c3.SupportedParameterValues={'Variable-step'};
    

    Ограничение c3 указывает, что параметр Solver должен быть равен Variable-step.

  3. Создайте это положительное блочное ограничение:

    c4=Advisor.authoring.PositiveBlockTypeConstraint;
    c4.ID='ID_5';
    s1=struct('BlockType','Constant','MaskType','');
    s2=struct('BlockType','Subsystem','MaskType','');
    s3=struct('BlockType','InitialCondition','MaskType','');
    s4=struct('BlockType','Gain','MaskType','');
    s5=struct('BlockType','Memory','MaskType','');
    s6=struct('BlockType','SecondOrderIntegrator','MaskType','');
    s7=struct('BlockType','Terminator','MaskType','');
    c4.SupportedBlockTypes={s1;s2;s3;s4;s5;s6;s7;};
    c4.addPreRequisiteConstraintID('ID_3');
    

    Ограничение c4 задает поддерживаемые блоки. Ограничение c3 необходимое условие к c4 означать, что Model Advisor только проверяет c4 если c3 передачи.

  4. Создайте файл данных, который содержит эти ограничения. Этот файл данных соответствует одной проверке Model Advisor.

    Advisor.authoring.generateBlockConstraintsDataFile( ...
                   'sldemo_constraints_1.xml','constraints',{c1,c2,c3,c4});

    Файл данных содержит маркировку специально для ограничений.

    <?xml version="1.0" encoding="utf-8"?>
    <customcheck>
       <checkdata>
          <PositiveBlockParameterConstraint BlockType="Gain" id="ID_1">
             <parameter type="string">Gain</parameter>
             <value>-.7</value>
             <operator>eq</operator>
          </PositiveBlockParameterConstraint>
          <NegativeBlockParameterConstraint BlockType="InitialCondition" id="ID_2">
             <parameter type="string">Value</parameter>
             <value>0</value>
             <operator>le</operator>
          </NegativeBlockParameterConstraint>
          <PositiveModelParameterConstraint id="ID_3">
             <parameter type="enum">SolverType</parameter>
             <value>Variable-step</value>
          </PositiveModelParameterConstraint>
          <PositiveBlockTypeConstraint id="ID_5">
             <BlockType MaskType="">Constant</BlockType>
             <BlockType MaskType="">Subsystem</BlockType>
             <BlockType MaskType="">InitialCondition</BlockType>
             <BlockType MaskType="">Gain</BlockType>
             <BlockType MaskType="">Memory</BlockType>
             <BlockType MaskType="">SecondOrderIntegrator</BlockType>
             <BlockType MaskType="">Terminator</BlockType>
             <dependson>ID_3</dependson>
          </PositiveBlockTypeConstraint>
          <CompositeConstraint>
             <ID>ID_1</ID>
             <ID>ID_2</ID>
             <ID>ID_5</ID>
             <operator>and</operator>
          </CompositeConstraint>
       </checkdata>
    </customcheck>

    Примечание

    Для ограничений параметра конфигурации модели используйте Advisor.authoring.generateBlockConstraintsDataFile метод только при определении ограничений параметра конфигурации модели как необходимых условий, чтобы блокировать ограничения или как часть составного ограничения, состоящего из блока и ограничений параметра конфигурации модели. Для других случаев используйте Advisor_authoring.generateConfigurationParameterDatafile метод.

  5. Создайте два ограничения параметров блоков и составное ограничение.

    cc1=Advisor.authoring.PositiveBlockParameterConstraint;
    cc1.ID='ID_cc1';
    cc1.BlockType='SecondOrderIntegrator';
    cc1.ParameterName='UpperLimitX';
    cc1.SupportedParameterValues={'inf'};
    cc1.ValueOperator='eq';
    
    cc2=Advisor.authoring.PositiveBlockParameterConstraint;
    cc2.ID='ID_cc2';
    cc2.BlockType='SecondOrderIntegrator';
    cc2.ParameterName='LowerLimitX';
    cc2.SupportedParameterValues={'0.0'};
    cc2.ValueOperator='eq';
    
    cc=Advisor.authoring.CompositeConstraint;
    cc.addConstraintID('ID_cc1');
    cc.addConstraintID('ID_cc2');
    cc.CompositeOperator='and';
    

    Ограничение cc1 указывает, что для блока Second-Order Integrator, параметр Upper limit x должен иметь значение, равное inf. Ограничение cc2 указывает, что для блока Second-Order Integrator, параметр Lower limit x должен иметь равное нулю значение. Ограничение cc указывает это для этой проверки, чтобы передать, оба cc1 и cc2 должны передать.

  6. Создайте файл данных, который содержит эти ограничения. Этот файл данных соответствует второй проверке Model Advisor.

    Advisor.authoring.generateBlockConstraintsDataFile( ...
                   'sldemo_constraints_2.xml','constraints',{cc1,cc2,cc});

Создайте проверки Model Advisor из ограничений

  1. Чтобы задать и указать эти проверки, используйте этот sl_customization.m файл.

    function sl_customization(cm)
    
    % register custom checks.
    cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);
    
    % register items to factory group.
    cm.addModelAdvisorTaskFcn(@defineModelAdvisorGroups);
    
    
    % defineModelAdvisorChecks
    function defineModelAdvisorChecks
    
    % check1
    rec = Advisor.authoring.createBlockConstraintCheck('mathworks.check_0001');
    rec.Title = 'Example1: Check block parameter constraints';
    rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback...
        (system)), 'None', 'StyleOne');
    rec.TitleTips = 'Example check block parameter constraints';
    
    % --- data file input parameters
    rec.setInputParametersLayoutGrid([1 1]);
    inputParam1 = ModelAdvisor.InputParameter;
    inputParam1.Name = 'Data File';
    inputParam1.Value = 'sldemo_constraints_1.xml';
    inputParam1.Type = 'String';
    inputParam1.Description = 'Name or full path of XML data file.';
    inputParam1.setRowSpan([1 1]);
    inputParam1.setColSpan([1 1]);
    rec.setInputParameters({inputParam1});
    rec.SupportExclusion = false;
    rec.SupportLibrary = true;
    
    % check2
    rec1 = Advisor.authoring.createBlockConstraintCheck('mathworks.check_0002');
    rec1.Title = 'Example2: Check block parameter constraints';
    rec1.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback...
        (system)), 'None', 'StyleOne');
    rec1.TitleTips = 'Example check block parameter constraints';
    
    % --- data file input parameters
    rec1.setInputParametersLayoutGrid([1 1]);
    inputParam1 = ModelAdvisor.InputParameter;
    inputParam1.Name = 'Data File';
    inputParam1.Value = 'sldemo_constraints_2.xml';
    inputParam1.Type = 'String';
    inputParam1.Description = 'Name or full path of XML data file.';
    inputParam1.setRowSpan([1 1]);
    inputParam1.setColSpan([1 1]);
    rec1.setInputParameters({inputParam1});
    rec1.SupportExclusion = false;
    rec1.SupportLibrary = true;
    mdladvRoot = ModelAdvisor.Root;
    mdladvRoot.register(rec);
    mdladvRoot.register(rec1);
    
    %% defineModelAdvisorGroups
    function defineModelAdvisorGroups
    mdladvRoot = ModelAdvisor.Root;
    
    % --- sample factory group 1
    rec = ModelAdvisor.FactoryGroup('com.mathworks.Test.factoryGroup');
    rec.DisplayName='Example: My Group';
    rec.addCheck('mathworks.check_0001');
    rec.addCheck('mathworks.check_0002');
    
    mdladvRoot.publish(rec);
    
    Необходимо использовать Advisor.authoring.createBlockConstraintCheck функция, чтобы создать ModelAdvisor.Check возразите и задайте ограничительный файл данных как входной параметр к этому объекту.

    Обратите внимание на то, что параметры блоков и ограничительные проверки параметра модели должны использовать setCallbackFcn тип StyleOne.

  2. В командной строке тип создает Example1: Check block parameter constraints, и Example2: Check block parameter constraints проверяет ввод этой команды:

    Advisor.Manager.refresh_customizations

  3. В командной строке введите sldemo_bounce.

  4. Во вкладке Modeling выберите Model Advisor, чтобы открыть Model Advisor.

  5. На левой панели выберите By Task > Example: My Group. Для каждой проверки, на правой панели, параметры Data File устанавливаются на файлы данных, которые вы ранее создали.

  6. Нажмите Run Selected Checks.

  7. Проверка Example1: Check block parameter constraints производит предупреждение, потому что блок Gain имеет значение -0.8 не -0.7. Проверка Example2: Check block parameter constraints передает, потому что блок Second-Order Integrator соответствует обоим ограничениям.

Можно использовать разовую редактированием проверку собственные проверки что ограничения параметра и блок define. Чтобы включить разовую редактированием проверку, в Model Advisor Configuration Editor, выбирают проверки, которые содержат ограничения. Для получения дополнительной информации о разовой редактированием проверке смотрите Проверку Ваша Модель при помощи Проверок Времени Редактирования.

Смотрите также

| | | | | |