<< 目次を表示 >> ページ位置: シミュレーション > 数学的なシミュレーション > ソルバー > アクティビティ図でのソルバーの利用例 |
このトピックでは、アクティビティ図のシミュレーションでソルバーを適用する箇所と方法について簡単な例を紹介します。これには、アクションの効果やコントロールフローのガードでのスクリプトの使用も含まれます。このトピックの内容では、Octaveソルバーの例を示していますが、OctaveソルバーをMATLABソルバーに置き換えれば、同じスクリプトをMATLABにも使用できます。
ソルバーの初期化
アクティビティ図でソルバーを初期化するためのスクリプトは、アクションの効果、通常は開始の次の最初のアクションの効果に置きます。
値の代入とコマンドの実行
値を割り当てるには、octave.set()またはmatlab.set()関数を使用します。アクティビティ図では、この関数をアクションの効果の中に入れることができます。
.exec()関数を使ってMATLABやOctaveのコマンドを実行する場合も、コマンドをアクションの効果の中に置くことができます。
条件付き分岐
条件付き分岐では、条件をコントロールフローのガードに置き、任意のMATLABまたはOctaveの関数を呼び出すスクリプトを含めることができます。例えば、以下のようになります。
結果の取得
外部関数からの結果を取得するには、ソルバの.get()関数を利用します。スクリプトの内容をユーザーに伝えるための方法に関係するものとして、以下の3つが挙げられます。
TraceとWin32画面設計要素を利用する場合には、ソルバの.get()関数JavaScriptで利用します。上の画像はその利用例です。ガード条件に利用しています。
トレースの使用
Trace()コマンドは、シミュレーションを最初に書いてデバッグする際に、スクリプトの結果をさまざまな段階で確認できるので便利です。結果はシミュレーションサブウィンドウに出力されます。
プロットの実行
OctaveとMATLABのどちらでも、プロットを生成する機能を持っています。プロットを生成するには,ソルバーの.exec()関数を使って,プロット生成関数を呼び出します。
プロットの保持
シミュレーションでプロットを実行する際、シミュレーションが一時停止していなければ、プロットはほんの一瞬しか表示されません。そこで、プロットを表示している間、シミュレーションの実行を一時停止するための2つの方法があります。
2番目の方法でシミュレーションを進めるには、以下の手順でトリガを発行します。
Win32画面設計要素の利用
Win32画面設計要素を利用する際の大まかな手順は以下の通りです。
Win32画面設計要素を利用するための簡単な手順は以下の通りです。
ユーザーが入力した値を得て処理を進めるためには、ユーザーがOKボタンをクリックする必要があるため、OKボタンから処理を進めるためのトリガを発行する必要があります。トリガを受け取るためには、シグナル要素を用意すると同時に、そのシグナル要素のブロードキャストによってトリガされる遷移を設定する必要があります。
前述の「トリガを使ってプロットを保持する」の項で示した、トリガとシグナル要素「End」の作成と設定の手順を参照してください。今回の場合では、同じ遷移を、'Plot'という新しいトリガに設定しています。OKボタンのOnClickタグ値を使って、BroadcastSignal('Plot')を実行し、シグナルを送信しています。
ソルバーを終了するコントロールフローには、アクション 'AcceptEvent'があります。これはトリガと結びついています。
遷移ではTriggerを作成し、トリガの種類をシグナルに設定し、シグナル要素を作成する必要があります。
キャンセルボタンについても、OKボタンと同様に設定します。 'cancel'のシグナルとトリガーを作成し、AcceptEventCancelに設定します。
シミュレーションの実行
シミュレーションを実行します。
表示されるダイアログで値を入力してOKボタンをクリックすると、次のように表示されます。
参照: