• 検索結果がありません。

B.2 シミュレータ本体

B.2.1 処理系

処理系はシミュレータ本体のコアな部分であり,下記の部分からなり,MITRAMからの 基本思想が一部引き継がれている.

★シミュレータ制御  

B.2は本シミュレーションシステムの操作パネルである.

B.2 UFSfOMの操作パネル  

シミュレータ制御は,シミュレーションのステップ管理や回数の制御,サイクル時間間 隔制御など ,表B.1のような機能を有する.

B.1 操作パネルの機能  

ファイル(File) PWC構成入力,データの入出力コマンド

表示(View) 内部状態,入出力一覧表,グラフ表示コマンド 設定(Setting) 表示有効数字,アニメ間隔(ナシ,20m秒〜1秒)

自動ステップ回数(Run one cycle) 4,095回まで設定可 初期データ再入力(Reload initial data)

結果保存(Save result) シミュレーション結果の出力コマンド

現ステップ数(Step counts) 手動ステップ,クリア機能付

自動保存(Auto save) シミュレーション結果をステップ毎に保存

ツール呼出 PWC,CBRF,FIU,In dataの起動コマンド さらに,パネルの下部に並ぶ各種モデル構築ツールの呼出し機能もある.

★ 多段論理演算機構  

PWCを構成するすべてのCBRFおよびその下位のPEに対し ,すべてのエージェント の推論や演算・判断の制御を行う(MITRAMからの拡張).

MITRAMでは下位から,

  全FMV(Fuzzy Model Vehicle:自動車)→ 全FIU

の順に2重の演算サイクルを回して,1ステップのシミュレーション結果を得ていた.

UFSfOMではこの上位にさらにCBRFのサイクルが加わり,

  全エージェント(プレーヤ)→ 全PE → 全CBRF

と3重のサイクルを通じて,1ステップのシミュレーションが終わる.なお要素名は,対象 が自動車から一般に変わったので,ふさわしい形に改めた.

いずれも最下位のサイクルでFuzzy推論や組込み関数およびユーザー作成のテーブルルッ クアップ関数の補間などの処理を行っており,その上位では必要なデータの供給とサイク ルの管理のみを行っている.

Fuzzy推論エンジン  

FIU(Fuzzy関数)を割当てられたすべてのPEに対し,Fuzzy推論を実行する.

すでに述べた通り,MITRAMのViewerでのあらかじめFuzzy推論した結果を用意して 読込むという,テーブルルックアップ型の処理は止めて,その都度Fuzzy推論を実行する 形にした.

実際の推論エンジンは,Fuzzy推論構築ツールのFIU Builderで,構築中に推論結果を表 示できるようにした推論エンジンを移植しただけである.MITRAMのときは入出力値の 変域(台集合)を256分割していた演算精度を16倍の4,096分割にし,より高精度にFuzzy 推論が実行できるように拡張した.もちろん FIU Builder内の推論エンジンも同じ精度で 演算している.

★ 組込み関数処理  

組込み関数はUFSfOMで用意された新しい機能で,MITRAMではこれもテーブルルッ クアップ方式のライブラリとしてFIUと同じように読込んで使っていた.

自動車運転のモデリングとは異なり,一般的なモデル作成ではかなり多くの組込み関数 を必要とするので,実際に表A.2のように50種ほどの非Fuzzy演算・判断機能を用意した.

これらの関数が割当てられたPEに対しては,対応する内部プログラムで直接演算・判断 を実行することで,テーブルルックアップよりも演算速度の高速化が図られた.

以前から発表・提供されているシミュレータでは,これらの関数はJavaなどのプログラ ム言語に頼ってモデルを構築する傾向にあるが,敢えて図A.2のようにFIUと同じ空間に 並列的に並べることで,モデルの視認性を上げている.

この点は,従来のシミュレータにおける,シーケンシャルなプロセッシングをベースと したシミュレーションモデルの作成方法と,大いに異なる点である.

★ テーブルルックアップ  

Fuzzy関数以外の関数は,組込み関数として用意されたもの以外には,ユーザーが自分

で作成するか,すでに別途作成されているものを使うことになる.

これらは,2項関数のテーブルとしてMatoSimに読込まれる.ファイル形式は*.csvを採 用しているので,関数自体はExcel等で作成して用意することができる.

ただし,Fuzzy処理と同じ精度を出そうと思うと,2進データでも4k×4k×32 bits=64M

Bytesと非常に大きなファイルサイズになるために,通常は変域を1,024分割したテーブル

を読込んで使うことにした.

入力値113.2

入力値2

0 変域 68.9

-23.50

0 4095

180 0

4095

96.3

1626 1627

2190

2191

1063.461 1063.599 1063.066

1063.527

1063.081

B.3 テーブルルックアップの補間  

変数値がテーブル上にないときは,入力値の近傍4点の関数テーブルの値を使って,直 線補間近似で図B.3のようにして出力関数値を求めている.