Создайте проверку Model Advisor на параметры конфигурации модели

Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.

Решите который настройки параметра конфигурации использовать в вашей модели. При желании рассмотрите инструкции по моделированию:

  1. Создайте файл данных XML, содержащий настройки параметра конфигурации, которые вы хотите проверять. Можно использовать Advisor.authoring.generateConfigurationParameterDataFile или вручную создайте файл сами.

  2. Укажите проверку параметра конфигурации модели с помощью sl_customization.m файл.

  3. Осуществите проверку своих моделей.

Создайте файл данных для проверки параметра конфигурации

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

В командной строке введите vdp открыть van der Pol Equation модель.

Щелкните правой кнопкой по окну модели и выберите Model Configuration Parameters. В панели Diagnostics, набор параметры конфигурации можно следующим образом:

  • Algebraic loop к none

  • Minimize algebraic loop к error

  • Block Priority Violation к error

Используйте Advisor.authoring.generateConfigurationParameterDataFile функция, чтобы создать файл данных, задающий ограничения параметра конфигурации в панели Diagnostics. Кроме того, чтобы создать проверку с действием фиксации, установите FixValue к истине. В командной строке введите:

model='vdp';
dataFileName = 'ex_DataFile.xml';
Advisor.authoring.generateConfigurationParameterDataFile(dataFileName,...
model, 'Pane', 'Diagnostics', 'FixValues', true);

В Командном окне выберите ex_DataFile.xml. Файл данных открывается в редакторе MATLAB®.

  • Minimize algebraic loop (ArtificialAlgebraicLoopMsg) маркировка параметра конфигурации задает value из error с fixvalue из error. Когда вы осуществляете проверку параметра конфигурации с помощью ex_DataFile.xml, проверка перестала работать, если установкой Minimize algebraic loop не является error. Проверка фиксирует действие, изменяет установку на error.

  • Block Priority Violation (BlockPriorityViolationMsg) маркировка параметра конфигурации задает value из error с fixvalue из error. Когда вы осуществляете проверку параметра конфигурации с помощью ex_DataFile.xml, проверка перестала работать, если установкой Block Priority Violation не является error. Проверка фиксирует действие, изменяет установку на error.

В ex_DataFile.xml, отредактируйте Algebraic loop (AlgebraicLoopMsg) маркировка параметра так, чтобы проверка предупредила если value none. Поскольку вы задаете параметр конфигурации, который вы не хотите, вам нужен NegativeModelParameterConstraint. Кроме того, чтобы создать подпроверку, которая не имеет действия фиксации, удалите линию с <fixvalue> маркировка. Маркировка для параметра конфигурации смотрит можно следующим образом:

<!-- Algebraic loop: (AlgebraicLoopMsg)-->
    <NegativeModelParameterConstraint>
        <parameter>AlgebraicLoopMsg</parameter>
        <value>none</value>
    </NegativeModelParameterConstraint>

В ex_DataFile.xml, удалите линии с маркировкой для параметров конфигурации, которые вы не хотите проверять. Файл данных ex_DataFile.xml обеспечивает маркировку только для Algebraic loop, Minimize algebraic loop и Block Priority Violation. Например, ex_DataFile.xml выглядит похожим на:

<?xml version="1.0" encoding="utf-8"?>
<customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
xsi:noNamespaceSchemaLocation="http://www.w3schools.com 
MySchema.xsd">
     <checkdata>       
     <!-- Algebraic loop: (AlgebraicLoopMsg)-->
        <NegativeModelParameterConstraint>
            <parameter>AlgebraicLoopMsg</parameter>
            <value>none</value>
        </NegativeModelParameterConstraint>
    <!--Minimize algebraic loop: (ArtificialAlgebraicLoopMsg)-->
        <PositiveModelParameterConstraint>
            <parameter>ArtificialAlgebraicLoopMsg</parameter>
            <value>error</value>
            <fixvalue>error</fixvalue>    
        </PositiveModelParameterConstraint>
    <!--Block priority violation: (BlockPriorityViolationMsg)-->
        <PositiveModelParameterConstraint>
            <parameter>BlockPriorityViolationMsg</parameter>
            <value>error</value>
            <fixvalue>error</fixvalue>
        </PositiveModelParameterConstraint>
    </checkdata>
</customcheck>

Проверьте синтаксис данных с Advisor.authoring.DataFile.validate. В командной строке введите:

dataFile = 'myDataFile.xml'; 
msg = Advisor.authoring.DataFile.validate(dataFile); 

if isempty(msg)     
    disp('Data file passed the XSD schema validation.'); 
else 
    disp(msg); 
end 

Создайте проверку на параметры конфигурации модели панели диагностики

В этом примере показано, как создать проверку на параметры конфигурации панели Diagnostics модели с помощью файла данных и sl_customization.m файл. Во-первых, вы указываете проверку с помощью sl_customization.m файл. Используя ex_DataFile.xml, проверка предупреждает когда:

  • Algebraic loop установлен в none

  • Minimize algebraic loop не установлен в error

  • Block Priority Violation не установлен в error

Проверка фиксирует действие, изменяет Minimize algebraic loop и установки параметров Block Priority Violation к error.

Проверка использует ex_DataFile.xml файл данных, созданный в, Создает Файл данных для Проверки Параметра конфигурации.

Закройте Model Advisor и вашу модель, если любой открыт.

Используйте следующий sl_customization.m файл, чтобы задать и указать проверяет Example: Check model configuration parameters.

function sl_customization(cm)

% register custom checks.
cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);

% register items to factory group.
cm.addModelAdvisorTaskFcn(@defineModelAdvisorGroups);


%% defineModelAdvisorChecks
function defineModelAdvisorChecks
    
 rec = ModelAdvisor.Check('com.mathworks.Check1');
	rec.Title = 'Example: Check model configuration parameters';
	rec.setCallbackFcn(@(system)(Advisor.authoring.CustomCheck.checkCallback...
                                        (system)), 'None', 'StyleOne');
	rec.TitleTips = 'Example check for model configuration parameters';
	
	% --- data file input parameters
	rec.setInputParametersLayoutGrid([1 1]);
	inputParam1 = ModelAdvisor.InputParameter;
	inputParam1.Name = 'Data File';
	inputParam1.Value = 'ex_DataFile.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});

	% -- set fix operation
	act = ModelAdvisor.Action;
	act.setCallbackFcn(@(task)(Advisor.authoring.CustomCheck.actionCallback...
                                                     (task)));
	act.Name = 'Modify Settings';
	act.Description = 'Modify model configuration settings.';
	rec.setAction(act);
    
	mdladvRoot = ModelAdvisor.Root;
	mdladvRoot.register(rec);

%% defineModelAdvisorGroups
function defineModelAdvisorGroups
mdladvRoot = ModelAdvisor.Root;
 
% --- sample factory group 1
rec = ModelAdvisor.FactoryGroup('com.mathworks.Test.factoryGroup');
rec.DisplayName='Example: My Group';
rec.addCheck('com.mathworks.Check1');
mdladvRoot.publish(rec);

Создайте Example: Check model configuration parameters. В командной строке, введите:

Advisor.Manager.refresh_customizations

В командной строке введите vdp открыть van der Pol Equation модель.

Щелкните правой кнопкой по окну модели и выберите Model Configuration Parameters. В панели Diagnostics, набор параметры конфигурации можно следующим образом:

  • Algebraic loop к none

  • Minimize algebraic loop к warning

  • Block Priority Violation к warning

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

На левой панели выберите By Task > Example: My Group > Example: Check model configuration parameters. На правой панели Data File установлен в ex_DataFile.xml.

Нажмите Run This Check. Проверка Model Advisor предупреждает, что параметры конфигурации не установлены в значения, заданные в ex_DataFile.xml. Для параметров конфигурации с положительной ограничительной маркировкой (PositiveModelParameterConstraint), рекомендуемые значения получены из value маркировка. Для параметров конфигурации с отрицательной ограничительной маркировкой (NegativeModelParameterConstraint), значения, не рекомендуемые, получены из value маркировка.

  • Algebraic loop (AlgebraicLoopMsg) - ex_DataFile.xml маркировка не задает действие фиксации для AlgebraicLoopMsg. Подпроверка передает только, когда установка не установлена в none.

  • Minimize algebraic loop (ArtificialAlgebraicLoopMsg) - ex_DataFile.xml маркировка задает subcheck с действием фиксации для ArtificialAlgebraicLoopMsg это передает только, когда установкой является error. Действие фиксации изменяет установку на error.

  • Block priority violation (BlockPriorityViolationMsg) - ex_DataFile.xml маркировка задает subcheck с действием фиксации для BlockPriorityViolationMsg это не передает, когда установкой является warning. Действие фиксации изменяет установку на error.

В разделе Action диалогового окна Model Advisor нажмите Modify Settings. Model Advisor обновляет параметры конфигурации для Block priority violation и Minimize algebraic loop.

Запустите By Task > Example: My Group > Example: Check model configuration parameters. Проверка предупреждает, потому что Algebraic loop установлен в none.

На правой панели окна Model Advisor используйте Algebraic loop (AlgebraicLoopMsg) соединитесь, чтобы отредактировать параметр конфигурации. Установите Algebraic loop на warning или error.

Запустите By Task > Example: My Group > Example: Check model configuration parameters. Передачи проверки.

Файл данных для проверки параметра конфигурации

Вы используете файл данных XML, чтобы создать проверку параметра конфигурации. Чтобы создать файл данных, можно использовать Advisor.authoring.generateConfigurationParameterDataFile или вручную создайте файл сами. Файл данных содержит маркировку, которая задает поведение проверки. Каждый параметр конфигурации модели, заданный в файле данных, является подпроверкой. Структура для файла данных следующие:

<?xml version="1.0" encoding="utf-8"?>
<customcheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://www.w3schools.com 
MySchema.xsd">
    <messages>    
        <Description>Description of check</Description>    
        <PassMessage>Pass message</PassMessage>
        <FailMessage>Fail message</FailMessage>
        <RecommendedActions>Recommended action</RecommendedActions>        
    </messages>
    <checkdata>
    <!--Command line name of configuration parameter-->
        <PositiveModelParameterConstraint>
            <parameter>Command-line name of configuration parameter</parameter>
            <value>Value that you want configuration parameter to have</value>
            <fixvalue>Specify value for a fix action</fixvalue>
            <dependson>ID of configuration parameter subcheck that must pass 
                    before this subcheck runs</value>    
        </PositiveModelParameterConstraint>
    <!-- Command line name of configuration parameter-->
        <NegativeModelParameterConstraint>
            <parameter>Command line name of configuration parameter</parameter>
            <value>Value that you do not want configuration parameter to have</value>
            <fixvalue>Specify value for a fix action</fixvalue>
            <dependson>ID of configuration parameter subcheck that must pass 
                    before this subcheck runs</value>
        </NegativeModelParameterConstraint>
     </checkdata>
</customcheck>

<messages> тег содержит:

  • Description - (Необязательно) Описание проверки. Отображенный в окне Model Advisor.

  • PassMessage - (Необязательно) сообщение Передачи, отображенное в окне Model Advisor.

  • FailMessage - (Необязательно) сообщение Сбоя, отображенное в окне Model Advisor.

  • RecommendedActions - (Необязательно) Рекомендуемые действия отобразились в окне Model Advisor, когда проверка не передает.

Примечание

<messages> тег является дополнительным. Advisor.authoring.generateConfigurationParameterDataFile не генерирует <messages> маркировка.

В <checkdata> пометьте, файл данных задает два типа ограничений:

  • PositiveModelParameterConstraint - Задает параметр конфигурации, устанавливающий это, вы хотите.

  • NegativeModelParameterConstraint - Задает параметр конфигурации, устанавливающий это, вы не хотите.

В теге для каждого из двух типов ограничений, для каждого параметра конфигурации, который вы хотите проверять, файл данных имеет следующие теги:

  • parameter - Задает параметр конфигурации, который вы хотите проверять. Маркировка использует имя командной строки в параметре конфигурации. Например:

    <PositiveModelParameterConstraint>
        <parameter>BlockPriorityViolationMsg</parameter>
    </PositiveModelParameterConstraint>
    <NegativeModelParameterConstraint>
        <parameter>AlgebraicLoopMsg</parameter>
    </NegativeModelParameterConstraint>

  • value - Задает установку (установки) для параметра конфигурации. Можно задать больше чем один value тег.

    При использовании PositiveModelParameterConstraintЗначение задает установку (установки), которую вы хотите для параметра конфигурации. Для NegativeModelParameterConstraintЗначение задает установку (установки) вы, которые не хотят для параметра конфигурации.

    Можно задать value использование формата в этой таблице.

    ВводФорматПример
    Скалярное значение
    <value>xyz</value>

    В этом примере, ограничение NegativeModelParameterConstraint предупреждает, когда настройками параметра конфигурации для параметра конфигурации не является error или none .

    <NegattiveModelParameterConstraint>
        <value>error</value>
        <value>none</value>
    </NegativeModelParameterConstraint>

    Структура или объект
    <value>
        <param1>xyz</param1>
        <param2>yza</param2>
    </value>

    В этом примере, ограничения PositiveModelParameterConstraint предупреждает, когда настройки параметра конфигурации не являются допустимой структурой:

    <PositiveModelParameterConstraint>
        <value>
            <double>a</double>
            <single>b</single>
        </value>
    </PositiveModelParameterConstraint>

    Массив
    <value>
        <element>value</element>
        <element>value</element>
    </value>

    В этом примере, ограничение NegativeModelParameterConstraint предупреждает, когда настройки параметра конфигурации являются неверным массивом:

    <NegativeModelParameterConstraint>
        <value>
            <element>A</element>
            <element>B</element>   
        </value>
    </NegativeModelParameterConstraint>

    Массив структур
    <value>
        <element>
            <param1>xyz</param1>
            <param2>yza</param2>
        </element>
        <element>
            <param1>xyz</param1>
            <param2>yza</param2>
        </element>
    </value>
    

    В этом примере, ограничение NegativeModelParameterConstraint предупреждает, когда настройки параметра конфигурации являются недопустимым массивом структур:

    <NegativeModelParameterConstraint>    
        <value>
            <element>
                <double>a</double>
                <single>b</single>
           </element>
           <element>
                <double>a</double>
                <single>b</single>
           </element>
        </value>
    </NegativeModelParameterConstraint>

  • fixvalue - (Необязательно) Задает установку, чтобы использовать, когда применение Model Advisor фиксирует действие.

    Можно задать fixvalue использование формата в этой таблице.

    ВводФорматПример
    Скалярное значение
    <fixvalue>xyz</fixvalue>

    В этом примере тег действия фиксации задает новый параметр конфигурации, устанавливающий как warning.

    <PositiveModelParameterConstraint>
        <value>error</value>
        <fixaction>warning</fixaction>
    </PositiveModelParameterConstraint>
    Структура или объект
    <fixvalue>   
        <param1>xyz</param1>
        <param2>yza</param2>
    </fixvalue>

    В этом примере тег действия фиксации задает новую установку параметра конфигурации для структуры.

    <PositiveModelParameterConstraint>
        <value>
            <double>a</double>
            <single>b</single>
        </value>
        <fixvalue>
            <double>c</double>
            <single>d</single>    
        </fixvalue>
    </PositiveModelParameterConstraint>
    Массив
    <fixvalue>
        <element>value</element>
        <element>value</element>
    </fixvalue>

    В этом примере тег действия фиксации задает новую установку параметра конфигурации для массива.

    <NegativeModelParameterConstraint>
        <value>
            <element>A</element>
            <element>B</element>   
        </value>
        <fixvalue>
            <element>C</element>
            <element>D</element>
        </fixvalue>
    </NegativeModelParameterConstraint>
    Массив структур
    <fixvalue>
        <element>
            <param1>xyz</param1>
            <param2>yza</param2>
        </element>
        <element>
            <param1>xyz</param1>
            <param2>yza</param2>
        </element>
    </fixvalue>
    

    В этом примере тег действия фиксации задает новые настройки параметра конфигурации для массива структур.

    <NegativeModelParameterConstraint>    
        <value>
            <element>
                <double>a</double>
                <single>b</single>
           </element>
            <element>
                <double>a</double>
                <single>b</single>
            </element>
        </value>
        <fixvalue>
            <element>
                <double>c</double>
                <single>d</single>
            </element>
            <element>
                <double>c</double>
                <single>d</single>
            </element>
        </fixvalue>
    </NegativeModelParameterConstraint>

  • dependson - (Необязательно) Задает необходимую как условие подпроверку.

    В этом примере, dependson указывает, что тот параметр конфигурации подпроверяет ID_B должен передать перед подпроверкой параметра конфигурации ID_A запуски.

    <PositiveModelParameterConstraint id="ID_A">
        <dependson>ID_B</value>
    </PostitiveModelParameterConstraint>

Маркировка файла данных, задающая параметр конфигурации

Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Если параметр конфигурации установлен в Fixed-Step, передачи подпроверки.

<PositiveModelParameterConstraint id="ID_A">    
    <parameter>SolverType</parameter>
    <value>Fixed-step</value>
</PostitiveModelParameterConstraint>

Маркировка файла данных, задающая параметр конфигурации с действием фиксации

Следующая маркировка задает подпроверку на параметр конфигурации AlgebraicLoopMsg. Если параметр конфигурации установлен в none или warning, передачи подпроверки. Если подпроверка не передает, проверка фиксируют действие, изменяет параметр конфигурации к error.

<PositiveModelParameterConstraint id="ID_A">    
    <parameter>AlgebraicLoopMsg</parameter>
    <value>none</value>    
    <value>warning</value>
    <fixvalue>error</value>
</PostitiveModelParameterConstraint>

Маркировка файла данных, задающая параметр конфигурации типа массива

<PositiveModelParameterConstraint id="A">
    <parameter>ReservedNameArray</parameter>
    <value>
        <element>A</element>
        <element>B</element>
    </value>
    <value>
        <element>A</element>
        <element>C</element>
    </value>
</PositiveModelParameterConstraint>

Маркировка файла данных, задающая структуру, вводит параметр конфигурации с действием фиксации

<PositiveModelParameterConstraint id="A">    
    <parameter>ReplacementTypes</parameter>
    <value>
        <double>a</double>
        <single>b</single>
    </value>
    <value>
        <double>c</double>
        <single>b</single>
    </value>
    <fixvalue>
        <double>a</double>
        <single>b</single>
    </fixvalue>
</PositiveModelParameterConstraint>

Маркировка файла данных, задающая параметр конфигурации с действием фиксации и необходимой как условие проверкой

Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Подпроверка на SolverType запуски только после ID_B подпроверяйте передачи. Если theID_B подпроверка не передает, подпроверка на SolverType не запускается. Model Advisor сообщает, что необходимому как условие ограничению не соответствуют.

Если SolverType подпроверяйте запуски и SolverType установлен в Fixed-Step, SolverType подпроверяйте передачи. Если подпроверка запускает и не передает, проверка фиксируют действие, изменяет параметр конфигурации к Fixed-Step.

<PositiveModelParameterConstraint id="ID_A">
    <parameter>SolverType</parameter>
    <value>Fixed-step</value>    
    <fixvalue>Fixed-step</value>
    <dependson>ID_B</value>
</PostitiveModelParameterConstraint>

Маркировка файла данных, задающая нежелательный параметр конфигурации

Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Подпроверка не передает, если параметр конфигурации установлен в Fixed-Step.

<NegativeModelParameterConstraint id="ID_A">    
    <parameter>SolverType</parameter>
    <value>Fixed-step</value>
</NegativeModelParameterConstraint>

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

Следующая маркировка задает подпроверку на параметр конфигурации SolverType. Если параметр конфигурации установлен в Fixed-Step, подпроверка не передает. Если подпроверка не передает, проверка фиксируют действие, изменяет параметр конфигурации к Variable-Step.

<NegativeModelParameterConstraint id="ID_A">    
    <parameter>SolverType</parameter>    
    <value>Fixed-step</value>    
    <fixvalue>Variable-step</value>
</NegativeModelParameterConstraint>

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

Следующая маркировка задает проверку на параметр конфигурации SolverType. Подпроверка на SolverType запуски только после ID_B подпроверяйте передачи. Если theID_B подпроверка не передает, подпроверка на SolverType не запускается. Model Advisor сообщает, что необходимому как условие ограничению не соответствуют.

Если SolverType подпроверяйте запуски и SolverType установлен в Fixed-Step, подпроверка не передает. Проверка фиксирует действие, изменяет параметр конфигурации к Variable-Step.

<NegativeModelParameterConstraint id="ID_A">    
    <parameter>SolverType</parameter>
    <value>Fixed-step</value>
    <fixvalue>Variable-step</value>
    <dependson>ID_B</value>
</NegativeModelParameterConstraint>

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

| | |

Похожие темы