メインコンテンツ

MATLAB Course Designer での Simulink 演習評価テスト

評価テストを使用すると、MATLAB® Course Designer™ で Simulink® 演習に対する受講者の解答を自動的にテストできます。

Assessment with one passed and one failed test

Simulink 演習を作成する方法の例については、MATLAB Course Designer を使用した Simulink 演習の作成を参照してください。

タスクの解答を開く

MATLAB Course Designer でコースを開きます。評価テストを追加する演習に移動し、[編集] をクリックします。

評価テストを追加するタスクの解答を開くには、次のようにします。

  1. タスク ペインで、タスクをクリックします。

  2. まだ解答を追加していない場合は追加します。解答を追加するには、タスクの解答の追加を参照してください。

  3. 解答が開いている場合は、[解答] タブをクリックします。それ以外の場合は、左側のナビゲーション ペインの [タスクの編集] タブで、[解答] をクリックします。次に、解答ファイル名の横にある [開く] をクリックします。

解答には、テストを追加するのに役立つ [評価] ペインが含まれています。

Assessment pane with Add Test button

ブロック線図の依存関係を考慮したテストの追加

ブロックや接続などの要素をテストするには、要素を選択してからテストを追加しなければなりません。解答モデル内またはそのサブシステム内に存在するものを要素とすることができます。

Animation of Add Test list based on block diagram selections. The pointer expands the Add Test list, which has Block existence, Block parameter value, and Signal line dimmed. Model parameter value, Signal data, and Custom are enabled. The pointer selects a block and the Block existence and Block parameter value are enabled. The pointer selects a signal line and the block options are dimmed while Signal line is enabled. The pointer selects a block and clicks Block existence in the Add Test list. A block existence test is created for the selected block.

モデルの階層構造を移動すると、現在のブロック線図に対するテストのみが編集可能になります。他のブロック線図のテストは暗く表示されます。

別のブロック線図のテストを編集するには、テストをクリックして対応するブロック線図を開きます。

テストに対応するブロックまたは信号線を強調表示するには、テストをクリックします。

Animation of test and block diagram interactions. The pointer clicks a block existence test and the corresponding block is highlighted. The pointer clicks a dimmed signal line test and the corresponding subsystem opens. The pointer clicks the signal line test again and the corresponding source block, signal line, and destination blocks are highlighted. The pointer clicks the now-dimmed block existence test and the block diagram returns to the model root.

ブロックの有無に関するテストの追加

指定されたブロックが受講者の解答に含まれているかどうかをテストするには、次のようにします。

  1. 現在のブロック線図で、1 つ以上のブロックを選択します。

  2. [評価] ペインで、[テストの追加][ブロックの有無] の順に選択します。選択したブロックごとに新しいテストが表示されます。

Block existence test with corresponding Step block highlighted in block diagram

受講者は、モデルに Step ブロックなどの特定の種類のブロックが含まれているかどうかについての質問を受けます。

Learner preview of block existence test

同じタイプのブロックが複数存在するかどうかをテストする場合、かっこ書きでそのタイプの想定されるブロック数を示します。

Learner preview of block existence test with parenthetical

ブロック パラメーター値に関するテストの追加

ブロック パラメーター値と指定された値が一致するかどうかをテストするには、次のようにします。

  1. 現在のブロック線図で、1 つ以上のブロックを選択します。

  2. [評価] ペインで、[テストの追加][ブロック パラメーター値] の順に選択します。選択したブロックごとに新しいテストが表示されます。

  3. [パラメーター] リストで、テストするブロック パラメーターを選択します。ドキュメンテーションにあるブロック パラメーターのみを選択します。ドキュメンテーションにないブロック パラメーターは、内部使用専用です。

  4. パラメーター値が期待どおりであることをチェックします。

  5. 同じブロックの追加のパラメーター値をテストするには、[パラメーターの追加] をクリックします。それぞれの追加について、テストするブロック パラメーターを選択し、パラメーター値をチェックします。

ブロック パラメーターの値を更新した場合、新しい値を反映するようにテストが自動的に更新されます。

Block parameter value test with corresponding Step block highlighted in block diagram

受講者は、ブロックのパラメーター設定が正しいかどうかについての質問を受けます。

Learner preview of block parameter value test

信号線に関するテストの追加

想定どおりに信号線がブロックを接続しているかどうかをテストするには、次のようにします。

  1. ブロック線図で、1 つ以上の信号線を選択します。

  2. [評価] ペインで、[テストの追加][信号線] の順に選択します。選択した信号線ごとに新しいテストが表示されます。

  3. 信号が複数の宛先に分岐する場合は、オプションで、信号が追加の宛先に接続されるかどうかをテストします。テストする宛先ごとに、[接続先の追加] をクリックし、信号を受信するブロック端子を選択します。

Block connection test for the signal line between the Step block and Sum1 block

受講者は、信号線がブロック同士を接続しているかどうかについての質問を受けます。

Learner view of block connection test

モデル パラメーター値に関するテストの追加

モデル パラメーターの値と指定された値が一致するかどうかをテストするには、次のようにします。

  1. [テストの追加][モデルのパラメーター値] の順に選択します。

  2. [パラメーター] リストで、テストするモデル パラメーターを選択します。

  3. 入れ子のパラメーター値が期待どおりであることをチェックします。

  4. 追加のモデル パラメーター値をテストするには、[パラメーターの追加] をクリックします。それぞれの追加について、テストするモデル パラメーターを選択し、パラメーター値をチェックします。

モデル パラメーターの値を更新した場合、新しい値を反映するようにテストが自動的に更新されます。

Model parameter value test for the Stop time and Solver model configuration parameters

受講者は、選択したモデル パラメーターが正しく設定されているかどうかについての質問を受けます。

Learner preview of configuration parameter value test

信号データに関するテストの追加

受講者の解答で生成される信号データが、指定された許容誤差内で想定されている信号データと一致しているかどうかをテストするには、次のようにします。

  1. [テストの追加][信号データ] の順に選択します。このアクションにより、Signal Assessment ブロックが追加されます。

  2. 信号を Signal Assessment ブロックに接続します。

  3. [信号データの取得] をクリックします。ソース ブロックを示すように [信号ソース] の値が更新されます。

  4. 取得した信号データを Figure ウィンドウでチェックするには、[信号データを取得しました] をクリックします。

  5. 必要に応じて、[許容誤差] ボックスで絶対許容誤差を指定します。受講者の解答が模範解答とは異なるアプローチを使用する場合、許容誤差によってテストの合否を判定できます。各タイム ステップにおいて、このテストは、受講者の信号データと期待値の差が、指定された絶対許容誤差を超えているかどうかをチェックします。

  6. モデルを更新する場合は、信号データを再取得します。取得した信号データはスナップショットであり、モデルを更新しても自動的に更新されません。

Signal data test with Signal Assessment block connected in block diagram

受講者は、信号要件のプロットと、信号が要件を満たしているかどうかについての質問を受けます。

Learner preview of signal data test

各タスクでは、1 つの信号のデータのみをテストできます。

カスタム テストの追加

MATLAB 関数を使用してカスタム テストを記述するには、次のようにします。

  1. [テストの追加][カスタム] の順に選択します。

  2. [質問] ボックスに、受講者への質問を入力します。

  3. [関数] の横にあるハイパーリンクをクリックします。関数が [カスタム テスト] タブで開きます。カスタム テストが複数ある場合、タブ名には一意性を保つための番号が含まれます。

  4. 関数内で、受講者の解答をテストするカスタム ロジックを実装します。

    • 関数では、入力引数 mdl を使用して、解答モデルの名前を "SolutionModel" のように引用符で囲んで指定できます。

    • 入力引数を使用しない場合でも、関数には必ず入力引数がなければなりません。

    • 関数は、受講者の解答がテストに合格したかどうかを数値または logical の 1 (true) または 0 (false) として返さなければなりません。

  5. カスタム テストにエラーがないかどうかをチェックするには、[テストの実行] をクリックします。

  6. テストが有効かどうか、また解答がテストに合格するかどうかをチェックします。

たとえば、1 つの入力信号をもつ Cruise Control という名前の PID Controller ブロックが解答にあり、受講者が入力信号に error という名前を付けているかどうかをチェックしたいとします。カスタム テストは以下のようになります。

function pass = customTest(mdl)
    ports = get_param(mdl+"/Cruise Control","PortHandles");
    in1 = ports.Inport(1);
    signal = get_param(in1,"Name");
    pass = (signal == "error");
end

テストを実行すると、解答がテストに合格したかどうかを示すメッセージが表示されます。

Solution passes custom test in Assessment pane

作成した問題のみが受講者に表示されます。関数は受講者には表示されません。

Learner preview of custom test

別の例として、値が 5 である k という名前の変数が受講者によってベース ワークスペースに追加されていることをチェックしたいとします。カスタム テストは以下のようになります。

function pass = customTest(mdl)
    k = evalin('base','k');
    pass = (k == 5);
end

ベース ワークスペースで k5 に設定してからテストを実行すると、解答がテストに合格したというメッセージが表示されます。

Solution passes custom test in Assessment pane

作成した問題が受講者に表示されます。

Learner preview of custom test

参考

トピック