Создайте проверку 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 к true. В командной строке введите:

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

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

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

  • The Block Priority Violation (BlockPriorityViolationMsg) маркировка параметра конфигурации задает value от error с fixvalue от error. Когда вы запускаете проверку параметров конфигурации, используя ex_DataFile.xmlпроверка прекращается, если настройка Block Priority Violation не error. Действие check fix изменяет настройку на 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 = 'ex_DataFile.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

Действие check fix изменяет настройки параметров 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);
Обратите внимание, что проверки параметров конфигурации модели должны использовать setCallbackFcn тип StyleOne.

Создайте 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 маркировка.

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0> - ex_DataFile.xml теги не задают действие исправления для AlgebraicLoopMsg. Подпек проходит только, когда установка не установлена на none.

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0> - ex_DataFile.xml разметка задает подчек с действием исправления для ArtificialAlgebraicLoopMsg который проходит только тогда, когда параметр error. Действие исправления изменяет настройку на error.

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0> - ex_DataFile.xml разметка задает подчек с действием исправления для 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>

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

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

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

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

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

Примечание

The <messages> тег необязателен. Advisor.authoring.generateConfigurationParameterDataFile не генерирует <messages> маркировка.

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

  • PositiveModelParameterConstraint - Задает требуемую настройку параметра конфигурации.

  • NegativeModelParameterConstraint - задает параметры конфигурации, которые вы не хотите.

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

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

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

  • value - задает настройки для параметра конфигурации. Можно задать несколько value тег.

    При использовании PositiveModelParameterConstraint, value задает параметры, необходимые для параметра конфигурации. Для NegativeModelParameterConstraint, value задает параметры, которые не нужны для параметра конфигурации .

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

    НапечататьФорматПример
    Скалярное значение
    <value>xyz</value>

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

    <NegativeModelParameterConstraint>
        <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, подпек проходит. Если подпек не проходит, действие check fix изменяет параметр конфигурации на 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 subcheck проходит. Если на ID_B подпек не проходит, подпек для SolverType не запускается. Model Advisor сообщает, что ограничение обязательного условия не выполнено.

Если на SolverType подмножество запусков и SolverType установлено в Fixed-Step, а SolverType subcheck проходит. Если подпек запускается и не проходит, действие check fix изменяет параметр конфигурации на 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>

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

Следующий тег задает проверку для параметра конфигурации <reservedrangesplaceholder0>. Подпек для SolverType запускается только после ID_B subcheck проходит. Если на ID_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>

См. также

| | |

Похожие темы