Main Content

複数のシステムをチェックする関数の作成

関数 ModelAdvisor.run を使用して、1 つ以上のモデルまたはサブシステムに対してプログラムによってチェックを実行できます。この例では、複数のサブシステムに対してモデル アドバイザー チェックを実行し、失敗および警告の数を返す関数の作成方法を示しています。

また、複数のモデルまたはサブシステムを並行してチェックするように関数を変更する方法についても説明しています。Parallel Computing Toolbox™ のライセンスがある場合は、この関数を並列モードで実行して処理時間を短縮できます。

チェックを実行し、結果を返す関数の作成

1.MATLAB® ウィンドウで、[新規][関数] を選択します。

2.ファイルを run_configuration.m として保存します。

3.関数内で、untitled を右クリックして [関数名をファイル名に置き換えてください。] を選択します。関数名が run_configuration に更新されます。

function [outputArg1,outputArg2] = run_configuration(inputArg1,inputArg2)
%UNTITLED Summary of this function goes here
%    Detailed explanation goes here
outputArg1 = inputArg1;
outputArg2 = inputArg2;
end

4.関数の本文を削除します。

function [outputArg1,outputArg2] = run_configuration(inputArg1,inputArg2)
end

5.出力引数を [fail,warn] で置き換え、入力引数を SysList で置き換えます。

function [fail,warn] = run_configuration(SysList)
end

6.関数内で、モデル アドバイザー構成ファイルを指定します。

fileName = 'myCheckConfiguration.json';

7.SysList 入力は、チェックを実行するモデル アドバイザーのシステム リストです。SysList に対して関数 ModelAdvisor.run を呼び出します。

SysResultObjArray = ModelAdvisor.run(SysList,'Configuration',fileName);

8.失敗または警告を返すチェックの数を特定し、それらを出力引数 failwarn にそれぞれ出力します。

fail = 0;
warn = 0;

for i=1:length(SysResultObjArray)
    fail = fail + SysResultObjArray{i}.numFail;
    warn = warn + SysResultObjArray{i}.numWarn;
end

関数 run_configuration の内容は次のとおりです。

function [fail, warn] = run_configuration(SysList)

%RUN_CONFIGURATION Check systems with Model Advisor
%   Check systems given as input and return number of failures and warnings.

fileName = 'myCheckConfiguration.json';

% Run the Model Advisor.
SysResultObjArray = ModelAdvisor.run(SysList,'Configuration', fileName);

fail = 0;
warn = 0;

for i=1:length(SysResultObjArray)
    fail = fail + SysResultObjArray{i}.numFail;
    warn = warn + SysResultObjArray{i}.numWarn;
end

end

関数のテスト

1.関数 run_configuration を保存します。

2.この例のチェックのカスタム構成に必要な sl_customization ファイルを作成します。カスタム構成ファイルの詳細については、モデル アドバイザーの設定エディターを使用したモデル アドバイザーのカスタマイズを参照してください。

copyfile customizationFile.m sl_customization.m f

3.モデル アドバイザー チェックを実行するサブシステムを systems という変数に保存します。

systems = {'sldemo_auto_climatecontrol/Heater Control',...
    'sldemo_auto_climatecontrol/AC Control',...
    'sldemo_auto_climatecontrol/Interior Dynamics'};

4.systems に対して関数 run_configuration を実行します。

[fail,warn] = run_configuration(systems);
         Running Model Advisor... 
Updating Model Advisor cache...
Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.... ... 

         Systems passed: 0 of 3

         Systems with warnings: 3 of 3

         Systems failed: 0 of 3
         Summary Report

4.概要レポートまたは関数 disp を使用して結果を確認します。

  • 各システムのモデル アドバイザー レポートを表示するには、概要レポートのリンクをクリックします。これにより、モデル アドバイザー コマンド ライン概要レポートが開きます。

  • 関数 run_configuration によって返される失敗および警告の数を確認するには、変数 failwarn を参照します。

disp(['Number of checks that return failures: ', num2str(fail)]);
Number of checks that return failures: 0
disp(['Number of checks that return warnings: ', num2str(warn)]);
Number of checks that return warnings: 5

複数のシステムの並行チェック

複数のシステムを並行してチェックすると、モデル アドバイザーに必要な処理時間が短縮されます。Parallel Computing Toolbox™ のライセンスがある場合は、マルチコア ホスト マシンで複数のシステムを並行してチェックできます。

複数のシステムを並行してチェックするには、'ParallelMode' を 'On' に設定して関数 ModelAdvisor.run を呼び出します。

SysResultObjArray = ModelAdvisor.run(SysList,'Configuration',fileName,'ParallelMode','On');

Parallel Computing Toolbox は 32 ビットの Windows® マシンをサポートしません。

それぞれの並列処理は、一度に 1 つのモデルのチェックを処理します。モデル アドバイザーが並列モードで実行される場合、ベース ワークスペース内のモデル データをサポートしません。モデル データは、モデル ワークスペースまたはデータ ディクショナリで定義しなければなりません。

参考

|

関連するトピック