Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.
Решите который настройки параметра конфигурации использовать для вашей модели. При желании рассмотрите инструкции по моделированию:
Создайте файл данных 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
к истине. В командной строке введите:
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 = '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
Проверка фиксирует действие, изменяет 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
маркировка.
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> <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
подпроверяйте передачи. Если 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>
Advisor.authoring.CustomCheck.actionCallback
| Advisor.authoring.CustomCheck.checkCallback
| Advisor.authoring.DataFile.validate
| Advisor.authoring.generateConfigurationParameterDataFile