Version 6.4


操作マニュアル


Copyright © 2008-2023 NTT DATA Mathematical Systems, Inc. All Rights Reserved.


1 はじめに

S4 Simulation System をご利用頂き、誠にありがとうございます。

S4 Simulation System(エスクワトロ・シミュレーション・システム) は、汎用的なシミュレーションシステムです。工場などの生産システム、サプライチェーンなどの流通システム、銀行の窓口やATM、通信システム、交通システム、コールセンターなど、確率的な振る舞いをするものを対象とするような様々な領域のシミュレーションを行う事が出来ます。こうしたら生産率が上がるのではないか、コストを下げられるのではないか、とお考えになっている案件を、手軽にかつ本格的にシミュレーションする事が出来ます。また、どこがボトルネックになっているか、どこで無駄なコストを発生しているのかなどの分析も同時に行う事が出来ます。S4 Simulation System は、簡単にシミュレーションモデルの作成と分析が出来る操作性と、他に類を見ない自由度を合わせ持つシミュレーションシステムです。

図 1: S4 Simulation System

1.1 シミュレーションについて

1.1.1 シミュレーションとは

シミュレーションとは、

現実のシステムをモデル化(模擬)し、その振る舞いを分析・予測する問題解決手法

です。(図 2)

図 2: シミュレーションとは

1.1.2 シミュレーションのメリット

以下のような場合にシミュレーションが有効です。

  • 実際のシステムで試すには時間・費用がかかる

  • 実際のシステムは存在しない

  • 問題が複雑で解けない

  • 複数の解を比較したい

1.1.3 シミュレーションの分類

シミュレーションの種類には以下のようなものがあります。

  • 連続と離散

    • 連続型シミュレーション

      • 半導体や物理・科学シミュレーションなど
    • 離散型シミュレーション

      • 待ち行列シミュレーションなど
  • 確定と確率

    • 確定的シミュレーション

      • モデルで規定される条件に従い結果が確定的に求まるシミュレーション。連続型シミュレーションなど
    • 確率的シミュレーション

      • システムを確率的に変動させ結果が確率的に変動するシミュレーション。待ち行列シミュレーションなどの離散イベントシミュレーション
  • モンテカルロシミュレーション

    • 乱数(モンテカルロ法)を用いてシミュレーションを行なう

    • 数値計算(連続型・確定的シミュレーション)に用いられることもある

    • 確率(分布)の計算(離散型シミュレーション)に用いられることもある

S4 Simulation System は、確率的・離散型シミュレーションを行うツールになります。

1.1.4 離散イベントシミュレーション

離散イベントシミュレーションとは、以下のようなものを指します。

  • 待ち行列タイプの現象を分析・評価するためのシミュレーション

  • システムの状態変化を置こす出来事を事象(Event)とする

  • 事象の発生を乱数により表現し、待ち行列(混雑状況など)を分析する

図 3: 待ち行列のイメージ

1.1.5 離散イベントシミュレーションの例

離散イベントシミュレーションには以下のようなものがあります。

  • 工場などの生産システム(図 4)

  • サプライチェーンなどの流通システム(図 5)

  • 銀行の窓口、ATM など(図 6)

  • 通信システム

  • 交通システム

  • コールセンター

図 4: 工場生産の例
図 5: サプライチェーンの例
図 6: 銀行の窓口の例

1.2 本システムの特徴

S4 Simulation System は以下のような特徴を持ちます。

1.2.1 グラフィカルなモデル記述

部品を配置しリンクを貼るという手順でモデルを表現します。

図 7: S4 Simulation System

1.2.2 部品編集によるカスタマイズ

各部品は様々なパラメータを持ち、それらを修正する事で個々の部品をモデル化します。(図 8, 図 9)

たとえば、待ち時間などには固定値を設定する事も出来ますが、様々な理論分布から選ぶ事が出来ます。また、実際に観測されたデータをインポートし、そのデータを元にサンプリングを行う事や、あるいは、そのまま再生する事で、より正確なモデル化も行えます。

図 8: 部品共通設定画面
図 9: 部品属性設定画面

1.2.3 より高度な部品のカスタマイズ

全ての部品は、後述の psim 言語を用いて動作が記述されています。部品に用意されているパラメータでは部品の動作を正確に記述出来ない場合は、自由に書き直す事が出来ます。(図 10)

図 10: 部品コード編集画面

1.2.4 可視化機能

データ表示(図 11)、ヒストグラム(図 12や時系列プロット(図 13)などの様々なデータの可視化が出来ます。シミュレーション実行中にリアルタイムにグラフを表示したり、待ち行列の状態をアニメーションで表示する事も出来ます。

図 11: データ表示
図 12: ヒストグラム表示
図 13: 時系列プロット
図 14: アニメーション

1.2.5 分析機能

各部品で観測された結果から、簡単に様々な基本統計量を得る事が出来ます(図 15)。独自の統計量を定義する事も出来ます(図 16)。また、回帰、平滑化、密度推定や分散分析などの分析を行う事が出来ます。

図 15: サマリ表示
図 16: スクリプト編集

また、実行結果を CSV 形式で出力する事(図 17)が出来ますので、外部ツールで解析する事も出来ます。Numpy, Scipy を利用した分析も可能です。

図 17: データエクスポート画面

VMS との連携機能があり、VMS で作成したデータを入力してシミュレーションを実行する事や、シミュレーション結果を VMS 側に戻し分析する事も可能です。

1.2.6 多様な実行モード

ある目的関数の期待値を任意の線形制約の下で最大化あるいは最小化するようなパラメータセットを求める事が出来ます (図 18, 図 19)。 実行中の途中結果は以下のようなグラフで表示されます(図 20, 図 21)。 また、様々なパラメータで実行を行う一括実行モード、各パラメータの感度を調べる感度分析実行モード、実験計画に従って実行する実験計画実行モードも用意されています。これらの様々なパラメータで評価が必要な実行モードでは、同一 CPU 内の複数のコアを用いて、できる限り並列に実行を行います。

図 18: 最適化タブ
図 19: 条件タブ
図 20: 最適化グラフ(単目的)
図 21: 最適化グラフ(多目的)

1.2.7 スケーラブルで汎用的な psim 言語

psim 言語は、Python 言語上に実装されたシミュレーション記述言語です。GUI 上で作成されたモデルは psim 言語に 変換されて実行されます(図 22。psim 言語を理解していなくても、シミュレーションは行えますが、 psim 言語を扱う事で、より複雑なモデルも記述する事が出来ます。

図 22: コード表示画面

1.2.8 ハイブリッドモデリング

離散イベントシミュレーションだけではなく、連続的に変化する状態量を扱う、感染症モデル、生態系シミュレーションなどのシステムダイナミクスモデルも扱う事が出来ます。また、離散と連続の組合わさったハイブリッドモデルも扱う事が出来ます。

1.2.9 エージェントシミュレーション

多数の自律的に行動するエージェントの挙動から、全体の挙動をシミュレートするエージェントシミュレーションも扱う事が出来ます。各エージェントが、相互に作用し合いながら行動する事によって生じる現象のシミュレーションなど多数のエージェントからなる仮想的な世の中を構築する事が出来ます。

1.3 表記について

本ソフトウェアの正式名称は S4 Simulation System ですが、4 乗が表記出来ない場合は S-Quattro Simulation System と表記する事があります。

1.4 用語

S4 Simulation System では以下のような用語を使っています。

ワークスペース

プロジェクトファイルが格納されたディレクトリの事を指す。ワークスペースは複数用意する事が出来、それらを切り替える事が出来る。

プロジェクト

独立したひとつのシミュレーションモデルとその入出力をまとめた区分単位。各ワークスペースに複数存在する。

モデル

シミュレーションモデルを指す。各プロジェクトにひとつだけ存在する。

入力セットフォルダ

各プロジェクトで複数の入力フォルダを持つ事が出来る。それら入力フォルダの集合を入力セットフォルダと呼ぶ。各プロジェクトにひとつだけ存在する。

出力セットフォルダ

各プロジェクトで複数の出力フォルダを持つ事が出来る。それら出力フォルダの集合を入力セットフォルダと呼ぶ。各プロジェクトにひとつだけ存在する。

入力フォルダ

外部から CSV 等をインポートし、それらを経験分布の入力としてシミュレーションを行う事が出来るが、それらのデータは入力フォルダに格納される。各入力セットフォルダに複数存在する。

出力フォルダ

モデルを実行すると、指定されている出力フォルダに結果が格納される。実行結果を別名で保存しておきたい時にも利用出来る。各出力セットフォルダに複数存在する。

モニター

実行結果あるいは、入力データが格納されている。列名を持った行列である。 各入/出力フォルダに複数存在する。

時系列モニター

実行結果あるいは、入力データが格納されている。列名を持った行列であるが、モニターと違い時間列が含まれる。時間列は各行の時間を表す。基本統計量の算出方法も違う。各入/出力フォルダ に複数存在する。

部品

シミュレーションモデルを構成する要素のひとつ。自律的あるいは入力を機に何らかの動作を行い、場合によっては出力を行う。モデル上に配置する事が出来る。任意個の入力ポートと出力ポートを持つ。

入力ポート

部品を構成する要素のひとつ。他の出力ポートからリンクが結ばれていればフローアイテムを入力する。キューを持つ場合と持たない場合がある。キューを持つ場合はそのキューから入力し、キューを持たない場合はセレクタによってどの出力ポートから入力するかを決定する。各部品は複数の入力ポートを持つがひとつも存在しない場合もある。

出力ポート

部品を構成する要素のひとつ。他の入力ポートにリンクが結ばれていればフローアイテムを出力する。キューを持つ場合と持たない場合がある。キューを持つ場合はそのキューに出力し、キューを持たない場合はセレクタによってどの入力ポートへ出力するかを決定する。各部品は複数の出力ポートを持つがひとつも存在しない場合もある。

リンク

入出力ポート間の接続を表現する。各入出力ポートに複数のリンク起点がある場合がある。

セレクタ

出力ポート側にある場合は、フローアイテムを出力する際にどのリンクを選択するかを決定する方法を指す。入力ポート側にある場合は、フローアイテムを入力する際にどのリンクを選択するかを決定する方法を指す。

資源

シミュレーションモデルを構成する要素のひとつで、ファシリティ、ストア、タンク、イベントがある。シミュレーションを行う際は、その資源を利用するために待ち行列が発生するような制約要素になる。必ずキューを持つ。

ファシリティ

資源のひとつである。排他的に利用可能な複数の離散資源を持つものを表す。例えば、「銀行の窓口」など。銀行の窓口がひとつしかないとすると、ある人がその窓口を占有していると、他の人はその窓口が空くのを待たなければならない。窓口を占有していた人の処理が終了すればその窓口を開放し、待ち行列に並んでいた次の人が窓口を占有する。

ストア

資源のひとつである。有限の離散量資源を貯えられるようなものを表す。例えば、「コンビニエンスストアの棚」など。コンビニエンスストアの棚には複数の商品があるが、お店の人は定期的に商品を入荷し配置するし、定期的にお客がその商品を買う。棚が一杯の時は商品を配置出来ないし、棚が空の場合は商品を買う事は出来ない。

タンク

資源のひとつである。例えば、「ガソリンタンク」など。ある車のガソリンタンクには、一定量のガソリンが入っているが、車が走ればその量は減り、ガソリンスタンドで給油すれば量が増える。容量が空の場合は車は走れず、容量が一杯の時はそれ以上給油出来ない。容量は連続量であるが、タンクへの操作は離散的にしか行えない所が、変数と異る。

イベント

資源のひとつである。発火されるまで待ち受けする同期資源を表す。例えば、「電話がかかってくる」など。電話がかかってくるまで電話を待つが、複数の人が電話を待っている場合、並びが速いもの順に受ける場合もあり、優先度が高い順に受ける場合などがある。

フローアイテム

シミュレーション内に流れるもので、出力ポートからリンクを辿り入力ポートに入り、部品の動作の契機になる。シミュレーションモデル内には複数のフローアイテムの種類(class)が存在し、各種類のフローアイテムの実体が実際にシミュレーション内を流れる。各フローアイテムの実体は複数の固有の属性を持つ。例えば、電話の呼出し、ベルトコンベアを流れる製品、移動する人など。

変数

連続的に変化する値を示す。参照、更新が可能な「連続変数」と、複数の連続変数の関数で表されるような「補助変数」がある。部品のひとつである連続部品は、連続変数や補助変数の値を参照し、連続的に連続変数の値を更新する。

エージェント

個々の自律的に動作する主体を表現するものである。エージェントには、固定ステップで同期的に動作する同期エージェント、個々のエージェントが非同期に動作する非同期エージェントがある。エージェントは必ずエージェント集合に属す。

エージェント集合

互いに影響を及ぼしあいながら行動する複数のエージェントの集りを表現するものである。エージェント集合は必ず環境に属す。

環境

エージェント行動の基盤となるジオメトリ情報や、全エージェントのテーブルなどを管理するものである。

同期エージェント

エージェントの一種であるが、特に全てのエージェントの状態が固定タイミングで変化するようなエージェントである。例えば、交通シミュレーションや物理シミュレーションなどで用いられる事が多い。メリットとしては、エージェント数の増加に対してスケールしやすい事がある。デメリットとしては、より精度の高いシミュレーションにするには、すべてのエージェントのステップ幅を短くする必要があり、(間隔の分散の大きい)離散イベントの処理は、効率が悪い事などがある。

非同期エージェント

エージェントの一種であるが、特に個々のエージェントの状態が独立に離散タイミングで変化するようなエージェントである。例えば、ツイッターの伝播シミュレーション、購買行動シミュレーションなどで用いられる事が多い。メリットとしては、イベント発生間隔が疎なら、高速な離散イベントシミュレーションができる事がある。デメリットとしては、エージェント数の増加に対して、あまりスケールしない事がある。

強化学習モデル

強化学習の学習方法の設定、または学習結果のことを指す。同期エージェントの行動の決定や、フローアイテムの入出力リンクの選択の際に利用される。

2 起動と終了

S4 Simulation System の起動と終了方法についてを説明します。

2.1 起動

S4 Simulation System をインストールすると、Windows のスタートメニューに登録されています。

スタートメニューから、[すべてのプログラム]\rightarrow[MSI Solutions]\rightarrow[S4 (S-Quattro Simulation System)] で起動します。

(ただし、インストール時の設定で別のメニューに登録されている場合もあります。)

初回起動時は、初回起動画面(図 23)が表示されます。

図 23: 初回起動

初回起動画面ではワークスペースフォルダを指定して下さい。ワークスペースフォルダとは、S4 Simulation System で作成したプロジェクトを保存するフォルダの事です。ワークスペースフォルダは後で変更する事も出来ます(4.3.1 章)。

なお、S4 Simulation System v4.4 以前で作成されたワークスペースフォルダは、v5.0 以降では使えないため、新規に指定し直す必要があります。

S4 Simulation System v4.4 以前に作成したプロジェクト(.sss 拡張子)の変換については、4.2.1 章 を参照下さい。

2.2 終了

S4 Simulation System のメインウィンドウ上部のファイルメニュー(3.2.1 章)から「終了」を選ぶとで終了します。

未保存のデータやモデルが実行中の場合は、適宜確認ダイアログが表示されますので、適宜ご判断下さい。

3 ユーザインターフェース

3.1 ウィンドウ構成

S4 Simulation System のメインウィンドウは、おおきく分けて、4 つに分かれます。(図 24)

図 24: ウィンドウ構成

3.1.1 メニュー、ツールバー

様々な操作を行います。詳細は 3.2 章, 3.3 章 を参照して下さい。

3.1.2 ブラウザパネル

ブラウザパネルは、以下のタブから構成されます。

  • ワークスペースタブ

  • 部品タブ

  • 資源タブ

  • 変数タブ

  • アイテムタブ

  • グラフタブ

  • エージェントタブ

  • 環境タブ

  • 学習モデルタブ

3.1.2.1 ワークスペースタブ

ワークスペースタブはツリー構造になっており、以下のように構成されます (図 25)。

図 25: ワークスペースタブ

ワークスペースタブには選択されているワークスペースに含まれる全てのプロジェクトが表示されます。

各プロジェクトにはモデル、入力セットフォルダ、出力セットフォルダが含まれます。

入力セットフォルダには複数の入力フォルダ、出力セットフォルダには複数の出力フォルダが含まれます。

入出力フォルダには、複数のモニターと時系列モニターと強化学習モデルが含まれます。

モニターと時系列モニターには列が含まれます。

ワークスペースタブの各アイテムを右クリックするとメニューが表示されます。ワークスペースタブのメニューについては、3.4 章を参照して下さい。

3.1.2.2 部品タブ

部品タブには、部品が表示されます。各部品は、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.3 資源タブ

資源タブには、資源が表示されます。各資源は、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.4 変数タブ

変数タブには、連続変数と、補助変数が表示されます。変数は、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.5 アイテムタブ

アイテムタブには、フローアイテムが表示されます。フローアイテムは、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.6 グラフタブ

グラフタブには、グラフとリアルタイムグラフが表示されます。グラフは、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.7 エージェントタブ

エージェントタブには、同期エージェントと非同期エージェントが表示されます。エージェントは、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.8 環境タブ

環境タブには、環境が表示されます。環境は、ドラッグする事でモデルに貼り付ける事が出来ます。

3.1.2.9 学習モデルタブ

学習モデルタブには、強化学習モデルなどが表示されます。各学習モデルは、ドラッグすることでモデルに貼り付けることが出来ます。

3.1.3 情報パネル

情報パネルは、フローティング可能で、以下の 4 つのタブから構成されます。

  • メッセージタブ

  • モデル出力タブ

  • モデルエラータブ

  • システムタブ

各タブは、情報パネル内で移動可能です。

3.1.3.1 メッセージタブ

メッセージタブにはモデルの操作が表示されます。 メッセージタブで右クリックするとメニューが表示されます。メッセージタブのメニューについては、3.6 章を参照して下さい。

3.1.3.2 モデル出力タブ

モデル出力タブにはモデルの実行時の標準出力が表示されます。 モデル出力タブで右クリックするとメニューが表示されます。モデル出力タブのメニューについては、3.7 章を参照して下さい。

3.1.3.3 モデルエラータブ

モデルエラータブにはモデルの実行時の標準エラー出力が表示されます。 モデルエラータブで右クリックするとメニューが表示されます。モデルエラータブのメニューについては、3.7 章を参照して下さい。

3.1.3.4 システムタブ

システム上のメッセージが表示されます。 システムタブで右クリックするとメニューが表示されます。システムタブのメニューについては、3.6 章を参照して下さい。

3.1.4 モデル編集パネル

活性状態のモデルが表示されます。複数のモデルを同時に開く事が出来ます。

各モデルタブはモデル編集パネル内で移動可能です。

モデル編集パネルの下部にはズームコントロールがあります。ズームコントロールを右に動かすと、現在編集中のモデルが拡大されます。ズームコントロールを左に動かすと、現在編集中のモデルが縮小されます。

3.2 メニュー

S4 Simulation System の メインウィンドウのメニューには以下のようなものがあります。 (図 26)

図 26: メニュー

3.2.1 ファイルメニュー

3.2.1.1 新規プロジェクト

新規プロジェクトを現在選択されているワークスペース作成します。 詳細は5 章を参照して下さい。

3.2.1.2 モデルを閉じる

活性状態になっているモデルを閉じます。 詳細は5 章を参照して下さい。

3.2.1.3 モデルを保存

活性状態になっているモデルを保存します。 詳細は5 章を参照して下さい。

3.2.1.4 プロジェクトを別名で保存

活性状態になっているモデルとその入力セットフォルダと出力セットフォルダを別名のプロジェクトとして保存します。 詳細は5 章を参照して下さい。

3.2.1.5 プロジェクトをインポート

エクスポートされたプロジェクトをインポートします。 詳細は4.2.1 章を参照して下さい。

3.2.1.6 プロジェクトをエクスポート

プロジェクトをエクスポートします。エクスポートしたプロジェクトはインポートする事が出来ます。 詳細は4.2.2 章を参照して下さい。

3.2.1.7 プロパティ

ワークスペースや外部エディタなど、S4 Simulation System 全体の振舞いを変更します。

プロパティ編集画面(図 27)が表示されます。

図 27: プロパティ
ワークスペース

ワークスペースを変更します。詳細は、4.3.1 章を参照して下さい。

Python エディタ

Python コードの参照、編集に利用する外部エディタのパスを指定します。Python エディタ引数には、外部エディタを起動する際のオプション等の引数を指定します。「%s」の部分は編集するファイル名に置換されます。(5.4.6.2 章5.5 章5.6.1 章5.8 章6.1.3 章)

テーブル表示の数値書式

テーブル表示やサマリー表示における数値の表示書式を指定します。

並列実行数

一括実行、最適化実行、感度分析実行、実験計画実行において、並列実行するかどうかを指定します。並列数を 0 にした場合、並列数はシステムの CPU のコア数になります。0 以上の数値した場合は、その数だけ並列実行します。システムコア数以上の値を設定する事はきません。

3.2.1.8 終了

S4 Simulation System を終了します。 詳細は2 章を参照して下さい。

3.2.2 編集メニュー

3.2.2.1 元に戻す

プロジェクトを開いた後、あるいは、プロジェクトを保存後に行った操作をひとつ取り消します。 詳細は5.2 章を参照して下さい。

3.2.2.2 やり直し

元に戻した操作をもう一度行います。 詳細は5.2 章を参照して下さい。

3.2.2.3 切り取り

選択している部品、資源、フローアイテム、変数、エージェント、環境を切り取ります。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.2.2.4 コピー

選択している部品、資源、フローアイテム、変数、エージェント、環境をコピーします。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.2.2.5 貼り付け

切り取りあるいはコピーした部品、資源、フローアイテム、変数、エージェント、環境を貼り付けます。 詳細は5 章を参照して下さい。

3.2.3 モデルメニュー

3.2.3.1 モデルを開始する

活性状態のモデルの実行を開始します。 詳細は5.9 章を参照して下さい。

3.2.3.2 モデルを一時停止する

活性状態のモデルの実行を一時停止します。 詳細は5.9 章を参照して下さい。

3.2.3.3 モデルを再開する

一時停止している活性状態のモデルの実行を再開します。 詳細は5.9 章を参照して下さい。

3.2.3.4 モデルを停止する

活性状態のモデルの実行を停止します。 詳細は5.9 章を参照して下さい。

3.2.3.5 サマリを表示する

活性状態のモデルの出力のサマリを表示します。 詳細は23.1 章を参照して下さい。

3.2.3.6 コードを表示する

活性状態のモデルの自動生成されたコードを表示します。 詳細は5.8 章を参照して下さい。

3.2.3.7 パラメータを編集する

活性状態のモデルのパラメータを編集します。 詳細は5.4 章を参照して下さい。

3.2.3.8 カスタムコードを編集する

活性状態のモデルのカスタムコードを編集します。 詳細は5.5 章を参照して下さい。

3.2.3.9 分析スクリプトを編集する

活性状態のモデルの分析スクリプトを編集します。 詳細は5.6 章を参照して下さい。

3.2.3.10 モデルプロパティを編集する

活性状態のモデルのプロパティを編集します。 詳細は5.12 章を参照して下さい。

3.2.3.11 ナビゲーションウィンドウを表示する

ナビゲーションウィンドウを表示します。 詳細は5.13 章を参照して下さい。

3.2.4 ツールメニュー

3.2.4.1 Python シェル起動

Python シェルを起動します。 詳細は28.1 章を参照して下さい。

3.2.5 ヘルプメニュー

3.2.5.1 S-Quattro のドキュメントを表示

S4 Simulation System のドキュメントを表示します。

3.2.5.2 グラフドキュメントを表示

グラフに関するのドキュメントを表示します。

3.2.5.3 PDF版のドキュメントを表示

PDF 版のドキュメントを表示します。

3.2.5.4 バージョン情報

S4 Simulation System のバージョン情報を表示します。

3.3 ツールバー

ツールバーにはメニューの中で良く使われるものが用意されており、グループ化されています。各グループは移動する事が出来ます。ツールバーには以下のようなものがあります。(図 28)

図 28: ツールバー

3.3.1 作成・保存

3.3.1.1 プロジェクトを新規作成

新規プロジェクトを現在選択されているワークスペース作成します。 詳細は5 章を参照して下さい。

3.3.1.2 モデルを保存する

活性状態になっているモデルを保存します。 詳細は5 章を参照して下さい。

3.3.2 インポート・エクスポート

3.3.2.1 プロジェクトをインポートする

エクスポートされたプロジェクトをインポートします。 詳細は4.2.1 章を参照して下さい。

3.3.2.2 プロジェクトをエクスポートする

プロジェクトをエクスポートします。エクスポートしたプロジェクトはインポートする事が出来ます。 詳細は4.2.2 章を参照して下さい。

3.3.3 元に戻す・やり直し

3.3.3.1 元に戻す

プロジェクトを開いた後、あるいは、プロジェクトを保存後に行った操作をひとつ取り消します。 詳細は5.2 章を参照して下さい。

3.3.3.2 やり直し

元に戻した操作をもう一度行います。 詳細は5.2 章を参照して下さい。

3.3.4 切り取り・貼り付け

3.3.4.1 コピー

選択している部品、資源、フローアイテム、変数、エージェント、環境をコピーします。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.3.4.2 切り取り

選択している部品、資源、フローアイテム、変数、エージェント、環境を切り取ります。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.3.4.3 貼り付け

切り取りあるいはコピーした部品、資源、フローアイテム、変数、エージェント、環境を貼り付けます。 詳細は5 章を参照して下さい。

3.3.5 モデル実行

3.3.5.1 モデルを開始する

活性状態のモデルの実行を開始します。 詳細は5.9 章を参照して下さい。

3.3.5.2 モデルを一時停止する

活性状態のモデルの実行を一時停止します。 詳細は5.9 章を参照して下さい。

3.3.5.3 モデルを再開する

一時停止している活性状態のモデルの実行を再開します。 詳細は5.9 章を参照して下さい。

3.3.5.4 モデルを停止する

活性状態のモデルの実行を停止します。 詳細は5.9 章を参照して下さい。

3.3.6 サマリ表示

3.3.6.1 サマリを表示

活性状態のモデルの出力のサマリを表示します。 詳細は23.1 章を参照して下さい。

3.3.7 コード表示

3.3.7.1 コードを表示する

活性状態のモデルの自動生成されたコードを表示します。 詳細は5.8 章を参照して下さい。

3.3.8 モデル編集

3.3.8.1 パラメータを編集する

活性状態のモデルのパラメータを編集します。 詳細は5.4 章を参照して下さい。

3.3.8.2 カスタムコードを編集する

活性状態のモデルのカスタムコードを編集します。 詳細は5.5 章を参照して下さい。

3.3.8.3 分析スクリプトを編集する

活性状態のモデルの分析スクリプトを編集します。 詳細は5.6 章を参照して下さい。

3.4 ワークスペースタブのメニュー

ブラウザパネルのワークスペースタブの各アイテムを右クリックするとメニューが表示されます。ワークスペースタブの構造は図 25 のようになっています。

3.4.1 ワークスペース

ワークスペースで右クリックすると以下のようなメニューが表示されます。

3.4.1.1 プロジェクトを新規作成する

新規プロジェクトを現在選択されているワークスペース作成します。 詳細は5 章を参照して下さい。

3.4.1.2 プロジェクトをインポートする

エクスポートされたプロジェクトをインポートします。 詳細は4.2.1 章を参照して下さい。

3.4.1.3 プロジェクトを貼りつける

コピーしたプロジェクトを貼り付ける事が出来ます。

3.4.1.4 ワークスペースを展開する

ワークスペース以下を展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.1.5 ワークスペースを全て展開する

ワークスペース以下を再帰的に展開します。

3.4.1.6 ワークスペースを折りたたむ

ワークスペース以下を折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.1.7 ワークスペースを再読み込み

通常は必要ありませんが、ワークスペースを再読み込みします。

3.4.2 プロジェクト

3.4.2.1 プロジェクトの名前を変更する

プロジェクトの名前を変更します。

3.4.2.2 プロジェクトを削除する

プロジェクトを削除します。削除したプロジェクトは復帰出来ませんのでご注意下さい。

3.4.2.3 プロジェクトをコピーする

プロジェクトをコピーします。コピーしたプロジェクトは任意のワークスペースに貼り付ける事が出来ます。

3.4.2.4 プロジェクトをエクスポートする

プロジェクトをエクスポートします。 詳細は4.2.2 章を参照して下さい。

3.4.2.5 プロジェクトを展開する

プロジェクト以下を展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.2.6 プロジェクトを折りたたむ

プロジェクト以下を折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.3 モデル

モデルで右クリックすると以下のメニューが表示されます。

3.4.3.1 モデルを開く

モデルを開きます。モデル編集パネルに表示されます。 詳細は5 章を参照して下さい。

3.4.4 入力セットフォルダ

入力セットフォルダで右クリックすると以下のメニューが表示されます。

3.4.4.1 入力フォルダを新規作成

入力フォルダを作成します。

3.4.4.2 入力セットフォルダを展開する

入力セットフォルダを展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.4.3 入力セットフォルダを全て展開する

入力セットフォルダを再帰的に展開します。

3.4.4.4 入力セットフォルダを折りたたむ

入力セットフォルダを折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.4.5 入力セットフォルダを再読み込み

通常は必要ありませんが、入力セットフォルダを再読み込みします。

3.4.5 出力セットフォルダ

出力セットフォルダで右クリックすると以下のメニューが表示されます。

3.4.5.1 出力フォルダを新規作成

出力フォルダを作成します。

3.4.5.2 出力セットフォルダを展開する

出力セットフォルダを展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.5.3 出力セットフォルダを全て展開する

出力セットフォルダを再帰的に展開します。

3.4.5.4 出力セットフォルダを折りたたむ

出力セットフォルダを折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.5.5 出力セットフォルダを再読み込み

通常は必要ありませんが、出力セットフォルダを再読み込みします。

3.4.6 入力フォルダ

入力フォルダで右クリックすると以下のメニューが表示されます。

3.4.6.1 データをインポートする

入力フォルダに CSV 等のテキスト形式のデータファイルをインポートします。 詳細は4.4 章を参照して下さい。

3.4.6.2 入力フォルダの名前を変更する

入力フォルダの名前を変更します。

3.4.6.3 入力フォルダを削除する

入力フォルダを削除します。

3.4.6.4 入力フォルダをコピーする

入力フォルダをコピーします。コピーしたものは、入力セットフォルダある いは出力セットフォルダに貼り付ける事が出来ます。

3.4.6.5 入力フォルダを展開する

入力フォルダを展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.6.6 入力フォルダを全て展開する

入力フォルダを再帰的に展開します。

3.4.6.7 入力フォルダを折りたたむ

入力フォルダを折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.6.8 入力フォルダを再読み込み

通常は必要ありませんが、入力フォルダを再読み込みします。

3.4.7 出力フォルダ

出力フォルダで右クリックすると以下のメニューが表示されます。

3.4.7.1 サマリを表示

出力フォルダのサマリを表示します。 詳細は23.1 章を参照して下さい。

3.4.7.2 出力フォルダの名前を変更する

出力フォルダの名前を変更します。

3.4.7.3 出力フォルダを削除する

出力フォルダを削除します。

3.4.7.4 出力フォルダをコピーする

入力フォルダをコピーします。コピーしたものは、入力セットフォルダある いは出力セットフォルダに貼り付ける事が出来ます。

3.4.7.5 出力フォルダを展開する

出力フォルダ以下を展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.7.6 出力フォルダを全て展開する

出力フォルダ以下を再帰的に展開します。

3.4.7.7 出力フォルダを折りたたむ

出力フォルダを折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.7.8 出力フォルダを再読み込み

通常は必要ありませんが、出力フォルダを再読み込みします。

3.4.8 モニター

モニターで右クリックすると以下のメニューが表示されます。

3.4.8.1 データを表示する

モニターの内容を表示します。 詳細は23.2 章23.3 章を参照して下さい。

3.4.8.2 プロット

モニターの各列のプロットを表示します。 詳細は21.1 章を参照して下さい。

3.4.8.3 ヒストグラム

モニターの各列のヒストグラムを表示します。 詳細は21.1 章を参照して下さい。

3.4.8.4 分散分析

モニターに対して分散分析を行います。 詳細は24.1 章を参照して下さい。

3.4.8.5 データをエクスポートする

CSV 等のテキスト形式のデータにエクスポートします。 詳細は4.5 章を参照して下さい。

3.4.8.6 データの名前を変更する

モニターの名前を変更します。

3.4.8.7 データを削除する

モニターを削除します。

3.4.8.8 データをコピーする

モニターをコピーします。コピーしたものは、入力フォルダあるいは出力フォ ルダに貼り付ける事が出来ます。

3.4.8.9 データを展開する

モニター以下を展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.8.10 データを折りたたむ

モニター以下を折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.9 時系列モニター

時系列モニターで右クリックすると以下のメニューが表示されます。

3.4.9.1 データを表示する

時系列モニターの内容を表示します。時間列は「時間」列に表示されます。 詳細は23.2 章23.3 章を参照して下さい。

3.4.9.2 時系列プロット

時系列モニターの各列の時系列プロットを表示します。 詳細は21.1 章を参照してください。

3.4.9.3 ヒストグラム

時系列モニターの各列のヒストグラムを表示します。時間間隔を重みとしたヒストグラムを表示します。 詳細は21.1 章を参照してください。

3.4.9.4 トルネードグラフ

感度分析実行の結果の「感度分析実行結果」モニターに対してのみ表示されます。 感度分析実行結果からトルネードグラフを表示します。 詳細は5.4.4 章を参照して下さい。

3.4.9.5 スパイダーチャート

感度分析実行の結果の「感度分析実行結果」モニターに対してのみ表示されます。 感度分析実行結果からスパイダーチャートを表示します。 詳細は5.4.4 章を参照して下さい。

3.4.9.6 分散分析

時系列モニターに対して分散分析を行います。 詳細は24.1 章を参照して下さい。

3.4.9.7 データをエクスポートする

CSV 等のテキスト形式のデータにエクスポートします。

3.4.9.8 データの名前を変更する

時系列モニターの名前を変更します。

3.4.9.9 データを削除する

時系列モニターを削除します。

3.4.9.10 データをコピーする

時系列モニターをコピーします。コピーしたものは、入力フォルダあるいは出力フォ ルダに貼り付ける事が出来ます。

3.4.9.11 データを展開する

時系列モニター以下を展開します。名前の左側の「+」をクリックしても同じ動作をします。

3.4.9.12 データを折りたたむ

時系列モニター以下を折りたたみます。名前の左側の「–」をクリックしても同じ動作をします。

3.4.10 強化学習モデル

強化学習モデルで右クリックすると以下のメニューが表示されます。

3.4.10.1 学習モデルを閲覧する

強化学習モデルが保持する学習結果を閲覧します。 詳細は 25 章 を参照して下さい。

3.4.10.2 データの名前を変更する

強化学習モデルの名前を変更します。

3.4.10.3 データを削除する

強化学習モデルを削除します。

3.4.10.4 データをコピーする

強化学習モデルをコピーします。コピーしたものは、 入力フォルダあるいは出力フォルダに貼り付ける事が出来ます。

3.4.11

列で右クリックすると以下のメニューが表示されます。

3.4.11.1 データを表示する

列の内容を表示します。時系列モニターの列の場合は、時間列は「時間」列に表示されます。 詳細は23.2 章23.3 章を参照して下さい。

3.4.11.2 プロット/時系列プロットを表示する

モニターの各列のプロットを表示します。時系列モニターの列の場合は、時系列プロットを表示します。 詳細は21.1 章を参照して下さい。

3.4.11.3 ヒストグラムを表示する

モニターの各列のヒストグラムを表示します。時系列モニターの場合は、時系列モニターの各列のヒストグラムを表示します。時間間隔を重みとしたヒストグラムを表示します。 詳細は21.1 章を参照して下さい。

3.5 モデル編集のメニュー

モデル編集画面内で、右クリックするとメニューが表示されます。

  • 部品、資源、フローアイテム、変数、エージェント、環境、リンクの配置されていない場所で右クリックするとモデル編集メニューが表示されます。

  • 部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所で右クリックすると部品・資源・フローアイテム・変数・エージェント・環境メニューが表示されます。

  • リンクのある場所で右クリックするとリンクメニューが表示されます。

3.5.1 モデル編集メニュー

モデル編集画面において、部品、資源、フローアイテム、変数、エージェント、環境、リンクの配置されていない場所で右クリックするとモデル編集メニューが表示されます。

3.5.1.1 パラメータを編集する

モデルのパラメータを編集します。 詳細は5.4 章を参照して下さい。

3.5.1.2 カスタムコードを編集する

カスタムコードを編集します。 詳細は5.5 章を参照して下さい。

3.5.1.3 分析スクリプトを編集する

分析スクリプトを編集します。 詳細は5.6 章を参照して下さい。

3.5.1.4 コードを表示する

自動生成されたコードを表示します。 詳細は5.8 章を参照して下さい。

3.5.1.5 モデルを開始する

モデルの実行を開始します。 詳細は5.9 章を参照して下さい。

3.5.1.6 分析スクリプトを開始する

選択するとサブメニューに、定義されている分析スクリプト名の一覧が表示 されます。指定いた分析スクリプトを実行します。 詳細は5.7 章を参照して下さい。

3.5.1.7 サマリを表示する

モデルの出力のサマリを表示します。 詳細は23.1 章を参照して下さい。

3.5.1.8 モデルを保存する

モデルを保存します。 詳細は5 章を参照して下さい。

3.5.1.9 プロジェクトをエクスポートする

このモデルを含むプロジェクトをエクスポートします。 詳細は4.2.2 章を参照して下さい。

3.5.1.10 元に戻す

プロジェクトを開いた後、あるいは、プロジェクトを保存後に行った操作をひとつ取り消します。 詳細は5.2 章を参照して下さい。

3.5.1.11 やり直し

元に戻した操作をもう一度行います。 詳細は5.2 章を参照して下さい。

3.5.1.12 切り取り

選択している部品、資源、フローアイテム、変数、エージェント、環境を切り取ります。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.5.1.13 コピー

選択している部品、資源、フローアイテム、変数、エージェント、環境をコピーします。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.5.1.14 貼り付け

詳細は5 章を参照して下さい。

切り取りあるいはコピーした部品、資源、フローアイテム、変数、エージェント、環境を貼り付けます。

3.5.2 部品・資源・フローアイテム・変数・エージェント・環境メニュー

モデル編集画面において、部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所で右クリックすると部品メニューが表示されます。

3.5.2.1 編集する

部品、資源、フローアイテム、変数、エージェント、環境を編集します。 詳細は5 章を参照して下さい。

3.5.2.2 削除する

部品、資源、フローアイテム、変数、エージェント、環境を削除します。 詳細は5 章を参照して下さい。

3.5.2.3 入力ポートを上(左)に配置する

部品の入力ポートの位置を変更します。 詳細は5 章を参照して下さい。

3.5.2.4 出力ポートを下(右)に配置する

部品の出力ポートの位置を変更します。 詳細は5 章を参照して下さい。

3.5.2.5 元に戻す

プロジェクトを開いた後、あるいは、プロジェクトを保存後に行った操作をひとつ取り消します。 詳細は5.2 章を参照して下さい。

3.5.2.6 やり直し

元に戻した操作をもう一度行います。 詳細は5.2 章を参照して下さい。

3.5.2.7 切り取り

選択している部品、資源、フローアイテム、変数、エージェント、環境を切り取ります。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.5.2.8 コピー

選択している部品、資源、フローアイテム、変数、エージェント、環境をコピーします。任意のモデルに貼り付ける事が出来ます。 詳細は5 章を参照して下さい。

3.5.2.9 貼り付け

切り取りあるいはコピーした部品、資源、フローアイテム、変数、エージェント、環境を貼り付けます。 詳細は5 章を参照して下さい。

3.5.3 リンクメニュー

モデル編集画面において、リンク上で右クリックするとリンクメニュー が表示されます。

3.5.3.1 削除する

リンクを削除します。 詳細は5 章を参照して下さい。

3.5.3.2 リンクを隠す/表示する

リンクを隠す、あるいは、リンクを表示します。 詳細は5 章を参照して下さい。

3.5.3.3 元に戻す

プロジェクトを開いた後、あるいは、プロジェクトを保存後に行った操作をひとつ取り消します。 詳細は5.2 章を参照して下さい。

3.5.3.4 やり直し

元に戻した操作をもう一度行います。 詳細は5.2 章を参照して下さい。

3.5.3.5 切り取り

選択している部品、資源、フローアイテム、変数、エージェント、環境を切り取ります。任意のモデルに貼り付ける事が出来ます。詳細は5 章を参照して下さい。

3.5.3.6 コピー

選択している部品、資源、フローアイテム、変数、エージェント、環境をコピーします。任意のモデルに貼り付ける事が出来ます。詳細は5 章を参照して下さい。

3.5.3.7 貼り付け

切り取りあるいはコピーした部品、資源、フローアイテム、変数、エージェント、環境を貼り付けます。詳細は5 章を参照して下さい。

3.6 メッセージタブ・システムタブのメニュー

情報パネルのメッセージタブとシステムタブで右クリックすると以下のメニューが表示されます。

3.6.1 クリア

タブの内容が消去されます。

3.6.2 コピー

選択されているテキストの内容がコピーされます。コピーしたテキストは他のアプリケーションに貼り付ける事が出来ます。

3.6.3 全てを選択

タブ内の全てのテキストが選択されます。

3.7 モデル出力タブ・モデルエラータブのメニュー

情報パネルのメッセージタブとシステムタブで右クリックすると以下のメニューが表示されます。

3.7.1 クリア

タブの内容が消去されます。

3.7.2 コピー

選択されているテキストの内容がコピーされます。コピーしたテキストは他のアプリケーションに貼り付ける事が出来ます。

3.7.3 全てを選択

タブ内の全てのテキストが選択されます。

3.7.4 最後のモデル出力(エラー)の結果を表示

モデル出力タブ・モデルエラータブは、最後の 1000 行だけしか表示されません。1000 行より前のテキストは随時消去されます。

このメニューを選択すると、最後のモデル出力あるいはモデルエラーの1000 行より前を含む結果全てを表示します。ただし、色の情報は無くなってしまい、黒一色で表示されます。表示出来るのは最後に実行した結果のみです。それ以前に実行した結果は表示する事が出来ません。

3.8 Python エディタのメニュー

Python コードの編集画面(5.4.6.2 章5.5 章5.6.1 章5.8 章6.1.3 章)において、右クリックすると以下のメニューが表示されます。

3.8.1 元に戻す

Python エディタ内で行った操作をひとつ取り消します。

3.8.2 やり直す

元に戻した操作をもう一度行います。

3.8.3 切り取り

選択されているテキストの内容を切り取ります。

3.8.4 コピー

選択されているテキストの内容がコピーされます。

3.8.5 貼り付け

切り取りあるいはコピーしたテキストを貼り付けます。

3.8.6 削除

選択されているテキストの内容を削除します。

3.8.7 全てを選択

全てのテキストを選択します。

3.8.8 外部エディタ

3.2.1.7 章で登録した外部エディタによって、Python コードを開きます。

4 プロジェクト

S4 Simulation System におけるプロジェクトとは、独立したひとつのシミュレーションモデルとその入出力をまとめた区分単位です。ここではプロジェクトの操作についてを説明します。

プロジェクトはワークスペースタブ上ではワークスペースの下の階層に表示されます。(図 29)

図 29: ワークスペースタブ上のプロジェクト

4.1 基本操作

4.1.1 プロジェクトの作成

ファイルメニュー(3.2.1 章)から「新規プロジェクト」を選択し、プロジェクトを作成します。(図 30)

図 30: プロジェクトの作成

[新規プロジェクトの作成」ダイアログ(図 31)が表示されますので、プロジェクト名を入力して下さい。(プロジェクト名には、Windows のファイル名に使用出来ない名前は利用出来ません。)

図 31: 新規プロジェクトダイアログ

ブラウザパネルのワークスペースタブに作成されたプロジェクトが表示されます。(図 32)

図 32: 作成されたプロジェクト

モデルをダブルクリックすると、モデル編集パネルに空のモデルが表示されます。

4.1.2 プロジェクトの削除

ワークスペースタブ(3.1.2.1 章)のプロジェクトメニュー(3.4.2 章)から「プロジェクトを削除する」を選択するとプロジェクトが削除されます。削除したプロジェクトは復帰出来ませんのでご注意下さい。

4.1.3 プロジェクトの名前の変更

ワークスペースタブ(3.1.2.1 章)のプロジェクトメニュー(3.4.2 章)から「プロジェクトの名前を変更する」を選択するとプロジェクトの名前を変更する事が出来ます。

4.2 プロジェクトのインポート・エクスポート

プロジェクトのインポート・エクスポート方法についてを説明します。

S4 Simulation System で作成されたプロジェクトは、外部にエクスポートする事が出来ます。エクスポートした S4 Simulation System のエクスポートファイルは、再度インポートする事が出来ます。

4.2.1 プロジェクトのインポート

ファイルメニュー(3.2.1 章)の「プロジェクトをインポート」を選択するとプロジェクトインポート画面が表示されます。あるいはツールバーのボタン(3.3.2 章)から実行出来ます。

プロジェクトエクスポート画面で任意のフォルダのエクスポートファイルを選択すると、現在選択されているワークスペースにインポートする事が出来ます。

S4 Simulation System V5.0 以降にエクスポートされたプロジェクトの拡張子は、.s4 となっています。

S4 Simulation System v4.4 以前にエクスポートされたプロジェクトの拡張子は、.sss となっています。v4.4 以前で作成されたプロジェクトのシミュレーションコードは、Python 2 の仕様に基づいて作成されているため .sss ファイルをインポートする場合、Python が提供する 2to3 の自動変換機能を利用して、コードが自動変換されます。しかしながら、完全に動作するコードに変換される事は保証出来ません。自動変換できなかった部分は、手動でシミュレーションコードを修正する必要があります。

S4 Simulation System v4.4 のワークスペース上にあるプロジェクトをインポートしたい場合は、まず、v4.4 を起動し、当該プロジェクトをエキスポート(拡張子 .sss)します。次いで、最新の S4 Simulation System を起動して、旧プロジェクト(拡張子 .sss)をインポートして下さい。

4.2.2 プロジェクトのエクスポート

モデルを開いている状態で、ファイルメニュー(3.2.1 章)の「プロジェクトをエクスポート」を選択するとプロジェクトエクスポート画面が表示されます。あるいはツールバーのボタン(3.3.2 章)、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

プロジェクトエクスポート画面で任意のフォルダに任意の名前を付けて(通常は拡張子は .s4 のままにして下さい)保存する事が出来ます。

プロジェクト単位でエクスポートしますので、モデル以外に出力セット、入力セットもまとめてエクスポートされます。

4.3 ワークスペース

4.3.1 ワークスペースの変更

ワークスペースの変更についてを説明します。

ファイルメニュー(3.2.1 章)の「プロパティ」を選択するとプロパティ画面が表示されます。

プロパティ画面には現在選択されているワークスペースフォルダが表示されています。

既存のワークスペースフォルダを指定した場合、ワークスペースフォルダが変更され、ブラウザパネルのワークスペースタブには変更されたワークスペースのプロジェクトが表示されます。

新規のワークスペースフォルダを指定した場合、ワークスペースフォルダが作成され、ブラウザパネルのワークスペースタブには空になります。

ワークスペースを変更すると、次回起動時はそのワークスペースが表示されます。

なお、S4 Simulation System v4.4 以前で作成されたワークスペースフォルダは、V5.0 以降では指定出来ません。

S4 Simulation System v4.4 以前に作成したプロジェクト(.sss 拡張子)の変換については、4.2.1 章 を参照下さい。

4.4 データのインポート

ブラウザパネルの入力フォルダを右クリックして表示されるメニュー(3.5.1 章)から「データをインポートする」を選ぶとデータインポートウィザードが表示されます。

インポートしたデータは、入力フォルダに格納され、シミュレーションのデータとして利用する事が出来ます。

以下のような手順で様々な形式のテキストデータをインポートする事が出来ます。

4.4.1 ファイル指定

最初に、インポートするテキスト形式のデータファイルを選択して下さい。

4.4.2 フォーマット指定

次にフォーマット指定画面(図 33)が表示されますので、そのデータファイルのフォーマットを指定して下さい。

図 33: フォーマット指定

フォーマット指定画面は以下のような構成になっています。

4.4.2.1 ファイル内容のプレビュー

指定されたデータの先頭が表示されています。

4.4.2.2 フォーマットパラメータ

以下の様々のフォーマットパラメータが指定出来ます。

区切り文字

区切り文字を指定します。

ヘッダ

一行目が列名かデータかを指定します。

文字コード

文字コードを指定します。

クオート文字

データの中に区切り文字が含まれる場合にクオートする文字を指定します。

クオートのエスケープ方法

クオート内にクオート文字が含まれる場合のエスケープ方法を指定します。

区切り文字の後の空白

区切り文字の後の空白の扱いを指定します。

4.4.2.3 解析結果

指定したフォーマットパラメータによりデータを解析した結果が表示されます。ここに表示されている内容が、文字化けが発生している場合や、区切り位置がおかしい、クオートの解釈の仕方が誤っているなどの時は、フォーマットパラメータを適宜修正下さい。問題がなければ、「次へ」をクリックして下さい。インポートしたいデータが間違っていた場合は「戻る」をクリックして下さい。「キャンセル」をクリックするとデータのインポートを中止します。

4.4.3 列選択

次に列選択画面(図 34)が表示されますので、列を選択して下さい。

図 34: 列選択

列選択画面は以下のような構成になっています。

4.4.3.1 元データ

フォーマット指定画面によって解析されたデータの先頭が表示されています。

4.4.3.2 列選択

左側には全ての列名が表示されています。

右側がインポートしたい列が表示されています。

真ん中の右矢印を押すと、左側で選択している列がインポートする列に加わります。(ただし既に追加されている列は追加出来ません。)

真ん中の左矢印を押すと、右側で選択している列がインポートする列から削除されます。

4.4.3.3 結果

列選択により選択されたデータが表示されています。問題なければ、「次へ」をクリックして下さい。問題があれば、列選択をやり直して下さい。データの解釈に誤りがある場合は「戻る」をクリックし、前の画面に戻る事が出来ます。「キャンセル」をクリックするとデータのインポートを中止します。

4.4.4 型・名前指定

次に型・名前指定画面(図 35)が表示されますので、各列の型と名前を指定して下さい。

図 35: 型・名前指定

型・名前指定画面は以下のような構成になっています。

4.4.4.1 元データ

今までの指定画面によって作成されたデータの先頭が表示されています。

4.4.4.2 型・名前指定

列は型と名前で構成され、行にはデータの列名が表示されています。

データのそれぞれの列の型と名前を指定して下さい。

4.4.4.3 結果

指定した型と名前に変更されたデータが表示されています。問題なければ、「次へ」をクリックして下さい。問題があれば、型・名前指定をやり直して下さい。以前の画面での操作に誤りがある場合は「戻る」をクリックし、前の画面に戻る事が出来ます。「キャンセル」をクリックするとデータのインポートを中止します。

4.4.5 時間列指定

次に列時間列指定画面(図 36)が表示されますので、時間列がある場合は指定して下さい。

図 36: 時間列指定

時間列指定画面は以下のような構成になっています。

4.4.5.1 元データ

今までの指定画面によって作成されたデータの先頭が表示されています。

4.4.5.2 時間列指定

列は累積時間、滞在時間で構成され、行にはデータの列名が表示されています。

もし、累積時間を表している列がある場合は、その列の累積時間をチェックして下さい。

もし、滞在時間を表している列がある場合は、その列の滞在時間をチェックして下さい。

高々ひとつしかチェックする事は出来ません。

4.4.5.3 結果

指定した時間列を解釈したデータが表示されています。問題なければ、「次へ」をクリックして下さい。問題があれば、時間列指定をやり直して下さい。以前の画面での操作に誤りがある場合は「戻る」をクリックし、前の画面に戻る事が出来ます。「キャンセル」をクリックするとデータのインポートを中止します。

4.4.6 データ名指定

最後にデータ名を指定します(図 37)。

図 37: データ名指定

データ名を指定し「インポート実行」をクリックすると、入力フォルダに指定した名前のデータが作成されます。既にその名前のデータが存在する場合上書きを確認されます。「戻る」をクリックすると前の画面に戻ります。「キャンセル」をクリックするとデータのインポートを中止します。

4.5 データのエクスポート

ブラウザパネルの入/出力フォルダ内のデータを右クリックして表示されるメニュー(3.5.1 章)から「データをエクスポートする」を選ぶとデータエクスポートウィザードが表示されます。

エクスポートしたデータは、外部ツールで読み込む事で出来ます。

以下のような手順で様々な形式のテキストデータへエクスポートする事が出来ます。

4.5.1 ファイル指定

最初に、エクスポートするデータファイル名を選択して下さい。

4.5.2 フォーマット指定

フォーマット指定画面(図 38)が表示されますので、エクスポートしたデータファイルのフォーマットを指定して下さい。

図 38: フォーマット指定

フォーマット指定画面は以下のような構成になっています。

4.5.2.1 元データ

エクスポートするデータの先頭が表示されています。

4.5.2.2 フォーマットパラメータ

以下の様々のフォーマットパラメータが指定出来ます。

区切り文字

区切り文字を指定します。

ヘッダ

一行目が列名かデータかを指定します。

文字コード

文字コードを指定します。

クオート方法

どのようなデータにクオートを行うかを指定します。

クオート文字

データの中に区切り文字が含まれる場合にクオートする文字を指定します。

クオートのエスケープ方法

クオート内にクオート文字が含まれる場合のエスケープ方法を指定します。

4.5.2.3 出力イメージ

指定したフォーマットパラメータによりデータを出力した場合のイメージが表示されます。ここに表示されている内容が、おかしい場合はフォーマットパラメータを適宜修正下さい。問題がなければ、「次へ」をクリックして下さい。出力するファイル名が間違っていた場合は「戻る」をクリックして下さい。「キャンセル」をクリックするとデータのエクスポートを中止します。

5 モデル

S4 Simulation System におけるモデルとは、シミュレーションモデルを指します。ひとつのプロジェクトにひとつのモデルがあります。ここではモデルの操作についてを説明します。

プロジェクトはワークスペースタブ上ではプロジェクトの下の階層に表示されます。(図 39)

図 39: ワークスペースタブ上モデルプロジェクト

5.1 基本操作

5.1.1 モデルを開く

保存されているモデルあるいは新規作成したプロジェクトのモデルを開くには、ブラウザパネルのワークスペースタブのモデルをダブルクリックすると、モデル編集パネルにそのモデルが表示されます。(図 40)

図 40: モデルを開く

5.1.2 モデルの保存

モデルを開いている状態で、ファイルメニュー(3.2.1 章)から、「モデルを保存」を選ぶと、モデルが保存されます。

5.1.3 モデルを閉じる

モデル編集パネルのタブの「×」をクリックするとモデルを閉じます。(図 41)

図 41: モデルを閉じる

5.1.4 プロジェクトを別名で保存

活性状態になっているモデルとその入力セットフォルダと出力セットフォルダを別名のプロジェクトとして保存します。入力セットフォルダと出力セットフォルダの内容はコピーされます。

5.2 元に戻す・やり直し

モデルを開いている状態で、編集メニュー(3.2.2 章)の「元に戻す」を選択するとモデルに加えた変更を取り消す事が出来ます。あるいはツールバーのボタン(3.3.3 章)、モデル編集画面で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

「元に戻す」は複数回の操作を取り消す事が出来ますが、モデルを開いたタイミングあるいはモデルを保存したタイミング以降の変更のみが対象となります。

「元に戻す」を行った場合、編集メニュー(3.2.2 章)の「やり直し」を選択すると「元に戻す」で取り消した操作を再度行う事が出来ます。あるいはツールバーのボタン(3.3.3 章)、モデル編集画面で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

「やり直す」は複数回の取り消した操作を再実行する事が出来ます。

5.3 フローの編集

5.3.1 部品アイコンについて

部品アイコンは図 42のように、以下で構成されます。

  • アイコンイメージ

  • 入力ポート

  • 出力ポート

  • ラベル

図 42: 部品アイコンの構成

資源アイコン、変数アイコン、フローアイテムアイコン、グラフアイコンは入/出力ポートはなく、以下のみで構成されます。

  • アイコンイメージ

  • ラベル

5.3.2 部品の配置

部品を配置するには、まず、モデルを開き、ブラウザパネルの部品タブを開きます。以下のような手順で配置出来ます。

  1. 編集したい部品の上でマウス左ボタンを押します。

  2. 左ボタンを押しながらモデル上の配置したい場所へドラッグします。

  3. 配置したい場所で、左ボタンを離すと、そこに部品が配置されます。

操作イメージは、図 43です。

図 43: 部品の配置

資源を配置するには資源タブから同様の操作で配置出来ます。

フローアイテムを配置するにはアイテムタブから同様の操作で配置出来ます。

5.3.3 リンクの作成

以下のような手順で、部品間のリンクを作成出来ます。

  1. リンクの起点としたい出力ポートでマウス左ボタンを押します。

  2. 左ボタンを押しながらドラッグします。

  3. リンクの終点としたい入力ポートで、左ボタンを離すと、リンクが作成されます。

操作イメージは、図 44です。

図 44: リンクの作成

リンクは同一モデル上の部品の出力ポートから部品の入力ポートにしか接続出来ません。リンクを作成出来る場合は、ドラッグ中にリンクが赤くなります。赤くなっていない場合、リンクは作成されません。

部品とリンクの接続方法には幾つかのパターンがあります。接続方式については、7 章 を参照して下さい。

5.3.4 部品の選択

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所、またはリンクのある場所を左クリックすると色が変わり選択状態になります。

Ctrl キーを押しながら部品を選択すると、部品が追加選択されます。

モデル上の部品が配置されていない場所で、マウスの左ボタンを押し、ドラッグすると長方形のガイドが表示されます。左ボタンを離すと、長方形のガイド内に含まれる全ての部品、資源、フローアイテム、変数、エージェント、環境が選択されます。Ctrl を押しながらこの操作を行うと、それらの部品が追加選択されます。

何も配置されていない場所を左クリックすると未選択状態になります。

5.3.5 部品・リンクメニュー

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所、またはリンクのある場所を右クリックするとメニューが表示されます。(図 45)

図 45: 部品・リンクメニュー

5.3.6 選択部品の移動

選択されている部品、資源、フローアイテム、変数、エージェント、環境を以下のような手順で、移動する事が出来ます。

  1. 選択されている部品の上でマウス左ボタンを押します。

  2. 左ボタンを押しながらモデル上の移動したい場所へドラッグします。

  3. 移動したい場所で、左ボタンを離すと、そこに部品が移動します。

選択されている部品から出ているリンクも移動されます。リンクが選択されていても、そのリンクが選択されている部品につながっていない場合は移動しません。

5.3.7 選択部品の削除

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所を右クリックするとメニューが表示され、削除を選ぶと、選択状態にある全ての部品、資源、フローアイテム、変数、エージェント、環境が削除されます。部品の場合は、その部品から出ているリンクも削除されます。

5.3.8 リンクの削除

リンクの線上で右クリックすると、メニューが表示され、削除を選ぶと、そのリンクが削除されます。

5.3.9 リンクを隠す/表示する

リンクが表示されている時に、リンクの線上で右クリックすると、メニューが表示され、「リンクを隠す」を選ぶと、そのリンクが隠れます(図 46)。ただし、あくまでも表示上隠れるだけで、実際にはリンクは張られています。

図 46: Link0

リンクが隠されている時に、ラベル上で右クリックすると、メニューが表示され、「リンクを表示する」を選ぶと、そのリンクが表示されます(図 47)。

図 47: Link1

5.3.10 入力ポートの表示位置の変更

部品の配置されている場所を右クリックするとメニューが表示され、「入力ポートを上に配置する」あるいは「入力ポートを左に配置する」を選ぶと、入力ポートの表示位置を変更できます。

5.3.11 出力ポートの表示位置の変更

部品の配置されている場所を右クリックするとメニューが表示され、「出力ポートを下に配置する」あるいは「出力ポートを右に配置する」を選ぶと、出力ポートの表示位置を変更できます。

5.3.12 選択部品の切り取り

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所を右クリックするとメニューが表示され、切り取りを選ぶと、選択状態にある全ての部品、資源、フローアイテム、変数、エージェント、環境が削除されますが、それらは後で貼り付ける事が出来ます。部品の場合は、その部品から出ているリンクも削除されますが、選択部品間のリンクは保存されており、後で貼り付けるとそれらも貼り付けられます。

5.3.13 選択部品のコピー

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所を右クリックするとメニューが表示され、コピーを選ぶと、選択状態にある全ての部品、資源、フローアイテム、変数、エージェント、環境がコピーされ、それらは後で貼り付ける事が出来ます。部品の場合は、選択部品間のリンクも保存されており、後で貼り付けるとそれらも貼り付けられます。

5.3.14 選択部品の貼り付け

部品、資源、フローアイテム、変数、エージェント、環境の配置されている場所を右クリックするとメニューが表示され、貼り付けを選ぶと、切り取りあるいはコピーされている部品、資源、フローアイテム、変数、エージェント、環境が貼り付けられます。

5.3.15 部品の名前の変更

部品、資源、フローアイテム、変数、エージェント、環境の下のラベルの場所を左ダブルクリックすると名前を変更する事が出来ます。

5.4 パラメータ編集

パラメータ編集画面では、シミュレーションモデルごとに固有のシミュレーションパラメータを編集する事が出来ます。

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「パラメータを編集する」を選択するとパラメータ編集画面が表示されます。あるいはツールバーのボタン(3.3.8 章)、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

パラメータ編集画面は、

  • 基本設定タブ

  • パラメータタブ

  • 一括実行タブ

  • 感度分析タブ

  • 実験計画タブ

  • 最適化タブ

で構成されます。

5.4.1 基本設定タブ

基本設定タブでは、シミュレーションモデルの基本的なパラメータを設定します。(図 48,図 49)

図 48: 基本設定タブ
図 49: 基本設定タブ(2)
実行種類

シミュレーションモデルをどのように実行するか指定します。以下から選択できます。

通常実行

「パラメータタブ」で指定したパラメータを用いて、1回のシミュレーションが実行されます。

一括実行

「一括実行タブ」(5.4.3 章)の設定に従い、「パラメータタブ」で指定したパラメータを動かして、複数のパラメータに対するシミュレーションが実行されます。

感度分析

「パラメータタブ」で指定したパラメータに対して、基準となるパラメータと、基準からずらしたパラメータに対するシミュレーションが実行されます。設定は「感度分析タブ」で行います。

実験計画

「実験計画タブ」の設定に従い、「パラメータタブ」で指定したパラメータを動かして、複数のパラメータに対するシミュレーションが実行されます。

最適化

「最適化タブ」(5.4.6 章)の設定に従って最適化が実行されます。

シミュレーション開始時間

シミュレーション開始時間を指定します。指定無しを指定した場合は、シミュレーション開始時間を指定されません。時刻指定にした場合は、日付け、時間を指定します。

シミュレーション終了時間

シミュレーション終了時間を指定します。指定無しを選択した場合はシミュレーションを外部からは終了させません。自発的に停止しないモデルでない場合は指定してはなりません。例えば、モデル内で finish() を呼ぶような停止型のシミュレーションの場合は「指定なし」を選択します。時刻指定にした場合は、日付け、時間を指定します。時間指定を選択した場合は、シミュレーション時間を秒数で指定します。あるいは、時計のマークをクリックして、単位を変える事もできます。

ウォームアップ時間

シミュレーション時間が指定したウォームアップ時間になるまでモニターへの観測を行いません。定常状態を持つようなシミュレーションでは、ウォームアップ時間までのシミュレーション結果は除去する事で、定常状態に入るまでの過渡的な動作による統計の偏りを抑える事が出来ます。指定無しを選択した場合はウォームアップ時間は設定されません。時刻指定にした場合は、日付け、時間を指定します。時間指定を選択した場合は、ウォームアップ時間を秒数で指定します。あるいは、時計のマークをクリックして、単位を変える事もできます。

シミュレーション時刻フォーマット

シミュレーション時刻のフォーマットを指定します。%Y, %m, %d, %H, %M, %S, %f が指定可能です。%Y は年、%m は月、%d は日、%H は時間、%M は分, %S は秒、%f はマイクロ秒 を意味します。

乱数の種(グローバル)

グローバル系列の乱数の種を設定します。「設定しない」を選んだ場合、種はシステム時刻等から初期化されます。「設定する」を選んだ場合は指定した値が乱数の種として利用されます。

入力フォルダ

モデルを実行する際の入力フォルダを設定します。乱数属性(19 章)において、データを引数とする時、ここで設定した入力フォルダ内のデータを取得します。

出力フォルダ

モデルを実行する際の出力フォルダを設定します。モデルを実行した結果は、ここで設定した出力フォルダに書き込まれます。古いデータは除去されます。

アニメーション

アニメーションに関するパラメータの設定をします。詳細は、(26 章)アニメーションにあります。

ODEソルバー

微分方程式ソルバーを設定します。連続部品(6.22 章)による連続シミュレーションは、ここで指定ソルバーが使われます。ソルバーには以下を指定する事ができます。各手法とも、時間刻み幅、相対許容誤差、絶対許容誤差を指定する事ができます。 - Dormand-Prince 5(4)次の陽的 Runge-Kutta 法 (DOPRI54)

  • Dormand-Prince 8(5,3)次の陽的 Runge-Kutta 法 (DOP853)

  • BDF 法

  • Adams 法

5.4.2 パラメータタブ

パラメータタブは、シミュレーションモデルの固有パラメータを設定します。(図 50)

図 50: パラメータタブ

「+」を押すと末尾にパラメータが追加され、「–」を押すとパラメータが除去されます。

名前

パラメータの名前を指定します。Python の識別子として使える名前である必要があり、1文字目がアルファベットで、2文字目以降はアルファベットか数字を指定する事が出来ます。部品の属性設定画面では、この名前でパラメータを参照する事が出来ます。

説明

パラメータの説明を指定します。モデル実行には使用されません。

パラメータの値を指定します。19 章の乱数属性を指定する事が出来ます。

値フラグ

「系列(乱数生成器)を返す」を指定すると、乱数発生器自体をパラメータに設定します。「値を返す」を指定すると、その乱数発生器からひとつ値を取り出し、その値をパラメータに設定します。

5.4.3 一括実行タブ

一括実行タブでは、様々なパラメータでモデルを実行する場合の設定を行います。(図 51)

図 51: 一括実行タブ
最大反復回数

実行するパラメータの個数の上限を指定します。「指定しない」を選択している場合は全てのパラメータの組合せを実行して終了します。パラメータのひとつにでも無限系列がある場合は選択してはなりません。「指定する」を選択している場合は指定された数だけのパラメータの組合せが実行されます。指定された数がパラメータの全組合せ数以上の場合は、全組合せを実行して終了します。

結果を全て保存する

個々のパラメータの組合せの実行結果を保存するか否かを指定します。保存しない場合、最後に実行した結果のみ出力フォルダ以下に保存されます。保存する場合、「出力フォルダ名-itr-NNN-RRR」という名前のサブ出力フォルダが出力フォルダ以下に作成されます。ここで、NNN は反復回数(何番目のパラメータの組合せかを表す番号)で、RRR はレプリケーション番号(何回目のレプリケーションかを表す番号)です。サブ出力フォルダには反復番号とレプリケーション番号に対応する実行結果が保存されます。

保存する・しないのどちらを選択した場合でも、「一括実行結果」と「一括実行詳細結果」というモニターが出力フォルダに作成されます。

5.4.3.1 パラメータ

一括実行でパラメータを動かす範囲を指定します。「+」を押すと末尾にパラメータが追加され、「–」を押すとパラメータが除去されます。

パラメータ名

パラメータ名を指定します。パラメータタブで定義したパラメータのみを選択する事が出来ます。

列の型

一括実行を完了すると「一括実行結果」と「一括実行詳細結果」いう名前のモニターが出力フォルダに出力されます。その際のこのパラメータ列の型(実数、整数、文字列)を指定します。

動かす範囲

動かす範囲を指定します。19 章の乱数属性を指定する事が出来ます。通常は有限系列を指定して下さい。無限系列を使う場合は高々ひとつとし、最大反復回数を設定して下さい。

5.4.3.2 レプリケーション

実行対象のパラメータの組合せを繰り返し実行する際の、繰り返し回数に関する設定を行います。

最小回数は繰り返しの最小回数、最大回数は繰り返しの最大回数を指定します。誤差率と信頼レベルは、最大回数未満で終了させる条件を定めます。具体的には、文字列型を除く全ての出力に対して、以下の条件が成立した場合は、最大回数未満で繰り返しを終了します。

条件

誤差率をp、信頼レベルを\alphaとし、n回繰り返し実行が行われたとする。出力の標本平均を\bar{x}とし、標本標準偏差を u とし、母集団の平均値を \mu とする。

この時、\mu は以下を満さなくてはならない。

\bar{x} - \frac{p}{2}|\bar{x}| \le \mu \le \bar{x} + \frac{p}{2}|\bar{x}| \qquad{(1)}

出力が正規分布に従うとすると、100\alpha% 信頼区間は、以下になる。

\bar{x} - t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \le \mu \le \bar{x} + t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \qquad{(2)}

ここで、t_{k,\beta}は自由度kt分布の上側確率が\betaとなるパーセント点をあらわす。

式 1の範囲内に式 2の信頼区間が収まるならば繰り返し回数は十分と判断する。

5.4.3.3 出力

一括実行で出力する「一括実行結果」モニターと「一括実行詳細結果」に出力する式を指定します。

「+」を押すと末尾に出力が追加され、「–」を押すと出力が除去されます。

列名

モニター上での列名を指定します。

列の型

モニター上での列の型(実数、整数、文字列)を指定します。

出力する式を指定します。任意の式を書く事が出来ますが、通常は、5.6 章の方法で分析スクリプトを定義し、その分析スクリプトを呼出すようにする方法を推奨します。

5.4.4 感度分析タブ

感度分析タブでは、1つのパラメータの組合せを基準値として、基準値と、基準値からずらしたパラメータの組合せに対してモデルを実行する場合の設定を行います。

図 52: 感度分析タブ
結果を全て保存する

個々のパラメータの組合せの実行結果を保存するか否かを指定します。保存しない場合、最後に実行した結果のみ出力フォルダ以下に保存されます。保存する場合、「出力フォルダ名-itr-NNN-RRR」という名前のサブ出力フォルダが出力フォルダ以下に作成されます。ここで、NNN は反復回数(何番目のパラメータの組合せかを表す番号)で、RRR はレプリケーション番号(何回目のレプリケーションかを表す番号)です。サブ出力フォルダには反復番号とレプリケーション番号に対応する実行結果が保存されます。

保存する・しないのどちらを選択した場合でも、「感度分析結果」と「感度分析詳細結果」というモニターが出力フォルダに作成されます。

シミュレーション終了後グラフを表示する

感度分析実行終了後、感度分析実行の結果をあらわすグラフを自動的に表示するか否かを指定します。「表示する」にチェックを入れた場合、感度分析実行終了後に「トルネードグラフ」(図 53)と「スパイダーチャート」(図 54)の2つのグラフが表示されます。

トルネードグラフ

パラメータごとの出力の変化の幅をあらわす棒グラフです。横軸は出力の値で、パラメータごとに棒グラフが積まれます。基準値であるパラメータの組合せの出力は赤い線で表示されます。出力が複数ある場合は、出力ごとにタブに分けられてグラフが作成されます。

スパイダーチャート

パラメータの変化率と出力の関係をあらわす折れ線グラフです。横軸はパラメータの基準値からの変化率で、縦軸は出力の値です。パラメータごとに色分けされて折れ線が描かれます。出力が複数ある場合は、出力ごとにタブに分けられてグラフが作成されます。

上記の2つのグラフは、実行終了後に出力フォルダに作成される「感度分析結果」モニタの右クリックメニューからも表示できます(図 55)。

図 53: トルネードグラフ
図 54: スパイダーチャート
図 55: 「感度分析実行結果」右クリックメニュー

5.4.4.1 パラメータ

感度分析でパラメータを動かす範囲を指定します。「+」を押すと末尾にパラメータが追加され、「–」を押すとパラメータが除去されます。

パラメータ名

パラメータ名を指定します。パラメータタブ(5.4.2 章)で定義したパラメータのみを選択する事が出来ます。

感度分析実行を完了すると「感度分析実行結果」と「感度分析実行詳細結果」という名前のモニターが出力フォルダに出力されます。その際のこのパラメータ列の型(実数、整数)を指定します。

動かす範囲

パラメータの動かす範囲を指定します。「再生(変化率ステップ)」、「再生(ステップ)」、「ユーザ定義ジェネレータ」の3つの指定方法を選べます。

再生(変化率ステップ)

基準値からの変化率により動かし方を指定します。具体的には、基準値をb、変化率(上限)を\alpha(パーセント)、変化率(下限)を\gamma(パーセント)、ステップを\delta(パーセント)とすると、次の値を動きます:b(1+\frac{-\alpha}{100}), b(1+\frac{\delta - \alpha}{100}),b(1+\frac{2\delta - \alpha}{100}), \dots, b(1+\frac{\gamma}{100}).

変化率(上限)

変化率の最大値を指定します。

変化率(下限)

変化率の最小値を指定します。

ステップ

変化率を動かす幅を指定します。

再生(ステップ)

開始点から終了点までステップおきに動かします。

開始

開始点を指定します。

終了

終了点を指定します。(この値を含みません)

ステップ

ステップを指定します。

ユーザ定義ジェネレータ

ユーザ定義のジェネレータにより動かし方を指定します。ジェネレータの指定の仕方は、乱数のユーザ定義ジェネレータ(19.1.35 章)と同様です。

ジェネレータ

ユーザ定義のジェネレータを指定します。

最大個数

ジェネレータから生成する値の最大の個数を指定します。最大個数未満でジェネレータが値を生成を終える場合は、それ以上値を生成しません。

5.4.4.2 レプリケーション

実行対象のパラメータの組合せを繰り返し実行する際の、繰り返し回数に関する設定を行います。

最小回数は繰り返しの最小回数、最大回数は繰り返しの最大回数を指定します。誤差率と信頼レベルは、最大回数未満で終了させる条件を定めます。具体的には、文字列型を除く全ての出力に対して、以下の条件が成立した場合は、最大回数未満で繰り返しを終了します。

条件

誤差率をp、信頼レベルを\alphaとし、n回繰り返し実行が行われたとする。出力の標本平均を\bar{x}とし、標本標準偏差を u とし、母集団の平均値を \mu とする。

この時、\mu は以下を満さなくてはならない。

\bar{x} - \frac{p}{2}|\bar{x}| \le \mu \le \bar{x} + \frac{p}{2}|\bar{x}| \qquad{(3)}

出力が正規分布に従うとすると、100\alpha% 信頼区間は、以下になる。

\bar{x} - t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \le \mu \le \bar{x} + t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \qquad{(4)}

ここで、t_{k,\beta}は自由度kt分布の上側確率が\betaとなるパーセント点をあらわす。

式 3の範囲内に式 4の信頼区間が収まるならば繰り返し回数は十分と判断する。

5.4.4.3 出力

感度分析実行で出力する「感度分析実行結果」モニターと「感度分析実行詳細結果」に出力する式を指定します。

「+」を押すと末尾に出力が追加され、「–」を押すと出力が除去されます。

列名

モニター上での列名を指定します。

列の型

モニター上での列の型(実数、整数、文字列)を指定します。

出力する式を指定します。任意の式を書く事が出来ますが、通常は、5.6 章の方法で分析スクリプトを定義し、その分析スクリプトを呼出すようにする方法を推奨します。

5.4.5 実験計画タブ

実験計画タブでは、実行対象のパラメータの組合せをモニターの形で与えてモデルを実行する際の設定や、実行対象のパラメータの組合せのモニターの作成を行います。

図 56: 実験計画タブ
結果を全て保存する

個々のパラメータの組合せの実行結果を保存するか否かを指定します。保存しない場合、最後に実行した結果のみ出力フォルダ以下に保存されます。保存する場合、「出力フォルダ名-itr-NNN」という名前のサブ出力フォルダが出力フォルダ以下に作成されます。ここで、NNN は反復回数(何番目のパラメータの組合せかを表す番号)です。サブ出力フォルダには反復番号に対応する実行結果が保存されます。

保存する・しないのどちらを選択した場合でも、「実験計画実行結果」というモニターが出力フォルダに作成されます。

5.4.5.1 出力

実験計画実行で出力する「実験計画実行結果」モニターに出力する式を指定します。

「+」を押すと末尾に出力が追加され、「–」を押すと出力が除去されます。

列名

モニター上での列名を指定します。

列の型

モニター上での列の型(実数、整数、文字列)を指定します。

出力する式を指定します。任意の式を書く事が出来ますが、通常は、5.6 章の方法で分析スクリプトを定義し、その分析スクリプトを呼出すようにする方法を推奨します。

使用する計画

実行対象のパラメータの組合せが記録されているモニターを選択します。入力フォルダにあるモニターから選択出来ます。 モニターの各行が実行対象のパラメータの組合せとみなされ、パラメータと同名のモニターの列の値で各パラメータの値が定められます。

「計画を表示する」をクリックすると選択されたモニターが表示されます。

5.4.5.2 D-最適計画の作成

D-最適性という尺度に従って計画(実行対象のパラメータの組合せ)が作成できます。

一番上には3つのボタンが並んでいます。

計画の作成

設定に従い計画を作成します。

計画の表示

作成した計画を表示します。

計画の保存

作成した計画を入力フォルダに保存します。

ボタンの下には、以下のタブが並んでいます。

  • 設定タブ

  • パラメータに対する条件タブ

設定タブでは、計画の作成手法に関する設定を行います。

パラメータに対する条件タブでは、動かすパラメータの間の制約条件を設定します。

それぞれのタブの構成は以下のようになっています。

設定タブ

設定タブは図 57のようになっています。

図 57: 設定タブ
パラメータ

パラメータの取りうる値の範囲を指定します。「再生(列指定)」、「再生(ステップ)」、「再生(変化率ステップ)」、「ユーザ定義ジェネレータ」の指定方法を選べます。指定された値の範囲に含まれる値の組合せから計画が作成されます。

再生(列指定)

入力フォルダにあるモニターの列を指定し、モニターの列の値をパラメータが取りうる値とします。

値列

入力フォルダにあるモニターあるいは時系列モニターの列を選ぶ事が出来ます。{図 196}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照下さい。

再生(ステップ)

開始点から終了点までステップおきに動かします。

開始

開始点を指定します。

終了

終了点を指定します。(この値を含みません)

ステップ

ステップを指定します。

再生(変化率ステップ)

基準値からの変化率により動かし方を指定します。具体的には、基準値をb、変化率(上限)を\alpha(パーセント)、変化率(下限)を\gamma(パーセント)、ステップを\delta(パーセント)とすると、次の値を動きます:b(1+\frac{\gamma}{100}),b(1+\frac{\delta + \gamma}{100}),b(1+\frac{2\delta + \gamma}{100}), \dots, b(1+\frac{\alpha}{100}).

変化率(上限)

変化率の最大値を指定します。

変化率(下限)

変化率の最小値を指定します。

ステップ

変化率を動かす幅を指定します。

ユーザ定義ジェネレータ

ユーザ定義のジェネレータにより動かし方を指定します。ジェネレータの指定の仕方は、乱数のユーザ定義ジェネレータ(19.1.35 章)と同様です。

ジェネレータ

ユーザ定義のジェネレータを指定します。

最大個数

ジェネレータから生成する値の最大の個数を指定します。最大個数未満でジェネレータが値を生成を終える場合は、それ以上値を生成しません。

モデル式

計画の評価尺度であるD-Optimalityを定める際に必要な、 目的変数(出力)に対するパラメータの回帰モデルの式を指定します。

D-Optimalityは、目的変数と説明変数の値とモデル式から推定される回帰係数のばらつきの大きさを表す尺度です。D-Optimalityが大きいほど(概ね)ばらつきが小さくなるため、D-Optimalityを最大化するような計画が求められます。D-Optimalityの具体的な定義は次のようになります。パラメータを$x=(x_1, \dots, x_n)$とし、目的変数を$y$として、回帰モデルの式を$y=f(x)$とします。この時の計画行列を$X$とすると、モデル式は$y=\beta X+\varepsilon$となります。ここで$\beta$は回帰係数です。このとき、D-Optimalityは$\mathrm{det}(X^TX)$と定められます。

回帰モデル式はパラメータ欄で指定したパラメータ名と演算子を組合せて指定します。具体的には、モデル式には以下のものがあります。
モデル式
パラメータ名

パラメータ欄で指定したパラメータの名前は、対応するパラメータを説明変数に持つモデルを表します。

モデル式
モデル式_1+モデル式_2

モデル式_1に表れる項とモデル式_2に表れる項を説明変数に持つモデルを表します。左右に同じ項が含まれる場合はひとつの項にまとめられます。例えばa+aaと同じ意味です。

モデル式
モデル式_1-モデル式_2

モデル式_1に表れる項からモデル式_2に表れる項を除いたモデルをあらわします。例えば(a+b)-baと同じ意味です。

モデル式
モデル式_1:モデル式_2

モデル式_1に表れる項とモデル式_2に表れる項の全ての交互作用を説明変数に持つモデルを表します。例えば、(a+b):cは、acの交互作用とbcの交互作用を説明変数に持つモデルを表します。

モデル式
モデル式_1*モデル式_2

モデル式_1+モデル式_2+モデル式_1:モデル式_2と同じ意味です。略記用の記法です。

モデル式
モデル式**正の整数

モデル式を複数回掛けたものを表します。例えば、(a+b)**2(a+b)*(a+b)と同じ意味です。

モデル式
1

定数項を表します。ただし、明示的に1を書かずとも定数項はモデルに含まれます。例えば、a1+aは同じ意味を持ちます。定数項を除きたい場合は-1を使用します。a-1は説明変数がaのみで定数項を含まないモデルを表します。

モデル式
(モデル式_1)

モデル式_1を表します。

モデル式
関数(パラメータ名を含むpythonの式)

“関数(パラメータ名を含むpythonの式)”全体をpythonの式として評価した結果を説明変数とするモデルをあらわします。関数には、pythonの組込み関数とNumpyの関数が使用出来ます。Numpyの関数はnp.関数名の形で表します。例えば、表 1の関数が使用出来ます。評価の際には、パラメータは数値(因子の型が数値の場合)または文字列(カテゴリの場合)のリストとなります。関数の返り値は数値または文字列のリストである必要があります。数値の場合は数値型の説明変数になり、文字列の場合はカテゴリ型の説明変数になります。

モデル式
I(パラメータ名を含むpythonの式)

pythonの式の評価結果を説明変数とするモデルを表します。式中では、パラメータは数値(因子の型が数値の場合)または文字列(カテゴリの場合)のリストになります。式の評価結果は数値または文字列のリストである必要があります。数値の場合は数値型の説明変数になり、文字列の場合はカテゴリ型の説明変数になります。式中では、Numpyの関数がnp.関数名の形で使用出来ます。

表 1: モデル式で使用出来る関数の例
関数 説明
np.sin(p) パラメータpの各値の正弦値を返します
np.cos(p) パラメータpの各値の余弦値を返します
np.tan(p) パラメータpの各値の正接値を返します
np.exp(p) パラメータpの各値の指数関数値を返します
np.log(p) パラメータpの各値の自然対数を返します
np.sqrt(p) パラメータpの各値の平方根を返します
np.absolute(p) パラメータpの各値の絶対値を返します

モデル式における結合優先度は、優先度の高い順に、**:*、+、–になります。括弧を使うことで結合優先度を制御できます。

例えば、meanwait, meanjobというパラメータがある場合は、次のようなモデル式が記述できます。

meanwait + meanjob

\ meanwaitとmeanjobを説明変数に持つモデルです。

meanwait + meanjob + meanwait:meanjob

\ meanwaitとmeanjobと2つの交互作用を説明変数に持つモデルです。

np.log(meanwait) + meanjob

\ meanwaitの自然対数値とmeanjobを説明変数に持つモデルです。このときmeanwaitの因子の型は数値である必要があります。

シミュレーション実行回数

シミュレーションを行う回数を指定します。

同一のパラメータの組合せの複数回実行を許可する

許可するにチェックを入れると、各パラメータの組合せを複数回実行するような計画が作成されます。許可するにチェックを入れないと、各パラメータの組合せの実行回数は最大で1回になります。

実験作成手法設定

計画の作成手法の選択と、手法固有の設定を行います。作成手法はk-exchangeと遺伝的アルゴリズムから選択できます。手法により設定項目が異なります。

k-exchange

k-exchangeアルゴリズムに従って手法を作成します。

最大イテレーション回数

k-exchangeアルゴリズム中のイテレーションの最大回数を指定します。最適と思われる計画に到達した場合は最大イテレーション回数未満で終了します。

k-exchangeのk

k-exchangeアルゴリズムのパラメータ k を指定します。1以上シミュレーション実行回数以下の整数が指定出来ます。

乱数の種

k-exchangeアルゴリズム中で使用する乱数の種を設定します。「設定しない」を選んだ場合、システム時刻等から種が定まります。「設定する」選んだ場合は、指定した値が種となります。

遺伝的アルゴリズム

遺伝的アルゴリズムにより計画を作成します。

1世代あたりの個体数

1世代あたりの個体数を設定します。多い程良い計画が作成されますが、計算時間は長くなります。

計算する世代数

計算する世代数を設定します。多い程良い計画が作成されますが、計算時間は長くなります。

乱数の種

遺伝的アルゴリズム中で使用する乱数の種を設定します。「設定しない」を選んだ場合、システム時刻等から種が定まります。「設定する」選んだ場合は、指定した値が種となります。

パラメータに対する条件タブ パラメータに対する条件タブは図 58のように2段構成になっています。

図 58: パラメータに対する条件タブ

上部には、設定タブのパラメータ欄の設定内容から自動生成されたコードが表示されます。こちらは編集できません。

下部には、与えられたパラメータの組合せが実行可能かどうかをTrue/Falseで返すコードを記述します。設定タブのパラメータ欄の各パラメータの値がfloat型または文字列型の値として渡されます。パラメータの型がカテゴリの場合文字列で、数値の場合float型です。

5.4.6 最適化タブ

最適化タブは、ある目的関数を最適にするようなシミュレーションパラメータを求めたい場合に最適化パラメータを設定します。(図 59)

図 59: 最適化タブ

「最適化を行う」がチェックされていない場合は何も表示されません。

「最適化を行う」がチェックされている場合は以下のタブが表示されます。

  • 最適化設定タブ

  • 条件タブ

最適化設定タブでは、最適化の振舞いを定める様々なパラメータを設定します。

条件タブでは、最適化変数間に制約がある場合、その制約式を設定します。

それぞれのタブの構成は以下のようになっています。

5.4.6.1 最適化設定タブ

最適化変数

最適化を行う変数を定めます。パラメータ名にはシミュレーションパラメータ(5.4 章) の中から選ぶ事が出来ます。型には、整数あるいは実数を指定します。下限・上限にはその変数の取り得る範囲を指定します。

最適化

目的関数には、最適化したい目的関数を指定します。任意の式を指定する事が出来ますが、 通常は、分析スクリプト{5.6 章}の目的関数を指定しておきます。 最大化/最小化には、目的関数を最大化したいのか最小化したいのかを指定します。 多目的最適化を行う場合には複数の目的変数を指定することができます。 それぞれの目的変数に対して、最大化、最小化を選択できます。

レプリケーション

最小回数にはレプリケーションの最小試行回数、最大回数にはレプリケーションの最大試行回数を指定します。ただし、指定した誤差率、信頼レベルによって、以下の条件が成立した場合は、最大試行回数未満で試行が停止する場合もあります。

条件

誤差率が p で、信頼レベルを \alpha とする。n 個の標本を得て、標本平均を \bar{x} とし、標本標準偏差を u とし、母集団の平均値を \mu とする。

この時、\mu は以下を満さなくてはならない。

\bar{x} - \frac{p}{2}|\bar{x}| \le \mu \le \bar{x} + \frac{p}{2}|\bar{x}| \qquad{(5)}

得られたデータを正規分布と仮定すると、100\alpha% 信頼区間は、以下になる。

\bar{x} - t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \le \mu \le \bar{x} + t_{n-1,\alpha/2}\frac{u}{\sqrt{n}} \qquad{(6)}

ここで、t_{k,\beta}は自由度kt分布の上側確率が\betaとなるパーセント点をあらわす。

(式 5)式の範囲内に、(式 6)式の信頼区間が、収まるかどうかを判定し、もし信頼区間内に収まれば、データ数は十分と判断する。収まらない場合は、追加標本を増やし、収まるまで繰り返す。

最適化オプション

最大反復数には最適化が収束しなかった場合の最大反復数を指定します。最大実行時間には最適化が収束しなかった場合の最大最適化試行時間を指定します(単位は秒)。最適化メソッドでは、Optuna(TPE)、DFO、PSO、ランダム探索、MOPSO の中から最適化方法を選択します。DFO、Optuna(TPE)、PSOとランダム探索は単目的の最適化法で、MOPSO は多目的の最適化を行います。それぞれの最適化メソッドにより指定できるパラメータが異なります。

DFOでは、DFO初期探索数、DFOモデル関数構築点距離の初期値、DFOモデル関数信頼領域の初期値、DFO信頼領域の収束判定値を指定します。それぞれ、DFO初期探索数には初期探索でばらまく探索数を、DFOモデル関数構築点距離の初期値には初期段階でのモデル関数構築点までの距離を、DFOモデル関数信頼領域の初期値には初期段階でのモデル関数の信頼領域の大きさを指定します。DFO信頼領域の収束判定値には信頼領域の大きさが指定値以下になったら、収束したと判断し最適化を停止します。

Optuna(TPE)はconsider_prior、prior_weight、consider_magic_clip、consider_endpoints、n_startup_trials、n_ei_candidatesを指定します。consider_priorをTrueにした場合、入力変数の定義域の中心にガウス分布を用意することで、カーネル密度推定の安定性を向上させます。prior_weightはカーネル密度推定の事前分布の重みを指定します。consider_magic_clipをTrueにした場合、ヒューリスティックを有効にしてカーネル密度推定に用いるガウス分布の分散の最小値を指定します。consider_endpointsをTrueにした場合、カーネル密度推定の際に定義域の端を考慮します。n_startup_trialsはベイズ最適化を実行する前に行うランダムな試行の回数を指定します。n_ei_candidatesは試行による目的関数の改善値の期待値を評価する時の、候補点の数を指定します。

PSO、MOPSOでは、Inertia weight、Acceraration constant、Acceraration constant、Number of Particles、 Mutation tolelance、Mutation Sizeを指定します。 Inertia weight、Acceraration constantは粒子の状態(速度)の変化を指定する係数で、 v=wv+c_{1}r_{1}(x-x_{p})+c_{2}r_{2}(x-x_{g}) におけるwc_{1}c_{2}を表します。Number of Particlesは最適化の際に用いる粒子数を指定します。 Mutation tolelanceはMutationの起こしやすさを指定します。変数の範囲に対する速度の相対的な大きさで測ります。 この大きさが大きいほどMutationが起きやすくなります。 Mutation SizeはMutationの大きさを指定します。

ランダム探索では、指定出来るパラメータはありません。

デバッグ出力には最適化の内部ログの有無を指定します。 指定した場合、モデルエラータブに最適化のログが表示され、また、プロジェクトフォルダ(ワークスペース/projects/プロジェクト名) に残されます。

5.4.6.2 条件タブ

条件タブは、図 60のように、2 段構成になっています。

図 60: 条件タブ

上部には、最適化設定タブの最適化変数で設定した内容から自動生成されたコードが表示されています。こちらは編集する事が出来ません。

下部には、任意個の線形制約式を記述する事が出来ます。

変数宣言

変数宣言は、上部の自動生成されたコード内で記述されています。左辺値が全て変数名となっています。

式には以下のものがあります。

変数

Variable と IntegerVariable は式です。

数値

整数及び実数は式です。

_1 + 式_2

_1と式_2を足した式を示します。

_1 - 式_2

_1から式_2を引いた式を示します。

  • _1

    _1 の符号を判定した式を示します。

_1 * 式_2

_1と式_2をかけた式を示します。しかし、2 次式以上の式は未対応です。つまり、少なくとも片方の式は数値でなくてはなりません。

制約式

制約式には以下のものがあります。

制約式
_1 == 式_2

_1と式_2が等しい事を示します。

制約式
_1 <=_2

_1 は式_2以下である事を示します。

制約式
_1 >=_2

_1 は式_2以上である事を示します。

制約式
(式_1)

_1 を示します。

優先度

制約式の結合優先度は Python の演算子の優先度に従います。つまり、優先度の高い順に、<=>=、 ==、 +、–、* 、–式、(式)になります。括弧を使う事で、結合優先度を変える事が出来ます。

例えば、以下のように線形制約を記述する事が出来ます。

def makeConstraints():
    i = IntegerVariable(name = u'i', lower = 1, upper = 6)
    j = IntegerVariable(name = u'j', lower = 3, upper = 7)
    x = Variable(name = u'x', lower = 2.0, upper = 5.0)
    y = Variable(name = u'y', lower = 3.0, upper = 4.0)
    z = Variable(name = u'z', lower = 4.0, upper = 6.0)
    # ここまでが、自動生成コード
    # 以降が、線形制約式
    i <= j
    11.0 <= x + y + z <= 13.0
    x + 2 * z <= 16.0

5.4.6.3 参考文献

島田直樹, 田辺隆人, 山下浩: 数式表現によらない関数の制約付き最適化, 日本オペレーションズ・リサーチ学会春季研究発表会, Vol. 2009, pp. 230-231, 2009.

5.5 カスタムコード編集

ユーザ独自のコードを編集する方法を説明します。

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「カスタムコードを編集する」を選択するとカスタムコード編集画面が表示されます。あるいはツールバーのボタン、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

カスタムコード編集画面(図 61)では、シミュレーションモデルごとに固有のコードを編集する事が出来ます。

図 61: カスタムコード編集

カスタムコードには任意の Python コードを記述する事が出来、よく使われる用法としては、

  • import 文を記述し Python の標準ライブラリあるいは、別途インストールされた拡張ライブラリをインポートしておき、部品のコード内などで、それらを呼出せるようにする。

  • 独自のより複雑な理論分布や経験分布に従う乱数発生器を用意しておき、乱数属性として利用する。

  • 独自の統計処理用の関数を用意しておき、分析スクリプト内で呼出せるようにする。

などがあります。

カスタムコードは自動生成コード(5.8.1 章)の先頭に挿入され、全部品から参照する事が出来ます。

5.6 分析スクリプト編集

分析スクリプト編集についてを説明します。

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「分析スクリプトを編集する」を選択すると分析スクリプト編集画面が表示されます。あるいはツールバーのボタン、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

分析スクリプト編集画面(図 62)では、シミュレーションモデルごとに固有の分析スクリプトを編集する事が出来ます。

図 62: スクリプト編集画面

作成した分析スクリプトの実行については、5.7 章 を参照下さい。

分析スクリプト画面は、左右に2 つの領域に分かれます。

スクリプト定義エディタ。自由に編集する事が出来ます。

データブラウザ。

5.6.1 スクリプト定義エディタ

スクリプト定義エディタは複数のスクリプトを編集出来ます。各スクリプトには名前がありその名前がタブ名になっています。タブをクリックすると表示されるスクリプトが変わります。

「objective」という名前のスクリプトはモデルに必ずひとつ存在します。モデル実行時にこのスクリプトが実行され、情報パネルのモデル出力タブにその結果が表示されます。新規に作成したプロジェクトでは、「return 0」となっているので実行すると常に 0 が表示されます。

スクリプト定義エディタの上部には、スクリプトの定義ヘッダが表示され、こちらは編集する事が出来ません。

スクリプト定義エディタの下部には、スクリプトの定義本体があり、こちらは自由に編集する事が出来ます。任意の Python コードを記述する事が出来ますが、必ず最後には return 文を書く必要があります。(Python の仕様で、return 文がない場合は常に None が返されます。)

分析スクリプトの名前を変更

表示されている分析スクリプトの名前を変更します。Python の識別子として使える名前である必要があり、1文字目がアルファベットで、2文字目以降はアルファベットか数字を指定する事が出来ます。その他、予約語で仕様出来ない名前もあります。エラーが表示された場合は別の名前を指定して下さい。また、objective は予約語であるため名前を変更する事が出来ません。

分析スクリプトを追加

分析スクリプトを追加する事が出来ます。Python の識別子として使える名前である必要があり、1 文字目がアルファベットで、2文字目以降はアルファベットか数字を指定する事が出来ます。その他、予約語で仕様出来ない名前もあります。エラーが表示された場合は別の名前を指定して下さい。

スクリプト定義には任意の Python 式を書く事が出来ますが、基本的な統計量はデータブラウザから指定する事が出来ます。

5.6.2 データブラウザ

データブラウザには、モデルの出力フォルダにあるデータの一覧が表示されています。構成はメインウィンドウのブラウザパネルとほぼ同じですが、列が展開出来るようになっています。

列の下位に表示されるのは、基本統計量演算子であり、以下が用意されています。

  • 観測数

  • 平均

  • 標準偏差

  • 分散

  • 95 % 信頼区間下限

  • 95 % 信頼区間上限

  • 変動係数

  • 最小値

  • 25 % 値

  • 中央値

  • 75 % 値

  • 最大値

  • レンジ

基本統計量演算子をダブルクリックすると、スクリプト定義エディタ内のカーソル位置に、その統計量を求める式が挿入されます。

また、基本統計量演算子をスクリプト定義エディタ内にドラッグする事での任意のカーソル位置に、その統計量を求める式が挿入する事も出来ます。

一度もモデルを実行していない場合は、出力フォルダが空のため、ブラウザ内には何も表示されません。また、モデルを編集して実行すると出力フォルダに出力されるデータが変わるため、データブラウザに表示されるデータも変わってきます。

5.7 分析スクリプトの実行

分析スクリプトの実行方法についてを説明します。

モデルを開いている状態で、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)から「分析スクリプトを開始する」を選ぶとサブメニューが表示されますので、そこから実行したい分析スクリプト名を選ぶと、分析スクリプトを実行を開始します。

モデル実行の結果はモデル出力タブに出力されます。

分析スクリプトは、分析スクリプト編集画面(5.6 章)で編集する事が出来ます。

分析スクリプト実行中にエラーが発生した場合、モデルエラータブにエラーが表示されます。エラーの修正方法については、5.11 章を参照して下さい。

5.8 コード表示

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「コードを表示する」を選択すると自動生成されたコードが表示されます。あるいはツールバーのボタン(3.3.7 章)、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

コード表示編集画面(図 63)では、作成したモデルから自動生成されたコードを確認出来ます。

図 63: コード表示画面

なお、コード表示画面はコードの編集は行えません。部品編集画面のコード編集タブ(6.1.3 章)やカスタムコードの編集(5.5 章)で編集して下さい。

自動生成コードの構成は以下のようになります。

5.8.1 自動生成コードの構成

自動生成コードの構造は以下のようになります。

# -*- Mode: Python; coding: utf-8-dos; -*-

ここに初期化コードが挿入されます。

# カスタムコード
...

ここにカスタムコード編集画面で編集したコードが挿入されます。

# シミュレーションパラメータの定義
class SimulationParam:
    def __init__(self):
        ...

ここにパラメータ編集画面のパラメータタブで定義したパラメータが挿入さ れます。

# シミュレーターの定義
class Simulator (SimulatorBase):
    def __init__(self,
                 param = SimulationParam(),
                 ...);

ここにパラメータ編集画面の基本設定タブで指定した、入力フォルダ、出力 フォルダ、シミュレーション終了時間が挿入されます。

        SimulatorBase.__init__(self, param, inputDir, outputDir, until)
        # アイテム の定義
        class Item (FlowItem):
            """..."""
            def __init__(self):
                FlowItem.__init__(self, name = u"...")
                # パラメータの定義
                ...
        ...

ここにモデル上に配置したフローアイテムの定義が挿入されます。

        # 資源の定義
        ...

ここにモデル上に配置した資源の定義が挿入されます。

        # ... の定義
        class ... (Widget):
            """..."""
            def __init__(self, parent):
                Widget.__init__(self, parent, u"...", nthread = 1)
                # 入力ポートの定義
                ...
                # 出力ポートの定義
                ...
                # パラメータの定義
                ...
            # 動作の定義
            def run(self):
                ...
        ...

ここにモデル上に配置した部品の定義が挿入されます。

ここにモデル上に配置したリアルタイムグラフの定義が挿入されます。

        # オブジェクトの生成
        ...

ここに部品のインスタンスを生成するコードが挿入されます。

        # リンクの生成
        ...

ここに部品間のリンクを追加するコードが挿入されます。

    def run(self):
        # オブジェクトの起動
        ...

ここに部品を起動するコードが挿入されます。

        # グラフの表示
        ...

ここにリアルタイムグラフを描画するコードが挿入されます。ただし、リアルタイムグラフがひとつも存在しない場合は、ここは空になります。

        # シミュレーション開始
        start(until = self.until)
        # 結果の保存
        self.save()
        self.flush()
    def objective(self):
        ...
    ...

ここにスクリプト編集画面で定義したスクリプトの定義が挿入されます。


if __name__ == "__main__":
    # 実行時の処理
    ...

ここにシミュレーションを実行するコードが挿入されます。通常実行、一括実行、感度分析、実験計画、最適化を行うかによってコードは変わります。

5.9 モデルの実行

モデルの実行方法についてを説明します。

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「モデルを開始する」を選択するとモデルの実行を開始します。あるいはツールバーのボタン(3.3.5 章)、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

パラメータ編集画面の基本設定タブの実行種類によって、表示される画面が異なります。

なお、並列実行を行うように設定(3.2.1.7 章)されている場合、一括実行、感度分析実行、実験計画実行、最適化実行は、出来る限り並列に実行します。並列実行モードの時は、タスクスケジューラウィンドウが表示されます(図 64)。

図 64: タスクスケジューラウィンドウ

タスクスケジューラウィンドウは各コアの実行状況を示します。第1列は各コアの状態、第2列は実行しているタスクIdを示しています。このウィンドウは一切操作は出来ません。シミュレーションの実行が停止すると、自動的に閉じます。

5.9.1 通常実行

実行種類が通常実行の場合は、以下のようなモデル実行画面が表示されます。(図 65)

図 65: モデル実行画面

モデルの実行が始まると、一時停止、停止ボタンがクリック出来る状態(実行状態)になります。

実行状態で停止ボタンを押すと、実行を停止し、モデル実行画面を閉じます。

実行状態で一時停止ボタンを押すと、一時停止状態になり、一時停止ボタンが再開ボタンに変わります。

一時停止状態で再開ボタンを押すと、実行状態に戻り、再開ボタンが一時停止ボタンに変わります。

一時停止、あるいは、停止ボタンを押すと、出力フォルダに実行結果が書き込まれます。

シミュレーション時間

モデル内でのシミュレーション時間が表示されます。

シミュレーション終了時間

パラメータ編集画面で設定したシミュレーション終了時間が表示されます。

経過時間

シミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測

シミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

5.9.2 一括実行

実行種類が一括実行の場合は、以下のようなモデル実行画面が表示されます。(図 66)

図 66: モデル実行画面(一括実行)

モデルの実行が始まると、一時停止、停止ボタンがクリック出来る状態(実行状態)になります。

実行状態で停止ボタンを押すと、実行を停止し、モデル実行画面を閉じます。

実行状態で一時停止ボタンを押すと、一時停止状態になり、一時停止ボタンが再開ボタンに変わります。

一時停止状態で再開ボタンを押すと、実行状態に戻り、再開ボタンが一時停止ボタンに変わります。

一時停止、あるいは、停止ボタンを押すと、出力フォルダに実行結果が書き込まれます。

上段には、一括実行全体の経過が表示されます。中段には、各反復(各パラメータの組合せ)の経過が表示されます。下段には、一括実行全体の中のひとつの実行単位のシミュレーションの経過が表示されます。

反復回数

実行単位番号が表示されます。

最大反復回数

全てのパラメータの組合せ数か最大反復回数のうち小さい方が表示されます。ただし、パラメータの設定によっては実行してみないと実行回数が分からない場合があり、その場合は見積りが間違う場合があります。また、無限系列が含まれる場合は表示されません。

経過時間(上段)

シミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(上段)

シミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

レプリケーション番号

実行中の反復におけるレプリケーション番号が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

最大レプリケーション番号

実行中の反復における最大レプリケーション番号が表示されます。

経過時間(中段)

反復を開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(中段)

シミュレーション時間の進む速さが一定だとした時の、反復の残りの(実)時間の予測が表示されます。

シミュレーション時間

ひとつの実行単位でのシミュレーション時間が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

シミュレーション終了時間

ひとつの実行単位のシミュレーション終了時間が表示されます。

経過時間(下段)

ひとつの実行単位のシミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(下段)

ひとつの実行単位のシミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

5.9.3 感度分析実行

実行種類が感度分析の場合は、以下のようなモデル実行画面が表示されます。(図 67)

図 67: モデル実行画面(感度分析実行)

モデルの実行が始まると、一時停止、停止ボタンがクリック出来る状態(実行状態)になります。

実行状態で停止ボタンを押すと、実行を停止し、モデル実行画面を閉じます。

実行状態で一時停止ボタンを押すと、一時停止状態になり、一時停止ボタンが再開ボタンに変わります。

一時停止状態で再開ボタンを押すと、実行状態に戻り、再開ボタンが一時停止ボタンに変わります。

一時停止、あるいは、停止ボタンを押すと、出力フォルダに実行結果が書き込まれます。

反復回数

実行終了したパラメータの個数が表示されます。

最大反復回数

実行対象のパラメータの総数が表示されます。

経過時間(上段)

シミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(上段)

シミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

レプリケーション番号

実行中の反復におけるレプリケーション番号が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

最大レプリケーション番号

実行中の反復における最大レプリケーション番号が表示されます。

経過時間(中段)

反復を開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(中段)

シミュレーション時間の進む速さが一定だとした時の、反復の残りの(実)時間の予測が表示されます。

シミュレーション時間

ひとつの実行単位でのシミュレーション時間が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

シミュレーション終了時間

ひとつの実行単位のシミュレーション終了時間が表示されます。

経過時間(下段)

ひとつの実行単位のシミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(下段)

ひとつの実行単位のシミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

5.9.4 実験計画実行

実行種類が実験計画の場合は、以下の様なモデル実行画面が表示されます。(図 68)

図 68: モデル実行画面(実験計画実行)

モデルの実行が始まると、一時停止、停止ボタンがクリック出来る状態(実行状態)になります。

実行状態で停止ボタンを押すと、実行を停止し、モデル実行画面を閉じます。

実行状態で一時停止ボタンを押すと、一時停止状態になり、一時停止ボタンが再開ボタンに変わります。

一時停止状態で再開ボタンを押すと、実行状態に戻り、再開ボタンが一時停止ボタンに変わります。

一時停止、あるいは、停止ボタンを押すと、出力フォルダに実行結果が書き込まれます。

反復回数

実行終了したパラメータの個数が表示されます。

最大反復回数

実行対象のパラメータの総数が表示されます。

経過時間(上段)

シミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(上段)

シミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

シミュレーション時間

ひとつの実行単位でのシミュレーション時間が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

シミュレーション終了時間

ひとつの実行単位のシミュレーション終了時間が表示されます。

経過時間(下段)

ひとつの実行単位のシミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(下段)

ひとつの実行単位のシミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

5.9.5 最適化実行

実行種類が最適化の場合は、以下のようなモデル実行画面が表示されます。 (図 69)

図 69: モデル実行画面(最適化)

モデルの実行が始まると、一時停止、停止ボタンがクリック出来る状態(実行状態)になります。

実行状態で停止ボタンを押すと、実行を停止し、モデル実行画面を閉じます。

実行状態で一時停止ボタンを押すと、一時停止状態になり、一時停止ボタンが再開ボタンに変わります。

一時停止状態で再開ボタンを押すと、実行状態に戻り、再開ボタンが一時停止ボタンに変わります。

一時停止、あるいは、停止ボタンを押すと、出力フォルダに実行結果が書き込まれます。

グラフ表示ボタンを押すと、最適化の収束状況を確認する事が出来ます。(5.9.5.1 章)

最適化反復数

現在の反復数が表示されます。

最適化最大反復数

最大反復数が表示されます。

最適化経過時間

最適化を開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

最適化終了時間

最適化を停止する時間が表示されます。

レプリケーション番号

実行中の反復におけるレプリケーション番号が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

最大レプリケーション番号

実行中の反復における最大レプリケーション番号が表示されます。

経過時間(上部)

反復を開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(上部)

シミュレーション時間の進む速さが一定だとした時の、反復の残りの(実)時間の予測が表示されます。

シミュレーション時間

ひとつの実行単位でのシミュレーション時間が表示されます。並列実行時(3.2.1.7 章)は、表示されません。

シミュレーション終了時間

ひとつの実行単位のシミュレーション終了時間が表示されます。

経過時間(下部)

ひとつの実行単位のシミュレーションを開始してから経過した(実)時間が表示されます。一時停止している期間は計測されません。

残り時間予測(下部)

ひとつの実行単位のシミュレーション時間の進む速さが一定だとした時の、残りの(実)時間の予測が表示されます。

5.9.5.1 最適化進捗グラフ

最適化進捗グラフは単目的の場合(DFO、Optuna(TPE)、PSO)と多目的(MOPSO)の場合で異なるグラフが表示されます。

単目的の場合、最適化進捗グラフは以下のような構成になっています。(図 70)

図 70: 最適化進捗グラフ(単目的)

2 段の表示になっており、横軸は反復回数を示します。

上段は、目的関数の推移を示しています。小さな点は各レプリケーションの標本値を示しています。大きな点は、その反復におけるレプリケーションの平均を示しています。赤線は、その時点での最適な解を示しています。

下段は、最適化変数の推移を示しています。各反復において、試行する変数の値が 0 から 1 に規格化されてプロットされます。

多目的の場合、最適化進捗グラフは以下のような構成になっています。(図 71)

図 71: 最適化進捗グラフ(多目的)

それぞれの目的変数に対する対散布図になっており、パレート解の様子を表しています。

5.10 実行結果

5.10.1 通常実行

通常実行を停止あるいは実行完了すると、モデル出力タブに、objective()の結果が表示されます。

通常実行を一時停止、停止、あるいは実行完了すると、出力フォルダに結果が出力されます。その結果は、サマリ表示(23.1 章)や、データの表示(23.2 章)で確認する事が出来ます。また、独自に定義した分析スクリプト(5.7 章)で統計量を求める事も出来ます。

実行中にエラーが発生した場合、モデルエラータブにエラーが表示されます。エラーの修正方法については、5.11 章を参照して下さい。

5.10.2 一括実行

一括実行を一時停止、停止、あるいは実行完了すると、出力フォルダに各実行単位の結果が出力されます。 5.4 章の一括実行タブ(5.4.3 章)の「結果を全て保存する」にチェックが入っている場合は、 実行を完了した全ての実行単位の結果が出力されます。チェックが入っていない場合は、最後の実行単位の結果のみ出力されます。 また、実行単位の結果以外に「一括実行結果」と「一括実行詳細結果」という名前のモニターも出力されます。

一括実行結果モニターは、5.4 章の一括実行タブで設定した「パラメータ」と「出力」を含む形式で、 表 2のような結果が出力されます。 ただし、複数のレプリケーションを行った場合、出力列の値は平均値となります。

表 2: 一括実行結果モニター
パラメータ名_1 \cdots パラメータ名_n 出力名_1 \cdots 出力名_m
パラメータ値_{11} \cdots パラメータ値_{1n} 出力値_{11} \cdots 出力値_{1m}
\vdots \ddots \vdots \vdots \ddots \vdots
パラメータ値_{k1} \cdots パラメータ値_{kn} 出力値_{k1} \cdots 出力値_{km}

一括実行詳細結果モニターは一括実行結果モニターの内容をより詳しくしたもので、 表 3のような形式で出力されます。 ここで、反復回数は何番目に実行したパラメータの組合せかを表す番号で、 レプリケーション番号は何回目のレプリケーションかを表す番号です。 反復回数がNNNでレプリケーション番号がRRRの行は、 出力フォルダにある「出力フォルダ名-itr-NNN-RRR」のフォルダの実行単位の結果と対応しています。

表 3: 一括実行詳細結果モニター
反復回数 レプリケーション番号 パラメータ名_1 \cdots パラメータ名_n 出力名_1 \cdots 出力名_m
反復回数_1 レプリケーション番号_1 パラメータ値_{11} \cdots パラメータ値_{1n} 出力値_{11} \cdots 出力値_{1m}
\vdots \vdots \vdots \ddots \vdots \vdots \ddots \vdots
反復回数_k レプリケーション番号_k パラメータ値_{k1} \cdots パラメータ値_{kn} 出力値_{k1} \cdots 出力値_{km}

一括実行結果と一括実行詳細結果はデータの表示(23.2 章)で確認する事が出来ます。

一括実行において、ある実行単位の実行中にエラーが発生した場合、モデルエラータブにその実行単位のパラメータと、エラー情報が表示されますが、その次の実行単位に実行を進めます。一括実行結果モニターと一括実行詳細結果モニターにはエラーが発生した実行単位の結果は含まれません。エラーの修正方法については、5.11 章を参照して下さい。

5.10.3 感度分析

感度分析実行を一時停止、停止、あるいは実行完了すると、出力フォルダに各実行単位の結果が出力されます。 5.4 章の感度分析タブ(5.4.4 章)の「結果を全て保存する」にチェックが入っている場合は、 実行を完了した全ての実行単位の結果が出力されます。チェックが入っていない場合は、最後の実行単位の結果のみ出力されます。 また、実行単位の結果以外に、「感度分析結果」、「感度分析詳細結果」と、 パラメータごとの「感度分析結果 - パラメータ名」という名前のモニターも出力されます。

感度分析結果モニターは、5.4 章の感度分析タブで設定した「パラメータ」と「出力」から定まる、表 4のような列を持ちます。

表 4: 感度分析結果モニターの列
列名 説明
パラメータ名 パラメータの名称です
最大減少率% パラメータの基準値に対する最小値の変化割合を表します
最小値 パラメータの最小値です
基準値 パラメータの基準値です
最大増加率% パラメータの基準値に対する最大値の変化割合を表します
最大値 パラメータの最大値です
出力_1 期待値最小値 出力_1の期待値の最小値です
出力_1 期待値基準値 基準値における出力_1の期待値です
出力_1 期待値最大値 出力_1の期待値の最大値です
出力_1 微分係数推定値 出力_1の基準値周りの微分係数の推定値です
\vdots \vdots
出力_k 期待値最小値 出力_kの期待値の最小値です
出力_k 期待値基準値 基準値における出力_kの期待値です
出力_k 期待値最大値 出力_kの期待値の最大値です
出力_k 微分係数推定値 出力_kの基準値周りの微分係数の推定値です

感度分析詳細結果モニターは、レプリケーションを含む各実行結果をまとめたものになっており、 表 5のような形式で出力されます。 ここで、反復回数は何番目に実行したパラメータの組合せかを表す番号で、 レプリケーション番号は何回目のレプリケーションかを表す番号です。 反復回数がNNNでレプリケーション番号がRRRの行は、 出力フォルダにある「出力フォルダ名-itr-NNN-RRR」のフォルダの実行単位の結果と対応しています。

表 5: 感度分析詳細結果モニター
反復回数 レプリケーション番号 パラメータ名_1 \cdots パラメータ名_n 出力名_1 \cdots 出力名_m
反復回数_1 レプリケーション番号_1 パラメータ値_{11} \cdots パラメータ値_{1n} 出力値_{11} \cdots 出力値_{1m}
\vdots \vdots \vdots \ddots \vdots \vdots \ddots \vdots
反復回数_k レプリケーション番号_k パラメータ値_{k1} \cdots パラメータ値_{kn} 出力値_{k1} \cdots 出力値_{km}

パラメータごとの「感度分析結果 - パラメータ名」モニターは、パラメータの基準値に対する変化と出力をまとめたものになっており、 表 6のような形式で出力されます。ここで、変化率は基準値からの変化率を表しています。

表 6: 感度分析結果-パラメータ名モニター
パラメータ値 変化率 出力名_1 \cdots 出力名_m
パラメータ値_1 変化率_1 出力値_{11} \cdots 出力値_{1m}
\vdots \vdots \vdots \ddots \vdots
パラメータ値_k 変化率_k 出力値_{k1} \cdots 出力値_{km}

5.10.4 実験計画

実験計画実行を一時停止、停止、あるいは実行完了すると、出力フォルダに各実行単位の結果が出力されます。 5.4 章の実験計画タブ(5.4.5 章)の「結果を全て保存する」にチェックが入っている場合は、 実行を完了した全ての実行単位の結果が出力されます。チェックが入っていない場合は、最後の実行単位の結果のみ出力されます。 また、実行単位の結果以外に「実験計画実行結果」という名前のモニターも出力されます。

実験計画実行結果モニターは5.4 章の実験計画タブで設定した、 「使用する計画」設定欄のモニターに含まれるパラメータと、「出力」を含む形式で、 表 7のような形式で出力されます。 ここで、反復回数は何番目に実行したパラメータの組合せかを表す番号です。 反復回数がNNNの行は出力フォルダにある「出力フォルダ名-itr-NNN」のフォルダの実行単位の結果と対応しています。

表 7: 実験計画実行結果モニター
反復回数 パラメータ名_1 \cdots パラメータ名_n 出力名_1 \cdots 出力名_m
反復回数_1 パラメータ値_{11} \cdots パラメータ値_{1n} 出力値_{11} \cdots 出力値_{1m}
\vdots \vdots \ddots \vdots \vdots \ddots \vdots
反復回数_k パラメータ値_{k1} \cdots パラメータ値_{kn} 出力値_{k1} \cdots 出力値_{km}

実験計画実行結果はデータの表示(23.2 章)で確認する事が出来ます。

実験計画実行において、ある実行単位の実行中にエラーが発生した場合、モデルエラータブにその実行単位のパラメータと、エラー情報が表示されますが、その次の実行単位に実行を進めます。実験計画実行結果モニターにはエラーが発生した実行単位の結果は含まれません。エラーの修正方法については、5.11 章を参照して下さい。

5.10.5 最適化

最適化を一時停止、停止、あるいは実行完了すると、出力フォルダには最後に実行している実行単位の結果に加えて、「最適化実行結果」、「最適化実行詳細結果」という名前のモニターが出力されます。 多目的最適化を行っている場合には、更に「パレート解」という名前のモニターが出力されます。

最適化実行結果モニターは、表 8のような結果が形式で出力されます。

表 8: 最適化実行結果モニター
パラメータ名_1 \cdots パラメータ名_n 目的関数期待値
パラメータ値_{11} \cdots パラメータ値_{1n} 期待値_1
\vdots \ddots \vdots \vdots
パラメータ値_{k1} \cdots パラメータ値_{kn} 期待値_k

各行は反復の結果を示します。各反復におけるパラメータと、その時の目的関数の期待値を示しています。多目的最適化の場合には複数の目的関数値が出力されます。

最適化実行詳細結果モニターは、表 9のような結果が形式で出力されます。

\scriptsize{
表 9: 最適化実行詳細結果モニター
反復回数 レプリケーション番号 パラメータ名_1 \cdots パラメータ名_n 目的関数値
反復回数_{1} レプリケーション番号_{1} パラメータ値_{11} \cdots パラメータ値_{1n} 目的関数値_1
\vdots \vdots \vdots \ddots \vdots \vdots
反復回数_{k} レプリケーション番号_{m} パラメータ値_{k1} \cdots パラメータ値_{kn} 目的関数値_k

各行はレプリケーションの結果を示します。各レプリケーションにおけるパラメータと、その時の目的関数値を示しています。多目的最適化の場合には複数の目的関数値が出力されます。

パレート解のモニターは、表 10のような結果が形式で出力されます。

表 10: パレート解モニター
パラメータ名_1 \cdots パラメータ名_n 目的関数期待値_{1} \cdots 目的関数期待値_{m}
パラメータ値_{11} \cdots パラメータ値_{1n} 期待値_{11} \cdots 期待値_{1m}
\vdots \ddots \vdots \vdots \ddots \vdots
パラメータ値_{k1} \cdots パラメータ値_{kn} 期待値_{k1} \cdots 期待値_{km}

得られた解のうち、パレート解のみを示します。

5.11 モデルのデバッグ

モデルのデバッグの方法についてを説明します。

5.11.1 部品エラー

モデルを実行すると、モデル出力タブに赤字でエラーが表示される事があります。

[生成]部品エラー : 1 回の生成数が 0 より大きくありません

このようなエラーが表示された場合 [、’‘]’’ で囲まれた名前の部品に設定に誤った設定が含まれています。表示された部品の部品編集画面を開き、エラーを修正して下さい。

5.11.2 部品警告

モデルを実行すると、以下のような警告が表示される事があります。

[生成]部品警告 : 最大生成数が 0 より大きくありません。最大生成数を無限とみなします。

このような警告が表示された場合 [、’‘]’’ で囲まれた名前の部品に誤った設定が含まれている可能性があります。意図してそのような設定を行っている場合もありますが、大抵の場合は誤った設定です。表示された部品の部品編集画面を開き、適宜修正して下さい。

5.11.3 その他のエラー

モデルを実行すると、モデル出力タブに、赤字で以下のメッセージが表示される事があります。

[エラー出力があります]

その場合は、モデルエラータブを開くと詳細情報を確認する事が出来ます。モデルエラータブには以下のようなエラーが表示されている場合があります。

モデル ... の開始: ...
Exception in thread Thread-1:
Traceback (most recent call last):
  ...
  Project ..., line ..., in ...
TypeError: unsupported operand type(s) for /: 'instance' and 'int'

モデル ... の終了: ...

その中で、Project … が含まれている場合があります。

Project ..., line XXX, in ...

この場合は、自動生成コード上のXXX 行でエラーが発生した事を示しています。

その行をクリックすると、自動生成コードが表示され、エラー行が表示されます。あるいは、コード表示(5.8 章)を行い、エラー発生行を参照しても構いません。エラー発生行を起点に上部のコードを参照すると、

class ... (Widget):

という部品のクラス定義があると思います。その部品内で問題が発生していますので、部品を開き、適宜問題点を修正して下さい。

5.12 モデルプロパティ編集

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「モデルプロパティを編集する」を選択するとモデルプロパティ編集画面(図 72)が表示されます。

図 72: モデルプロパティ編集
モデルの説明

このモデルの説明を自由に記述できます

背景

このモデルの背景色、あるいは、背景イメージを設定します。

モデルサイズ

このモデルのサイズを、1024x1024, 2048x2048, 4096x4096 の中から選択できます。

5.13 ナビゲーションウィンドウ

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「ナビゲーションウィンドウを表示する」を選択するとナビゲーションウィンドウ(図 73)が表示されます。

図 73: ナビゲーションウィンドウ

ナビゲーションウィンドウの中央のナビゲーションイメージには、現在編集中のモデルの全体が表示されています。中央の明るい部分が、現在モデル編集画面に表示されている領域です。この領域をドラッグする事によって、モデル編集画面上の表示領域を移動させる事ができます。

ナビゲーションイメージの表示領域は、ナビゲーションイメージの右側及び下側にあるスクロールバーによって移動させる事ができます。

ナビゲーションウィンドウの下部にはズームコントロールがあります。ズームコントロールを右に動かすと、ナビゲーションイメージの表示倍率が拡大されます。ズームコントロールを左に動かすと、ナビゲーションイメージの表示倍率が縮小されます。

5.14 Python拡張環境を編集する

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「Python拡張環境を編集する」を選択するとPython環境画面(図 74)が表示されます。

図 74: Python環境

S4 Simulation System で作成されたプロジェクトは python のコードに変換されて、実行されます。本メニューより、プロジェクト毎に、独自の python ライブラリを組み込むことが出来ます。

Pythonには、PyPI(Python Package Index)と呼ばれる Python のサードパーティライブラリを管理しているサイトがあります。(https://pypi.org/)

本機能は、PyPIからライブラリをインストールするコマンド pip のフロントエンドとなっています。(https://pip.pypa.io/)

なお、PyPI の Python ライブラリは、第三者が管理しているものであり、新規のライブラリを導入した場合や、既存のライブラリをバージョンアップした場合、プロジェクトの動作が異ってしまう場合がございます。例えば、実行するとエラーが出る場合や、以前と結果が異なってしまう場合などがございます。そのような時は、手動にて、ソースコードの変更、あるいは、基の状態に戻して頂く必要がございます。

Python環境拡張

Python環境拡張を利用するか否かを設定します

パッケージ追加

左側のテキストボックスに入力された Python ライブラリをインポートします。

パッケージ一覧については、上記の PyPI のサイトを参照下さい。

なお、バージョン指定でインポートしたい場合は、「パッケージ名==バージョン番号」という文字列を指定する事も可能です。

追加pipオプション

pip に追加するオプション文字列を設定します。

Wheelを追加

whl ファイルを追加します。ファイルダイアログにて whl ファイルを指定下さい

パッケージ追加にて Python ライブラリ をインポートすると、導入時にエラーが出る場合や、実行時にエラーが出る事があります。

そのような場合、

https://www.lfd.uci.edu/~gohlke/pythonlibs/

などで用意されている、whl ファイルを導入すると解決する事があります。

requirements.txtを作成

現在のパッケージの選択状況を requirements.txt に出力します。

requirements.txtに従い更新

requirements.txt に従い、パッケージを選択します。

Pythonシェルを起動(拡張環境)

拡張されたPython環境にて Python シェル を起動します。

5.14.1 パッケージリスト

パッケージ

パッケージ名です。

Original

S4 Simulation System の標準のバージョンです。標準ではインストールされていない場合は nan になります。

Current

現在拡張環境にインストールされているバージョンです。

更新

このパッケージをを最新のバージョンに更新します。

削除

このパッケージを削除します。

5.15 ソースコードをエクスポートする

ソースコードを単一のPythonコードとして外部にエキスポートします。エクスポートされたコードは、編集後、インポートできます。

出力されたコードには、以下のような領域が埋め込まれます。

#region Generate.run

任意のユーザコード

#endregion Generate.run

regionで囲まれた領域は、VS code などでは、伸縮可能になります。(外部エディタが対応している場合)

regionで囲まれた領域を任意のテキストエディタで編集した後、インポートすると、修正したコードが元のプロジェクトに反映されます。

5.16 ソースコードをインポートする

エクスポートされたコードは、編集後、インポートできます。

インポートファイルを指定するとに、確認画面(図 75)が表示されます。

図 75: ソースコードインポート

「OK」を押すと、変更が現プロジェクトに反映されます。

状態には以下があります。

変更あり

変更が検知されました。確認の上、OK を押すと変更が現プロジェクトに反映されます。

変更なし

変更が検知されませんでいた。OK を押しても変更は現プロジェクトに反映されません。

なお、以下の状態が表示された何らかの問題がある可能性があります。

反映先がありません

ソースコード上には存在するブロックが、現プロジェクト上にありません。OK を押しても変更は現プロジェクトに反映されません。

ソースコード上に存在しない

現プロジェクト上に存在するブロックが、ソースコード上には存在しません。OK を押しても変更は現プロジェクトに反映されません。

6 部品

モデル上に配置する部品についてを説明します。

部品とは、自律的あるいは入力を機に何らかの動作を行い、場合によっては出力を行うものです。任意個の入力ポートと出力ポートを持ちます。

6.1 部品の編集

部品の下のラベルの以外の場所を左ダブルクリック、あるいは、部品の配置されている場所を右クリックして表示されるメニュー(3.5.1 章)から「編集」を選ぶと、部品編集画面が表示されます。

部品編集画面は、以下のタブで構成されます。

6.1.1 共通設定タブ

共通設定タブは 図 76 のような画面構成になります。

図 76: 部品共通設定タブ

全ての部品で共通の属性を編集出来ます。

クラス名

自動生成コード(5.8.1 章)におけるこの部品のクラス名になります。通常は編集する必要はありません。

オブジェクト名

自動生成コード(5.8.1 章)におけるこの部品のインスタンス名になります。通常は編集する必要はありません。

説明

モデル編集画面におけるこの部品の名前になります。 5.3.15 章 の方法でも変更する事が出来ます。

入力以下には入力ポートが表示され、入力ポートの追加・削除、および、各入力ポートを編集する事が出来ます。

出力以下には出力ポートが表示され、出力ポートの追加・削除、および、各出力ポートを編集する事が出来ます。

「+」を押すと、入/出力ポートが追加され、末尾に表示されます。

「–」を押すと、その入/出力ポートが削除されます。

各入/出力ポートは、以下で構成されます。

変数名

そのポートの自動生成コード(5.8.1 章)におけるメンバー名になります。

説明

そのポートの説明になります。

キューサイズ

そのポートのキューの容量になります。

アニメーション表示条件、アニメーション表示範囲

アニメーションに関するパラメータです。詳細は(26 章)アニメーションにあります。

記録

そのポートにキューがある時、キュー変化を記録するかどうかを設定します。記録すると、追加待ち、追加待ち合計、取得待ち、取得待ち合計、バッファで構成される時系列モニターが、「部品名-ポート名」という名前で出力されます。追加待ちと追加待ち合計は常に同じで、取得待ちと取得待ち合計も常に同じになります。追加待ち合計点取得待ち合計はそれぞれ入力側・出力側に並んでいるフローアイテム数です。バッファはポートのキュー内のフローアイテム数です。

選択方式

そのポートにキューがない時、セレクタを設定します。

ポートの動作については、7 章 を参照して下さい。

初期状態

シミュレーション起動時にそのポートのキューに予め並んでいるフローアイテムがある場合、ここで設定する事が出来ます。フローアイテムには追加するフローアイテムの種類を指定します。複製数に指定した数だけフローアイテムが複製されます(deep copy)。通常フローアイテムの各属性は自動的に設定されますが、明示的に指定したい場合は、属性リストで指定する事が出来ます。

6.1.2 属性設定タブ

属性設定タブは 図 77 のような画面構成になります。

図 77: 部品属性設定タブ

上のヘルプボタンを押すと、その部品の説明が表示されます。

部品ごとに表示される属性は変わります。部品の振る舞いを定めます。

6.1.3 コード編集タブ

コード編集タブは、図 78 のような画面構成になりま す。

図 78: 部品属性設定タブ

上半分が属性設定タブで設定した値により自動生成されたコードです。

下半分がその部品の動作を psim 言語で記述されています。配置した状態では部品ごとの動作が表示されています。自由に編集する事が出来ます。

6.2 生成(Generate)

図 79: 生成

部品「生成」(図 79)はフローアイテムを生成します。

フローアイテム名

この[生成]部品が生成するフローアイテムを表します。

初期生成時間

最初にフローアイテムを生成するのに要する時間を表します。

生成時間

フローアイテムを生成するのに要する時間を表します。

生成時間系列の生成

生成時間系列の生成方法を表します。

1回の生成数

1 回の生成で生成されるフローアイテムの数を表します。生成数が 2 以上の場合はフローアイテムリストとして結合します。フローアイテムリストは部品「分割」(6.15 章)で分割可能です。

最大生成数

この[生成]部品が生成するフローアイテムの最大個数を表します。

6.3 終端(Terminate)

図 80: 終端

部品「終端」(図 80)はフローの終端です。出力はなく、入力されたフローアイテムは破棄されます。

待ち時間

フローアイテムを破棄してから再びフローアイテムを受け取るまでの最短時間を表します。

6.4 イベント待ち(WaitEvent)

図 81: イベント待ち

部品「イベント待ち」(図 81)は指定したイベント(8.2 章)が発火するまで待ち受けを行います。 部品「イベント発火」(6.5 章)と対になる部品です。

イベントリスト

発火を待つイベントを表します。

待ち受け方法

イベントの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのイベントが発火した場合に待ち受けを終了します。

  • “OR”は、順番に関わらずいずれかのイベントが発火した場合に待ち受けを終了します。

  • “SEQUENCE”は、指定したイベントが指定した順に発火した場合に待ち受けを終了します。

優先度

イベントを待ち受けする際の優先度を表します。

最大待ち時間

イベントを待ち受けする最大の時間を表します。

並列利用

イベント待ち受けを並列的に行うか逐次的に行うかを表します。

  • “並列”は、アイテムのイベント待ち受けを並列に行います。

  • “逐次”は、アイテムのイベント待ち受けを 1 つだけ行います。イベントが成立するまで、次のアイテムのイベント待ち受けを行いません。

イベントの記録

待ち受けの可否と待ち時間を記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、待ち受けの可否と待ち時間を記録します。

  • “時系列モニター”は、待ち受けの可否と待ち時間を時系列で記録します。

6.5 イベント発火(SignalEvent)

図 82: イベント発火

部品「イベント発火」(図 82)は指定したイベント(8.2 章)を発火します。 部品「イベント待ち」(6.4 章)と対になる部品です。

イベントリスト

発火させるイベントを表します。

待ち時間

アイテム受け取り後からイベントを発火させるまでの時間を表します。

発火数

発火させるイベント数を表します。

6.6 ファシリティ要求(RequestFacility)

図 83: ファシリティ要求

部品「ファシリティ要求」(図 83)はファシリティ(8.3 章)の利用を要求します。 部品「ファシリティ解放」(6.7 章)と対になる部品です。

ファシリティリスト

利用するファシリティを表します。

待ち受け方法

ファシリティの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのファシリティに要求を行ないます。

  • “OR”は、順番に関わらずいずれかのファシリティに要求を行ないます。

  • “SEQUENCE”は、指定したファシリティに指定した順に要求を行ないます。

優先度

ファシリティを利用する際の優先度を表します。

最大待ち時間

ファシリティ取得までに待つ最大の待ち時間を表します。

並列利用

ファシリティの利用を並列的に行うか逐次的に行うかを表します。 - “並列”は、ファシリティに対して並列に(複数の)要求を出します。

  • “逐次”は、ファシリティに対して 1 つだけ要求を出します。要求が成立するまで、新しい要求は出しません。
ファシリティ要求の記録

ファシリティの要求の可否とファシリティの要求に要した時間の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、ファシリティの要求の可否とファシリティの要求に要した時間を 記録します。

  • “時系列モニター”は、ファシリティの要求の可否とファシリティの要求に要した時間を時系列的に記録します。

6.7 ファシリティ解放(ReleaseFacility)

図 84: ファシリティ解放

部品「ファシリティ解放」(図 84)は利用中のファシリティ(8.3 章)を解放します。 部品「ファシリティ要求」(6.6 章)と対になる部品です。

ファシリティリスト

解放するファシリティを表します。

6.8 ファシリティ利用(UseFacility)

図 85: ファシリティ利用

部品「ファシリティ利用」(図 85)はファシリティ(8.3 章)を指定した時間だけ利用します。 部品「ファシリティ要求」(6.6 章)と部品「ファシリティ解放」(6.7 章)の間に部品「遅延」(6.18 章)が挟まっているような動作をします。

ファシリティリスト

利用するファシリティを表します。

待ち受け方法

ファシリティの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのファシリティに要求を行ないます。

  • “OR”は、順番に関わらずいずれかのファシリティに要求を行ないます。

  • “SEQUENCE”は、指定したファシリティに指定した順に要求を行ないます。

ファシリティ利用時間

取得したファシリティを利用する時間を表します。

優先度

ファシリティを利用する際の優先度を表します。

最大待ち時間

ファシリティ取得までに待つ最大の待ち時間を表します。

並列利用

ファシリティの利用を並列的に行うか逐次的に行うかを表します。 - “逐次”は、ファシリティリストに対して 1 つだけリクエストを出します。リクエストが成立するまで、新しいリクエストは出しません。

  • “並列”は、ファシリティリストに対して並列に(複数の)リクエストを出します。Infを指定すると並列数の上限なくリクエストを出します。
ファシリティ利用の記録

ファシリティの利用の可否とファシリティを利用するまでに要した時間の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、ファシリティの利用の可否とファシリティを利用するまでに要した時間を記録します。

  • “時系列モニター”は、ファシリティの利用の可否とファシリティを利用するまでに要した時間を時系列的に記録します。

6.9 ストアから取得(GetFromStore)

図 86: ストアから取得

部品「ストアから取得」(図 86)はストア(8.4 章)から指定した個数だけ離散量資源を取得します。 部品「ストアへ追加」(6.10 章)と対になる部品です。

ストアリスト

取得するストアを表します。

待ち受け方法

ストアの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのストアから取得を行ないます。

  • “OR”は、順番に関わらずいずれかのストアから取得を行ないます。

  • “SEQUENCE”は、指定したストアから指定した順に取得を行ないます。

取得個数

ストアから取得する個数を表します。

優先度

ストアから取得する際の優先度を表します。

最大待ち時間

取得するまでに許す最大の待ち時間を表します。取得にそれ以上の時間が掛かる場合、取得しません。タイムアウトが発生した時は、タイムアウト時出力ポートに出力されます。

取得した離散量資源

取得した離散量資源をアイテム属性として取得するか、またはアイテムとして出力するかどうかを表します。 - “属性名”は、取得した離散量資源を指定した属性に設定します。

  • “出力ポート”は、取得した離散量資源を指定した出力ポートに出力します。ただし、タイムアウトが発生した時は、タイムアウト時出力ポートに空のアイテムリストが出力されます。この場合、この部品に入力されたアイテムは破棄されます。
並列処理

ストアからの取得を並列的に行うか逐次的に行うかを表します。 - “並列”は、ストアから並列的に離散量資源を取得します。

  • “逐次”は、ストアから逐次的に離散量資源を取得します。取得できるまで、次の取得を行いません。
取得の記録

取得の可否、取得に要した時間、取得個数の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、取得の可否、取得に要した時間、取得個数を記録します。

  • “時系列モニター”は、取得の可否、取得に要した時間、取得個数を時系列的に記録します。

6.10 ストアへ追加(PutToStore)

図 87: ストアへ追加

部品「ストアへ追加」(図 87)はストア(8.4 章)へ離散量資源を格納します。 部品「ストアから取得」(6.9 章)と対になる部品です。

ストアリスト

格納するストアを表します。

待ち受け方法

ストアの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのストアに格納を行ないます。

  • “OR”は、順番に関わらずいずれかのストアに格納を行ないます。

  • “SEQUENCE”は、指定したストアに指定した順に格納を行ないます。

追加するアイテム

格納する離散量資源を表します。 - “アイテムを追加する”は、アイテム自身を離散量資源として追加します。この場合、空のアイテムが出力されます。

  • “アイテム属性を追加する”は、アイテム属性を離散量資源として追加します。この場合、アイテム属性を None にしたアイテムが出力されます。
追加個数

ストアへ追加する個数を表します。

優先度

ストアへ追加する際の優先度を表します。

最大待ち時間

追加するまでに許す最大の待ち時間を表します。追加にそれ以上の時間が掛かる場合、取得しません。

並列処理

ストアへの格納を並列的に行うか逐次的に行うかを表します。 - “並列”は、ストアへ並列的に離散量資源を格納します。

  • “逐次”は、ストアへ逐次的に離散量資源を格納します。格納できるまで、次の格納を行いません。
追加の記録

追加の可否、追加に要した時間、追加個数の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、追加の可否、追加に要した時間、追加個数を記録します。

  • “時系列モニター”は、追加の可否、追加に要した時間、追加個数を時系列的に記録します。

6.11 タンクから取得(GetFromTank)

図 88: タンクから取得

部品「タンクから取得」(図 88)はタンク(8.5 章)から指定した量だけ連続量資源を取得します。 部品「タンクへ追加」(6.12 章)と対になる部品です。

タンクリスト

取得するタンクを表します。

待ち受け方法

タンクの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのタンクから取得を行ないます。

  • “OR”は、順番に関わらずいずれかのタンクから取得を行ないます。

  • “SEQUENCE”は、指定したタンクから指定した順に取得を行ないます。

取得量

タンクから取得する量を表します。

優先度

タンクから取得する際の優先度を表します。

最大待ち時間

取得するまでに許す最大の待ち時間を表します。取得にそれ以上の時間が掛かる場合、取得しません。

取得した連続量資源

取得した連続量資源を属性に持たせるかどうかを表します。指定した属性に取得した連続量資源を加算します。

並列処理

タンクからの取得を並列的に行うか逐次的に行うかを表します。 - “並列”は、タンクから並列的に連続量資源を取得します。

  • “逐次”は、タンクから逐次的に連続量資源を取得します。取得できるまで、次の取得を行いません。
取得の記録

取得の可否、取得に要した時間、取得量の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、取得の可否、取得に要した時間、取得量を記録します。

  • “時系列モニター”は、取得の可否、取得に要した時間、取得量を時系列的に記録します。

6.12 タンクへ追加(PutToTank)

図 89: タンクへ追加

部品「タンクへ追加」(図 89)はタンク(8.5 章)へ連続量資源を追加します。 部品「タンクから取得」(6.11 章)と対になる部品です。

タンクリスト

追加するタンクを表します。

待ち受け方法

タンクの待ち受け方法を表します。 - “AND”は、順番に関わらず全てのタンクに追加します。

  • “OR”は、順番に関わらずいずれかのタンクに追加します。

  • “SEQUENCE”は、指定したタンクに指定した順に追加します。

追加量

タンクへ追加する量を表します。

優先度

タンクへ追加する際の優先度を表します。

最大待ち時間

追加するまでに許す最大の待ち時間を表します。追加にそれ以上の時間が掛かる場合、取得しません。

追加する連続量資源

追加した連続量資源をアイテム属性から差し引くかどうかを表します。指定した属性から追加した連続量資源を差し引きます。

並列処理

タンクへの追加を並列的に行うか逐次的に行うかを表します。 - “逐次”は、タンクへ逐次的に連続量資源を追加します。追加できるまで、次の追加を行いません。

  • “並列”は、タンクへ並列的に連続量資源を追加します。Infを指定すると並列数の上限なく追加を行います。
追加の記録

追加の可否、追加に要した時間、追加量の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、追加の可否、追加に要した時間、追加量を記録します。

  • “時系列モニター”は、追加の可否、追加に要した時間、追加量を時系列的に記録します。

6.13 結合(Batch)

図 90: 結合

部品「結合」(図 90)は、入力されたアイテムを指定された 結合方法と結合条件に従ってフローアイテムリストとして結合します。作成さ れたフローアイテムリストはアイテムの入力順を保持しており、部品「分割」 (6.15 章)で分割可能です。結合の記録として、実際に結 合したアイテム数と結合に要した時間を記録できます。

この部品では、まず入力ポートからアイテムを受信し結合条件毎にふるい分け します。ふるい分けられると同時に、並列して結合方法に従ってフローアイテ ムリストとして結合を行います。結合方法の”結合数”、“結合間隔”、またはそ のいずれかが成立した段階で、それまでに結合したフローアイテムリストを出 力ポートに出力します。記録を指定した場合、出力するフローアイテムリスト の長さと、フローアイテムリストの先頭のアイテムが入力されてからフローア イテムリストとして出力するまでの時間を記録します。

「結合」は、フローアイテム「アイテム」(9.2 章)や部 品「マージ」(6.14 章)に関連します。

結合方法

アイテムの結合の仕方を表します。受信したアイテムを指定したタイミングで結合します。 - “結合数”は、「結合条件」が一致するアイテム数が指定個数になるまで結合します。

  • “結合間隔”は、「結語条件」が一致するアイテムで分けた中で 1 つめのアイテムが到着してから経過した時間内に到着したアイテムを結合します。
結合条件

結合するアイテムを表します。条件が成り立つアイテム群で結合します。 - “なし”は、全てのフローアイテムを区別せずに「結合方法」で結合します。

  • “属性”は、属性の値が等しいアイテムで区別し「結合方法」で結合します。
結合の記録

実際に結合したアイテム数と結合に要した時間の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、結合した時点の結合したアイテム数と結合に要した時間を記録します。“結合数”が成立して結合されていれば、指定した”結合数”と結合したアイテム数は一致します。同様に、“結合間隔”が成立して結合されていれば、指定した”結合間隔”と結合に要した時間は一致します。

  • “時系列モニター”は、結合した時点の結合したアイテム数と結合に要した時間を時系列で記録します。“結合数”が成立して結合されていれば、指定した”結合数” と結合したアイテム数は一致します。同様に、“結合間隔”が成立して結合されていれば、指定した”結合間隔”と結合に要した時間は一致します。

6.14 マージ(Merge)

図 91: マージ

部品「マージ」(図 91)はアイテム属性を要約することでアイテムを結合します。全ての属性に対して要約値が計算されます。

計算方法

アイテム属性の要約値の計算の仕方を表します。

結合方法

アイテムの結合の仕方を表します。 - “結合数”は、アイテム数で結合します。

  • “結合間隔”は、1 つめのアイテムが到着してから経過した時間内に到着したアイテムを結合します。

  • “結合数 or 結合間隔”は、上記のいずれかの条件が満たされた時点でアイテムを結合します。

結合条件

結合するアイテムを表します。 - “なし”は、全てのフローアイテムを結合します。

  • “属性”は、属性の値が等しいアイテムを結合します。
結合の記録

結合したアイテム数とその時間の記録の仕方を表します。 - “なし”は、記録しません。

  • “モニター”は、結合した時点の結合したアイテム数と結合に要した時間を記録します。

  • “時系列モニター”は、結合した時点の結合したアイテム数と結合に要した時間を時系列で記録します。

6.15 分割(Split)

図 92: 分割

部品「分割」(図 92)はフローアイテムリストを分割します。「結合」(6.13 章)や部品「生成」(6.2 章)でフローアイテムリストが作成されます。

分割方法

再帰的に分割を行うかどうかを表します。

6.16 設定(Assign)

図 93: 設定

部品「設定」(図 93)は、アイテムの属性やパラメータに 値を設定します。入力されたアイテムの既存のアイテム属性やシミュレーショ ンモデル固有のパラメータを更新できます。また、入力されたアイテムに新し くアイテム属性を割付けたり、シミュレーションモデル固有のパラメータを新 しく割り付けたりできます。アイテム属性とパラメータの設定を同時 に行えます。その際、アイテム属性の設定の後にパラメータの設定を行うため、 互いに値を参照しあう場合は注意する必要があります。 アイテムがフローアイテムリストであった場合、そのリスト内の全ての アイテムが対象になります。

この部品内特有の時間経過はなく、入力ポートからアイテムを受信した順に設 定を行い、出力ポートに出力します。パラメータのみに値の設定を行う場合で も、設定を行うタイミングは入力ポートからアイテムを受信したときになりま す。

「設定」は、フローアイテム「アイテム」(9.2 章)や パラメータ(5.4 章)に関連します。

アイテム属性

「名前」が値の更新または新しく割付けするアイテ ム属性を表します。既存の属性名であれば値の更新、新しい属性名であれば値 の割付になります。複数のアイテム属性を同時に設定できます。このリスト順 にアイテム属性が設定されるため、同じアイテム属性が指定された場合は後続 の設定が優先されます。フローアイテムリストの場合、リスト内の全てのアイ テムのアイテム属性が対象になります。

なお、特殊なアイテム属性名として、_item_color と _item_marker があります。これらはアニメーション表示モードの時のみ有効で、_item_color はアイテム表示する際の色、_item_marker はアイテム表示する際のマーカーを指定します。

パラメータ

値の更新または新しく割付けするパラメータを表しま す。既存のパラメータであれば値の更新、新しいパラメータであれば値の割付 になります。複数のパラメータを同時に設定できます。このリスト順にパラメー タが設定されるため、同じパラメータが指定された場合は後続の設定が優先さ れます。

6.17 判断(Decide)

図 94: 判断

部品「判断」(図 94)は、入力されたアイテムの出力先を 条件に従って分岐させます。条件式が成立する場合、その条件式で指定した出 力ポートにアイテムを出力します。リストの先頭ほど優先順位が高く、複数の 条件式が成立した場合、より優先順位が高い出力ポートにアイテムを出力しま す。

この部品内特有の時間経過はなく、入力ポートからアイテムを受信した順に条 件式が成立するかを評価します。指定した条件式リスト順に条件式の成立を評 価し、成立した条件式があれば、アイテムをその条件式に紐付けた出力ポート に即座に出力します。以降の条件式リストは評価しません。条件式が何らかの 理由で評価できなかった場合、その条件式は成立しなかったものとみなします。

条件式リスト

条件式と出力ポートの組のリストを表します。指定 した条件式が成立した場合に、対応する出力ポートにアイテムが出力されます。 条件式リスト順に優先順位が設定されており、複数の条件式が成立する場合、 条件式リストのより先頭側の条件式が成立したものとみなされ、対応する出力 ポートにアイテムを出力します。

それ以外

条件式リストの条件式が全て成り立たなかった場合に、 アイテムを出力する出力ポートを表します。

6.18 遅延(Delay)

図 95: 遅延

部品「遅延」(図 95)は、入力されたアイテムの出力を遅延 させます。アイテムを出力するのを指定時間だけ遅延させたり、アイテムを出 力した後に次のアイテムを受信するのを指定時間だけ遅延させたりできます。 また、個々のアイテムを並列的に遅延させるか逐次的に遅延させるかを選択で きます。並列的にアイテムの出力を遅延させる場合、指定時間だけ個々のアイ テムの出力は遅延します。この場合、「出力後の待ち時間」は無効になります。 逐次的にアイテムの出力を遅延させる場合、指定時間に加えてアイテムが処理 されるまでの待ち時間だけ個々のアイテムの出力は遅延します。

入力ポートからアイテムを受信して「出力前の待ち時間」だけ待ち受けし、待 ち受けの成立後に出力ポートにアイテムを出力して、さらに「出力後の待ち時 間」だけ待ち受けを行います。並列的にアイテムの出力を遅延させる場合、受 信したアイテム毎にこのサイクルをそれぞれ独立したプロセスで実行します。 逐次的にアイテムの出力を遅延させる場合、このサイクルを順に行います。サ イクルを実行中にアイテムが入力ポートに入力されていても、このサイクルが 完了するまで次のサイクルは実行しません。入力キューのサイズが 0 の場合、 この入力ポートに入力しようとするプロセスの実行もこのサイクルが終わるま で待たされるため、注意が必要です。

出力前の待ち時間

アイテムを出力する前の最短待ち時間を表しま す。アイテムを受信してから、この指定時間だけ出力を遅延させます。逐次の 場合、入力キューでの待ち時間だけ遅延が生じている場合があります。

出力後の待ち時間

アイテムを出力した後の最短待ち時間を表しま す。アイテムを出力してから、この指定時間だけ次のアイテムの受信を遅延さ せます。並列の場合、この指定時間は無効になります。

並列処理

「並列処理」は、アイテム出力の遅延を並列的に行うか逐次的に行うかを表します。 - “並列”は、アイテムの出力を並列的に遅延させます。アイテムは並列的に遅延されて出力されるため、「出力後の待ち時間」は無効になります。

  • “逐次”は、アイテムの出力を逐次的に遅延させます。アイテムの遅延が完了するまで、次のアイテムの遅延を行いません。そのため指定した時間以上に遅延が生じる場合があります。

6.19 複製(Duplicate)

図 96: 複製

部品「複製」(図 96)は、入力されたアイテムを指定し た個数だけ指定した方法で複製します。複製方法は、アイテムの参照を複製す る方法、アイテムの構造を複製する方法、アイテムを複製する方法の3つの方法 があります。アイテムの参照を複製すると、複製対象のアイテムを繰り返し出 力できます。出力先を変えれば、複製対象のアイテムを異なる複数のフローに 同時に流すことができます。アイテムの構造を複製すると、複製対象のアイテ ムと同一の構造を持ったアイテムを繰り返し出力できます。複製対象のアイテ ムの属性は複製しないため、出力したアイテム間で属性値は同一になります。 属性に設定されているオブジェクトの状態を変更する場合には、注意が必要で す。アイテムを複製すると、複製対象のアイテムの構造と内容を複製したアイ テムを繰り返し出力できます。またアイテムを複製した際に、全ての出力ポー トでの出力が完了してから次のアイテムを複製するのか、完了を待たずに次の アイテムを複製するのかを選択できます。

この部品内特有の時間経過はなく、入力ポートからアイテムを受信した順に指 定された複製方法で、全ての出力ポートに指定された複製数だけ複製し出力し ます。出力はサブプロセスで行い、全ての出力ポートでの出力が完了してから の場合は完了するまで待ち受けし、完了を待たない場合はサブプロセスを並列 に実行し、次のアイテムの複製に移ります。

複製数

出力ポート毎に複製する数を表します。負の場合、複製数は 0 と見なします。

複製方法

アイテムの複製方法を表します。 - “参照”は、アイテムの参照を複製します。アイテムは複製されず、複製対象のアイテムを出力します。

  • “浅いコピー”は、アイテムの構造を複製します。アイテムの属性は複製されず、複製対象のアイテムの属性と同じ値を設定し出力します。

  • “深いコピー”は、アイテムの構造と内容を複製します。アイテムを複製し出力します。

複製タイミング

複製するタイミングを表します。 - “出力完了後”は、複製したアイテムが全ての出力ポートで出力完了してから次のアイテムを複製します。

  • “逐次”は、複製したアイテムが全ての出力ポートで出力完了していなくても次のアイテムを複製します。

6.20 通過(Pass)

図 97: 通過

部品「通過」(図 97)はアイテムを無条件で通過させます。

6.21 記録(Record)

図 98: 記録

部品「記録」(図 98)はアイテムの個数や累積個数、アイテム属性を含む式の値、アイテムの到着時間間隔を記録 します。

モニター種類

どのモニターを用いるかを表します。 - “モニター”は、モニターを用いて記録します。

  • “時系列モニター”は、時系列モニターを用いて記録します。
記録内容

記録対象を表します。 - “列名”は、記録内容の名前を表します。

  • “列の型”は、記録内容の型を表します。

  • “記録方法”は、アイテムの何を記録するかを表します。

    • カウントは、この部品に 1 度に入力されたアイテムの個数を記録します。

    • 累積カウントは、1 度に入力されたアイテムの個数を累積的に記録します。

    • 式は、アイテム属性を含む任意の式の値を記録します。

    • 累積式は、アイテム属性を含む任意の式の値を累積的に記録します。

    • 時間間隔は、アイテムの到着時間間隔を記録します。

6.22 連続(Continuous)

図 99: 連続

部品「連続」(図 99)は、連続シミュレーションを行います。

連続シミュレーションとは、常微分方程式(ODE, Ordinary Differential Equation)の初期値問題(IVP, Initial Value Problem)の数値解法に相当し、以下のような、時間 t_0 で、yy_0 であった場合に、y = y(t) \quad (t_0 \le t \le T) の近似解を求める問題を解きます。

\begin{aligned} \frac{dy}{dt} &= f(t, y) \quad (t_0 \le t \le T) \nonumber \\ y(t_0) &= y_0 \nonumber \end{aligned}

k 階の常微分方程式は以下のように表されます。

\begin{aligned} y^{(k)} &= f(t, y, y', y'', \cdots, y^{(k-1)}) \nonumber \\ y(t_0) &= y_0 \nonumber \\ y'(t_0) &= y'_0 \nonumber \\ y''(t_0) &= y''_0 \nonumber \\ \vdots &= \vdots \nonumber \\ y^{(k-1)}(t_0) &= y^{(k-1)}_0 \nonumber \end{aligned}

ここで、y = y^0, y' = y^1, \cdots, y^{(k-1)}=y^{k-1} と置けば、次のような1階常微分方程式に変換する事が出来ます。

\begin{aligned} (y^{kー1})' &= f(t, y^0, y^1, y^2, \cdots, y^{k-1}) \nonumber \\ (y^{kー2})' &= y^{k-1} \nonumber \\ \vdots &= \vdots \nonumber \\ (y^1)' &= y^2 \nonumber \\ (y^0)' &= y^1 \nonumber \end{aligned}

ローカル変数

この部品内でローカルに使われる連続変数がある場合に指定します。 - “変数名”はローカル変数の名前を表します。

  • “初期値”はローカル変数の初期値を表します。

  • もし、シミュレーション終了時に、そのローカル変数の値を記録しておきたい場合は、“終了時の更新”に指定します。

  • “最大値”はローカル変数の最大値を表します。

  • “最小値”はローカル変数の最小値を表します。

微分方程式

ここに指定した微分方程式に従い連続シミュレーションを行います。 - “参照変数”は微分方程式内で参照したい連続変数を表します。

  • “式”には連立微分方程式を指定します。各式の左辺にはどの連続変数の導関数を定義するかを設定します。右辺には、時間を示す T、左辺に指定した連続変数、“参照変数”に指定した連続変数を使った式を指定します。左辺にローカル変数を指定した場合、ローカル変数[i] のように、インデックス付きの変数が表示されます。右辺にて、“ローカル変数[i]” と記述すれば、ローカル変数値を示します。添字無しで”ローカル変数”と記述した場合、現時点で有効な全てのローカル変数のリストを示します。“ローカル変数.items”と記述した場合、現時点で有効な全てのローカル変数が作成された時のフローアイテムのリストを示します。
出力先

連続シミュレーションの終了条件とその出力先を指定します。 - “終了条件が成立”の場合は”参照変数”を使った”条件式”が成立したら、指定した”出力先”に出力します。

  • “下限”の場合は”変数”が下限に逹して連続シミュレーションが終了したら、指定した”出力先”に出力します。

  • “上限”の場合は”変数”が上限に逹して連続シミュレーションが終了したら、指定した”出力先”に出力します。

それ以外の出力先

どの条件にも適合しなかった場合は、ここに指定した出力先に出力します。

6.23 即時報酬確定(GetReward)

図 100: 即時報酬確定

部品「即時報酬確定」(図 100)では、強化学習を用いるシミュレ ーションにおいて、入力されたアイテムに対応する行動の即時報酬値を決定します。

本部品では、アイテム属性に設定された報酬決定関数を呼び出して即時報酬値を決めます。 報酬決定関数は、強化学習モデルの利用者(強化学習セレクタ (7.2.7 章)や部品「強化学習設定」(6.24 章)) で、即時報酬値の確定を行うタイミングを次のアイテムの行動決定時点からずらす場合にアイテムの属性に設定されています。 タイミングをずらさない際には本部品は不要です。

強化学習の学習サイクルの都合上、一つの行動に対して丁度一回だけ即時報酬 値を求めて評価する必要があります。 例えば、アイテムが循環するシミュレーションにおいては、行動と即時報酬を交互に求めるようなモデルを組み、行動を再設定していないアイテムが本部品に続けて入力されることの無いようにします。

報酬決定関数のアイテム属性名

報酬決定関数が割付けら れたアイテム属性を指定します。指定された属性に報酬決定関数が設定されていなければ、 警告を出力します。フローアイテムリストの場合、リスト内の全てのアイテムのアイ テム属性が対象になります。

6.24 強化学習設定(AssignRL)

図 101: 強化学習設定

部品「強化学習設定」(図 101)は、入力されたアイ テムの属性に、強化学習モデルが選んだ行動値を設定します。

強化学習モデル

利用する強化学習モデルを指定します。シミュレーションモデルに設定された離散イベント用強化学習モデルが選択できます。

エピソード

強化学習におけるエピソードの区別に関する設定を表します。 - “区別しない”は、シミュレーション全体を一つのエピソードとみなして学習を行い、エピソード名には本アイコンの名前が割り当てられます。

  • “区別する”は、文字列を設定してエピソードを定めます。この際、入出力対象であるフローアイテムをitemとして参照できます。例えば、アイテムのある属性fooでエピソードを区別したい場合は、item.fooと設定します。区別する際の文字列として、デフォルトではitemが指定されます。
行動値を設定するアイテム属性名

強化学習モデルを利用して求めた行動値を設定する アイテム属性の名前を指定します。フローアイテムリストの場合、リスト内の全ての アイテムのアイテム属性が対象になります。

即時報酬計算のタイミングをずらすか

アイテムに設定した行動値に対 して、強化学習モデルが即時報酬値を確定するタイミングを、次のアイテ ムの行動値を設定する時点からずらすかどうか指定します。 - “ずらさない”は、即時報酬値を確定するタイミングを、次のアイテムの行動値を設定する時点とします。

  • “ずらす”は、即時報酬値を確定するタイミングを、 部品「即時報酬確定」(6.23 章)にアイテムが到着した時点とします。 具体的には、呼び出すと報酬が決定される関数(報酬決定関数)をアイテムの属性に設定し、即時報酬確定部品に到着した時に報酬決定関数が呼び出されます。

    • “報酬決定関数を設定するアイテム属性名”で指定するアイテム属性に報酬決定関数を設定します。アイテムがフローアイテムリストであった場合、そのリスト内の全てのアイテムが対象になります。

7 リンク

7.1 ポートの動作

入力ポートは部品を構成する要素のひとつで、他の出力ポートからリンクが結 ばれていればフローアイテムを入力します。キューを持つ場合と持たない場合 があります。キューを持たない場合はセレクタによってどの出力ポートから入 力するかを決定します。部品は複数の入力ポートを持ちますがひとつも存在し ない場合もあります。

出力ポートは部品を構成する要素のひとつで、他の入力ポートにリンクが結ば れていればフローアイテムを出力します。キューを持つ場合と持たない場合が あります。キューを持たない場合はセレクタによってどの入力ポートへ出力す るかを決定します。部品は複数の出力ポートを持ちますがひとつも存在しない 場合もあります。

部品共通設定タブのポートのキューサイズが 0 でないなら、そのポートはキュー を持ちます。0 の場合は、そのポートはキューを持ちません。入力ポートの キューは必ず FIFO キュー(20 章)になります。

7.2 セレクタ

入力ポートのセレクタの場合、その入力ポートに入力する複数のリンク \{L_i\}\quad(1 \le i \le n)から、セレクタはひとつのL_kを選択し、そ のリンクの先の出力ポートからフローアイテムを入力します。

出力ポートのセレクタの場合、その出力ポートから出力する複数のリンク\{L_i\}\quad(1 \le i \le n)から、セレクタはひとつのL_kを選択し、そのリンクの先の入力ポートへフローアイテムを出力します。

セレクタとしては、以下が利用可能で、それぞれ部品共通設定タブのポートの選択方式で指定出来ます。

7.2.1 ランダム(一様)

確率P(L_i)=1/nでリンクL_iを選びます。

7.2.2 ランダム(重み付き)

重みを \{w_i\}とすると、確率P(L_i)=w_i/\sum{w_i}でリンクL_iを選びます。

7.2.3 ラウンドロビン

セレクタが呼ばれた回数を k ($ $)とすると k 番目に リンク L_j, j = ((k-1) \bmod n) + 1 を選びます。

7.2.4 固定

常に指定されたリンクを選びます。

7.2.5 最短キュー

リンクの先のポートのキューが最も少ないリンクを選びます。

ただし、最小キューサイズのリンクが複数ある場合は、セレクタが呼ばれた回数を k ($ $)とし、最小キューサイズのリンクのインデックス集合を \{a_i\}とすると、リンク L_{a_m}, m = \text{arg}\,\min_{i}{((k - a_i + 1) \bmod n)} を選択します。

7.2.6 ユーザ定義

ユーザが定義したセレクタを呼び出します。

ユーザ定義セレクタは以下のように書く事が出来ます。

def userSelector():
     # 必要なら前処理
     # ユーザ定義の変数定義
     def select(port, item = False):
         # セレクターは入力ポートで使われる場合と出力ポートで
         # 使われる場合がある。
         # (出力ポートの場合は item にフローアイテムが入っている)
         # port.links でリンクリストが取得出来る
         # それを使って、
         #    * 入力ポートなら入力するリンクをひとつ返す
         #    * 出力ポートなら出力するリンクをひとつ返す
         # あるいは False を返す事も出来るが、その場合、
         # 永久にその入/出力ポートからは入/出力しない。
     return select

例えば、あるリンクを一様に選ぶセレクタは以下のように定義する事が出来ます。

def userSelector():
    r = uniformDistribution()
    def select(port, item = False):
        links = port.links
        if len(links) <= 0:
            return False
        else:
            index = int(next(r) * len(links))
            return links[index]
    return select

7.2.7 強化学習

強化学習によりリンクを選択します。強化学習によるセレクタを使用する場合は、以下を設定する必要があります。

強化学習モデル

使用する強化学習モデルを指定します。シミュレーションモデルに設定された離散イベント用強化学習モデルが選択できます。

エピソード

強化学習におけるエピソードの区別に関する設定を行います。 区別しない場合は、シミュレーション全体を1つのエピソードとみなして学習が行われます。 区別する場合は、エピソードを区別する文字列を設定します。 文字列の指定の際には、入出力対象のフローアイテムを item として参照できます。例えば、フローアイテムの属性 id でエピソードを区別したい場合は、 item.id と設定します。

行動とリンクの対応

強化学習モデルにおける行動とリンクとの対応付けを設定します。

即時報酬計算のタイミングをずらすか

強化学習が選択した、フローアイテムの行動に対する即時報酬値の計算を、次のフローアイテムの行動の選択時点からずらすかどうか設定します。 ずらす際には、どの名前のアイテム属性に報酬決定関数を設定するか、“報酬決定関数を設定するアイテム属性名”で設定します。 この報酬決定関数を呼び出すタイミングで即時報酬値の計算が行われます。

7.3 接続方式

部品間をリンクで結びシミュレーションモデルを作成しますが(5 章)、リンクの結び方によって動作が変わってきます。リンクの結び方を接続方式と呼びます。ここでは接続方式のパターンとその動作を説明します。

接続方式には以下のようなものがあります。

7.3.1 一対多(出力キュー0、入力キューm)

図 102において、m_i > 0, 1 \le i \le k, k > 0 の場合、

図 102: 接続方式1

フローアイテムを部品s の出力ポートへ出力すると、セレクタによって部品d_iの入力ポートの何れかにフローアイテムを出力します。もし、部品d_iの入力ポートのキューが一杯なら、出力出来ない状態でブロックします。

部品d_iの入力ポートから入力を行うと、部品d_iの入力ポートのキューが空でなければ入力し、空の場合は入力出来ない状態でブロックします。

最も良く使われる接続方式です。例えば、銀行において窓口が複数あり、お客は最も空いている窓口に並ぶ場合などがあります。

7.3.2 一対多(出力キュー0、入力キュー0)

図 103において、k > 0 の場合、

図 103: 接続方式2

フローアイテムを部品s の出力ポートへ出力すると、セレクタによって部品d_iの入力ポートの何れかにフローアイテムを出力しようとします。もし、部品d_iの入力ポートが受信要求をしていたら、フローアイテムが流れますが、部品d_iの入力ポートが受信要求をしていない場合は、出力出来ない状態でブロックします。

うまく使わないと部品sにフローアイテムがたまってしまうので注意が必要です。m=1の場合はよく使われます。例えば、物流システムにおいて、配送工程1と配送工程2の間などがあります。

7.3.3 一対多(出力キューn、入力キューm)

図 104において、n > 0, m_i > 0, 1 \le i \le k, k > 0 の場合は、部品sの出力ポートのキューに全てのフローアイテムがたまってしまい、フローアイテムが流れません。更にキューが一杯になると部品sの入力も滞ってしまいます。通常は誤った接続方式です。

図 104: 接続方式3

7.3.4 一対多(出力キューn、入力キュー0)

図 105において、n > 0, k > 0 の場合、

図 105: 接続方式4

フローアイテムを部品s の出力ポートへ出力すると、部品sの出力ポートのキューにフローアイテムをたくわえます。部品sの出力ポートが一杯なら出力出来ずにブロックします。

部品d_iの入力ポートから入力を行うと、部品_iの入力ポートのセレクタによって入力先を選びますが、この場合は常に部品sの出力ポートのキューから入力します。

よく使われる接続方式です。例えば、コールセンターにおいてオペレーターが自分で電話を取る場合などがあります。

7.3.5 多対一(出力キュー0、入力キューm)

図 106において、j > 0, m > 0 の場合、

図 106: 接続方式5

フローアイテムを部品d_iの出力ポートへ出力すると、セレクタによって出力先を選びますが、この場合は常に部品sへ出力します。部品sの入力ポートのキューが一杯なら出力出来ない状態でブロックします。

部品sの入力ポートから入力を行うと、部品sの入力ポートのキューが空でなければ入力し、空の場合は入力出来ない状態でブロックします。

よく使われる接続方式です。例えば、オフィスにおいて、ひとつのプリンタを複数の社員が待ち行列を作って使用する場合などがあります。

7.3.6 多対一(出力キュー0、入力キュー0)

図 107において、j > 0 の場合、

図 107: 接続方式6

フローアイテムを部品d_i の出力ポートへ出力すると、セレクタによって出力先を選びますが、 この場合は常に部品sへ出力しようとします。もし、部品sの入力ポートが受信要求をしていたら、フローアイテムが流れますが、部品sの入力ポートが受信要求をしていない場合は、出力出来ない状態でブロックします。

うまく使わないと部品d_iにフローアイテムがたまってしまいますので注意が必要です。m=1の場合はよく使われます。例えば、製品開発ラインにおいて、工程1と工程2の間で、その間にバッファ(キュー)がない場合などがあります。

7.3.7 多対一(出力キューn、入力キューm)

図 108において、m > 0, n_i > 0, 1 \le i \le j, j > 0 の場合は、部品d_iの出力ポートのキューに全てのフローアイテムがたまってしまい、フローアイテムが流れません。更にキューが一杯になると部品d_iの入力も滞ってしまいます。通常は誤った接続方式です。

図 108: 接続方式7

7.3.8 多対一(出力キューn、入力キュー0)

図 109において、n_i > 0, 1 \le i \le , j > 0 の場合、

図 109: 接続方式8

フローアイテムを部品d_i の出力ポートへ出力すると、部品d_iの出力ポートのキューにフローアイテムをたくわえます。部品d_iの出力ポートが一杯なら出力出来ずにブロックします。

部品sの入力ポートから入力を行うと、セレクタによって部品d_iの出力ポートの何れかからフローアイテムを入力します。部品sの入力ポートのキューが空なら入力出来ない状態でブロックします。

うまく使わないと部品d_iにフローアイテムがたまってしまいますので注意が必要です。例えば、ルータにおいて、複数の入力をラウンドロビンで処理する場合などがあります。

7.3.9 多対多

場合によっては多対多の接続もあります。例えば、一対多(出力キュー0、入力キューm)(7.3.1 章) などは出力側を多にする事で多対多の接続にも拡張出来ます。しかし、ひとつでも入/出力ポート双方にキューがあるようなリンクが存在する場合、フローアイテムがたまってしまうため、通常は誤った接続です。

または、多対一と一対多をつなげて多対多を構成する場合もあります。その場合は中央の部品(例えば「通過」部品)が中継地点になります。中央の部品の入力ポートあるいは出力ポートにキューがあれば、多対多の中継キューになります。なお、このような接続は、ストアの入出力部品(ストアへ追加、ストアから取得)を使っても表現する事が出来ます。また、中央の部品にキューがない場合は、n \cdot m 本のリンク貼るのと同じ事を表現します。

8 資源

モデル上に配置する資源についてを説明します。

資源とは、「利用するために待ち行列が発生するようなもの」をモデル化したものです。以下のファシリティ、ストア、タンク、イベントがあります。

8.1 資源の編集

資源の下のラベルの以外の場所を左ダブルクリック、あるいは、資源の配置されている場所を右クリックして表示されるメニュー(3.5.1 章)から「編集」を選ぶと、資源編集画面が表示されます。

共通設定タブと属性設定タブで構成されます。

8.1.1 共通設定タブ

共通設定タブでは、図 110 のような画面構成になります。

図 110: 資源共通設定タブ
クラス名

自動生成コード(5.8.1 章)におけるこの資源のクラス名になります。編集する事が出来ません。

オブジェクト名

自動生成コード(5.8.1 章)におけるこの資源のインスタンス名になります。通常は編集する必要はありません。

説明

モデル編集画面におけるこの資源の名前になります。5.3.15 章 の方法でも変更する事が出来ます。

アニメーション表示条件、アニメーション表示範囲

アニメーションに関するパラメータです。詳細は(26 章)アニメーションにあります。

8.1.2 属性設定タブ

属性設定タブでは、図 111 のような画面構成になります。

図 111: 資源属性設定タブ

上のヘルプボタンを押すと、その資源の説明が表示されます。

資源ごとに表示される属性は変わります。資源の振る舞いを定めます。

8.2 イベント(Event)

図 112: イベント

イベント(図 112)は、発火されるまで待ち受けする同期資源を表します。発火を待つ時に待ち行列が発生します。発火側には待ち行列が発生しません。

例えば、「電話がかかってくる」などです。電話がかかってくるまで電話を待つが、複数の人が電話を待っている場合、並びが速いもの順に受ける場合もあり、優先度が高い順に受ける場合などがあります。

イベントに関する部品としては、部品「イベント待ち」(6.4 章)、部品「イベント発火」(6.5 章)などがあります。

キュー

発火を待つ際に並ぶキューを表します。

記録

発火待ちの状態を記録するかどうかを表します。

8.3 ファシリティ(Facility)

図 113: ファシリティ

ファシリティ(図 113)は、排他的に利用可能な複数の離散資源を持つものを表します。資源取得には待ち行列が発生します。資源開放には待ち行列が発生しません。

例えば、「銀行の窓口」などです。銀行の窓口がひとつしかないとすると、ある人がその窓口を占有していると、他の人はその窓口が空くのを待たなければなりません。窓口を占有していた人の処理が終了すればその窓口を開放し、待ち行列に並んでいた次の人が窓口を占有します。

ファシリティに関する部品としては、部品「ファシリティ要求」(6.6 章)、部品「ファシリティ解放」(6.7 章)、部品「ファシリティ利用」(6.8 章)などがあります。

同時利用容量

同時に利用可能な離散資源の容量を表します。

キュー

資源が利用できない場合に並ぶキューを表します。

記録

資源の利用状態を記録するかどうかを表します。

容量変化スケジュール

スケジュール有りを選んだ場合、容量の変化スケジュールを登録する事ができる。開始時オフセット時間は、開始時間を指定する。スケジュールには、表指定か式にてスケジュールを指定する。式の場合、時間と容量からなるタプルのリストを指定する。繰り返しには、繰り返し無し、あるいは、繰り返し時間を指定する。繰返し時間は、その時間でスケジュールが繰返される事を意味する。つまり、スケジュールで指定した時間以上を指定しなくてはならない。

停止確率

停止有りを選んだ場合、停止間隔と回復を指定する。停止間隔には、停止間隔を指定する。回復有りを指定した場合、回復時間を指定する。回復無しを選んだ場合は回復しない。

停止時に自動開放

停止時に自動開放を指定した場合、ファシリティが利用不可になった時に、強制的に開放する。

8.4 ストア(Store)

図 114: ストア

ストア(図 114)は、有限の離散量資源を貯えられるようなものを表します。取得と追加操作が可能で、双方に待ち行列が発生します。取得と追加操作は非対称で良く、取得しても再追加する必要はなく、追加しても再取得する必要はありません。

例えば、「コンビニエンスストアの棚」などです。コンビニエンスストアの棚には複数の商品がありますが、お店の人は定期的に商品を入荷し配置するし、定期的にお客がその商品を買います。棚が一杯の時は商品を配置出来す、棚が空の場合は商品を買う事は出来ません。

ストアに関する部品としては、部品「ストアから取得」(6.9 章)や部品「ストアへ追加」(6.10 章)があります。

容量

離散量資源を貯えられる容量を表します。

入力キュー

離散量資源を貯えるときに並ぶキューを表します。

出力キュー

離散量資源を取り出すときに並ぶキューを表します。

記録

資源の利用状態を記録するかどうかを表します。

容量変化スケジュール

スケジュール有りを選んだ場合、容量の変化スケジュールを登録する事ができる。開始時オフセット時間は、開始時間を指定する。スケジュールには、表指定か式にてスケジュールを指定する。式の場合、時間と容量からなるタプルのリストを指定する。繰り返しには、繰り返し無し、あるいは、繰り返し時間を指定する。繰返し時間は、その時間でスケジュールが繰返される事を意味する。つまり、スケジュールで指定した時間以上を指定しなくてはならない。

8.5 タンク(Tank)

図 115: タンク

タンク(図 115)は、有限の連続量資源を貯えられるようなものを表します。取得と追加操作が可能で、双方に待ち行列が発生します。取得と追加操作は非対称で良く、取得してもそれを再追加する必要はなく、また追加してもそれを再取得する必要はありません。

例えば、「ガソリンタンク」などです。ある車のガソリンタンクには、一定量のガソリンが入っているが、車が走ればその量は減り、ガソリンスタンドで給油すれば量が増えます。容量が空の場合は車は走れず、容量が一杯の時はそれ以上給油出来ません。

タンクに関する部品としては、部品「タンクから取得」(6.11 章)や部品「タンクへ追加」(6.12 章)があります。

容量

連続量資源を貯えられる容量を表します。

初期量

始めに貯えている連続量資源の量を表します。

入力キュー

連続量資源を貯えるときに並ぶキューを表します。

出力キュー

連続量資源を取り出すときに並ぶキューを表します。

記録

資源の利用状態を記録するかどうかを表します。

容量変化スケジュール

スケジュール有りを選んだ場合、容量の変化スケジュールを登録する事ができる。開始時オフセット時間は、開始時間を指定する。スケジュールには、表指定か式にてスケジュールを指定する。式の場合、時間と容量からなるタプルのリストを指定する。繰り返しには、繰り返し無し、あるいは、繰り返し時間を指定する。繰返し時間は、その時間でスケジュールが繰返される事を意味する。つまり、スケジュールで指定した時間以上を指定しなくてはならない。

9 フローアイテム

モデル上に配置するフローアイテムについてを説明します。

フローアイテムとは、シミュレーション内に流れるものです。出力ポートからリンクを辿り入力ポートに入り、部品の動作の契機になります。モデル上に配置するのは、フローアイテムの種類(class)であり、「生成」部品でその実体を作ります。

9.1 フローアイテムの編集

フローアイテムの下のラベルの以外の場所を左ダブルクリック、あるいは、フローアイテムの配置されている場所を右クリックして表示されるメニュー(3.5.1 章)から「編集」を選ぶと、フローアイテム編集画面が表示されます。

共通設定タブと属性設定タブで構成されます。

9.1.1 共通設定タブ

共通設定タブでは、図 116 のような画面構成になります。

図 116: フローアイテム共通設定タブ
クラス名

自動生成コード(5.8.1 章)におけるこのフローアイテムのクラス名になります。通常は編集する必要はありません。

説明

モデル編集画面におけるこのフローアイテムの名前になります。5.3.15 章 の方法でも変更する事が出来ます。

9.1.2 属性設定タブ

属性設定タブでは、図 117 のような画面構成になります。

図 117: フローアイテム属性設定タブ

上のヘルプボタンを押すと、そのフローアイテムの説明が表示されます。

フローアイテムごとに属性リストとして複数の属性を定義出来ます。

「+」を押すと、属性が追加され末尾に表示されます。

「–」を押すと、その属性が削除されます。

各属性は、以下で構成されます。

名前

フローアイテムの属性の自動生成コード(5.8.1 章)におけるメンバー名になります。

説明

フローアイテムの属性の説明になります。

フローアイテムの属性の値を設定します。19 章の任意の乱数を設定する事が出来ます。

値フラグ

「系列を返す」を設定した場合「値」で設定した乱数発生器を返します。「値を返す」を設定した場合、「値」で設定した乱数発生器からひとつの乱数を生成しその結果を返します。

9.2 アイテム(FlowItem)

図 118: アイテム

アイテム(図 118)は、部品「生成」で生成され、モデル 上を流れるアイテムを表します。

例えば、工場内で生産される「製品」、来店する「客」などです。また一定の 間隔でアクションを起こすためのトリガーとしても利用できます。

アイテムに関する部品としては、部品「生成」(6.2 章)があります。

属性リスト

アイテムの持つ属性を表します。任意個の異なるデータを属性として設定できます。

10 変数

モデル上に配置する変数についてを説明します。

変数とは、連続部品(6.22 章)による連続シミュレーションによって時間に対し連続的に変化するような変数です。

連続変数と補助変数があります。連続変数は、連続的に変化する変数そのものを示します。補助変数は、連続変数の関数として表せるような変数を示します。

10.1 変数の編集

変数の下のラベルの以外の場所を左ダブルクリック、あるいは、変数の配置されている場所を右クリックして表示されるメニュー(3.5.1 章)から「編集」を選ぶと、変数編集画面が表示されます。

共通設定タブと属性設定タブで構成されます。

10.1.1 共通設定タブ

共通設定タブでは、図 119 のような画面構成になります。

図 119: 変数共通設定タブ
オブジェクト名

自動生成コード(5.8.1 章)におけるこの変数のインスタンス名になります。

説明

モデル編集画面におけるこの変数の名前になります。5.3.15 章 の方法でも変更する事が出来ます。

10.1.2 属性設定タブ

属性設定タブでは、図 120 のような画面構成になります。

図 120: 変数属性設定タブ

連続変数か、補助変数かによって、画面構成は異なりますが、ここで、変数の属性を設定する事ができます。

上のヘルプボタンを押すと、その変数の説明が表示されます。

10.2 連続変数(Value)

図 121: 連続変数

連続変数(図 121)は、連続的に変化する値を表します。

初期値

連続変数の初期値を表します。

最大値

連続変数の最大値を表します。

最小値

連続変数の最小値を表します。

記録

連続変数の状態を記録するかどうかを表します。

10.3 補助変数(Expression)

図 122: 補助変数

補助変数(図 122)は、連続変数の関数です。

参照変数

「式」で使用する連続変数のリストを指定します。

「参照変数」に指定した連続変数を使った式を指定します。

記録

補助変数の状態を記録するかどうかを表します。

11 エージェント

モデル上に配置するエージェントについて説明します。

エージェントとは、個々の自律的に動作する主体を表現するものです。エージェントには、固定ステップで同期的に動作する同期エージェント、個々のエージェントが非同期に動作する非同期エージェントがあります。エージェントは必ずエージェント集合に属します。

エージェント集合とは、互いに影響を及ぼしあいながら行動する複数のエージェントの集りを表現するものです。エージェント集合は必ず環境に属します。

同期エージェントは、エージェントの一種ですが、特に全てのエージェントの状態が固定タイミングで変化するようなエージェントです。例えば、交通シミュレーションや物理シミュレーションなどで用いられる事が多いです。メリットとしては、エージェント数の増加に対してスケールしやすい事があります。デメリットとしては、より精度の高いシミュレーションにするには、すべてのエージェントのステップ幅を短くする必要があり、(間隔の分散の大きい)離散イベントの処理は、効率が悪い事などがあります。

非同期エージェントも、エージェントの一種ですが、特に個々のエージェントの状態が独立に離散タイミングで変化するようなエージェントです。例えば、ツイッターの伝播シミュレーション、購買行動シミュレーションなどで用いられる事が多いです。メリットとしては、イベント発生間隔が疎なら、高速な離散イベントシミュレーションができる事があります。デメリットとしては、エージェント数の増加に対して、あまりスケールしない事があります。

11.0.1 属性設定タブ

エージェント編集画面を開くと、最初に属性設定タブが開きます。

属性設定タブでは、図 123 のような画面構成になります。

図 123: エージェント属性設定タブ

同期エージェントか、非同期エージェントかによって、画面構成は多少異なります。

画面内の編集ボタンを押すと、そのコードを編集するタブが加わり、そのタブが選択状態になります。そのタブ内で、コードを編集する事が出来ます。

上のヘルプボタンを押すと、その部品の説明が表示されます。

11.1 同期エージェント(SynchronousAgent)

図 124: 同期エージェント

「同期エージェント」(図 124)は同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します

エージェントの初期化処理

このエージェントの初期化処理を定義します。

エージェントのステップ処理

このエージェントのステップ処理を定義します。次の設定項目を含みます。

強化学習を使用するか

チェックを入れると、強化学習による行動提示をステップ処理中に利用できます。

強化学習モデル

強化学習を利用する際のモデルをあらわします。

エージェント間で学習結果を分けるか

チェックを入れると、強化学習を利用する際に、エージェントごとに学習結果のモデルが分けられます。指定しないとエージェント間で共通の学習モデルが使用されます。

「編集」ボタンを押すと、ステップ処理関数の記述画面が開きます。 上記設定項目で、強化学習を使用するようにしていると、関数の最初と最後に強化学習を利用するための コードが挿入されます。挿入されているコードで定義されている act 変数に強化学習により提案された行動値が入っています。 act 変数に格納された行動値の各次元の値は act["次元名"] という形でアクセスできます。 行動値の各次元の値を参考にして、行動に対応した実際の処理を記述して下さい。 なお、実際に行った処理に対応する行動が、提案された行動と異なる場合は、 対応する行動の値を act に設定しなおして下さい。

エージェントのカスタムコード

このエージェントのカスタム処理を定義します。

エージェント集合のステップ間隔

このエージェント集合のステップ間隔を表します。

エージェントの追加を次ステップまで凍結する

指定されていた場合、エージェントの追加処理は次ステップまで凍結されます。

エージェントの削除を次ステップまで凍結する

指定されていた場合、エージェントの削除処理は次ステップまで凍結されます。

エージェント集合の初期化処理

このエージェント集合の初期化処理を定義します。

エージェント集合のステップ処理

このエージェント集合のステップ処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

11.2 SFMエージェント(SFMAgent)

図 125: SFMエージェント

「同期エージェント」(図 125)は同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します

エージェントの初期化処理

このエージェントの初期化処理を定義します。

エージェントのステップ処理

このエージェントのステップ処理を定義します。次の設定項目を含みます。

強化学習を使用するか

チェックを入れると、強化学習による行動提示をステップ処理中に利用できます。

強化学習モデル

強化学習を利用する際のモデルをあらわします。

エージェント間で学習結果を分けるか

チェックを入れると、強化学習を利用する際に、エージェントごとに学習結果のモデルが分けられます。指定しないとエージェント間で共通の学習モデルが使用されます。

「編集」ボタンを押すと、ステップ処理関数の記述画面が開きます。 上記設定項目で、強化学習を使用するようにしていると、関数の最初と最後に強化学習を利用するための コードが挿入されます。挿入されているコードで定義されている act 変数に強化学習により提案された行動値が入っています。 act 変数に格納された行動値の各次元の値は act["次元名"] という形でアクセスできます。 行動値の各次元の値を参考にして、行動に対応した実際の処理を記述して下さい。 なお、実際に行った処理に対応する行動が、提案された行動と異なる場合は、 対応する行動の値を act に設定しなおして下さい。

エージェントの次の経路地点決定処理

このエージェントの次の経路地点を求める処理を定義します。

エージェントのカスタムコード

このエージェントのカスタム処理を定義します。

エージェント集合のステップ間隔

このエージェント集合のステップ間隔を表します。

エージェント集合の初期化処理

このエージェント集合の初期化処理を定義します。

エージェント集合のステップ処理

このエージェント集合のステップ処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

11.3 粒子フィルタエージェント(ParticleFilterAgent)

図 126: 粒子フィルタエージェント

「同期エージェント」(図 124)は同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します

エージェントの初期化処理

このエージェントの初期化処理を定義します。

エージェントのステップ処理

このエージェントのステップ処理を定義します。次の設定項目を含みます。

強化学習を使用するか

チェックを入れると、強化学習による行動提示をステップ処理中に利用できます。

強化学習モデル

強化学習を利用する際のモデルをあらわします。

エージェント間で学習結果を分けるか

チェックを入れると、強化学習を利用する際に、エージェントごとに学習結果のモデルが分けられます。指定しないとエージェント間で共通の学習モデルが使用されます。

「編集」ボタンを押すと、ステップ処理関数の記述画面が開きます。 上記設定項目で、強化学習を使用するようにしていると、関数の最初と最後に強化学習を利用するための コードが挿入されます。挿入されているコードで定義されている act 変数に強化学習により提案された行動値が入っています。 act 変数に格納された行動値の各次元の値は act["次元名"] という形でアクセスできます。 行動値の各次元の値を参考にして、行動に対応した実際の処理を記述して下さい。 なお、実際に行った処理に対応する行動が、提案された行動と異なる場合は、 対応する行動の値を act に設定しなおして下さい。

エージェントのカスタムコード

このエージェントのカスタム処理を定義します。

エージェント集合のステップ間隔

このエージェント集合のステップ間隔を表します。

エージェントの追加を次ステップまで凍結する

指定されていた場合、エージェントの追加処理は次ステップまで凍結されます。

エージェントの削除を次ステップまで凍結する

指定されていた場合、エージェントの削除処理は次ステップまで凍結されます。

エージェント集合の初期化処理

このエージェント集合の初期化処理を定義します。

エージェント集合のステップ処理

このエージェント集合のステップ処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

11.4 NWマクロエージェント(NWMacroAgent)

図 127: NWマクロエージェント

「NWマクロエージェント」(図 125)は同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します

エージェント集合のステップ処理

このエージェント集合のステップ処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

11.5 NWエージェント(NWAgent)

図 128: NWエージェント

「同期エージェント」(図 125)は同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します

エージェントの初期化処理

このエージェントの初期化処理を定義します。

エージェントのステップ処理

このエージェントのステップ処理を定義します。次の設定項目を含みます。

強化学習を使用するか

チェックを入れると、強化学習による行動提示をステップ処理中に利用できます。

強化学習モデル

強化学習を利用する際のモデルをあらわします。

エージェント間で学習結果を分けるか

チェックを入れると、強化学習を利用する際に、エージェントごとに学習結果のモデルが分けられます。指定しないとエージェント間で共通の学習モデルが使用されます。

「編集」ボタンを押すと、ステップ処理関数の記述画面が開きます。 上記設定項目で、強化学習を使用するようにしていると、関数の最初と最後に強化学習を利用するための コードが挿入されます。挿入されているコードで定義されている act 変数に強化学習により提案された行動値が入っています。 act 変数に格納された行動値の各次元の値は act["次元名"] という形でアクセスできます。 行動値の各次元の値を参考にして、行動に対応した実際の処理を記述して下さい。 なお、実際に行った処理に対応する行動が、提案された行動と異なる場合は、 対応する行動の値を act に設定しなおして下さい。

エージェントの次の経路地点決定処理

このエージェントの次の経路地点を求める処理を定義します。

エージェントのカスタムコード

このエージェントのカスタム処理を定義します。

エージェント集合のステップ間隔

このエージェント集合のステップ間隔を表します。

エージェント集合の初期化処理

このエージェント集合の初期化処理を定義します。

エージェント集合のステップ処理

このエージェント集合のステップ処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

11.6 非同期エージェント(AsynchronousAgent)

図 129: 非同期エージェント

「非同期エージェント」(図 129)は非同期エージェントを定義します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

エージェント集合の名前

エージェント集合の名前を表します。

エージェント集合のクラス名

エージェント集合のクラス名を表します。

エージェント集合のオブジェクト名

エージェント集合のオブジェクト名を表します。

環境オブジェクト

このエージェント集合が属す環境を表します。

エージェントの初期化処理

このエージェントの初期化処理を定義します。

エージェントのプロセス処理

このエージェントのプロセス処理を定義します。

エージェントのカスタムコード

このエージェントのカスタム処理を定義します。

エージェント集合の初期化処理

このエージェント集合の初期化処理を定義します。

エージェント集合の起動処理

このエージェント集合の起動処理を定義します。

エージェント集合のカスタムコード

このエージェント集合のカスタム処理を定義します。

エージェント集合の可視化

このエージェント集合の可視化処理を定義します。

12 環境

モデル上に配置する環境について説明します。

環境とは、エージェント行動の基盤となるジオメトリ情報や、全エージェントのテーブルなどを管理するものです。

12.0.1 属性設定タブ

環境編集画面を開くと、最初に属性設定タブが開きます。

属性設定タブでは、図 130 のような画面構成になります。

図 130: 環境属性設定タブ

環境の種類によって、画面構成は多少異なります。

画面内の編集ボタンを押すと、そのコードを編集するタブが加わり、そのタブが選択状態になります。そのタブ内で、コードを編集する事が出来ます。

上のヘルプボタンを押すと、その部品の説明が表示されます。

12.1 SFM地図(SFMMap)

図 131: SFM地図

「SFM地図」(図 131)は、2次元のユークリッド空間上の、ソーシャルフォースモデル環境を作成します。SFM地図エディタ上で、地図を編集(13 章)出来ます。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

環境の名前

環境の名前を表します。

環境のクラス名

環境のクラス名を表します。

環境オブジェクト名

環境のオブジェクト名を表します。

地図

「地図編集」を選択すると、SFM地図エディタが起動します。SFM地図エディタ上で、地図を編集(13 章)出来ます。

可視化ツール

可視化ダッシュボード(16 章)を設定します。「ダッシュボードを起動」を選択すると可視化ダッシュボードがブラウザ上で起動します。

動画保存

動画を保存を選択するとエージェントフレームを保存できます。保存するためには、プロパティから「OpenH264 Video Codec provided by Cisco Systems,Incを利用する」にチェックを入れる必要があります。

ソーシャルフォースパラメータ

ソーシャルフォースモデルのパラメータを定義します。

エージェントパラメータのデフォルト値

それぞれのエージェントに与えられるパラメータのデフォルト値を定義します。

表示の有無

エージェントフレーム上の表示方式を指定します。「環境上のエージェントの描画処理」を修正する事で、細かな調整も可能です。

環境の初期化後の処理

この環境の初期化処理を定義します。

環境の描画処理

この環境の描画処理を定義します。

環境のエージェントの描画処理

この環境上のエージェントの描画処理を定義します。

環境のカスタムコード

この環境のカスタムコードを定義します。

12.2 SFM環境(SFMEnvironment)

図 132: SFM環境

「SFM環境」(図 132)は、2次元のユークリッド空間上の、ソーシャルフォースモデル環境を作成します。x 座標は x0 から x1 までをとり、y座標は y0 から y0 までをとります。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

環境の名前

環境の名前を表します。

環境のクラス名

環境のクラス名を表します。

環境オブジェクト名

環境のオブジェクト名を表します。

x0, x1

x 座標の範囲を表します。

y0, y1

y 座標の範囲を表します。

可視化ツール

可視化ダッシュボード(16 章)を設定します。「ダッシュボードを起動」を選択すると可視化ダッシュボードがブラウザ上で起動します。

動画保存

動画を保存を選択するとエージェントフレームを保存できます。保存するためには、プロパティから「OpenH264 Video Codec provided by Cisco Systems,Incを利用する」にチェックを入れる必要があります。

ソーシャルフォースパラメータ

ソーシャルフォースモデルのパラメータを定義します。

エージェントパラメータのデフォルト値

それぞれのエージェントに与えられるパラメータのデフォルト値を定義します。

表示の有無

エージェントフレーム上の表示方式を指定します。「環境上のエージェントの描画処理」を修正する事で、細かな調整も可能です。

環境の初期化後の処理

この環境の初期化処理を定義します。

環境の描画処理

この環境の描画処理を定義します。

環境のエージェントの描画処理

この環境上のエージェントの描画処理を定義します。

環境のカスタムコード

この環境のカスタムコードを定義します。

12.3 PowerlawClusterグラフ(PowerlawClusterRandomGraph)

図 133: PowerlawClusterグラフ

「PowerlawClusterグラフ」(図 133)は、スケールフリー性(次数分布のべき乗則)を持ったネットワークを作成します。m 個のノードからなら空のグラフから開始し、ノード数が n になるまで成長させるのは Barabasi-Albert モデルと同様ですが、ノードの追加時に、確率 p で、triangle を生成します。 グラフは無向グラフになります。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

ノード数

n を表します。

各ステップで追加するエッジ数

m を表します。

triangle を生成する確率

p を表します。

乱数の種

乱数の種を表します。グローバル系列の場合はグローバル系列から乱数の種を初期化します。

12.4 NW地図(NWMap)

図 134: NW地図

「SFM地図」(図 131)は、2次元のユークリッド空間上の、ソーシャルフォースモデル環境を作成します。SFM地図エディタ上で、地図を編集(13 章)出来ます。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

環境の名前

環境の名前を表します。

環境のクラス名

環境のクラス名を表します。

環境オブジェクト名

環境のオブジェクト名を表します。

地図

「地図編集」を選択すると、SFM地図エディタが起動します。SFM地図エディタ上で、地図を編集(13 章)出来ます。

相互作用の強さ(N)、相互作用の範囲(m)、弾性係数(kg/s2)、散逸係数(kg/ms)、最大影響半径(m)、経路再探索間隔(s)、最適速度(m/s)、最高速度(m/s)、歩行者の半径(m)、加速時間(s)、体重(kg)、外力の変動係数

ソーシャルフォースモデルのパラメータを表します。

歩行者半径表示、速度ベクトル表示、歩行者間外力表示、障害物外力表示、経路グラフ表示、Corridor Map、背景画像、ユーザー定義領域

エージェントフレーム上の表示方式を指定します。「環境上のエージェントの描画処理」を修正する事で、細かな調整も可能です。

環境の初期化後の処理

この環境の初期化処理を定義します。

環境の描画処理

この環境の描画処理を定義します。

環境のエージェントの描画処理

この環境上のエージェントの描画処理を定義します。

環境のカスタムコード

この環境のカスタムコードを定義します。

12.5 NWマクロ地図(NWMacroMap)

図 135: NWマクロ地図

「NWマクロ地図」(図 131)は、2次元のユークリッド空間上のマクロモデル環境を作成します。5種類の入力ファイルを用意することで、マクロモデルを実行できます。有向グラフモードの地図エディタ上で地図を編集(13 章)すると、そこから入力ファイルを自動生成することもできます。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

環境の名前

環境の名前を表します。

環境のクラス名

環境のクラス名を表します。

環境オブジェクト名

環境のオブジェクト名を表します。

地図

「地図編集」を選択すると、有向グラフモードの地図エディタが起動します。地図エディタ上で、地図を編集(13 章)出来ます。

CSV自動生成

「CSV自動生成」を押下すると、「地図編集」で編集した地図に基づいて入力ファイルを自動生成します。

CSVフォルダパス

入力ファイルを置くフォルダを定義します。

エッジ情報CSVパス

エッジ情報入力ファイルの名前を定義します。

車種情報CSVパス

車種情報入力ファイルの名前を定義します。

経路地点情報CSVパス

経路地点情報入力ファイルの名前を定義します。

OD情報CSVパス

OD情報入力ファイルの名前を定義します。

侵入禁止情報CSVパス

侵入禁止情報入力ファイルの名前を定義します。

画像取得先

画像取得先を定義します。値は “OpenStreetMap”, “国土地理院”, “無し” のいずれかであり、 “無し” の場合画像取得を行いません。

移動コスト再計算の頻度 [sec]

移動コスト再計算の頻度を定義します。

リンク進入待ちキューの所要時間見積もりにおける上限値 [sec]

リンク進入待ちキューの所要時間見積もりにおける上限値を定義します。

エージェントの最低移動速度 [km/h]

エージェントの最低移動速度を定義します。

サブリンク分割長さ [m]

サブリンク分割長さを定義します。

サブリンク比率

サブリンク比率を定義します。

ログ間隔 [sec]

ログ間隔を定義します。

レコード出力フォルダパス

レコード出力フォルダパスを定義します。

動画保存

動画保存の設定を定義します。

表示の有無
表示する内容を定義します。次の設定項目を含みます。 歩行者半径

歩行者半径の表示・非表示を定義します。

経路グラフ

経路グラフの表示・非表示を定義します。

背景画像

背景画像グラフの表示・非表示を定義します。

ユーザー定義領域

ユーザー定義領域の表示・非表示を定義します。

エージェント視野

エージェント視野の表示・非表示を定義します。

枠線

枠線の表示・非表示を定義します。

ヒートマップ

ヒートマップの表示・非表示を定義します。

環境の初期化後の処理

この環境の初期化処理を定義します。

環境の描画処理

この環境の描画処理を定義します。

環境のエージェントの描画処理

この環境上のエージェントの描画処理を定義します。

環境のカスタムコード

この環境のカスタムコードを定義します。

12.6 格子グラフ(LatticeGraph)

図 136: 格子グラフ

「格子グラフ」(図 136)は、幅 width、高さ height の格子グラフを作成します。 4 方格子、6 方格子、8 方格子が選べます。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

格子グラフの幅

width を表します。

格子グラフの高さ

height を表します。

格子グラフの接続方式

4 方格子、6 方格子、8 方格子を表します。

有向グラフ

有向グラフか否か指定します。

12.7 GraphMLフォーマットグラフ(GraphMLFormatGraph)

図 137: GraphMLフォーマットグラフ

「GraphMLフォーマットグラフ」(図 137)は、GraphML フォーマットのグラフをファイルからグラフを作成します。

GraphML フォーマットについては、22.1.2 章を参照して下さい。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

グラフファイル(GraphML形式)

「グラフファイルの取り込み」を押すと、GraphML ファイルのインポートダイアログが開くので、ここで取り込みたい GraphML ファイルを選択します。

12.8 GNPグラフ(GNPRandomGraph)

図 138: GNPグラフ

「GNPグラフ」(図 138)は、ノード数 n のランダムグラフを作成します。おのおののエッジは確率 p で生成されます。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

ノード数

n を表します。

エッジ生成確率

p を表します。

有向グラフ

有向グラフか否か指定します。

乱数の種

乱数の種を表します。グローバル系列の場合はグローバル系列から乱数の種を初期化します。

12.9 GNMグラフ(GNMRandomGraph)

図 139: GNMグラフ

「GNMグラフ」(図 139)は、ノード数 n, エッジ数 m のランダムグラフを作成します。 ただし、m が完全グラフのエッジ数を越えた場合は、完全グラフを返します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

ノード数

n を表します。

エッジ数

m を表します。

有向グラフ

有向グラフか否か指定します。

乱数の種

乱数の種を表します。グローバル系列の場合はグローバル系列から乱数の種を初期化します。

12.10 GEXFフォーマットグラフ(GEXFFormatGraph)

図 140: GEXFフォーマットグラフ

「GEXFフォーマットグラフ」(図 140)は、GEXF フォーマットのグラフをファイルからグラフを作成します。

GEXF フォーマットについては、22.1.1 章を参照して下さい。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

グラフファイル(GEXF形式)

「グラフファイルの取り込み」を押すと、GEXF ファイルのインポートダイアログが開くので、ここで取り込みたい GEXF ファイルを選択します。

12.11 ユークリッド2D(Euclid2D)

図 141: ユークリッド2D

「ユークリッド2D」(図 141)は、2次元のユークリッド空間を作成します。x 座標は x0 から x1 までをとり、y座標は y0 から y0 までをとります。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

x0, x1

x 座標の範囲を表します。

y0, y1

y 座標の範囲を表します。

12.12 環境(Environment)

図 142: 環境

「環境」(図 142)は、空の環境を作成します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

12.13 カスタムグラフ(CustomGraph)

図 143: カスタムグラフ

「カスタムグラフ」(図 143)は、空のグラフを作成します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

有向グラフ

有向グラフか否か指定します。

12.14 完全グラフ(CompleteGraph)

図 144: 完全グラフ

「完全グラフ」(図 144)は、ノード数 n の完全グラフを作成します。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

ノード数

n を表します。

有向グラフ

有向グラフか否か指定します。

12.15 BarabasiAlbertグラフ(BarabasiAlbertRandomGraph)

図 145: BarabasiAlbertグラフ

「BarabasiAlbertグラフ」(図 145)は、Barabasi-Albert モデルに従ったスケールフリーネットワークを作成します。 m 個のノードからなら空のグラフから開始し、ノード数が n になるまで成長させます。ノードを追加する時、既に存在する m 個のノードにエッジを張りますが、この時、エッジが張られる確率は、それぞれのノードのその時点での次数に比例します。 グラフは無向グラフになります。

(コード編集についてのより詳細な解説は psim 言語リファレンスマニュアルを参照下さい。)

ノード数

n を表します。

各ステップで追加するエッジ数

m を表します。

乱数の種

乱数の種を表します。グローバル系列の場合はグローバル系列から乱数の種を初期化します。

13 SFM地図エディタ

SFM地図エディタについて説明します。

SFM地図エディタは、SFM(ソーシャルフォースモデル)の地図環境を編集するエディタです。

SFM地図エディタは、SFM地図環境内から起動する事が出来ます。

13.1 SFM地図エディタの概要

起動画面は、図 146 のような画面構成になっています。

図 146: SFM地図エディタ

左側に編集モードタブがあり、中央に地図エディタタブがあり、右側にインスペクタタブがあります。

編集モードには、以下のモードがあります。

  • 移動可能領域操作モード

  • 経路地点操作モード

  • エッジ操作モード

  • 画像操作モード

  • 文字操作モード

  • ユーザー定義領域操作モード

適切なモードを選択して、地図エディタにて、地図を編集します。

大きくわけて、SFM 地図環境は 4 層構造になっています。

第一層は、環境の移動可能な2次元空間を多角形の集合として表わします(移動可能領域)。

第二層には、移動可能な空間上に、SFM の経路地点とエッジが乗っています(経路地点とエッジ)。

第三層には、シミュレーション時に参照できる独自の領域があります(ユーザー定義領域)。

第四層には、シミュレーション時に表示するための要素があります(画像と文字)。

13.2 移動可能領域操作モード

移動可能領域操作モードは、移動可能な2次元空間を編集するモードです。

領域の基本単位は、多角形であり、多角形を組み合わせる事で、様々な形状を表現します。

白い領域は移動可能空間、青い領域は移動不可空間(壁)を示しています。

領域を指定すると、例えば、図 147 のようになります。

図 147: 領域設定後

領域操作モードには、以下のツールがあります。

  • 領域選択

  • 矩形作成

  • 多角形作成

  • 閉領域作成

13.2.1 領域選択ツール

領域選択ツールは、領域の基本単位(多角形)を操作するツールです。

領域上で、左クリックすると、その領域が選択されます。

Shift をクリックしながら、領域をクリックすると、その領域も選択状態に加わります。

領域上で、左クリックを押しながらドラッグすると、その領域が移動します。

選択やドラッグといった操作を行うと、右側のインスペクタに情報が表示されます。

領域上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されている領域が削除されます。

回転

選択されている領域が回転します。

拡大縮小

選択されている領域が拡大縮小します。

グループ化

選択されている領域がグループ化します。

グループ解除

選択されている領域をグループ解除します。

背面に移動

選択されている領域を背面に移動します。

最背面に移動

選択されている領域を最背面に移動します。

前面に移動

選択されている領域を前面に移動します。

最前面に移動

選択されている領域を最前面に移動します。

13.2.2 矩形作成ツール

矩形作成ツールは、矩形の領域を作成するツールです。

このツールを選択すると、編集モードタブの下部に、「空間(移動可能)」と「壁(移動不可)」が表示されます。

空間(移動可能)が選択されている時は、空間を作成し、壁(移動不可)が選択されている時は、壁を作成します。

地図エディタタブにてドラッグする事で、選択している種類の矩形領域が作成されます。

13.2.3 多角形作成ツール

多角形作成ツールは、多角形の領域を作成するツールです。

編集モードタブの下部に、「空間(移動可能)」と「壁(移動不可)」があります。

空間(移動可能)が選択されている時は、空間を作成し、壁(移動不可)が選択されている時は、壁を作成します。

地図エディタタブにてクリックすると、最初の多角形の頂点が作成されます。続いてクリックする度に、多角形の頂点が追加されていきます。辺が交差するような多角形は作成できません。右クリックすると最後の点が削除されます。3 点以上頂点が作成されている状態で最初の頂点の丸にマウスを移動すると、領域が赤く表示され、そこでクリックすると、多角形が確定されます。

注意: 多角形選択中はメニュー操作等ができなくなります。多角形作成をキャンセルしたい場合、右クリックを連続して押して下さい。

13.2.4 閉領域作成ツール

閉領域作成ツールは、背景の DXF 情報に基いて閉領域を作成するツールです。

このツールは、背景に DXF が設定されている時のみに選択可能です。背景に DXF が設定されていない時は選択出来ません。

背景に DXF が設定されている場合、背景に DXF のエッジが表示されています。その DXF 上で任意の点をクリックすると、その領域が含まれる閉領域が多角形領域として認識されます。

領域の認識は DXF のバージョンによっては誤動作する場合もあります。認識可能な DXF エンティティは、LINE, LWPOLYLINE, CIRCLE, ARC のみです。CIRCLE, ARC に関しては、読み込み時に LINE に分割されます。認識方法としては、クリック点から下方に垂線を降ろし、その点から反時計回りに、一周した領域を認識します。領域内部に領域があった場合でも、それらも含めて、領域として認識します。微小な間隔のノード群は同一点と判定します。

オリジナルの DXF ファイルに領域認識に必要のない情報がある場合でも、それらの線分も境界と判断してしまいます。その場合、DXF を編集する外部ツール等を利用して、必要のないレイヤーを削除するなどの前処理を行う事を推奨します。あるいは、背景情報はあくまでも参考として、その上に矩形作成ツール、多角形作成ツール利用して、領域を作成していく方法もあります。

13.3 経路地点操作モード

経路点操作モードは、移動可能領域上の経路地点を編集するモードです。

経路地点を追加すると、例えば、図 148 のようになります。

図 148: 経路地点追加後

経路点操作モードには、以下のツールがあります。

  • 経路地点選択

  • 経路地点作成

  • 経路地点一括作成

13.3.1 経路地点選択ツール

経路地点選択ツールは、経路地点を操作するツールです。

経路地点上で、左クリックすると、その経路地点が選択されます。

Shift をクリックしながら、経路地点をクリックすると、その経路地点も選択状態に加わります。

経路地点上で、左クリックを押しながらドラッグすると、その経路地点が移動します。

選択やドラッグといった操作を行うと、右側のインスペクタに情報が表示されます。

経路地点上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されている経路地点が削除されます。

全経路地点を選択

全経路地点が選択されます。

エラー経路地点を選択

エラー経路地点が選択されます。

13.3.2 経路地点作成ツール

経路地点作成ツールは、経路地点を作成するツールです。

このツールを選択すると、編集モードタブの下部に、「半径(m)」を入力するテキストボックスが表示されます。

地図エディタタブにてクリックすると、その場所に、指定された半径の経路地点が作成されます。

13.3.3 経路地点一括作成ツール

経路地点作成ツールは、経路地点を一括作成するツールです。

このツールを選択すると、編集モードタブの下部に、「半径(m)」と「間隔(m)」を入力するテキストボックスが表示されます。

地図エディタタブにてドラッグして矩形領域を指定すると、その領域内にに、指定された間隔で指定された半径の経路地点が一括作成されます。

13.3.4 属性管理テーブル

経路地点は属性を持ちます。属性は「属性名」と「属性値」のペアの集合として表現されます。

編集モードの「経路地点」で右クリックすると、コンテキストメニューが表示され、属性管理テーブルを表示できます。

属性管理テーブルでは、属性を追加したり、属性を右クリックしてコンテキストメニューから属性を操作できます。

属性はインスペクタに表示されます。

13.4 エッジ操作モード

エッジ操作モードは、移動可能領域上の経路地点間を結ぶエッジを編集するモードです。

エッジを追加すると、例えば、図 149 のようになります。

エッジ操作モードには、以下のツールがあります。

図 149: 経路地点追加後
  • エッジ選択

  • エッジ作成

  • エッジ一括作成

13.4.1 エッジ選択ツール

エッジ選択ツールは、エッジを操作するツールです。

エッジ上で、左クリックすると、そのエッジが選択されます。

Shift をクリックしながら、エッジをクリックすると、そのエッジも選択状態に加わります。

選択を行うと、右側のインスペクタに情報が表示されます。

エッジ上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されているエッジが削除されます。

全エッジを選択

全エッジが選択されます。

エラーエッジを選択

エラーエッジが選択されます。

13.4.2 エッジ作成ツール

経路地点作成ツールは、エッジを作成するツールです。

地図エディタタブにて始点の経路地点からドラッグし、終点の経路地点でボタンを離すとその経路地点間に、エッジが作成されます。

13.4.3 エッジ一括作成ツール

エッジ作成ツールは、エッジを一括作成するツールです。

このツールを選択すると、編集モードタブの下部に、「最大距離(m)」を入力するテキストボックスが表示されます。

地図エディタタブにてドラッグして矩形領域を指定すると、その領域内の、指定された距離内の全ての経路地点間のエッジが一括作成されます。

13.4.4 属性管理テーブル

エッジは属性を持ちます。属性は「属性名」と「属性値」のペアの集合として表現されます。

編集モードの「エッジ」で右クリックすると、コンテキストメニューが表示され、属性管理テーブルを表示できます。

属性管理テーブルでは、属性を追加したり、属性を右クリックしてコンテキストメニューから属性を操作できます。

属性はインスペクタに表示されます。

13.5 画像操作モード

画像操作モードは、画像を配置するモードです。

配置した画像はS4シミュレーションでも表示されます。

画像操作モードには、以下のツールがあります。

  • 画像選択

  • 画像作成

13.5.1 画像選択ツール

画像選択ツールは、画像を操作するツールです。

画像上で、左クリックすると、その画像が選択されます。

Shift をクリックしながら、画像をクリックすると、その画像も選択状態に加わります。

画像上で、左クリックを押しながらドラッグすると、その画像が移動します。

選択やドラッグといった操作を行うと、右側のインスペクタに情報が表示されます。

領域上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されている画像が削除されます。

回転

選択されている画像が回転します。

拡大縮小

選択されている画像が拡大縮小します。

背面に移動

選択されている画像を背面に移動します。

最背面に移動

選択されている画像を最背面に移動します。

前面に移動

選択されている画像を前面に移動します。

最前面に移動

選択されている画像を最前面に移動します。

13.5.2 画像作成ツール

画像作成ツールは、画像を作成するツールです。

このツールを選択すると、編集モードタブの下部に、「画像ファイルを選択…」と「倍率」が表示されます。

「画像ファイルを選択…」にて画像ファイルを選択の上、マウスを地図上に置くと、配置画像が追随して表示されます。クリックで実際に配置できます。「倍率」は配置時の画像の大きさの係数を表します。

13.6 文字操作モード

文字操作モードは、文字を配置するモードです。

配置した文字はS4シミュレーションでも表示されます。

文字操作モードには、以下のツールがあります。

  • 文字選択

  • 文字作成

13.6.1 文字選択ツール

文字選択ツールは、文字を操作するツールです。

文字上で、左クリックすると、その文字が選択されます。

Shift をクリックしながら、文字をクリックすると、その文字も選択状態に加わります。

文字上で、左クリックを押しながらドラッグすると、その文字が移動します。

選択やドラッグといった操作を行うと、右側のインスペクタに情報が表示されます。

領域上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されている文字が削除されます。

色変更

選択されている文字の色を変更します。

回転

選択されている文字が回転します。

背面に移動

選択されている文字を背面に移動します。

最背面に移動

選択されている文字を最背面に移動します。

前面に移動

選択されている文字を前面に移動します。

最前面に移動

選択されている文字を最前面に移動します。

13.6.2 文字作成ツール

文字作成ツールは、文字を作成するツールです。

このツールを選択し、地図上で左クリックすると、その位置にテキストボックスが現れます(Enter で複数行入力できます)。テキストボックス外でクリックすると入力が終わり、文字が生成されます。

13.7 レイヤー

地図エディタは0個以上のレイヤーを持ちます。レイヤーは後述のユーザー定義領域を保持するための概念です。すべてのユーザー定義領域はいずれかのレイヤーに所属します。

経路地点やエッジはそれぞれ1つの属性管理テーブルが紐ついていましたが、ユーザー定義領域はレイヤーごとに異なる属性管理テーブルが紐つきます。

レイヤーは「レイヤーを追加」ボタンで追加できます。

レイヤーの上で右クリックすると、コンテキストメニューが表示されます。

属性管理テーブルを表示

選択されているレイヤーの属性管理テーブルを表示します。

レイヤー名を変更

選択されているレイヤーの名前を変更します。

削除

選択されているレイヤーを削除します。

背面に移動

選択されているレイヤーを背面に移動します。

前面に移動

選択されているレイヤーを前面に移動します。

13.8 ユーザー定義領域操作モード

ユーザー定義領域操作モードは、シミュレーション時に参照できる独自の領域を編集するモードです。

領域の基本単位は、多角形であり、多角形を組み合わせる事で、様々な形状を表現します。

内部が半透明の色で塗られている領域は正の領域、内部が透明(枠のみ)の領域は負の領域と呼びます。

同一のレイヤーに所属するユーザー定義領域は同じ色を持ちます。色は自動的に決定されます。

領域を指定すると、例えば、図 150 のようになります。

図 150: 領域設定後

領域操作モードには、以下のツールがあります。

  • 領域選択

  • 矩形作成

  • 多角形作成

  • 閉領域作成

13.8.1 領域選択ツール

領域選択ツールは、領域の基本単位(多角形)を操作するツールです。

領域上で、左クリックすると、その領域が選択されます。

Shift をクリックしながら、領域をクリックすると、その領域も選択状態に加わります。

領域上で、左クリックを押しながらドラッグすると、その領域が移動します。

選択やドラッグといった操作を行うと、右側のインスペクタに情報が表示されます。

領域上で、右クリックすると、コンテキストメニューが表示されます。

削除

選択されている領域が削除されます。

回転

選択されている領域が回転します。

拡大縮小

選択されている領域が拡大縮小します。

グループ化

選択されている領域がグループ化します。

グループ解除

選択されている領域をグループ解除します。

背面に移動

選択されている領域を背面に移動します。

最背面に移動

選択されている領域を最背面に移動します。

前面に移動

選択されている領域を前面に移動します。

最前面に移動

選択されている領域を最前面に移動します。

13.8.2 矩形作成ツール

矩形作成ツールは、矩形の領域を作成するツールです。

このツールを選択すると、編集モードタブの下部に、「正の領域」と「負の領域」が表示されます。

地図エディタタブにてドラッグする事で、選択している種類の矩形領域が作成されます。

13.8.3 多角形作成ツール

多角形作成ツールは、多角形の領域を作成するツールです。

編集モードタブの下部に、「正の領域」と「負の領域」があります。

地図エディタタブにてクリックすると、最初の多角形の頂点が作成されます。続いてクリックする度に、多角形の頂点が追加されていきます。辺が交差するような多角形は作成できません。右クリックすると最後の点が削除されます。3 点以上頂点が作成されている状態で最初の頂点の丸にマウスを移動すると、領域が赤く表示され、そこでクリックすると、多角形が確定されます。

注意: 多角形選択中はメニュー操作等ができなくなります。多角形作成をキャンセルしたい場合、右クリックを連続して押して下さい。

13.8.4 閉領域作成ツール

閉領域作成ツールは、背景の DXF 情報に基いて閉領域を作成するツールです。

このツールは、背景に DXF が設定されている時のみに選択可能です。背景に DXF が設定されていない時は選択出来ません。

背景に DXF が設定されている場合、背景に DXF のエッジが表示されています。その DXF 上で任意の点をクリックすると、その領域が含まれる閉領域が多角形領域として認識されます。

領域の認識は DXF のバージョンによっては誤動作する場合もあります。認識可能な DXF エンティティは、LINE, LWPOLYLINE, CIRCLE, ARC のみです。CIRCLE, ARC に関しては、読み込み時に LINE に分割されます。認識方法としては、クリック点から下方に垂線を降ろし、その点から反時計回りに、一周した領域を認識します。領域内部に領域があった場合でも、それらも含めて、領域として認識します。微小な間隔のノード群は同一点と判定します。

オリジナルの DXF ファイルに領域認識に必要のない情報がある場合でも、それらの線分も境界と判断してしまいます。その場合、DXF を編集する外部ツール等を利用して、必要のないレイヤーを削除するなどの前処理を行う事を推奨します。あるいは、背景情報はあくまでも参考として、その上に矩形作成ツール、多角形作成ツール利用して、領域を作成していく方法もあります。

13.8.5 属性管理テーブル

ユーザー定義領域はレイヤーごとに属性を持ちます。属性は「属性名」と「属性値」のペアの集合として表現されます。

編集モードのレイヤー名で右クリックすると、コンテキストメニューが表示され、属性管理テーブルを表示できます。

属性管理テーブルでは、属性を追加したり、属性を右クリックしてコンテキストメニューから属性を操作できます。

属性はインスペクタに表示されます。

13.9 Undo/Redo

全ての操作は、Undo/Redo 出来ます。

13.10 ファイルメニュー

13.10.1 地図初期化

地図初期化を選択すると、「横(m)」、「縦(m)」、「空間参照系」、「画面中心経度」、「画面中心緯度」を入力するダイアログが表示されます。

適切な値を入力し、OK すると、地図が指定されたサイズに初期化されます。「空間参照系」、「画面中心経度」、「画面中心緯度」は後述の GeoJSON インポート/エクスポート以外の操作では利用しません。

13.10.2 地図読み込み

SFM地図エディタで作成された地図情報(拡張子 svmap)を読み込みます。

地図ファイルは、プロジェクトフォルダ内に、拡張子 svmap という名前で data フォルダ内に保存されています。

13.10.3 背景 DXF 読み込み

背景に DXF ファイルを読み込みます。

DXF のバージョンによっては誤動作する場合もあります。認識可能な DXF エンティティは、LINE, LWPOLYLINE, CIRCLE, ARC のみです。CIRCLE, ARC に関しては、読み込み時に LINE に分割されます。

地図空間上のどこに、DXF の図形情報を配置するかを指定します(図 151)。

図 151: DXfファイル読み込み

上に表示されている DXF の図形をドラッグする事で、配置場所を移動出来ます。

地図自体のサイズを変更したい場合、適切なサイズに地図を初期化してから、DXF を配置して下さい。

DXF を配置すると、例えば、図 152 のような画面になります。

図 152: DXF読み込み後

認識された線分が表示されています。この時点では、背景に DXF が設定されているだけで、領域としては認識されていません。領域操作モードにて移動可能領域を設定する必要があります。なお、DXF を読み込んだ場合、領域操作モードにて、閉領域作成ツールが利用可能になっています。

13.10.4 背景 PNG 読み込み

背景に png ファイルを読み込みます。

背景の縮尺は、地図のサイズに合わせて、変更されます。

地図自体のサイズを変更したい場合、適切なサイズに地図を初期化してから、png を配置して下さい。

png を配置すると、例えば、図 153 のような画面になります。

図 153: PNG読み込み後

背景に png が設定されましたが、png はあくまでも領域作成のガイドになるものです。背景画像を基に、領域操作モードにて移動可能領域を設定する必要があります。なお、領域操作モードの、閉領域作成ツールは利用出来ません。

13.10.5 GeoJSON インポート

GeoJSON ファイルを読み込みます。

GeoJSON ファイルの空間参照系は CRS84 (EPSG:4326) であり、トップレベルは FeatureCollection であり、図形はすべて多角形(PolygonかMultiPolygon)である必要があります。

移動可能領域、またはユーザー定義領域のどちらかを指定して読み込みます。

GeoJSON ファイルを読み込むと、例えば、 図 154 のような画面になります。

図 154: GeoJSON読み込み後

GeoJSON インポートでは図形をそのままの位置と大きさで読み込むため、必要に応じて地図エディタの縦横が拡大されます。

13.10.6 GeoJSON エクスポート

移動可能領域またはレイヤーを GeoJSON ファイルとしてエクスポートします。

13.10.7 地図設定

地図設定を選択すると、「横(m)」、「縦(m)」、「空間参照系」、「画面中心経度」、「画面中心緯度」を入力するダイアログが表示されます。

適切な値を入力し、OK すると、地図の設定が更新されます。

13.10.8 地図保存

作成した地図情報を保存します。

13.11 Pythonメニュー

13.11.1 Pythonコンソールを開く

Pythonコンソールを開きます。ここで地図エディタ用のAPIを実行することで、プログラム的に地図エディタを操作できます。

APIの詳細については psim 言語リファレンスマニュアルを参照して下さい。

13.11.2 スクリプトの管理

スクリプト管理機能のウィンドウを開きます。ここでスクリプトを作成し、実行することで、プログラム的に地図エディタを操作できます。Pythonコンソールとの違いは、一度に複数行の命令を入力でき、また保存して繰り返し実行できる点です。

図 155: スクリプト管理
図 156: スクリプト編集

「追加」「編集」でスクリプト編集画面が開きます。スクリプト編集画面で作成したスクリプトは「実行」で実行できます。「削除」で作成したスクリプトを削除できます。

14 強化学習モデル

モデル上に配置する強化学習モデルについて説明します。

強化学習モデルは、強化学習によるセレクタ{7.2.7 章}や 同期エージェント{11.1 章} で使用する強化学習モデルを表します。

14.1 強化学習モデルの編集

強化学習モデルの下のラベルの以外の場所を左ダブルクリック、 あるいは、強化学習モデルの配置されている場所を右クリックして表示されるメニュー(3.5.1 章)から「編集」を選ぶと、 強化学習モデルの編集画面が表示されます。

編集画面は、以下のタブで構成されます。

14.1.1 共通設定タブ

共通設定タブは 図 157 のような画面構成になります。

図 157: 強化学習モデル共通設定タブ

全ての強化学習モデルで共通の属性を編集できます。

クラス名

自動生成コード(5.8.1 章)におけるこの強化学習モデルのクラス名になります。通常は編集する必要はありません。

オブジェクト名

自動生成コード(5.8.1 章)におけるこの強化学習モデルのインスタンス名になります。通常は編集する必要はありません。

説明

モデル編集画面におけるこの強化学習モデルの名前になります。5.3.15 章 の方法でも変更する事が出来ます。

14.1.2 属性設定タブ

属性設定タブは 図 158 のような画面構成になります。

図 158: 強化学習モデル属性設定タブ

上のヘルプボタンを押すと、その強化学習モデルの説明が表示されます。

強化学習モデルの種類ごとに表示される属性は変わります。各強化学習モデルの振る舞いを定めます。

14.2 離散イベント用強化学習モデル(DiscreteEventRLModel)

図 159: 離散イベント用強化学習モデル

14.3 エージェント用強化学習モデル(AgentRLModel)

図 160: エージェント用強化学習モデル

14.4 強化学習モデルの学習モデル

各強化学習モデルの学習モデルの設定について述べます。 S4 Simulation System の強化学習モデルでは大きく分けて次の学習モデルが使用できます。

行動価値関数を使用したモデル

行動価値関数を用いたモデルです。

ActorCriticモデル

Critic とも呼ばれる状態価値関数と、行動を決める Actor から構成されるモデルです。

上記の 2 つのモデルそれぞれで設定項目は異なります。それぞれ順に説明します。

14.4.1 行動価値関数を使用したモデル

行動価値関数を使用したモデルでは次のような設定項目があります。

即時報酬の割引率

即時報酬の割引率を設定します。0 以上 1 以下の実数値です。

行動価値関数の形式

行動価値関数の形式を指定します。 形式はそれぞれ以下から選択できます。 選択した形式によっては追加の設定項目が必要になります。

表形式

近似表現を用いずに価値を明示的に保持する行動価値関数です。 以下の設定項目があります。

初期値

値は全てこの値で初期化されます。

NeuralNet

(Feed-Forward) Neural Network によって 行動価値関数 を表現します。 以下の設定項目があります。

隠れ層のニューロン数

隠れ層のニューロン数を指定します。各層のニューロン数をカンマで区切って入力します。 例えば、隠れ層が 1 枚で、隠れ層のニューロン数が 3 の場合は「3」と入力します。 隠れ層が 2 枚で、それぞれのニューロン数が(入力に近い層から) 3、 4 個の場合は、 「3,4」と入力します。

初期重みの最小値

初期重みの最小値です。重みはこの値以上、初期重みの最大値以下の値で初期化されます。

初期重みの最大値

初期重みの最大値です。重みは初期重みの最小値以上、この値以下の値で初期化されます。

HashTiling

(UNH-CMAC) Hash-Tiling によって行動価値関数を表現します。 以下の設定項目があります。

タイル数

1 度の計算でアクティブになるタイルの数です。正の整数が指定できます。

メモリーサイズ

タイルの総数です。正の整数が指定できます。

方策

行動価値関数から行動を決める際の方法を指定します。 以下の設定項目があります。

方式

行動を決める方法です。以下から選択できます。

\varepsilon-greedy

\varepsilon-greedyと呼ばれる方式で行動を選択します。つまり、 確率 \varepsilon でランダムに行動を選択し、 確率 1-\varepsilon で価値が最大の行動を選択します。

softmax

行動価値関数から定まる Softmax な分布に従って行動を選択します。 Softmax な分布とは、 状態 s における行動 a をとる確率が次のようになる分布です。

\frac{1}{Z} \frac{Q(s,a)}{\tau}

ここで、Z は正規化定数であり、Q は行動価値関数、 \tau > 0 は温度とよばれるパラメータです。

\varepsilon または温度

\varepsilon または温度を表します。

学習手法

学習の手法(行動価値関数の更新手法)を設定します。 「学習を行わない」を選択すると、学習は行われません(行動価値関数は更新されません)。 それ以外の手法は次の通りです。各手法の選択に伴う設定項目についても合わせて述べます。

Q学習

Q学習によって学習します。以下の設定項目を持ちます。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

TD(\lambda)

TD(\lambda) によって学習します。 以下の設定項目を持ちます。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

トレース

トレースに関する設定です。

\lambda(減衰率)

トレースの減衰率です。 0 以上 1 以下の実数値が指定できます。

トレースの種別

トレースの種別です。Accumulate と Replacing の 2 種類から選択できます。

Monte Carlo

Monte Carlo法によって学習します。以下の設定項目を持ちます。

first-visit または every-visit

first-visit Monte Carlo か every-visit Monte Carlo かを指定します。 チェックを入れると every-visit で、入れないと first-visit です。

GQ(\lambda)

GQ(\lambda) によって学習します。以下の設定項目を持ちます。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

トレース

トレースに関する設定です。

\lambda(減衰率)

トレースの減衰率です。 0 以上 1 以下の実数値が指定できます。

トレースの種別

トレースの種別です。Accumulate と Replacing の 2 種類から選択できます。

relative step size

relative step size です。0 以上 1 以下の値を設定できます。

14.4.2 ActorCriticモデル

ActorCriticモデルでは次のような設定項目があります。

状態価値関数の形式

状態価値関数の形式を指定します。 形式はそれぞれ以下から選択できます。 選択した形式によっては追加の設定項目が必要になります。

表形式

近似表現を用いずに価値を明示的に保持する状態価値関数です。 以下の設定項目があります。

初期値

値は全てこの値で初期化されます。

NeuralNet

(Feed-Forward) Neural Network によって 状態価値関数 を表現します。 以下の設定項目があります。

隠れ層のニューロン数

隠れ層のニューロン数を指定します。各層のニューロン数をカンマで区切って入力します。 例えば、隠れ層が 1 枚で、隠れ層のニューロン数が 3 の場合は「3」と入力します。 隠れ層が 2 枚で、それぞれのニューロン数が(入力に近い層から) 3、 4 個の場合は、 「3,4」と入力します。

初期重みの最小値

初期重みの最小値です。重みはこの値以上、初期重みの最大値以下の値で初期化されます。

初期重みの最大値

初期重みの最大値です。重みは初期重みの最小値以上、この値以下の値で初期化されます。

HashTiling

(UNH-CMAC) Hash-Tiling によって状態価値関数を表現します。 以下の設定項目があります。

タイル数

1 度の計算でアクティブになるタイルの数です。正の整数が指定できます。

メモリーサイズ

タイルの総数です。正の整数が指定できます。

方策・Actor

行動の決め方をあらわす方策・Actorを指定します。 指定できる方策には以下の種別があり、それぞれで設定内容も異なります。 順に述べていきます。

Epsilon-Greedy

\varepsilon-greedyと呼ばれる方式で行動を選択します。 以下の設定項目を含みます。

Preferenceの形式

Preferenceの形式を指定します。 形式はそれぞれ以下から選択できます。 選択した形式によっては追加の設定項目が必要になります。

表形式

近似表現を用いずに価値を明示的に保持するPreferenceです。 以下の設定項目があります。

初期値

値は全てこの値で初期化されます。

NeuralNet

(Feed-Forward) Neural Network によって Preference を表現します。 以下の設定項目があります。

隠れ層のニューロン数

隠れ層のニューロン数を指定します。各層のニューロン数をカンマで区切って入力します。 例えば、隠れ層が 1 枚で、隠れ層のニューロン数が 3 の場合は「3」と入力します。 隠れ層が 2 枚で、それぞれのニューロン数が(入力に近い層から) 3、 4 個の場合は、 「3,4」と入力します。

初期重みの最小値

初期重みの最小値です。重みはこの値以上、初期重みの最大値以下の値で初期化されます。

初期重みの最大値

初期重みの最大値です。重みは初期重みの最小値以上、この値以下の値で初期化されます。

HashTiling

(UNH-CMAC) Hash-Tiling によってPreferenceを表現します。 以下の設定項目があります。

タイル数

1 度の計算でアクティブになるタイルの数です。正の整数が指定できます。

メモリーサイズ

タイルの総数です。正の整数が指定できます。

\varepsilon

\varepsilon です。

Softmax

Preference から定まる Softmax な分布に従って行動を選択します。 以下の設定項目を含みます。

Preferenceの形式

Preferenceの形式を指定します。 形式はそれぞれ以下から選択できます。 選択した形式によっては追加の設定項目が必要になります。

表形式

近似表現を用いずに価値を明示的に保持するPreferenceです。 以下の設定項目があります。

初期値

値は全てこの値で初期化されます。

NeuralNet

(Feed-Forward) Neural Network によって Preference を表現します。 以下の設定項目があります。

隠れ層のニューロン数

隠れ層のニューロン数を指定します。各層のニューロン数をカンマで区切って入力します。 例えば、隠れ層が 1 枚で、隠れ層のニューロン数が 3 の場合は「3」と入力します。 隠れ層が 2 枚で、それぞれのニューロン数が(入力に近い層から) 3、 4 個の場合は、 「3,4」と入力します。

初期重みの最小値

初期重みの最小値です。重みはこの値以上、初期重みの最大値以下の値で初期化されます。

初期重みの最大値

初期重みの最大値です。重みは初期重みの最小値以上、この値以下の値で初期化されます。

HashTiling

(UNH-CMAC) Hash-Tiling によってPreferenceを表現します。 以下の設定項目があります。

タイル数

1 度の計算でアクティブになるタイルの数です。正の整数が指定できます。

メモリーサイズ

タイルの総数です。正の整数が指定できます。

温度

Softmax 分布における温度です。

Gaussian (Neural Net)

ガウス分布 \pi(s,a) = \frac{1}{Z} exp((a-\mu(s))^T \Sigma^{-1} (a-\mu(s))) によって行動が選択される方策です。 ただし、 平均 \mu(s) は(フィードフォワード)ニューラルネットにより定まります。 整数値次元に対しては、 ガウス分布からサンプリングした結果の値を最も近い整数に丸めた値が使用されます。 ガウス分布からサンプリングした結果、 連続値・整数値の次元において範囲外の値が得られた場合は、 範囲内の値に丸められます。 行動値集合の次元に文字列が含まれる場合は使えません。

以下の設定項目を含みます。
隠れ層のニューロン数

隠れ層のニューロン数を指定します。各層のニューロン数をカンマで区切って入力します。 例えば、隠れ層が 1 枚で、隠れ層のニューロン数が 3 の場合は「3」と入力します。 隠れ層が 2 枚で、それぞれのニューロン数が(入力に近い層から) 3、 4 個の場合は、 「3,4」と入力します。

初期重みの最小値

初期重みの最小値です。重みはこの値以上、初期重みの最大値以下の値で初期化されます。

初期重みの最大値

初期重みの最大値です。重みは初期重みの最小値以上、この値以下の値で初期化されます。

Gaussian (Hash Tiling)

ガウス分布 \pi(s,a) = \frac{1}{Z} exp((a‐\mu(s))^T \Sigma^{‐1} (a‐\mu(s))) によって行動が選択される方策です。 ただし、平均 \mu(s) は特徴ベクトル \phi(s) と行列 T により、 \mu(s)=T\phi(s) とあらわせるものとします。 ここで \phi(s) は Hash Tiling によって得られるベクトルとします。 その他の性質は Gaussian (Neural Net) と同様です。

以下の設定項目を含みます。
タイル数

1 度の計算でアクティブになるタイルの数です。正の整数が指定できます。

メモリーサイズ

タイルの総数です。正の整数が指定できます。

学習手法

学習の手法(状態価値関数と方策・Actorの更新手法)を設定します。 「学習を行わない」を選択すると、学習は行われません(状態価値関数と方策・Actorは更新されません)。 それ以外の手法は次の通りです。各手法の選択に伴う設定項目についても合わせて述べます。

Actor Critic

Actor Critic に従って学習します。 以下の設定項目を含みます。

Crtiicの手法

状態価値関数の更新手法の設定です。 以下の更新手法から選択できます。手法ごとに追加の設定項目があります。

TD(\lambda) Critic

TD(\lambda) に従って状態価値関数を更新します。 以下の設定項目を含みます。

即時報酬の割引率

即時報酬の割引率を設定します。0 以上 1 以下の実数値です。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

トレース

トレースに関する設定です。

\lambda(減衰率)

トレースの減衰率です。 0 以上 1 以下の実数値が指定できます。

トレースの種別

トレースの種別です。Accumulate と Replacing の 2 種類から選択できます。

Average Reward TD(\lambda) Critic

Average Reward TD(\lambda) に従って状態価値関数を更新します。 以下の設定項目を含みます。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

トレース

トレースに関する設定です。

\lambda(減衰率)

トレースの減衰率です。 0 以上 1 以下の実数値が指定できます。

トレースの種別

トレースの種別です。Accumulate と Replacing の 2 種類から選択できます。

平均即時報酬推定に関する学習率

平均即時報酬推定に関する学習率です。 0 以上 1 以下の実数値が指定できます。

Actorの学習率

Actorの学習率です。 0 以上 1 以下の実数値が指定できます。

Natural Actor Critic
Average Reward TD(\lambda) Critic

Average Reward TD(\lambda) に従って状態価値関数を更新します。 以下の設定項目を含みます。

学習率

学習率です。 0 以上 1 以下の実数値が指定できます。

トレース

トレースに関する設定です。

\lambda(減衰率)

トレースの減衰率です。 0 以上 1 以下の実数値が指定できます。

トレースの種別

トレースの種別です。Accumulate と Replacing の 2 種類から選択できます。

平均即時報酬推定に関する学習率

平均即時報酬推定に関する学習率です。 0 以上 1 以下の実数値が指定できます。

Actorの学習率

Actorの学習率です。 0 以上 1 以下の実数値が指定できます。

advantage step size

advantage step size です。0 以上 1 以下の実数値が指定できます。

15 3Dアニメーション

モデル上に配置する3Dアニメーションについて説明します。 3Dアニメーションとは、シミュレーションの実行結果を3Dアニメーションとして表示させるビューワを管理するものです。 SFM環境オブジェクト、SFM地図オブジェクト、NW地図オブジェクトを用いたシミュレーションを3Dアニメーションとして表示させることができます。

15.1 3Dアニメーション(Animation3D)

図 161: 3Dアニメーション

3Dアニメーションを表示します。 「環境オブジェクト」は、3Dアニメーションを表示する環境を指定します。SFM環境オブジェクト、SFM地図オブジェクト、NW地図オブジェクトを3Dアニメーションとして表示することができます。

15.1.1 属性設定タブ

アニメーション編集画面を開くと、最初に属性設定タブが開きます。

属性設定タブでは、図 162 のような画面構成になります。

図 162: アニメーション属性設定タブ

上のヘルプボタンを押すと、その3Dアニメーションの説明が表示されます。

16 可視化ダッシュボード

可視化ダッシュボードについて説明します。 可視化ダッシュボードとは、エージェントシミュレーションの結果を可視化する機能であり、ブラウザ上で動作します。 SFM環境オブジェクト、SFM地図オブジェクト、またはNW地図オブジェクトを利用したシミュレーションを対象としています。

16.1 起動と停止

16.1.1 準備

図 163: 設定画面

可視化ダッシュボードの設定画面は、SFM環境オブジェクト、SFM地図オブジェクト、またはNW地図オブジェクトの編集画面にあります。

可視化の記録を「あり」に設定してシミュレーションを実行すると、プロジェクトのdataフォルダにXXX_recordというフォルダが生成され、 その中に可視化に必要なデータが出力されます。 例えば、「間隔」に指定された秒数ごとにエージェントの位置が記録されます。

また「記録するエージェント属性のリスト」に属性(コード編集などを通じてエージェントに定義されたインスタンス変数の名前)を指定すると、その時系列も合わせて出力されます。

16.1.2 起動方法

設定項目の中の起動ボタンを押してください。 起動には数秒かかりますので、ボタンをクリックしたらそのままお待ちください。

起動したら、お使いのパソコンで既定のブラウザとして設定されているブラウザが自動的に立ち上がります。 同じURLにアクセスすることで新しいタブもしくは他のブラウザでも作業できますが、アクセスする度にそれまでの作業内容が初期化されます。 したがって、{\bf 1つのブラウザ・1つのタブに限って}ご利用ください。

16.1.3 停止方法

起動時に立ち上がるコマンドプロンプトを閉じると、サーバーも合わせて停止します。

16.1.4 メトリクスの記録

「記録するエージェント属性のリスト」の下にある+ボタンをクリックするとシミュレーション中に算出した指標(メトリクス)の記録の設定を行えます。 現在利用できるのはシミュレーション中のエージェント数の記録のみです。

「可視化の記録」があり、かつメトリクスの設定をした状態でシミュレーションを実行すると上記のXXX_recordフォルダ内に「名前(出力名)」で設定した名前のcsvファイルが出力されます。

「記録内容」ドロップダウンメニューから記録する内容を変更できます。現在利用できるのはシミュレーション中のエージェント数の記録のみです。

16.1.5 個別のメトリクスの記録設定

16.1.5.1 エージェント数

記録の感覚ごとにシミュレーション中のエージェント数を記録します。 設定できるオプション項目は以下の通りです。

  • 属性
    • エージェントの属性名を指定します。指定すると属性の値ごとに分けてエージェント数を記録します。指定しない場合は全てのエージェントの数を記録します。
  • レイヤー名
    • 環境中のレイヤー名を指定します。指定するとこのレイヤーの領域内にいるエージェントのみを対象としてエージェント数を記録します。指定しない場合は環境中の全エージェントが対象になります。環境内に同じレイヤー名のレイヤーが複数ある場合エラーとなります。

16.2 操作方法

可視化ダッシュボードの操作方法について説明します。

図 164: 可視化ダッシュボード

16.2.1 構成

可視化ダッシュボードはメニューとグリッドパネルから構成されます。 グリッドパネルにコンポーネントを追加していくことで、自由にダッシュボードを作成することができます。

16.2.2 メニュー

メニューにはセーブボタン、ロードボタン、配置設定、追加設定があります。

セーブボタンを押すとダッシュボードの状態を記録したpickleファイルが保存されます。 自動的にダウンロードフォルダに保存されるか、保存先を自分で決めるダイアログが表示されるかは、 お使いのブラウザの設定で変更することができます。

ロードボタンを押すとファイル選択ダイアログが表示され、pickleファイルを選択すると保存したダッシュボードが読み込まれます。 ロードボタンにドラッグ&ドロップして読み込むことも可能です。

配置設定では、コンポーネントを整列するための力を設定することができます。 縦のときコンポーネントは上方向に引っ張られ、横のとき左方向に引っ張られます。 自由のとき力は働きません。

追加設定は、追加するコンポーネントの種類を選択するドロップダウンと、追加ボタン、ドラッグ要素から成ります。 追加ボタンを押すか、ドラッグ要素をグリッドパネルにドラッグ&ドロップすることでコンポーネントを追加することができます。 ただしグリッドパネルにコンポーネントが1つもない場合は、追加ボタンでのみ追加可能です。 選択できるコンポーネントは以下の3つです。(それぞれの詳細は後述)

  • プロット(地図表示)
  • プロット
  • テキスト

16.2.3 グリッド

各コンポーネントを乗せたグリッドの操作について説明します。

グリッドの左上または上辺中央にカーソルを乗せるとドラッグ要素が描画されます。 ドラッグ要素をつかむことでコンポーネントを移動させることができます。

グリッドの右上にはピンボタンと削除ボタンが描画されています。 ピンボタンを押すとグリッドが固定され、位置および中身を変更することができなくなります。 ピンボタンをもう一度押すと固定は解除されます。 削除ボタンを押すと確認ダイアログが表示され、OKボタンを押すとコンポーネントが削除されます。 一度削除すると取り消しはできないのでご注意ください。

グリッドの右下には拡大・縮小ハンドルが描画されています。 ハンドルをドラッグすることでグリッドのサイズを変更することができます。 グリッドの横幅に合わせて、コンポーネントの横幅が決まります。 一方でグリッドの高さは、コンポーネントの高さが変わる度に再計算され、自動的に伸縮します。

16.3 プロット(地図表示)コンポーネント

プロット(地図表示)コンポーネントについて説明します。 プロット(地図表示)コンポーネントは地図上で可視化を行えるコンポーネントです。

16.3.1 プロジェクトフォルダの選択

プロット(地図表示)コンポーネントの右上にあるフォルダアイコンをクリックすると、ファイル選択ダイアログが開きます。 他プロジェクトのdata/XXX_record内にあるpath_info.txtを選択すると、プロット内容がそのプロジェクトのものに切り替わります。

なお、path_info.txtにはXXX_recordまでの絶対パスが記入されています。 可視化の記録を「あり」に設定してシミュレーションを実行すると自動的にファイルが用意されますが、 ユーザーが独自に用意したものでも構いません。

16.3.2 プロット種類の変更方法

プロット(地図表示)コンポーネントの上部にあるドロップダウンメニュー(初期値は「エージェントの位置」となっています。)から描画内容を変更します。

16.3.3 時間スライダー

プロット(地図表示)コンポーネントの上部には時間スライダーが表示されます。 描画の種類によって片側スライダーか両側スライダーのいずれかが表示されます。

時間スライダーを変更することで指定した時間(両側の場合は指定した時間範囲)のデータに限定した描画を行うことができます。

指定する時間の値はシミュレーション時にS4の環境部品の属性設定タブ内の「可視化ツール-可視化の記録-間隔」で指定した値の倍数である必要があります。

16.3.4 背景、経路グラフの表示設定

プロット種類の右にある「背景」「経路グラフ」と書かれたチェックボックスのチェックをつける/外すことで背景(経路グラフ)の描画の切り替えを行うことができます。

16.3.5 設定タブ

16.3.5.1 フィルタ

プロット(地図表示)コンポーネントの下部に表示されている「フィルタ」タブをクリックするとフィルタの設定が表示されます。

「追加」ボタンをクリックするとフィルタの設定を行うことができます。 フィルタで選択できる条件は一致条件か上下限条件のいずれかです。 どちらの場合も、シミュレーション時にS4の環境部品の属性設定タブ内の「可視化ツール-記録するエージェント属性のリスト(カンマ区切り)」で設定したエージェント属性とデフォルトで記録される属性が指定した値に一致または指定した値の範囲内に存在するかどうかの条件フィルタを作成することができます。

フィルタは複数作成することが可能です。 複数のフィルタが作成された場合は全ての条件に合致するデータのみが取得されます。 OR条件には対応していません。

フィルタを削除する場合は削除したいフィルタに対応する削除ボタンをクリックします。

16.3.5.2 描画(個別)

プロット(地図表示)コンポーネントの下部に表示されている「描画(個別)」タブをクリックすると描画個別の設定が表示されます。

設定できるパラメータの内容は個別の描画の説明を参照してください。

16.3.5.3 描画(共通)

プロット(地図表示)コンポーネントの下部に表示されている「描画(共通)」タブをクリックすると全ての描画に共通の設定が表示されます。

「描画領域設定」では描画するグラフの横幅とグラフの右の余白幅の割合を指定することができます。グラフの右余白には描画によってはカラーバーなどが表示されます。

グラフの横幅は10px以上の値を指定してください。

右余白幅は0以上0.5以下の値を指定してください。

「背景描画設定」では背景画像の不透明度を設定できます。 0以上1以下の値を指定してください。

「経路地点グラフ描画設定」では経路グラフの表示の設定を行うことができます。

経路地点サイズ、経路エッジ太さは0以上の値を指定してください。 表示濃度は0以上1以下の値を指定してください。

16.3.5.4 ホバー

プロット(地図表示)コンポーネントの下部に表示されている「ホバー」タブをクリックするとホバーの設定が表示されます。

「エージェントホバー」「経路地点ホバー」と書かれたトグルスイッチをクリックするとエージェントのホバー表示、経路地点のホバー表示のON/OFFを切り替えることができます。

「エージェントホバー」「経路地点ホバー」の下に書かれているのはエージェント/経路地点の属性です。 属性はシミュレーション時に付与したものが表示されます。

各属性の左横にあるチェックボックスをつける/消すことでその属性をホバー表示するかどうかを決めることができます。

ホバー表示は描画の種類によってはホバー表示をONにしても表示されない場合があります。 詳しくは各描画の説明を参照してください。

16.3.6 個別の描画の説明

16.3.6.1 エージェント位置

指定した時間のエージェントの位置を描画します。

「描画(個別)」で設定できるパラメータは以下の通りです。

エージェント色

エージェントの表示色を指定したエージェントの属性によって色分けします。

経路地点色

経路地点の表示色を指定した経路地点の属性によって色分けします。

マーカーサイズ

エージェントの表示サイズを変更します。0以上の値が有効です。

マーカー色

エージェントの表示色を指定します。エージェント色を指定していない場合に有効です。

表示濃度

エージェントの表示の不透明度を指定します。0以上1以下の値が有効です。

16.3.6.2 エージェント位置(ヒートマップ)

指定した範囲の時間のある位置おける累積のエージェント人数に関するヒートマップを描画します。

エージェントホバー、経路地点ホバー共に表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

背景分割数

背景を縦横ともに指定した数に分割してヒートマップを表示します。1以上の値が有効です。

人数カウント最小値

カラースケールの最小値です。1以上の値が有効です。

カラースケール

カラースケールを変更します。

ヒートマップ濃度

ヒートマップの不透明度を指定します。0以上1以下の値が有効です。

16.3.6.3 エージェント位置(kde)

指定した範囲の時間のある位置おける累積のエージェント人数に関するヒートマップを描画します。 ヒートマップとの違いは等高線図であるかどうかです。

エージェントホバー、経路地点ホバー共に表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

背景分割数

背景を縦横ともに指定した数に分割してヒートマップを表示します。1以上の値が有効です。

人数カウント最小値

カラースケールの最小値です。1以上の値が有効です。

カラースケール

カラースケールを変更します。

ヒートマップ濃度

ヒートマップの不透明度を指定します。0以上1以下の値が有効です。

16.3.6.4 エージェント軌跡

指定したエージェントIDに該当するエージェントの軌跡を描画します。

「描画(個別)」で設定できるパラメータは以下の通りです。

エージェントID

描画するエージェントIDです。複数指定可能。

16.3.6.5 経路地点混雑度

指定した範囲の時間内で各経路地点に存在したエージェントの数(累積値)を描画します。 数が大きいほど表示される点の大きさが大きくなります。

エージェントホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

人数カウント最小値

カラースケールの最小値です。1以上の値が有効です。

人数カウント最大値

カラースケールの最大値です。1以上の値が有効です。

表示サイズ最小値

表示する点の大きさの最小値です。0以上の値が有効です。

表示サイズ最大値

表示する点の大きさの最大値です。0以上の値が有効です。

経路地点の濃度

混雑度の描画色の不透明度を指定します。0以上1以下の値が有効です。

カラースケール

カラースケールを変更します。

16.3.6.6 エージェント流量(経路地点集約)

kmeans法によって経路地点を指定した数のクラスタに分割し、指定した時間内でのクラスタ間のエージェントの移動人数の累積値を描画します。 各クラスタは同一クラスタの経路地点を全て含むような凸包として表示されます。 また、クラスタ間の移動人数が矢印で表示されます。

エージェントホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

クラスタ数

経路地点をいくつのクラスタに分割するか指定します。1以上の値が有効です。

クラスタ色

クラスタの色を指定します。

クラスタ色の濃度

クラスタの色の描画色の不透明度を指定します。0以上1以下の値が有効です。

流量エッジのカラースケール

移動人数に関する矢印のカラースケールを変更します。

流量エッジの幅

移動人数に関する矢印の幅を指定します。0.1以上の値が有効です。

流量エッジのカラースケール最大値

移動人数に関する矢印のカラースケール最大値を指定します。0以上の値が有効です。

16.3.6.7 出発/到着地(グリッド)

背景を指定した数に分割した後、指定した時間内におけるエージェントの出発地から到着地への移動人数を表示します。 移動人数が多いほど矢印が太く描画されます。

エージェントホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

背景分割数

背景を縦横ともに指定した数に分割してヒートマップを表示します。1以上の値が有効です。

カラースケール最大値

移動人数に関する矢印のカラースケール最大値を指定します。0以上の値が有効です。

カラースケール

移動人数に関する矢印のカラースケールを変更します。

カラースケール濃度

移動人数に関する矢印の描画色の不透明度を指定します。0以上1以下の値が有効です。

矢印幅最小値

移動人数に関する矢印の幅の最小値を指定します。0.1以上の値が有効です。

矢印幅最大値

移動人数に関する矢印の幅の最大値を指定します。0.1以上の値が有効です。

表示流量最小値

ここで指定した値以上の移動人数をもつ矢印のみが描画されます。0以上の値が有効です。

16.3.6.8 出発/到着地(経路地点間)

指定した時間内におけるエージェントの出発地から到着地への移動人数を表示します。 移動人数が多いほど矢印が太く描画されます。

エージェントホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

カラースケール最大値

移動人数に関する矢印のカラースケール最大値を指定します。0以上の値が有効です。

カラースケール

移動人数に関する矢印のカラースケールを変更します。

カラースケール濃度

移動人数に関する矢印の描画色の不透明度を指定します。0以上1以下の値が有効です。

矢印幅最小値

移動人数に関する矢印の幅の最小値を指定します。0.1以上の値が有効です。

矢印幅最大値

移動人数に関する矢印の幅の最大値を指定します。0.1以上の値が有効です。

表示流量最小値

ここで指定した値以上の移動人数をもつ矢印のみが描画されます。0以上の値が有効です。

16.3.6.9 出発/到着地(ヒートマップ)

背景を指定した数に分割した後、指定した時間内におけるエージェントの出発地/到着地の人数に関するヒートマップを表示します。

エージェントホバー、経路地点ホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

出発地/到着地

出発地を選択すると出発地に関するヒートマップ、到着地を選択すると到着地に関するヒートマップとなります。

背景分割数

背景を縦横ともに指定した数に分割してヒートマップを表示します。1以上の値が有効です。

カラースケール最大値

ヒートマップのカラースケール最大値を指定します。0以上の値が有効です。

カラースケール

ヒートマップののカラースケールを変更します。

ヒートマップ濃度

ヒートマップの不透明度を指定します。0以上1以下の値が有効です。

16.3.6.10 ヒートマップ(アニメーション)

シミュレーション時に指定した記録間隔ごとにエージェントの人数合計をヒートマップでアニメーション表示します。 また、このアニメーションをmp4形式で保存することもできます。

エージェントホバー、経路地点ホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

背景分割数

背景を縦横ともに指定した数に分割してヒートマップを表示します。1以上の値が有効です。

カラースケール最大値

ヒートマップのカラースケール最大値を指定します。0以上の値が有効です。

カラースケール

ヒートマップののカラースケールを変更します。

ヒートマップ濃度

ヒートマップの不透明度を指定します。0以上1以下の値が有効です。

フレーム再生間隔

アニメーションの再生スピード(ミリ秒単位)を変更します。 1以上の値が有効です。

fps

アニメーション保存時の1秒当たりのフレーム数です。 大きい値ほど、アニメーションが速く再生されます。 1以上の値が有効です。

スケール

アニメーション保存時のフレームの解像度を変更します。 1がデフォルトで大きくなると解像度を高く、小さくすると解像度を低くします。

0より大きい値が有効です。 大きな値にすると保存に時間がかかります。

16.3.6.11 エージェント位置(アニメーション)

シミュレーション時に指定した記録間隔ごとにエージェントの位置をアニメーション表示します。 また、このアニメーションをmp4形式で保存することもできます。

エージェントホバーは表示されません。

「描画(個別)」で設定できるパラメータは以下の通りです。

マーカーサイズ

エージェントの表示サイズを変更します。0以上の値が有効です。

エージェント色分け

指定した列の値ごとに描画の色を変更します。

エージェント色(デフォルト)

描画色を変更します。 エージェント色分けが指定されていない場合のみ有効です。

カラーマップ

カラーマップを変更します。 エージェント色分けが指定されている場合のみ有効です。

フレーム再生間隔

アニメーションの再生スピード(ミリ秒単位)を変更します。 1以上の値が有効です。

fps

アニメーション保存時の1秒当たりのフレーム数です。 大きい値ほど、アニメーションが速く再生されます。 1以上の値が有効です。

スケール

アニメーション保存時のフレームの解像度を変更します。 1がデフォルトで大きくなると解像度を高く、小さくすると解像度を低くします。

0より大きい値が有効です。 大きな値にすると保存に時間がかかります。

16.4 プロットコンポーネント

プロットコンポーネントについて説明します。 プロットコンポーネントは折れ線グラフやヒストグラムのような通常の可視化を行えるコンポーネントです。

16.4.1 プロジェクトフォルダの選択

プロット(地図表示)コンポーネントの右上にあるフォルダアイコンをクリックすると、ファイル選択ダイアログが開きます。 他プロジェクトのdata/XXX_record内にあるpath_info.txtを選択すると、プロット内容がそのプロジェクトのものに切り替わります。

なお、path_info.txtにはXXX_recordまでの絶対パスが記入されています。 可視化の記録を「あり」に設定してシミュレーションを実行すると自動的にファイルが用意されますが、 ユーザーが独自に用意したものでも構いません。

16.4.2 描描画用データの選択

上記で選択したプロジェクトフォルダ内にあるグラフの作成に使用したいデータファイルを選択します。 現在はcsvファイル形式のみに対応しています。

16.4.3 プロット種類の変更方法

プロットコンポーネントの上部にあるドロップダウンメニュー(初期値は「空グラフ」となっています。)から描画内容を変更します。

16.4.4 設定タブ

16.4.4.1 先頭データ

選択したデータファイルの先頭データを確認することができます。

16.4.4.2 詳細設定

選択したプロット個別の設定を変更することができます。

主な項目は以下の通りです。

  • グラフに使用するデータ列の設定
    • 例 : 折れ線グラフでx軸、y軸として扱うデータ列の設定
  • グラフの見た目に関する設定
    • 例 : 折れ線グラフで線の太さやカラーマップ

16.5 テキストコンポーネント

テキストコンポーネントについて説明します。

図 165: テキストコンポーネント

16.5.1 編集/表示パネル

編集モードのときマークダウン・数式($または$$で囲う)を入力することができます。 マークダウンはCommonMark、数式はKaTeXに準ずるものを記述してください。

表示モードのときレンダリングされた結果が表示されます。

16.5.2 設定パネル

編集/表示パネル左下の開閉ボタンをクリックすると、設定パネルが開閉します。

設定パネルには文字サイズの入力欄と、表示/編集モードの切り替えボタンがあります。 文字サイズの単位はピクセル(px)です。

17 コールセンター用部品

コールセンターのシミュレーションに特化した部品です。

17.1 資源

17.1.1 対応待ちリスト(CallQueue)

図 166: 対応待ちリスト

「対応待ちリスト」図 166)は、対応待ちリストを表します。

対応待ち上限数

リストに蓄えられる上限数を表します。

記録

対応待ちリストの利用状態を記録するかどうかを表します

17.2 フローアイテム

17.2.1 オペレーター(Operator)

図 167: オペレーター

「オペレーター」(図 167)は、オペレーターを表します。部品「出勤」(17.3.9 章)で生成されます。

出社時間

シミュレーション開始後、出社するまでの時間を指定します。

退社時間

シミュレーション開始後、退社するまでの時間を指定します。

稼動時間

内部で使用します。0 を指定しておいて下さい。

17.2.2 問い合わせ(PhoneCall)

図 168: 問い合わせ

「問い合わせ」(図 168)は、コールセンターへの問い合わせを表します。部品「入電」(17.3.5 章)で生成されます。

処理時間

この問い合わせの処理時間を示します。

後処理時間

この問い合わせの後処理時間を示します。

問い合わせID

この問い合わせのID が内部的に設定されます。変更しないで下さい。

発生時間

この問い合わせの発生時間が内部的に設定されます。変更しないで下さい。

対応開始時間

この問い合わせの対応開始時間が内部的に設定されます。変更しないで下さい。

対応終了時間

この問い合わせの対応終了時間が内部的に設定されます。変更しないで下さい。

17.3 部品

17.3.1 放棄呼(Abandon)

図 169: 放棄呼

17.3.2 時間確認(CheckTime)

図 170: 時間確認

17.3.3 対応終了(EndOfOperation)

図 171: 対応終了

17.3.4 受電(GetFromCallQueue)

図 172: 受電

17.3.5 入電(GetPhoneCall)

図 173: 入電

17.3.6 対応(Operate)

図 174: 対応

17.3.7 対応待ち(PutToCallQueue)

図 175: 対応待ち

17.3.8 対応開始(StartOfOperation)

図 176: 対応開始

17.3.9 出社(StartWorking)

図 177: 出社

17.3.10 退社(StopWorking)

図 178: 退社

18 窓口業務用部品

窓口業務シミュレーションに特化した部品です。

18.1 資源

18.1.1 窓口(CounterService)

図 179: 窓口

窓口(図 179)は、商業施設等の受付窓口を模したファシリティオブジェクトです。 ベースとなっているアイコンは、資源「ファシリティ」(8.3 章)です。ファシリティに関する部品としては、部品「ファシリティ要求」(6.6 章)、部品「ファシリティ解放」(6.7 章)、部品「ファシリティ利用」(6.8 章)などがあります。

窓口スケジュール

利用可能な窓口のスケジュールを表します。スケジュール無しの場合は、常に窓口に人がいる状態となり、お客さんの対応をします。スケジュール有りで表指定を選択した場合は、時間カラムおよび1:開,0:閉カラムに指定した値に応じて窓口の人員配置のスケジューリングができます。 時間カラムには、以下の 3 つの形式で設定が可能です。 1. 数値指定 たとえば、時間カラムに 10 と入力すれば、10 時からの窓口の開閉状態を変更できます。 2. 時刻指定 たとえば、07:00:00 と指定すれば、7 時からの窓口の開閉状態を変更できます。 3. 日付時刻指定 たとえば、2016-03-09 07:00:00 と指定すれば、2016年3月9日7時 からの窓口の開閉状態を変更できます。

1:開,0:閉カラムには 0 または 1 の値のみ設定することができます。1 は窓口が開いている状態、 0 は窓口に係員がおらず、閉まっている状態を示します。

18.2 フローアイテム

18.2.1 お客(CounterServiceCustomer)

図 180: お客

「お客」(図 180)は、窓口を利用するお客を表します。部品「窓口到着」(18.3.1 章)で生成されます。

お客ID

内部で使用します。

来店時刻

内部で使用します。

退店時刻

内部で使用します。

対応開始時間

内部で使用します。

対応終了時間

内部で使用します。

サービス時間

内部で使用します。

18.3 部品

18.3.1 窓口到着(EnterCounterService)

図 181: 窓口到着

18.3.2 対応終了(LeaveCounterService)

図 182: 対応終了

18.3.3 窓口選択部品:レジ(SelectCounterServiceMultipleLines)

図 183: 窓口選択部品:レジ

18.3.4 窓口選択部品:切符購入窓口(SelectCounterServiceSingleLine)

図 184: 窓口選択部品:切符購入窓口

18.3.5 窓口利用部品:レジ(UseCounterServiceMultipleLines)

図 185: 窓口利用部品:レジ

18.3.6 窓口利用部品:切符購入窓口(UseCounterServiceSingleLine)

図 186: 窓口利用部品:切符購入窓口

19 乱数

乱数属性について説明します。

19.1 乱数属性

部品編集画面の属性設定タブ(6.1.2 章)や、フローアイテム編集画面の属性設定タブ(9.1.2 章では乱数属性を設定出来ます(図 187)。乱数を設定する事で、フローアイテム生成時の生成間隔やフローアイテム自身のある属性を、理論分布に従った乱数にする事が出来ます。または、実際に発生したデータを元にサンプリングを行う、あるいは、そのまま再生する事で、より正確なモデル化も行えます。

図 187: 乱数属性

なお、時計のマークをクリックすると、時間単位を選べます(図 187)。もし、指定したい値が時間の場合、指定した値の単位を指定する事ができます。もし、値が時間を表している場合で、時間単位を指定しなかった場合、その値の単位は暗黙的に秒であると解釈されます。値の単位が時間でない場合、時間単位を指定しないで下さい。

図 188: 時間単位を指定した乱数属性

一番左の生成方式を変更するとその乱数に応じた引数が表示されます。

乱数属性には以下があります。

19.1.1 固定

常に同じ値を返します。

実数、整数、文字列、無変換、空リストを選ぶ事が出来ます。

返す値を指定します。

19.1.2 指数分布

指数分布に従う乱数を返します。

平均

指数分布の平均パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.2.1 確率密度関数

平均を \muとすると、確率密度関数は以下になります。

f(x;\mu) = \frac{e^{-\frac{x}{\mu}}}{\mu} \quad (x \ge 0, \mu > 0)

19.1.3 正規分布

正規分布に従う乱数を返します。

平均

指数分布の平均パラメータを指定します。

標準偏差

指数分布の標準偏差パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.3.1 確率密度関数

平均を \mu、標準偏差を \sigma とすると、確率密度関数は以下になります。

f(x;\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \quad \quad (\sigma > 0)

19.1.4 対数正規分布

対数正規分布に従う乱数を返します。

平均

指数分布の平均パラメータを指定します。

標準偏差

指数分布の標準偏差パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.4.1 確率密度関数

平均を \mu、標準偏差を \sigma とすると、確率密度関数は以下になります。

f(x;\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma{x}}e^{-\frac{(\log{x}-\mu)^2}{2\sigma^2}} \quad (\sigma > 0)

19.1.5 一様分布

一様分布に従う乱数を返します。

最小

一様分布の最小パラメータを指定します。

最大

一様分布の最大パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱 数を取得します。独自系列を指定すると指定した種による独自系列から乱 数を取得します。

19.1.5.1 確率密度関数

最小を a、最大を b とすると、確率密度関数は以下になります。

f(x;a,b) = \frac{1}{b - a} \quad (a \le x < b)

19.1.6 ベータ分布

ベータ分布に従う乱数を返します。

形状1

ベータ分布の形状1パラメータを指定します。

形状2

ベータ分布の形状2パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.6.1 確率密度関数

形状1を \alpha、形状2を \beta とすると、確率密度関数は以下になります。

f(x;\alpha,\beta)=\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1} \quad (0 \le x \le 1, \alpha > 0, \beta > 0)

19.1.7 ガンマ分布

ガンマ分布に従う乱数を返します。

形状

ガンマ分布の形状パラメータを指定します。

尺度

ガンマ分布の尺度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.7.1 確率密度関数

形状を \alpha、尺度を \beta とすると、確率密度関数は以下になります。

f(x;\alpha,\beta) = x^{\alpha-1} \frac{e^{-x/\beta}}{\Gamma(\alpha)\,\beta^\alpha} \quad (x \ge 0, \alpha > 0, \beta > 0)

19.1.8 アーラン分布

アーラン分布に従う乱数を返します。

正整数

アーラン分布の形状パラメータを指定します。

β

アーラン分布の尺度パラメータを指定します。

19.1.8.1 確率密度関数

形状を \alpha、尺度を \beta とすると、確率密度関数は以下になります。

f(x;\alpha,\beta) = x^{\alpha-1} \frac{e^{-x/\beta}}{(\alpha - 1)!\,\beta^\alpha} \quad (x \ge 0, \alpha > 0, \alpha \in {\bf N}, \beta > 0)

19.1.9 パレート分布

パレート分布に従う乱数を返します。

形状

パレート分布の形状パラメータを指定します。

最小値

パレート分布の最小値パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.9.1 確率密度関数

形状を a、最小値を b とすると、確率密度関数は以下になります。

f(x;a,b) = \frac{a b^a}{x^{a+1}} \quad (x \ge b, a > 0, b > 0)

19.1.10 ワイブル分布

ワイブル分布に従う乱数を返します。

形状

ワイブル分布の形状パラメータを指定します。

尺度

ワイブル分布の尺度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.10.1 確率密度関数

形状を \alpha、尺度を \beta とすると、確率密度関数は以下になります。

f(x;\alpha,\beta)=\frac{\alpha}{\beta}\left(\frac{x}{\beta}\right)^{\alpha-1} e^{-\left(\frac{x}{\beta}\right)^\alpha} \quad (x \ge 0, \alpha >0, \beta > 0)

19.1.11 カイ二乗分布

カイ二乗分布に従う乱数を返します。

自由度

カイ二乗分布の自由度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.11.1 確率密度関数

自由度を m とすると、確率密度関数は以下になります。

f(x;m)=\frac{(1/2)^{m/2}}{\Gamma(m/2)} x^{m/2 - 1} e^{-x/2} \quad (m > 0)

19.1.12 F分布

F分布に従う乱数を返します。

自由度1

F分布の分子の自由度パラメータを指定します。

自由度2

F乗分布の分母の自由度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.12.1 確率密度関数

自由度1を m_1、自由度2を m_2 とすると、確率密度関数は以下になります。

f(x;m_1,m_2)=\frac {\Gamma(\frac{m_1 + m_2}{2}) {(\frac{m_1}{m_2})}^{\frac{m_1}{2}} x^{\frac{m_1}{2}-1}} {\Gamma(\frac{m_1}2)\Gamma(\frac{m_2}2){(1+\frac{m_1}{m_2}x)}^{\frac{m_1+m_2}2}} \quad (m_1 > 0, m_2 > 0)

19.1.13 ロジスティック分布

ロジスティック分布に従う乱数を返します。

位置

ロジスティック分布の位置パラメータを指定します。

尺度

ロジスティック分布の尺度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.13.1 確率密度関数

位置を \mu、尺度を s とすると、確率密度関数は以下になります。

f(x;\mu,s) = \frac{e^{-(x-\mu)/s}}{s(1+e^{-(x-\mu)/s})^2}

19.1.14 非心カイ二乗分布

非心カイ二乗分布に従う乱数を返します。

自由度

非心カイ二乗分布の自由度パラメータを指定します。

非心度

非心カイ二乗分布の非心度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.14.1 確率密度関数

自由度を m、非心度を \delta とすると、確率密度関数は以下になります。

f(x;m,\delta) = \frac{e^{-\frac{x + \delta}{2}}}{2^{\frac{m}{2}}}\sum_{j=0}^{\infty}{(\frac{\delta}{4})}j\frac{x^{\frac{m}{2} + j - 1}}{j!\Gamma(\frac{m}{2}+j)} \quad (m > 0, \delta \ge 0)

19.1.15 非心F分布

非心F分布に従う乱数を返します。

自由度1

非心F分布の分子の自由度パラメータを指定します。

自由度2

非心F分布の分母の自由度パラメータを指定します。

非心度

非心F分布の非心度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.15.1 確率密度関数

自由度1を m_1、自由度2を m_2、非心度を \delta とすると、確率密度関数は以下になります。

f(x;m_1,m_2,\delta)=\sum_{j=0}^{\infty}\frac{e^{-\frac{\delta}{2}}(\frac{\delta}{2})^j}{j!}\frac{(m_1+2j)^{\frac{m_1+2j}{2}}m_2^{\frac{m_2}{2}}}{B(\frac{m_1+2j}{2},\frac{m_2}{2})}x^{\frac{m_1+2j}{2}-1}(m_2+(m_1+2j)x)^{-\frac{(m_1+2j)+m_2}{2}}

19.1.16 コーシー分布

コーシー分布に従う乱数を返します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.16.1 確率密度関数

f(x) = \frac{1}{\pi(1+x^2)}

19.1.17 レイリー分布

レイリー分布に従う乱数を返します。

尺度

レイリー分布の尺度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.17.1 確率密度関数

尺度を \theta とすると、確率密度関数は以下になります。

f(x;\theta) = \frac{x}{\theta^2}e^{-\frac{x^2}{2\theta^2}}

19.1.18 t分布

t分布に従う乱数を返します。

自由度

t分布の自由度パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.18.1 確率密度関数

自由度を m とすると、確率密度関数は以下になります。

f(x;m) = \frac{\Gamma((m+1)/2)}{\sqrt{m\pi\,}\,\Gamma(m/2)} (1+x^2/m)^{-(m+1)/2}

19.1.19 三角分布

三角分布に従う乱数を返します。

最小値

三角分布の最小値パラメータを指定します。

最頻値

三角分布の最頻値パラメータを指定します。

最大値

三角分布の最大値パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.19.1 確率密度関数

最小値を \alpha、最頻値を \gamma、最大値を \betaとすると、確率密度関数は以下になります。

\begin{aligned} f(x;\alpha, \gamma, \beta) = \left\{ \begin{array}{ll} \frac{2(x-\alpha)}{(\beta-\alpha)(\gamma-\alpha)} & (\alpha \le x \le \gamma) \\ \frac{2(\beta-x)}{(\beta-\alpha)(\beta-\gamma)} & (\gamma \le x \le \beta) \\ \end{array} \right. \nonumber \end{aligned}

19.1.20 二項分布

二項分布に従う乱数を返します。

n

二項分布の試行回数パラメータを指定します。

確率

二項分布の確率パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.20.1 確率関数

試行回数を n、確率を p とすると、確率関数は以下になります。

f(k;n,p)=\binom{n}{k} p^k(1-p)^{n-k} \quad (n > 0, 0 \le p \le 1)

19.1.21 幾何分布

幾何分布に従う乱数を返します。

確率

幾何分布の確率パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.21.1 確率関数

確率を p とすると、確率関数は以下になります。

f(k;p) = (1 - p)^{k - 1} p \quad (0 \le \le 1)

19.1.22 超幾何分布

超幾何分布に従う乱数を返します。

m

超幾何分布のある属性を持つ要素数パラメータを指定します。

n

超幾何分布のそれ以外の要素数パラメータを指定します。

k

超幾何分布のサンプル数パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.22.1 確率関数

ある属性を持つ要素数 m、それ以外の要素数を n、サンプル数を N とすると、確率関数は以下になります。

f(x;n,m,N) = \frac{\binom{m}{x} \binom{n}{N-x}}{\binom{m+n}{N}} \quad (0 \le x \le m, n + m - N \le x \le n)

19.1.23 負の二項分布

負の二項分布に従う乱数を返します。

n

負の二項分布の試行回数パラメータを指定します。

確率

負の二項分布の確率パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.23.1 確率関数

試行回数を n、確率を p とすると、確率関数は以下になります。

f(x;n,p) = \binom{n+x-1}{n-1}p^n(1-p)^x \quad (n > 0, 0 \le p \le 1)

19.1.24 ポアソン分布

ポアソン分布に従う乱数を返します。

平均

ポアソン分布の平均パラメータを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

19.1.24.1 確率関数

平均を \lambda とすると、確率関数は以下になります。

f(x;\lambda) = \frac{\lambda^xe^{-\lambda}}{x!}

19.1.25 経験分布

経験分布に従う乱数を返します。

実数、整数、文字列、無変換を選ぶ事が出来ます。

重み表

重みと値のリストを指定します。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

重み表の行ラベルを右クリックするとメニューが表示されます。(図 189)

図 189: 経験分布重み表

行を上に追加、行を削除、行を下に追加する事が出来ます。

19.1.25.1 確率関数

重みを \{w_i\}、値を \{v_i\} とすると、確率関数は以下になります。

f(v_i;\{w_j\}) = \frac{w_i}{\sum_j{w_j}} \quad (w_i \ge 0)

19.1.26 経験分布(列指定、重み無し)

入力フォルダにあるデータを利用した重み無し経験分布に従う乱数(サンプリング)を返します。

値列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

値列は{図 190}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 190: 列選択メニュー

19.1.26.1 確率関数

値列を \{v_i\} とすると、確率関数は以下になります。

f(v_i) = \frac{1}{\Vert\{v_i\}\Vert}

19.1.27 経験分布(列指定、重み有り)

入力フォルダにあるデータを利用した重み付き経験分布に従う乱数を返します。

重み列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

値列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

重み列、値列は{図 191}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 191: 列選択メニュー

19.1.27.1 確率関数

重み列を \{w_i\}、値列を \{v_i\} とすると、確率関数は以下になります。

f(v_i;\{w_j\}) = \frac{w_i}{\sum_j{w_j}} \quad (w_i \ge 0)

19.1.28 経験分布(列指定、時系列)

入力フォルダにあるデータを利用した重み付き経験分布に従う乱数を返します。

値列

入力フォルダにある時系列モニターの列を選ぶ事が出来ます。モニターの列は指定出来ません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

値列は{図 192}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 192: 列選択メニュー

19.1.28.1 確率関数

値列を (\{v_i\}, \{t_i\}) とすると、確率関数は以下になります。

w_j = \Delta t_j = t_{j+1} - t_j \quad (0 \le j < \Vert\{v_i\}\Vert) f(v_i;\{w_j\}) = \frac{w_i}{\sum_j{w_j}} \quad (w_i \ge 0, 0 \le i < \Vert\{v_i\}\Vert)

19.1.29 密度分布(列指定、重み無し)

入力フォルダにあるデータを利用した密度分布に従う乱数を返します。

値列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

値列は{図 193}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 193: 列選択メニュー

19.1.29.1 確率関数

値列を \{v_i\} とすると、確率関数は以下になります。 カーネル関数をKとすると、カーネル密度推定では以下の式により密度を推定します。 f(x)=\sum_{i=1}^{N} K(\frac{x-v_{i}}{\omega})

ここで\omegaは間隔幅(width)です。

カーネル関数は、それぞれ以下で定義されます。

ガウス関数

f(x;\mu,\omega)=\frac{1}{\sqrt{2\pi}\omega}e^{-\frac{(x-\mu)^2}{2\omega^2}} \quad \quad (\omega > 0)

三角関数

f(x;\mu,\omega)=\frac{1}{\omega^2}(x-\mu)+\frac{1}{\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

矩形関数

f(x;\mu,\omega)=\frac{1}{2\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

コサイン関数

f(x;\mu,\omega)=\frac{1}{2\omega} [1+\cos(\frac{\pi(x-\mu)}{\omega})] \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

19.1.30 密度分布(列指定、重み有り)

入力フォルダにあるデータを利用した重み付き密度分布に従う乱数を返します。

重み列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

値列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

重み列、値列は{図 194}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 194: 列選択メニュー

19.1.30.1 確率関数

重み列を \{w_i\}、値列を \{v_i\} とすると、確率関数は以下になります。 カーネル関数をKとすると、カーネル密度推定では以下の式により密度を推定します。 f(x)=\sum_{i=1}^{N} \frac{w_i}{\sum_j{w_j}} K(\frac{x-v_{i}}{\omega})

ここで\omegaは間隔幅(width)です。

カーネル関数は、それぞれ以下で定義されます。

ガウス関数

f(x;\mu,\omega)=\frac{1}{\sqrt{2\pi}\omega}e^{-\frac{(x-\mu)^2}{2\omega^2}} \quad \quad (\omega > 0)

三角関数

f(x;\mu,\omega)=\frac{1}{\omega^2}(x-\mu)+\frac{1}{\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

矩形関数

f(x;\mu,\omega)=\frac{1}{2\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

コサイン関数

f(x;\mu,\omega)=\frac{1}{2\omega} [1+\cos(\frac{\pi(x-\mu)}{\omega})] \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

19.1.31 密度分布(列指定、時系列)

入力フォルダにあるデータを利用した密度分布に従う乱数を返します。

値列

入力フォルダにあるモニターの列を選ぶ事が出来ます。時系列モニターの列は表示されません。

乱数の種

グローバル系列を指定すると、グローバル系列から乱数を取得します。独自系列を指定すると指定した値によって定められる一意な独自系列から乱数を取得します。

値列は{図 195}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照して下さい。

図 195: 列選択メニュー

19.1.31.1 確率関数

値列を (\{v_i\}, \{t_i\}) とすると、確率関数は以下になります。 カーネル関数をKとすると、カーネル密度推定では以下の式により密度を推定します。 w_j = \Delta t_j = t_{j+1} - t_j \quad (0 \le j < \Vert\{v_i\}\Vert) f(x)=\sum_{i=1}^{N} \frac{w_i}{\sum_j{w_j}} K(\frac{x-v_{i}}{\omega})

ここで\omegaは間隔幅(width)です。

カーネル関数は、それぞれ以下で定義されます。

ガウス関数

f(x;\mu,\omega)=\frac{1}{\sqrt{2\pi}\omega}e^{-\frac{(x-\mu)^2}{2\omega^2}} \quad \quad (\omega > 0)

三角関数

f(x;\mu,\omega)=\frac{1}{\omega^2}(x-\mu)+\frac{1}{\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

矩形関数

f(x;\mu,\omega)=\frac{1}{2\omega} \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

コサイン関数

f(x;\mu,\omega)=\frac{1}{2\omega} [1+\cos(\frac{\pi(x-\mu)}{\omega})] \quad \quad (\omega > 0,\mu-\omega \leq x \leq \mu+\omega)

19.1.32 再生(列指定)

入力フォルダにあるデータをそのまま再生します。

値列

入力フォルダにあるモニターあるいは時系列モニターの列を選ぶ事が出来ます。

繰り返す

再生を繰り返すかどうかを指定します。

部品等の乱数属性として使う場合は繰り返さないと実行時にエラーが発生するので注意が必要です。

値列は{図 196}のようにメニューから選択する事が出来ます。外部データのインポートについては、{4.4 章}を参照下さい。

図 196: 列選択メニュー

19.1.33 再生(ステップ)

開始点から終了点までをステップ置きに再生します。

実数、整数を選ぶ事が出来ます。

開始

開始点を指定します。

終了

終了点を指定します。この値は含まれません。終了点は開始点以上になるよう設定して下さい。

ステップ

ステップを指定します。正の値になるように設定してください。

繰り返す

繰り返して再生するかを指定します。

部品等の乱数属性として使う場合は繰り返さないと実行時にエラーが発生するので注意が必要です。

19.1.34 再生(変化率ステップ)

基準値からの変化率により動かし方を指定します。具体的には、基準値をb、変化率(上限)を\alpha(パーセント)、変化率(下限)を\gamma(パーセント)、ステップを\delta(パーセント)とすると、次の値を動きます:b(1+\frac{\gamma}{100}),b(1+\frac{\delta + \gamma}{100}),b(1+\frac{2\delta + \gamma}{100}), \dots, b(1+\frac{\alpha}{100}).

実数、整数を選ぶ事が出来ます。

基準値

基準値を設定します。

変化率(上限)

変化率の上限を指定します。

変化率(下限)

変化率の下限を指定します。

ステップ

ステップを指定します。正の値になるように設定してください。

繰り返す

繰り返して再生するかを指定します。

部品等の乱数属性として使う場合は繰り返さないと実行時にエラーが発生するので注意が必要です。

19.1.35 ユーザ定義ジェネレータ

ユーザ定義のジェネレータを指定する事が出来ます。

ジェネレータ

ユーザ定義のジェネレータを指定します。

19.1.35.1 繰り返し無しの再生の例

iter([1, 3, 7, 8])

と書けば、1, 3, 7, 8 をこの順に生成します。

19.1.35.2 繰り返し有りの再生の例

カスタムコード編集(5.5 章)で、

def usergen():
    while True:
        yield 1
        yield 3
        yield 7
        yield 8

とジェネレータ usergen を定義し、ユーザ定義ジェネレータを選択しジェネレータに usergen() と書けば、1, 3, 7, 8 を繰り返し生成します。

あるいは、カスタムコード編集で、

import itertools

と書き、ジェネレータとして、itertools.cycle([1, 3, 7, 9]) と書いても同じ動作をします。

19.1.35.3 乱数の組み合わせの例

以下のようなジェネレータを定義すれば、より複雑な乱数を生成する事が出来ます。

def myrandom():
    g1 = uniformDistribution(0, 1)
    g2 = normalDistribution(100, 3)
    g3 = exponentialDistribution(5)
    while True:
        yield next(g1) * next(g2) + next(g3)

psim 言語での乱数の生成については psim 言語リファレンスマニュアルを参照して下さい。

19.1.35.4 時間によって分布を変化させる例

以下のようなジェネレータを定義すれば、時間によって分布を変化させる事が出来ます。

def myrandom():
    g1 = uniformDistribution(0, 1)
    g2 = normalDistribution(100, 3)
    g3 = exponentialDistribution(5)
    while True:
        if now() < 500:
            yield next(g1)
        elif now () < 1000:
            yield next(g2)
        else:
            yield next(g3)

20 キュー

資源やポートで設定するキューについてを説明します。

キューにはFIFO キュー, 優先度付きキュー、スタック、ランダムがあります。資源編集画面によって指定出来るキューの個数はそれぞれ違い、それぞれのキューの役割りは異ります(図 197)。またポートのキューは暗黙的にFIFO キューになります。

図 197: キュー選択メニュー

20.1 キューの種別

20.1.1 FIFO キュー

先入れ、先出しのキューで。First In, First Out の略です。1, 2, 3 の順番で入力された場合、1, 2, 3 で出力します(図 198)。例えば銀行の窓口の行列など。

図 198: FIFOキュー

20.1.2 優先度付きキュー

優先度付きキューです。入力された順番とは関係なく、優先度 priority の高い順番に出力します(図 199)。例えば、ある作業者がいて、仕事を割り振られますが、仕事には優先度があり優先度の高い順に作業する場合など。

図 199: 優先度付きキュー(括弧は優先度)

20.1.3 スタック

後入れ、先出しのキューで。LIFO (Last In, First Out) キューとも言います。1, 2, 3 の順番で入力された場合、3, 2, 1 で出力します。(図 200)例えば、ある生産ラインにおいて、上流工程から流れてきた部品が重ねられていき、一番上に重ねられた部品から次の工程に流れて行く場合など。

図 200: スタック

21 グラフ

S4 Simulation System では多彩なグラフを容易に素早く作成し、シミュレーション結果を多面 的に把握し分析する機能を提供します。

グラフ機能として、定型グラフ、グラフ部品、リアルタイムグラフ部品の 3 つの 機能があります。定型グラフ機能は、定型的なグラフを作成する機能です。グラ フ部品は、さまざまなグラフで可視化する機能です。リアルタイムグラフ部品は、 シミュレーション実行中の結果を可視化する機能です。

21.1 定型グラフ

定型グラフ機能には、ワークスペースタブの出力フォルダ以下にあるモニターま たは時系列モニターのコンテキストメニュー (図 201)からアクセスします。

図 201: モニター・時系列モニターのコンテキストメニュー
図 202: モニター・時系列モニターのコンテキストメニュー

モニターは「プロット」(図 203)、「ヒストグラム」 (図 204)をメニューから作成できます。「プロッ ト」はモニターの数値列を対象にして折れ線グラフを作成します。縦軸が値、横 軸が順番に対応します。「ヒストグラム」は、モニターの数値列を対象にしてヒ ストグラムを作成します。

図 203: モニターのプロット
図 204: モニターのヒストグラム

時系列モニターは「時系列プロット」(図 205)、 「ヒストグラム」(図 206)をメニューから 作成できます。「時系列プロット」は時系列モニターの数値列を対象にして折れ 線グラフを作成します。縦軸が値、横軸が時間に対応します。「ヒストグラム」 は時系列モニターの数値列を対象にして時間差を重みとしたヒストグラムを作成 します。

図 205: 時系列モニターの時系列プロット
図 206: 時系列モニターのヒストグラム

定型グラフは、他のグラフのように編集可能ですがグラフ部品( 21.2 章)やリアルタイムグラフ部品 (21.3 章)のようにこの設定を保存することは出来ま せん。

21.2 グラフ部品

グラフ部品は、モデル上に配置して使用します。グラフ部品をダブルクリックし、 グラフウィンドウを開きます。グラフは、このウィンドウで作成します。

パラメータ編集(5.4 章)で指定される出力フォルダ内にあ るデータに対してグラフを作成します。指定された出力フォルダが存在しない場 合、エラーメッセージ(図 207)が表示され、グラフ部 品を編集できません。

図 207: 出力フォルダがない場合のエラーメッセージ

この場合、シミュレーションを一度実行する、またはパラメータの出力フォルダ を実際に存在する別の出力フォルダに変更することで、グラフ部品を編集できる ようになります。ただし別の出力フォルダを指定した場合、対応するデータが実 際にない場合は正しくグラフが描かれませんので、データを指定しなおす必要が あります。

グラフの作成方法はグラフマニュアルを参照してください。

21.3 リアルタイムグラフ部品

リアルタイムグラフ部品は、モデル上に配置して使用します。リアルタイムグラ フ部品をダブルクリックし、グラフウィンドウを開きます。グラフは、このウィ ンドウで作成します。リアルタイムグラフ部品では、シミュレーション実行中に グラフを作成できます。

パラメータ編集(5.4 章)で指定される出力フォルダ内にあ るデータに対してグラフを作成します。指定された出力フォルダが存在しない場 合、グラフ部品と同様にエラーメッセージ(図 207)が 表示されます。

シミュレーションを一度実行する、またはパラメータの出力フォルダを実際に存 在する別の出力フォルダに変更することで、グラフ部品を編集できるようになり ます。ただし別の出力フォルダを指定した場合、対応するデータが実際にない場 合は正しくグラフが描かれません。

作成されたリアルタイムグラフはシミュレーション実行時に全て表示されます。 リアルタイムグラフを閉じてしまった場合、開きたいリアルタイムグラフ部品を ダブルクリックすることで再度開くことが出来ます。

グラフの作成方法はグラフマニュアルを参照してください。

22 グラフファイル

環境部品の中には、様々な種類のランダムグラフが用意されているが、外部からインポートしたいケースもあります。

グラフの形状のみを取り込みたい場合もあると思いますが、外部で表示上の座標を自動配置し、その情報とともに取り込みたい場合もあると思います。

環境部品が作ったランダムグラフの場合、たいていの場合、座標はランダムに配置されており、2 次元上の座標に適切に配置したい場合はユーザーが手動で設定する必要があります。

もし、座標を自動的に配置したい場合は、外部のツールを利用する必要がありますが、例えば、グラフの自動配置ツールとして良く用いられているのが、以下です。

  • The Open Graph Viz Platform:

    • http://gephi.org/

Gephi には、幾つかの自動配置アルゴリズムが搭載されており、また、配置過程はリアルタイムに表示され、配置中に、様々なパラメータを変更したり、特定のノードを強制的に動かしたりする事が出来ます。(図 208)

図 208: The Open Graph Viz Platform

22.1 グラフファイルのフォーマット

22.1.1 GEXFフォーマット

  • Graph Exchange XML Format

    • http://gexf.net/format/index.html

GEXF は、ネットワーク構造を表現する言語のひとつである。Gephi プロジェクトから発生した事もあり、Gephi との相性が非常に良い。

サンプルは以下である。

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <meta lastmodifieddate="2009-03-20">
        <creator>Gexf.net</creator>
        <description>A hello world! file</description>
    </meta>
    <graph mode="static" defaultedgetype="directed">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
    </graph>
</gexf>

形式は XML であり、ノードの定義部とエッジの定義部に分かれる。ノードとエッジの属性には、任意個の属性値を指定する事が出来る。

Gephi によって自動配置を行った結果のフォーマットもまた、XML の仕様として定義されている。

サンプルは以下である。

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft"
      xmlns:viz="http://www.gexf.net/1.1draft/viz"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.gexf.net/1.2draft
      http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
    <graph>
        <nodes>
            <node id="a" label="glossy">
                <viz:color r="239" g="173" b="66" a="0.6"/>
                <viz:position x="15.783598" y="40.109245"
                              z="0.0"/>
                <viz:size value="2.0375757"/>
                <viz:shape value="disc"/>
            </node>
        </nodes>
    </graph>
</gexf>

他の属性値とは独立に定義される。

22.1.2 GraphMLフォーマット

  • GraphML

    • http://graphml.graphdrawing.org/

GraphML は、ネットワーク構造を表現する言語のひとつである。

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
  <key id="d0" for="node" attr.name="color"
    attr.type="string">
    <default>yellow</default>
  </key>
  <key id="d1" for="edge" attr.name="weight"
    attr.type="double"/>
  <graph id="G" edgedefault="undirected">
    <node id="n0">
      <data key="d0">green</data>
    </node>
    <node id="n1"/>
    <node id="n2">
      <data key="d0">blue</data>
    </node>
    <node id="n3">
      <data key="d0">red</data>
    </node>
    <node id="n4"/>
    <node id="n5">
      <data key="d0">turquoise</data>
    </node>
    <edge id="e0" source="n0" target="n2">
      <data key="d1">1.0</data>
    </edge>
    <edge id="e1" source="n0" target="n1">
      <data key="d1">1.0</data>
    </edge>
    <edge id="e2" source="n1" target="n3">
      <data key="d1">2.0</data>
    </edge>
    <edge id="e3" source="n3" target="n2"/>
    <edge id="e4" source="n2" target="n4"/>
  </graph>
</graphml>

形式は XML であり、ノードの定義とエッジの定義を行う。ノードとエッジの属性には、任意個の属性値を指定する事が出来る。

Gephi によって自動配置を行った結果は、他の属性と同様に出力される。

22.2 グラフファイルの取り込み

GEXF フォーマットのファイルを取り込むには、12.10 章を参照して下さい。

GraphML フォーマットのファイルを取り込むには、12.7 章を参照して下さい。

22.3 グラフファイルの書き出し

モデル編集画面内に配置されている環境の中で、グラフ形式の部品(末尾にグラフとついているもの)にて、右クリックして表示されるメニューから、「グラフファイルを出力する」を選んで下さい。すると、最初に、

  • GEXF フォーマット

  • GraphML フォーマット

を選択下さい。次ファイルダイアログが表示されるので、書き込みたいファイル名を入力して下さい。

23 データ表示

23.1 サマリの表示

サマリの表示方法についてを説明します。

モデルを開いている状態で、モデルメニュー(3.2.3 章)の「サマリを表示する」を選択するとサマリを表示します。あるいはツールバーのボタン(3.3.6 章)、モデル編集画面の部品がない場所で右クリックして表示されるメニュー(3.5.1 章)からも実行出来ます。

サマリ表示画面(図 209)では、現在選択されている出力ポートの基本統計量の一覧が表示されます。

図 209: サマリ表示

一番左の列は、モデルの出力フォルダにあるデータの一覧が表示されています。構成はメインウィンドウのブラウザパネルと同じです。「+」、「–」を押す事で開閉が出来ます。

列名に表示されるのは、基本統計量であり、以下が表示されます。

  • 観測数

  • 平均

  • 標準偏差

  • 分散

  • 95 % 信頼区間下限

  • 95 % 信頼区間上限

  • 変動係数

  • 最小値

  • 25 % 値

  • 中央値

  • 75 % 値

  • 最大値

  • レンジ

モニターか時系列モニターかで統計量の計算方法は異ります。各統計量の計算式は、psim 言語リファレンスマニュアルを参照して下さい。

23.2 データの表示

ブラウザパネルのモニター、時系列モニターあるいは列を右クリックして表示されるメニューから「データを表示する」を選択するとデータを表示する事が出来ます。(図 210)

図 210: データ表示

23.2.1 モニター

モニターを選んでデータを表示した場合、そのモニターに含まれる全ての列が表示されます。

23.2.2 モニターの列

モニターの列を選んでデータを表示した場合、その列のみのデータが表示されます。

23.2.3 時系列モニター

時系列モニターを選んでデータを表示した場合、そのモニターに含まれる全ての列と「時間」という列名で時間列が表示されます。

23.2.4 時系列モニターの列

時系列モニターの列を選んでデータを表示した場合、その列と 「時間」という列名で時間列が表示されます。

23.3 データ表示機能

データ表示では、各列の整列や値の検索を行うことができます。複数列をキーにした整列や、前方一致や後方一致などの検索といった高度な設定を行うことが可能です。

図 211: データ表示機能

23.3.1 整列

データを整列させる事が出来ます。複数キーのソートも可能です。

データを整列させるには、各列の列名の横にあるソートアイコンをクリックす るか、右クリックメニューで表示される整列メニューを実行します。

図 212: データの整列

ソートアイコンをクリックすると、「降順」、「昇順」、「レコード順」の順 に整列状態が変化します。複数の列の整列状態を変化させることで、複数キー のソートを行う事が出来ます。右クリックメニューの「整列」は、必ず単一キー でのソートになります。右クリックメニューの「複数(複数キー)」の場合、 複数キーのソートを行うことが出来ます。

図 213: 複数キーのソート

23.3.2 検索

データを検索することが出来ます。完全一致や部分一致などの他に、数値に対 しては誤差内にある値を検索(誤差内一致検索)することが出来ます。

データを検索するには、下部右側にある検索フィールドに検索語を入力して Enter キーを押します。続けて Enter キーを押すことで、インクリメンタルに検索を行います。

図 214: データの検索

以下の検索が実行できます。

検索方法 説明
完全一致 検索語と値が一致するものを検索
前方一致 検索語から始まる値を検索
部分一致 検索語を含む値を検索
後方一致 検索語で終わる値を検索
誤差内一致 一定の誤差内にある値を検索

検索フィールドの左側にある虫眼鏡アイコンをクリックし、出てきたメニュー で検索方法を選択します。さらに左隣にある歯車アイコンをクリックすると、 検索時のオプションを設定できます。オプションでは、検索方向や大文字・小 文字の区別、誤差を指定できます。

オプション 説明
検索方向 行毎または列毎のどちらの方向に検索するかを指定
大文字・小文字を区別する 誤差内一致以外の検索の際に大文字・小文字を区別するかしないかを指定
誤差 誤差内一致検索の際の誤差を指定

24 データ分析

S4 Simulation System ではシミュレーション結果に対する分析機能として、 シミュレーションパラメータと結果に対して線形回帰と分散分析を行う分散分析機能がございます。

24.1 分散分析

分散分析機能は、ワークスペースタブの出力フォルダ以下にある、 モニターまたは時系列モニターのコンテキストメニュー(図 215)からアクセスします。

図 215: モニター・時系列モニターのコンテキストメニュー
図 216: モニター・時系列モニターのコンテキストメニュー

コンテキストメニューの「分散分析」メニューから、分散分析を実行出来ます。 分散分析メニューを選択すると、図 217のような分散分析ウィンドウが表示されます。

図 217: 分散分析ウィンドウ

分散分析ウィンドウには、分散分析の設定を行う「設定」タブと、 線形回帰の結果が表示される「結果(回帰)」タブ、分散分析の結果が表示される「結果(分散分析)」タブがあります。

それぞれのタブの構成は以下のようになっています。

設定タブ 設定タブでは、回帰モデルの設定を行います。

目的変数

モニターから目的変数となる列を選択します。文字列型は選択出来ません。

モデル式

回帰モデルに対するモデル式を入力します。 モデル式の設定の仕方は5.4.5.2 章の「モデル式」の設定欄と同様です。

↑選択した列を追加

列名一覧の表で選択状態となっている列を、説明変数としてモデル式に入れます。

列名一覧

対象のモニター内の列が表示されます。カテゴリ変数として扱う列を選択したり、 「↑選択した列を追加」ボタンによってモデル式に追加する列を選択したりします。

表における各列の意味は次の通りです。

名称

列名をあらわします。

列の型を表します。

カテゴリ変数として扱う

各列を説明変数として扱う際にカテゴリ変数として扱うか否かを表します。 チェックが入っているとカテゴリ変数として扱われ、 入っていないと扱われません。

文字列型の列は常にカテゴリ変数として扱われます。
実行

実行ボタンを押すと、設定タブの設定で、線形回帰と分散分析が実行されます。 実行結果はそれぞれ「結果(回帰)」タブと「結果(分散分析)」タブに出力されます。

結果(回帰)タブ

「結果(回帰)」タブには、 線形回帰の結果が、表 11のような表形式で出力されます。

表 11: 結果(回帰)
パラメータ名 係数推定値 標準誤差 t値 Pr(>|t|)
パラメータ名_1 係数_1 標準誤差_1 t値_1 p_1
\vdots \vdots \vdots \vdots \vdots
パラメータ名_k 係数_k 標準誤差_k t値_k p_k

各列の意味は次の通りです。

パラメータ名

回帰モデル中の各説明変数の名称です。カテゴリ変数の列に対しては”列名[T.カテゴリ値]“の形で各カテゴリ値に対応する説明変数があらわされます。

係数推定値

説明変数に対応する係数です。

標準誤差

係数の標準誤差です。

t値

係数のt値です。

Pr(>|t|)

係数のp値です。

結果(分散分析)タブ

「結果(分散分析)」タブには、 分散分析の結果が、表 12のような表形式で出力されます。

表 12: 結果(分散分析)
パラメータ名 平方和 自由度 平均平方 F値 Pr>F
パラメータ名_1 平方和_1 自由度_1 平均平方_1 F値_1 p_1
\vdots \vdots \vdots \vdots \vdots \vdots
パラメータ名_k 平方和_k 自由度_k 平均平方_k F値_k p_k

各列の意味は次の通りです。

パラメータ名

回帰モデル中の各説明変数の名称です。

平方和

説明変数に対応するタイプIIIの平方和です。

自由度

説明変数の対応する自由度です。

平均平方

説明変数の対応する平均平方です。

F値

説明変数に対応するF値です。

Pr(>|t|)

説明変数に対応するp値です。

25 強化学習結果の閲覧

強化学習モデルアイコン (14 章) を使用したシミュレーションを実行すると、 実行結果として強化学習の学習結果が出力されます 。 強化学習の学習結果は強化学習モデルビューアを通して閲覧できます。

25.1 強化学習モデルビューア

強化学習モデルビューアは、ワークスペースタブの入力または出力フォルダ以下にある、 強化学習モデルのコンテキストメニューからアクセスします。

コンテキストメニューの「学習モデルを閲覧する」メニューから 強化学習モデルビューアを起動します。 「学習モデルを閲覧する」メニューを選択すると、 図 218 のようなウィンドウが表示されます。

図 218: 強化学習モデルビューア

強化学習モデルビューアのウィンドウには、 閲覧対象の選択などの各種設定を行う「設定」タブと、 設定に従って学習結果(の一部)が表示される「結果」タブがあります。 強化学習の学習結果は一般には表形式では表現できず、様々な形式で保存されます。 そのため、「設定」タブで学習結果のうち一部をサンプリングする設定を行い、 サンプリングした結果を表形式で「結果」タブに出力するような形になっています。

それぞれのタブの構成は以下のようになっています。

25.1.1 設定タブ

閲覧対象の選択や、閲覧範囲の設定を行います。 タブ内には、設定項目と「計算」ボタンがあります。 設定を行った後、「計算」ボタンをクリックすると、 設定に従って学習結果の一部が抽出され「結果」タブに出力されます。

以下の設定項目を持ちます。

強化学習モデル

対象となる強化学習モデルをあらわします。

ID

エージェントシミュレーションで強化学習した際など、 場合によっては対象の学習結果には複数の学習結果が格納される場合があります (エージェントの場合はエージェントごとの学習結果になります)。 複数の学習結果が格納されている場合は、いずれの学習結果であるかを選択します。 複数の結果を保持していない場合は、選択できません。

閲覧対象

閲覧対象の学習結果を選択します。

観測値の範囲

閲覧対象の観測値の範囲を指定します。 観測値集合の次元ごとに取りうる値を指定し、 それらの直積集合を範囲として指定できます。

行動値の範囲

閲覧対象の行動値の範囲を指定します。 行動値集合の次元ごとに取りうる値を指定し、 それらの直積集合を範囲として指定できます。

25.1.2 結果タブ

設定タブで設定を行った後、計算ボタンをクリックすると 設定に従って学習結果の一部が抽出され「結果」タブに出力されます。

結果タブに出力された結果が出力は、 モニタとして保存する事ができます。

結果タブ内にある「モニタとして出力」ボタンをクリックすると 図 219 のように保存するモニタの名前を訊かれます。 名前を入力すると、入力された名前で結果がモニタとして出力フォルダに出力されます。

図 219: 強化学習モデルビューアの結果をモニタとして出力する

26 アニメーション

アニメーションとは、待ち行列の状態をリアルタイムにモデル上に可視化する機能です。この機能を用いる事でシミュレーション実行中にどこに待ち行列が発生しやすいかを視覚的に確認することができます。アニメーションを用いるには、アニメーション全体の動作に関する設定をパラメータ編集画面で、個々の部品の動作に関する設定を部品編集画面で設定する必要があります。

26.1 パラメータ設定

アニメーション全体の動作に関する設定を、パラメータ編集画面の基本設定タブにあるアニメーション欄で設定します。具体的なパラメータは以下の通りです。

表示

アニメーションを表示するかどうかの設定をします。

表示間隔

アニメーションを表示する間隔を設定します。ここで設定する値は、CPU 時間ではなくシミュレーションモデルでの時間です。

タイプ

アニメーションの表示方法を設定します。表示方法は、「表示タイプ」、「色」、「表示範囲」の3つのパラメータの組み合わせで設定します。各パラメータの選択項目は以下の通りです。\

表示タイプ 説明
bar 状態を長方形の長さで表示します
circle 状態を円で表示します
説明
グラデーション 表示タイプで指定した形がグラデーションで変化します
3色 表示タイプで指定した形が3色のパターンで変化します表示タイプに circle を指定した時のみ設定可
表示範囲 説明
ユーザ指定 部品パラメータでユーザが指定した色に従います。
指定なし 部品パラメータで選択したグラデーションパターンを使用します色にグラデーションを指定した時のみ設定可
表示内容

待ち行列の長さの表示内容を選択します。

表示内容 説明
待ち行列の長さの数を表示します
割合 待ち行列の長さのキューサイズに占める割合を表示しますキューサイズが無制限の場合には、部品パラメータの表示範囲の幅がキューサイズになります
図 220: アニメーションのパラメータ

26.2 部品パラメータ設定

個々の部品編集画面でアニメーション表示の為の条件や範囲を指定します。編集画面はタイプがグラデーションと 3 色の場合で異なります。\ タイプにグラデーションを指定した場合はアニメーション表示範囲欄で以下の項目を設定します。

単位

アニメーションで表示する範囲をキューサイズ(同時利用容量)の割合で指定するか、数値で指定するかを設定します。

範囲

アニメーションで表示する範囲の上下限値で指定します(キューのサイズが 100 で表示範囲の上下限が 0 と 10 の場合には、待ち行列の長さが0の時に0%待ち行列の長さが10以上の時に100%となります)。

ユーザ指定

グラデーションの下限色と上限色を設定します。

指定なし

グラデーションパターンを選択します。

図 221: グラデーションの編集画面

タイプに3色を指定した場合は、以下の項目を設定します。

条件1

条件1の個数と色を設定します。条件1の個数 \leq 待ち行列の長さ < 条件2の個数の場合にここで指定した色になります。

条件2

条件2の個数と色を設定します。条件2の個数 \leq 待ち行列の長さ < 条件3の個数の場合にここで指定した色になります。

条件3

条件3の個数と色を設定します。条件3の個数 \leq 待ち行列の長さの場合にここで指定した色になります。

図 222: 3色の部品編集画面

27 VAP 連携

S4 Simulation System をインストールした PC に VAP (isual Analytics Platform) がインストールされている場合、VAP 上から S4 Simulation System を呼び出す事が出来ます。

具体的には、以下のような事が出来ます。

  • VAP 上で作成したパラメータを S4 Simulation System に渡してシミュレーションを行う事が出来る。

  • S4 Simulation System 上で行ったシミュレーションを VAP へ返却し、VAP 上で、分析を行う事が出来る。

27.1 操作

27.1.1 配置

図 223: VAP S-Quattro アドオン

VAP (Visual Analytics Platform) がインストールされている PC 上に、S4 Simulation System をインストールすると、VAP のオブジェクトブラウザ内の、アドオンフォルダに、「S-Quattro Simulation System」が表示されます。更にその下に、「Simulation」アドオンが表示されます。(図 223)

もし、アドオンが表示されていない場合は、S4 Simulation System をインストール後に、VAP をインストールした場合などが考えられます。その場合は、S4 Simulation System を再度インストールして下さい。

VAP の通常の操作通りに、Simulation アドオンをプロジェクト上に配置する事が出来ます。

S-Quattro 上のシミュレーションモデル内で利用したいデータがある場合は、Simulation アドオンに対し、任意個のリンクを結ぶ事が出来ます。

S-Quattro 上のシミュレーションモデル上の結果を VAP に返却したい場合は、Simulation アドオンから、任意個のリンクを結ぶ事が出来ます。

27.1.2 実行

Simulation アドオンをダブルクリック、あるいは右クリックで表示されたメニューから「実行」を選択すると、S4 Simulation System が VAP アドオンモードで起動します。(図 224)

図 224: VAP S-Quattro アドオン起動画面

VAP アドオンモードは、基本的な操作方法は、スタンドアロンで起動した時と同じですが、以下の点で異ります。

  • 独自のワークスペースを持ち、プロジェクト名は必ず「Project」になります。

  • 入力フォルダ内には、VAP で指定した入力リンクのデータがインポートされており、名前の末尾に(VAP)が付与されています。新規に入力データを追加したい場合は、入力フォルダ内にデータを用意し、モニター上で右クリックを押し、表示されたメニューの中の「VAP から入力する」にチェックを入れて下さい。次回起動時に入力マッチングウィンドウが表示されます。入力データを削除したい場合は、モニター上で右クリックを押し、表示されたメニューの中の「VAP から入力する」のチェックを外して下さい。次回起動時に入力マッチングウィンドウが表示されます。

  • 出力フォルダ内には、シミュレーションの実行結果が保存されますが、VAP 側に出力するデータには名前の末尾に、(VAP)が付与されています。新規に出力データを追加したい場合は、モニター上で右クリックを押し、表示されたメニューの中の「VAP へ出力する」にチェックを入れて下さい。出力データを削除したい場合は、モニター上で右クリックを押し、表示されたメニューの中の「VAP へ出力する」のチェックを外して下さい。

27.1.3 再実行

Simulation アドオンより下のアイコンをダブルクリック、あるいはSimulation アドオンで右クリックで表示されたメニューから「再実行」を選択すると、S4 Simulation System がバックグランドで実行され、S4 Simulation System の進捗ダイアログのみが表示されます。

27.1.4 入出力マッチング

S-Quattro アドオン上で、「VMS から入力する」と設定したデータ数を変化させた場合、次回に S-Quattro アドオンの起動時に入出力マッチングウィンドウが表示されます。適宜入出力マッチングを設定して下さい。

27.1.5 実行結果

S-Quattro アドオン上で、「VMS へ出力する」と設定したデータはVAP 側に返却されます。VAP 上に返却されたデータは通常の VAP と同様の処理を行う事が出来ます。複数のデータが返されますので、適宜入力マッチングを行う必要があります。また、第1テーブルには必ず「result..」という名前のデータが返却されます。

28 その他

28.1 Python シェルの起動

Python シェルについてを説明します。

ウィンドウメニュー(3.2.4 章)の「Python シェル起動」を選択すると、Python シェルが起動されます。

Python シェルでは Python のプロンプトが表示されますので、Python の動作を確認する事が出来ます。psim 言語もインポートされた状態で起動します。 (図 225)

図 225: Python シェル

参考文献

(1)
Geraerts, Roland, Overmars, Mark. The corridor map method: A general framework for real-time high-quality path planning. Computer Animation and Virtual Worlds. 2007, vol. 18, p. 107–119.
(2)
Helbing, Dirk, Molnar, Peter. Social Force Model for Pedestrian Dynamics. Physical Review E. 1998, vol. 51.
(3)
Maei, Hamid Reza, Sutton, Richard S. “GQ(lambda): A general gradient algorithm for temporal-difference prediction learning with eligibility traces”. Proceedings of the 3d Conference on Artificial General Intelligence (2010). Atlantis Press, 2010/06, p. 100–105. https://doi.org/10.2991/agi.2010.22.
(4)
Miller, W. T., Glanz, F. H. UNH_CMAC Version 2.1. The University of New Hampshire Implementation of the Cerebellar Model Arithmetic Computer - CMAC. 1996. http://incompleteideas.net/tiles/tilesUNHdoc.pdf.
(5)
Sutton, R. S., Barto, A. G. Reinforcement Learning: An Introduction. 1998.
(6)
北川源四郎. モンテカルロ・フィルタおよび平滑化について. 統計数理. 1996, vol. 44, no. 1, p. 31–48.

索引