Main Content

モデル コンフィギュレーション パラメーターに対するモデル アドバイザー チェックの作成

モデルのコンフィギュレーション パラメーターを検証するために、コンフィギュレーション パラメーター チェックを作成することができます。

モデルで使用するコンフィギュレーション パラメーター設定を決定します。必要であればモデリング ガイドラインを確認します。

  1. チェックするコンフィギュレーション パラメーター設定が含まれる XML データ ファイルを作成します。Advisor.authoring.generateConfigurationParameterDataFile を使用するか、手動でファイルを作成します。

  2. sl_customization.m ファイルを使用して、モデルのコンフィギュレーション パラメーター チェックを登録します。

  3. モデルのチェックを実行します。

コンフィギュレーション パラメーター チェックのデータ ファイルの作成

この例では、[診断] ペインのコンフィギュレーション パラメーターの値を指定するデータ ファイルを作成する方法を示します。コンフィギュレーション パラメーターの値がデータ ファイルで定義されている値と一致しない場合、カスタム チェックは警告を発します。

以下を入力してモデル vdp を開きます。

openExample('simulink_general/VanDerPolOscillatorExample')

モデル ウィンドウで右クリックして [モデル コンフィギュレーション パラメーター] を選択します。[診断] ペインで、コンフィギュレーション パラメーターを次に設定します。

  • [代数ループ][なし] に設定

  • [代数ループの最小化][エラー] に設定

  • [ブロック優先順位違反][エラー] に設定

関数 Advisor.authoring.generateConfigurationParameterDataFile を使用して、[診断] ペインにあるコンフィギュレーション パラメーターの制約を指定するデータ ファイルを作成します。また、修正アクションを伴うチェックを作成するために、FixValue を true に設定します。コマンド プロンプトで、次を入力します。

model='vdp';
dataFileName = 'ex_DataFile.xml';
Advisor.authoring.generateConfigurationParameterDataFile(dataFileName,...
model, 'Pane', 'Diagnostics', 'FixValues', true);

コマンド ウィンドウで、ex_DataFile.xml を選択します。データ ファイルが MATLAB® エディターで開きます。

  • [代数ループの最小化] (ArtificialAlgebraicLoopMsg) のコンフィギュレーション パラメーターのタグ付けでは、valueerror とされ、fixvalueerror と指定されています。ex_DataFile.xml を使用してコンフィギュレーション パラメーターのチェックを実行すると、[代数ループの最小化] 設定が error に設定されていない場合、チェックに失敗します。チェックの修正アクションによって、設定が error に変更されます。

  • [ブロック優先順位違反] (BlockPriorityViolationMsg) のコンフィギュレーション パラメーターのタグ付けでは、valueerror とされ、fixvalueerror と指定されています。ex_DataFile.xml を使用してコンフィギュレーション パラメーターのチェックを実行すると、[ブロック優先順位違反] 設定が error に設定されていない場合、チェックに失敗します。チェックの修正アクションによって、設定が error に変更されます。

ex_DataFile.xml で、[代数ループ] (AlgebraicLoopMsg) のパラメーターのタグ付けを編集して、valuenone のときにチェックによって警告が出されるようにします。ここでは不適切なコンフィギュレーション パラメーターを指定するため、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 を使用すると、チェックは次の場合に警告を出します。

  • [代数ループ] の設定が [なし]

  • [代数ループの最小化] の設定が [エラー] ではない

  • [ブロック優先順位違反] の設定が [エラー] ではない

チェックの修正アクションによって [代数ループの最小化][ブロック優先順位違反] パラメーター設定が [エラー] に変更されます。

このチェックでは、コンフィギュレーション パラメーター チェックのデータ ファイルの作成で作成した ex_DataFile.xml データ ファイルを使用します。

モデル アドバイザーとモデルが開いている場合は、閉じます。

次の sl_customization.m ファイルを使用して、[Example: Check model configuration parameters] のチェックを指定し、登録します。

function sl_customization(cm)

% register custom checks.
cm.addModelAdvisorCheckFcn(@defineModelAdvisorChecks);


%% 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.publish(rec,'Demo');
モデル コンフィギュレーション パラメーター設定チェックでは、setCallbackFcn タイプの StyleOne を使用しなければならないことに注意してください。

[Example: Check model configuration parameters] を作成します。コマンド プロンプトで、次を入力します。

Advisor.Manager.refresh_customizations

以下を入力してモデル vdp を開きます。

openExample('simulink_general/VanDerPolOscillatorExample')

モデル ウィンドウで右クリックして [モデル コンフィギュレーション パラメーター] を選択します。[診断] ペインで、コンフィギュレーション パラメーターを次に設定します。

  • [代数ループ][なし] に設定

  • [代数ループの最小化][警告] に設定

  • [ブロック優先順位違反][警告] に設定

[モデル化] タブで [モデル アドバイザー] を選択してモデル アドバイザーを開きます。

左側のペインで、[デモ][Example: Check model configuration parameters] を選択します。右側のペインで、[データ ファイル]ex_DataFile.xml に設定されています。

[チェックの実行] をクリックします。モデル アドバイザーのチェックから、コンフィギュレーション パラメーターが ex_DataFile.xml で指定されている値に設定されていないことを知らせる警告が出ます。正の制約タグ (PositiveModelParameterConstraint) が付いているコンフィギュレーション パラメーターについては、推奨値が value タグ付けから取得されます。負の制約タグ (NegativeModelParameterConstraint) が付いているコンフィギュレーション パラメーターについては、非推奨値が value タグ付けから取得されます。

  • 代数ループ (AlgebraicLoopMsg)ex_DataFile.xml のタグ付けでは、AlgebraicLoopMsg に対する修正アクションが指定されていません。サブチェックは、この設定が [なし] に設定されていない場合のみパスします。

  • 代数ループの最小化 (ArtificialAlgebraicLoopMsg)ex_DataFile.xml のタグ付けでは、ArtificialAlgebraicLoopMsg に対し、修正アクションを伴うサブチェックが指定されています。このサブチェックは、設定が [エラー] の場合にのみパスします。修正アクションによって、設定が [エラー] に変更されます。

  • ブロック優先順位違反 (BlockPriorityViolationMsg)ex_DataFile.xml のタグ付けでは、BlockPriorityViolationMsg に対し、修正アクションを伴うサブチェックが指定されています。このサブチェックは、設定が [警告] の場合はパスしません。修正アクションによって、設定が [エラー] に変更されます。

ツールストリップで [修正] をクリックします。モデル アドバイザーによって、[ブロック優先順位違反][代数ループの最小化] のコンフィギュレーション パラメーターが更新されます。

[デモ][Example: Check model configuration parameters] チェックを再度実行します。[代数ループ][なし] に設定されているため、チェックから警告が出ます。

モデル アドバイザー ウィンドウの右側のペインで、Algebraic loop (AlgebraicLoopMsg) のリンクを使用してコンフィギュレーション パラメーターを編集します。[代数ループ][警告] または [エラー] に設定します。

最終のチェックを実行します。このチェックはパスします。

コンフィギュレーション パラメーター チェックのデータ ファイル

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 — (オプション) チェックの説明。モデル アドバイザー ウィンドウに表示されます。

  • PassMessage — (オプション) モデル アドバイザー ウィンドウに表示されるパス メッセージ。

  • FailMessage — (オプション) モデル アドバイザー ウィンドウに表示される失敗メッセージ。

  • RecommendedActions — (オプション) チェックがパスしなかったときにモデル アドバイザー ウィンドウに表示される推奨アクション。

メモ

<messages> タグはオプションです。Advisor.authoring.generateConfigurationParameterDataFile では <messages> のタグ付けは生成されません。

<checkdata> タグでは、データ ファイルで 2 種類の制約が指定されています。

  • PositiveModelParameterConstraint — 必要とするコンフィギュレーション パラメーター設定を指定します。

  • NegativeModelParameterConstraint — 望まないコンフィギュレーション パラメーター設定を指定します。

この 2 種類の各制約のタグについて、チェックする各コンフィギュレーション パラメーターに対し、データ ファイルに次のタグが存在します。

  • parameter — チェックするコンフィギュレーション パラメーターを指定します。タグ付けでは、コンフィギュレーション パラメーターのコマンド ラインでの名前が使用されます。以下に例を示します。

    <PositiveModelParameterConstraint>
        <parameter>BlockPriorityViolationMsg</parameter>
    </PositiveModelParameterConstraint>
    <NegativeModelParameterConstraint>
        <parameter>AlgebraicLoopMsg</parameter>
    </NegativeModelParameterConstraint>

  • value — コンフィギュレーション パラメーターの設定を指定します。value タグは 1 つを超えて指定できます。

    PositiveModelParameterConstraint を使用している場合、value はコンフィギュレーション パラメーターに必要な設定を指定します。NegativeModelParameterConstraint の場合、value はコンフィギュレーション パラメーターに望まない設定を指定します。

    value は、次の表の形式を使用して指定できます。

    タイプ形式
    スカラー値
    <value>xyz</value>

    この例では、制約 NegativeModelParameterConstraint は、コンフィギュレーション パラメーターの設定が error または none 以外の場合に警告します。

    <NegativeModelParameterConstraint>
        <value>error</value>
        <value>none</value>
    </NegativeModelParameterConstraint>

    構造体またはオブジェクト
    <value>
        <param1>xyz</param1>
        <param2>yza</param2>
    </value>

    この例では、制約 PositiveModelParameterConstraint は、コンフィギュレーション パラメーターの設定が有効な構造体ではない場合に警告します。

    <PositiveModelParameterConstraint>
        <value>
            <double>a</double>
            <single>b</single>
        </value>
    </PositiveModelParameterConstraint>

    配列
    <value>
        <element>value</element>
        <element>value</element>
    </value>

    この例では、制約 NegativeModelParameterConstraint は、コンフィギュレーション パラメーターの設定が無効な配列である場合に警告します。

    <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 は、コンフィギュレーション パラメーターの設定が無効な構造体配列である場合に警告します。

    <NegativeModelParameterConstraint>    
        <value>
            <element>
                <double>a</double>
                <single>b</single>
           </element>
           <element>
                <double>a</double>
                <single>b</single>
           </element>
        </value>
    </NegativeModelParameterConstraint>

  • fixvalue — (オプション) モデル アドバイザーの修正アクションを適用する際に使用する設定を指定します。

    fixvalue は、次の表の形式を使用して指定できます。

    タイプ形式
    スカラー値
    <fixvalue>xyz</fixvalue>

    この例では、修正アクション タグは、新しいコンフィギュレーション パラメーター設定を warning として指定します。

    <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_A を実行する前に、コンフィギュレーション パラメーター サブチェック ID_B がパスしなければならないことを指定します。

    <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 のサブチェックがパスした場合にのみ実行されます。SolverType のサブチェックは、ID_B のサブチェックがパスしなければ実行されません。モデル アドバイザーから、前提条件の制約が満たされていないことがレポートされます。

SolverType のサブチェックの実行時に SolverTypeFixed-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 のサブチェックがパスした場合にのみ実行されます。SolverType のサブチェックは、ID_B のサブチェックがパスしなければ実行されません。モデル アドバイザーから、前提条件の制約が満たされていないことがレポートされます。

SolverType のサブチェックの実行時に SolverTypeFixed-Step に設定されていると、サブチェックはパスしません。チェックの修正アクションによって、コンフィギュレーション パラメーターが Variable-Step に変更されます。

<NegativeModelParameterConstraint id="ID_A">    
    <parameter>SolverType</parameter>
    <value>Fixed-step</value>
    <fixvalue>Variable-step</value>
    <dependson>ID_B</value>
</NegativeModelParameterConstraint>

参考

| | |

関連するトピック