Чтобы проверить параметры конфигурации для вашей модели, можно создать проверку параметра конфигурации.
Решите который настройки параметра конфигурации использовать для вашей модели. При желании рассмотрите инструкции по моделированию:
Создайте файл данных 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