Чтобы проверить параметры конфигурации для модели, можно создать проверку параметра конфигурации.
Решите, какие настройки параметров конфигурации использовать для вашей модели. При желании рассмотрим руководящие принципы моделирования:
Создайте файл данных XML, содержащий параметры конфигурации, которые необходимо проверить. Можно использовать Advisor.authoring.generateConfigurationParameterDataFile
или создайте файл самостоятельно.
Зарегистрируйте проверку параметра конфигурации модели с помощью sl_customization.m
файл.
Запустите проверку своих моделей.
В этом примере показано, как создать файл данных, который задает значения параметров конфигурации на панели 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> <value>error</value> <value>none</value> </NegativeModelParameterConstraint> |
Структура или объект |
<value> <param1>xyz</param1> <param2>yza</param2> </value> | В этом примере ограничения <PositiveModelParameterConstraint> <value> <double>a</double> <single>b</single> </value> </PositiveModelParameterConstraint> |
Массив |
<value> <element>value</element> <element>value</element> </value> | В этом примере ограничительные <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> <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> | В этом примере тег действия исправления задает новую настройку параметра конфигурации следующим <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>
Advisor.authoring.CustomCheck.actionCallback
| Advisor.authoring.CustomCheck.checkCallback
| Advisor.authoring.DataFile.validate
| Advisor.authoring.generateConfigurationParameterDataFile