exponenta event banner

Проверка параметров конфигурации модели при помощи помощника по созданию модели

Для проверки параметров конфигурации модели можно создать проверку параметров конфигурации.

Определите, какие параметры конфигурации следует использовать для модели. При необходимости пересмотреть руководящие принципы моделирования:

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

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

  3. Выполните проверку моделей.

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

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

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

Щелкните правой кнопкой мыши в окне модели и выберите Параметры конфигурации модели (Model Configuration Parameters). На панели Диагностика (Diagnostics) задайте следующие параметры конфигурации:

  • Алгебраический цикл к none

  • Минимизировать алгебраический цикл до error

  • Блокировать нарушение приоритета для 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 ®.

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

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

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

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

В ex_DataFile.xmlудалите строки с тегами для параметров конфигурации, которые не требуется проверять. Файл данных ex_DataFile.xml обеспечивает тегирование только для алгебраического цикла, минимизировать алгебраический цикл и нарушение приоритета блока. Например, 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 

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

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

  • Алгебраический цикл имеет значение none

  • Минимизация алгебраического цикла не установлена в значение error

  • Нарушение приоритета блокировки не установлено в значение error

Действие исправления проверки изменяет настройки параметров Минимизировать алгебраический цикл и Нарушение приоритета блока на error.

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

Закройте мастер модели и модель, если они открыты.

Используйте следующее sl_customization.m файл для указания и регистрации проверки Пример: Проверка параметров конфигурации модели.

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.

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

Advisor.Manager.refresh_customizations

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

Щелкните правой кнопкой мыши в окне модели и выберите Параметры конфигурации модели (Model Configuration Parameters). На панели Диагностика (Diagnostics) задайте следующие параметры конфигурации:

  • Алгебраический цикл к none

  • Минимизировать алгебраический цикл до warning

  • Блокировать нарушение приоритета для warning

На вкладке Моделирование (Modeling) выберите Мастер модели (Model Advisor), чтобы открыть Мастер модели (Model Advisor).

На левой панели выберите По задаче > Пример: Моя группа > Пример: Проверка параметров конфигурации модели. На правой панели для параметра «Файл данных» установлено значение ex_DataFile.xml.

Щелкните Выполнить эту проверку. Проверка помощника по модели предупреждает, что для параметров конфигурации не заданы значения, указанные в ex_DataFile.xml. Для параметров конфигурации с положительным маркированием ограничений (PositiveModelParameterConstraint), рекомендуемые значения получены из value маркирование. Для параметров конфигурации с отрицательной маркировкой ограничений (NegativeModelParameterConstraint), значения, не рекомендованные, получены из value маркирование.

  • Алгебраическая петля(AlgebraicLoopMsg)- ex_DataFile.xml маркирование не указывает действие исправления для AlgebraicLoopMsg. Проверка выполняется только в том случае, если для параметра не установлено значение none.

  • Минимизация алгебраического цикла(ArtificialAlgebraicLoopMsg)- ex_DataFile.xml тегирование задает вложенную проверку с действием исправления для ArtificialAlgebraicLoopMsg который проходит только тогда, когда установлено значение error. Действие исправления изменяет настройку на error.

  • Блокировать нарушение приоритета(BlockPriorityViolationMsg)- ex_DataFile.xml тегирование задает вложенную проверку с действием исправления для BlockPriorityViolationMsg который не проходит, когда параметр warning. Действие исправления изменяет настройку на error.

В разделе Действие (Action) диалогового окна Помощник по модели (Model Advisor) щелкните Изменить настройки (Modify Settings). Model Advisor обновляет параметры конфигурации для нарушения приоритета блока и минимизации алгебраического цикла.

Выполнить по задаче > Пример: Моя группа > Пример: Проверка параметров конфигурации модели. Проверка предупреждает, потому что алгебраический цикл имеет значение none.

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

Выполнить по задаче > Пример: Моя группа > Пример: Проверка параметров конфигурации модели. Чек проходит.

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

Файл 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 - (Необязательно) Сообщение Pass, отображаемое в окне 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, 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, подпроверка проходит. Если подпроверка не пройдена, действие исправления проверки изменяет параметр конфигурации на 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 проходит подконтроль. ЕслиID_B subcheck не проходит, subcheck для SolverType не выполняется. Помощник по модели сообщает, что предварительное ограничение не выполнено.

Если 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 проходит подконтроль. ЕслиID_B subcheck не проходит, subcheck для SolverType не выполняется. Помощник по модели сообщает, что предварительное ограничение не выполнено.

Если 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>

См. также

| | |

Связанные темы