Main Content

以编程方式创建基于过程的配置

您可以创建一个基于过程的配置,用它来指定对模型进行更改的顺序。您可以使用过程 API 将检查放入过程。过程中的检查仅在前一项检查通过后才会运行。基于过程的配置会一直运行,直到有一项检查失败,这时会要求您修改模型以通过该检查并继续执行下一项检查。因此,为了通过检查而对模型进行的更改要遵循特定的顺序。

要创建基于过程的配置,请执行以下任务:

  1. 查看自定义模型顾问配置概述中的信息。

  2. 决定对您模型的更改的顺序。

  3. 根据您要对模型进行的修改,确定可以提供相关信息的检查。例如,如果要修改模型优化设置,则“检查优化设置”检查可以提供相关设置的信息。您可以使用自定义检查和 MathWorks® 提供的检查。

  4. (可选)在自定义文件中创建自定义检查。请参阅创建模型顾问检查

  5. 将检查放入过程中以创建基于过程的配置:

    1. 使用过程 API 创建过程。有关详细信息,请参阅创建基于过程的配置

    2. 创建自定义配置 使用模型顾问配置编辑器来自定义模型顾问

  6. (可选)为用户部署自定义配置。有关详细信息,请参阅部署自定义配置

  7. 验证模型符合建模规范。有关详细信息,请参阅运行模型顾问检查并查看结果

创建基于过程的配置

使用过程 API 创建过程

使用 ModelAdvisor.Procedure 类 API 创建过程。首先将检查添加到任务中,任务是检查的包装器。任务添加到了过程中。

注意

创建在过程中使用的检查时,请注意检查之间的潜在冲突。确保检查均可通过。

您可以使用 ModelAdvisor.Procedure 类来创建在过程中使用的检查。

  1. 使用 ModelAdvisor.Task.setCheck 方法将每个检查添加到任务中。任务是检查的包装器。您无法将检查直接添加到过程中。

  2. 使用 ModelAdvisor.Procedure.addTask 方法将每个任务添加到过程中。

定义过程

您可以在过程定义函数中定义过程,用函数来指定 ModelAdvisor.Procedure 类的每个实例的属性。为要添加到模型顾问的每个过程定义一个过程类的实例。然后使用 ModelAdvisor.Root.register 方法注册该过程。

您可以向过程中添加子过程或任务。这些任务是检查的包装器。

  • 使用 ModelAdvisor.Procedure.addProcedure 方法向过程添加子过程。

  • 使用 ModelAdvisor.Procedure.addTask 方法向过程添加任务。

以下代码示例向过程添加子过程:

%Create a procedure
MAP = ModelAdvisor.Procedure('com.mathworks.example.Procedure');

%Create 3 sub procedures
MAP1=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub1');
MAP2=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub2');
MAP3=ModelAdvisor.Procedure('com.mathworks.example.procedure_sub3');

%Add sub procedures to procedure
addProcedure(MAP, MAP1);
addProcedure(MAP, MAP2);
addProcedure(MAP, MAP3);

%register the procedures
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAP);
mdladvRoot.register(MAP1);
mdladvRoot.register(MAP2);
mdladvRoot.register(MAP3);

以下代码示例向过程添加任务:

%Create three tasks
MAT1=ModelAdvisor.Task('com.mathworks.tasksample.myTask1');
MAT2=ModelAdvisor.Task('com.mathworks.tasksample.myTask2');
MAT3=ModelAdvisor.Task('com.mathworks.tasksample.myTask3');

%Create a procedure
MAP = ModelAdvisor.Procedure('com.mathworks.tasksample.myProcedure');

%Add the three tasks to the procedure
addTask(MAP, MAT1);
addTask(MAP, MAT2);
addTask(MAP, MAT3);

%register the procedure and tasks
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAP);
mdladvRoot.register(MAT1);
mdladvRoot.register(MAT2);
mdladvRoot.register(MAT3);

您可以使用 ModelAdvisor.Group.addProcedure 方法指定模型顾问放置过程的位置。以下代码示例将过程添加到一个组中:

%Create three procedures
MAP1=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure1');
MAP2=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure2');
MAP3=ModelAdvisor.Procedure('com.mathworks.sample.myProcedure3');

%Create a group
MAG = ModelAdvisor.Group('com.mathworks.sample.myGroup');

%Add the three procedures to the group
addProcedure(MAG, MAP1);
addProcedure(MAG, MAP2);
addProcedure(MAG, MAP3);

%register the group and procedures
mdladvRoot = ModelAdvisor.Root;
mdladvRoot.register(MAG);
mdladvRoot.register(MAP1);
mdladvRoot.register(MAP2);
mdladvRoot.register(MAP3);

另请参阅

|

相关主题