Version 6.5


操作マニュアル


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)