アクティビティ図でのソルバーの利用例

<< 目次を表示 >>

ページ位置:  シミュレーション > 数学的なシミュレーション > ソルバー >

アクティビティ図でのソルバーの利用例

このトピックでは、アクティビティ図のシミュレーションでソルバーを適用する箇所と方法について簡単な例を紹介します。これには、アクションの効果やコントロールフローのガードでのスクリプトの使用も含まれます。このトピックの内容では、Octaveソルバーの例を示していますが、OctaveソルバーをMATLABソルバーに置き換えれば、同じスクリプトをMATLABにも使用できます。

 

 

ソルバーの初期化

アクティビティ図でソルバーを初期化するためのスクリプトは、アクションの効果、通常は開始の次の最初のアクションの効果に置きます。

 

 

 

値の代入とコマンドの実行

値を割り当てるには、octave.set()またはmatlab.set()関数を使用します。アクティビティ図では、この関数をアクションの効果の中に入れることができます。

 

 

.exec()関数を使ってMATLABやOctaveのコマンドを実行する場合も、コマンドをアクションの効果の中に置くことができます。

 

 

条件付き分岐

条件付き分岐では、条件をコントロールフローのガードに置き、任意のMATLABまたはOctaveの関数を呼び出すスクリプトを含めることができます。例えば、以下のようになります。

 

 

 

結果の取得

外部関数からの結果を取得するには、ソルバの.get()関数を利用します。スクリプトの内容をユーザーに伝えるための方法に関係するものとして、以下の3つが挙げられます。

 

 

TraceとWin32画面設計要素を利用する場合には、ソルバの.get()関数JavaScriptで利用します。上の画像はその利用例です。ガード条件に利用しています。

 

 

トレースの使用

Trace()コマンドは、シミュレーションを最初に書いてデバッグする際に、スクリプトの結果をさまざまな段階で確認できるので便利です。結果はシミュレーションサブウィンドウに出力されます。

 

 

プロットの実行

OctaveとMATLABのどちらでも、プロットを生成する機能を持っています。プロットを生成するには,ソルバーの.exec()関数を使って,プロット生成関数を呼び出します。

 

 

 

プロットの保持

シミュレーションでプロットを実行する際、シミュレーションが一時停止していなければ、プロットはほんの一瞬しか表示されません。そこで、プロットを表示している間、シミュレーションの実行を一時停止するための2つの方法があります。

 

  1. OctaveやMATLABのuiwaitを使う。例えば、これは、アクションの効果の中で設定できます。ここでは,Octaveを使った例を示します。
      Octave.exec('script','uiwait');

 

  1. プロットが生成された状態からの移行時に、シミュレーションを一時停止するための受信イベントアクションを配置する。プロパティサブウィンドウの「トリガ」タブで、既存のトリガと結びつけるか、新規にトリガ要素を作成してください。

 

 

2番目の方法でシミュレーションを進めるには、以下の手順でトリガを発行します。

  1. シミュレーションイベントウィンドウに対象のトリガ要素をモデルブラウザ内からドロップする
  2. ドロップしたトリガをダブルクリックする

 

 

 

Win32画面設計要素の利用

Win32画面設計要素を利用する際の大まかな手順は以下の通りです。

  1. Win32ダイアログを作成する
  2. ダイアログを開くためのスクリプトを記述する
  3. ダイアログ内のテキストボックス要素などから値を取得する
  4. その値をソルバーに渡す
  5. ボタンを使ってプロットを実行する

 

Win32画面設計要素を利用するための簡単な手順は以下の通りです。

  1. モデルテンプレートの「Starter Win32 Model」を読み込む
  2. Win32ダイアログ要素の名前を「ScreenA」に変更する
  3. EditControl A要素の名前を「finish」などの意味のあるものに変更する
  4. Entryアクションを右クリックして「振る舞いの編集」を選択し、Entryアクションのスクリプトに、ダイアログを開くための呼び出しを追加する
    dialog.ScreenA.Show=true;

 

ユーザーが入力した値を得て処理を進めるためには、ユーザーがOKボタンをクリックする必要があるため、OKボタンから処理を進めるためのトリガを発行する必要があります。トリガを受け取るためには、シグナル要素を用意すると同時に、そのシグナル要素のブロードキャストによってトリガされる遷移を設定する必要があります。

 

前述の「トリガを使ってプロットを保持する」の項で示した、トリガとシグナル要素「End」の作成と設定の手順を参照してください。今回の場合では、同じ遷移を、'Plot'という新しいトリガに設定しています。OKボタンのOnClickタグ値を使って、BroadcastSignal('Plot')を実行し、シグナルを送信しています。

 

 

ソルバーを終了するコントロールフローには、アクション 'AcceptEvent'があります。これはトリガと結びついています。

 

 

遷移ではTriggerを作成し、トリガの種類をシグナルに設定し、シグナル要素を作成する必要があります。

 

キャンセルボタンについても、OKボタンと同様に設定します。 'cancel'のシグナルとトリガーを作成し、AcceptEventCancelに設定します。

 

 

シミュレーションの実行

シミュレーションを実行します。

 

表示されるダイアログで値を入力してOKボタンをクリックすると、次のように表示されます。

 

 

 

参照: