メインコンテンツ

状態ランク付けのカスタマイズ

ソルバー プロファイラーに連続状態のログを記録すると、状態エクスプローラーを開いて各連続状態を調べることができます。状態エクスプローラーは次のメトリクスにより連続状態をランク付けします。

  • 状態の導関数

  • ニュートン/DAE の例外

  • 状態値

  • エラー制御の例外

  • 状態名

  • 状態のチャタリング

これらのランク付けメトリクスに加えて、ユーザー独自のアルゴリズムを記述してアップロードし、連続状態が状態エクスプローラーでランク付けされる方法を決定できます。

  1. [状態のランク付け基準] ドロップダウンの横にある編集ボタンをクリックします。

  2. 表示される [Custom Algorithm] ダイアログ ボックスで [Add] をクリックし、ランク付けアルゴリズムが含まれる MATLAB® スクリプトをアップロードします。

    値で状態をランク付けする単純なアルゴリズムは次のようになります。

    メモ

    この例で参照される構造体はプロファイリングの実行中にソルバー プロファイラーが収集する情報を整理します。構造体の詳細については、プロファイラー ルール セットの開発を参照してください。

    function [index,score] = customRank(sd,tl,tr)
    
    % Allocate storage for index and score list
    nStates = length(sd.stateInfo);
    index = l:nStates;
    score = zeros(nStates,l);
    
    % Loop through each state to calculate score
    for i = l:nStates
        x = sd.stateInfo(i).value;
        % apply time range constraints
        x = x(sd.tout>=tl & sd.tout<=tr);
        if max(x) > 1
            score(i) = 1;
        else
            score(i) = 0;
        end
    end
    
    % Rank the states
    [score, order] = sort(score, 'descend');
    index = index(order);
    
    end