Для проверки параметров конфигурации модели можно создать проверку параметров конфигурации.
Определите, какие параметры конфигурации следует использовать для модели. При необходимости пересмотреть руководящие принципы моделирования:
Создайте XML-файл данных, содержащий параметры конфигурации, которые необходимо проверить. Вы можете использовать Advisor.authoring.generateConfigurationParameterDataFile или создайте файл вручную самостоятельно.
Зарегистрируйте проверку параметров конфигурации модели с помощью sl_customization.m файл.
Выполните проверку моделей.
В этом примере показано, как создать файл данных, определяющий значения параметров конфигурации на панели Диагностика (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>
<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, подпроверка проходит. Если подпроверка не пройдена, действие исправления проверки изменяет параметр конфигурации на 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>Advisor.authoring.CustomCheck.actionCallback | Advisor.authoring.CustomCheck.checkCallback | Advisor.authoring.DataFile.validate | Advisor.authoring.generateConfigurationParameterDataFile