シミュレーションとは?シミュレーションの種類や問題解決事例を紹介

  • HOME
  • シミュレーションとは?シミュレーションの種類や問題解決事例を紹介

現実世界のビジネスにおいては、戦略立案・収益予測・リスク分析など「予測」を元に意思決定を行う場面が多々あります。この「予測」の精度は、シミュレーションの精度と言い替えることもできます。世の中ではシミュレーションという言葉が様々な場面において幅広い意味で使われています。

では、具体的にシミュレーションとはどのような意味の言葉なのでしょうか。何となくのイメージはありつつも、改めて聞かれると答えに窮する人も多いかもしれません。そこで今回は、シミュレーションを幾つかの種類に大別し、その概要やできることについて詳しくご紹介していきます。

シミュレーションとは

戦略立案・収益予測・リスク分析など現実世界の問題には多くの不確定要素が含まれる上に、システムが複雑で予測が困難な場合が少なくありません。しかし、実システムで試すにはコストも時間も掛かります。また、実システムで試すには危険を伴うような場合や、そもそもまだシステムが出来ていない場合なども考えられます。

このような状況で威力を発揮するのがシミュレーションです。 現実世界の問題をコンピュータ上に再現してシミュレートすることにより、実際のシステムを変更することなく、様々な条件におけるシステムの挙動を調べることが出来ます。

シミュレーションという言葉は、世の中で幅広く使われている言葉です。フライトシミュレーションや耐震シミュレーションもありますし、モンテカルロ法や需要予測もシミュレーションという言葉で表現されるかもしれません。 ここでは、当社がソリューションの対象としている下記の3種類のシミュレーションをご紹介します。

  • 物理シミュレーション
  • 離散イベントシミュレーション
  • エージェントシミュレーション

物理シミュレーション

物理シミュレーションは、以下のような目的で現代的コンピューティングの黎明期から広く用いられています(黎明期の計算機ENIACは、そもそも軍事的な物理シミュレーションを目的として開発されています)。

  • 自然現象(気象・海流・天体等)の説明・予測
  • 精密機器や自動車・航空機などの人工的な製品開発での設計検討、動作の理解

世の中の物理現象は少数の支配方程式(ニュートン力学の運動方程式、電磁気学のマックスウェル方程式、流体力学ならナビエストークス方程式等)で本質的にはよく説明できます。ただしこれらの方程式は、特に現実世界の複雑な条件下では厳密解を求めることができません(解析的に解くことができません)。

このため、コンピュータで数値計算することで、実用上十分な精度の近似解を求めます。スーパーコンピュータやGPUでの高性能計算(HPC)を活用するケースも多いです。 例として、半導体回路設計時に半導体物質内の電流・電圧の分布を求める過程(デバイスシミュレーション)を例にとって説明します

  1. 対象物質をメッシュ状(立方体等)に区切る。
    ※コンピュータで数値計算するためには、対象を離散的に扱う必要があるため。
  2. 各メッシュに物理パラメータ(誘電率、移動度)を設定する。
  3. 計算する領域の端での境界条件(電圧、荷電粒子の密度等)を設定する。
  4. 各メッシュで支配方程式(ポアソン方程式や荷電粒子数連続の式)を行列で表現する。
    ※物理的な相互作用は通常は近傍のメッシュ間でのみ起きるため、疎行列になる。
  5. 上記の方程式を行列ソルバーにより解く。通常は反復法によって近似解を繰り返し求めて改善していき、誤差がほぼ変化しなくなれば打ち切る。この計算に時間がかかる。
  6. 得られた計算結果の各メッシュの電流・電圧分布をヒートマップ等で可視化する。
  7. 設計で意図した通りの分布になっていない場合、問題点を検討し、物質の分布などの条件を変えて再度シミュレーションする。

上では、移流拡散方程式を行列ソルバーが必要な陰解法で解析する例を想定していますが、有限差分法や有限要素法などの差分スキームの選択や非線形性が存在してもうまく安定化させるための方法、近年ではメッシュを用いない粒子法、グレーボックス法など様々なバリエーションが提案されています。 ただ、シミュレーションの結果をみながらパラメータの更新を繰り返すことで、必要な性能で動作する設計を検討する枠組みは共通していると言えるでしょう。

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

離散イベントシミュレーションとは、待ち行列型モデルの混雑現象を分析・評価するためのシミュレーションのことです。離散イベントシミュレーションではシステム(シミュレーション対象)の状態変化が離散的に起こります。システムの状態変化を起こすトリガは事象(イベント)と呼ばれ、それが離散的に起こるので離散イベントシミュレーションと呼ばれます。

私たちの身の回りには様々な混雑や待ちの現象が存在します。例えば、朝、出勤する際には

  • バス停でバスを待ち
  • バスは交差点で信号待ちをし
  • 駅に着いたらエスカレータに並び
  • ホームで電車を待ち
  • 前の電車が支えていると待たされ
  • 駅に着いたらまたエスカレータに並び
  • 改札を通るのに並ぶ

といった具合になります。

待ちは混雑により発生します。これは、提供されるサービスの容量を超えてそのサービスの利用者が集まるからです。道路の渋滞は道路の容量以上の車が通行することで生じますし、エスカレータの混雑も、エスカレータで運べる人以上に人が乗ろうとすることで生じます。これ以外にも、電話、インターネットなどの通信でも、目に見えない混雑や待ちが発生しています。

これらの混雑を解消するために利用者に規制をかける方法(ハードな方策)もありますが、それでは問題を前向きに解決したとは言い難いです。ボトルネックがどこにあるのかを把握し、適切な混雑緩和策を打つ、「ソフトな方策」こそ望まれているものと言えるでしょう。シミュレータ上で現実の世界を再現し、設定を変えた際の混雑状況を観察することで、ボトルネックを探して混雑緩和策の検討を行うことができるようになります。

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

エージェントシミュレーションとは、一定のルールに基づいて自律的に行動するエージェントの振る舞いや、それらの相互作用から現れる複雑な社会現象をシミュレーションするものです。

私たちの生活している社会においては、例えばエージェントは「ヒト」になりますし、道路交通網において は「自動車」に対応します。これらエージェントの個々の行動や移動、振る舞い、状態変化をコンピュータ上で同時にシミュレーションする事で、エージェントが活動している社会全体の振る舞いを分析する事が出来 ます。 また、エージェントシミュレーションでは、エージェントの個々の振る舞いからでは、予測できなかったような社会システムの現象も予測する事ができます。このような現象は「創発」と呼ばれます。

エージェントシミュレーションの例として、ツイッター上に新製品発売に関する情報が広がる様子を考えます。これをエージェントシミュレーションでモデル化すると、エージェントはツイッターユーザであり、 エージェントの行動は情報を目にしてツイートする、リツイートする、何も行動しない、とパターン化されます。

また、エージェントが活動する社会は、ユーザ間のフォロー、フォロワー関係のネットワーク構造であり、口コミは構築されているユーザ同士のネットワーク上を伝播していきます。このようにコンピュータ上でユーザの個々の行動をシミュレーションしてみると、ツイッター上で新製品に関する情報を目にするユーザ数の推移を予測できます。

あるいは、エージェントの移動を行動ルールとしてモデル化すると、火災発生時の避難の様子などもシミュレーションする事が出来、最適な避難経路の設計や、非常灯の配置などに役立てる事ができます。 同様に、商用施設や空港、駅などの施設に適用すると、混雑緩和策の検討、施設の要員計画にも活用できます。

道路交通網においては、自動車の走行をエージェントシミュレーションする事で、渋滞緩和策として、信号制御方法や、道路建設などを検討する事が出来ます。

エージェントシミュレーションはこのように様々な場面で有効です。エージェントの状態や行動ルールを適切に与え、複数のエージェント間のインタラクションを考慮したマルチエージェントモデルにすることで、現実により近いモデル化ができると期待されています。

シミュレーション最適化

性能が高くなる設計を見つけたい、混雑をできる限り緩和したい、コストを小さくしたいなど、あらかじめ最適化したい対象がある場合には、シミュレーションモデルのパラメータを調整することで「what if」の形でどのような条件でどのようなパフォーマンスが得られるのかを分析することができます。

さらに一歩踏み込んで、人間が探索的に分析するのではなく、自動的に最適なパラメータを探索することを考えてみましょう。 単純な方法としては、グリッドサーチなどでパラメータの組み合わせを総当たりで試して、最もよいパラメータを見つける方法が考えられます。ただし、パラメータが多いシミュレーションモデルの場合には組み合わせが爆発して、結果が出るまでに数年かかるというような状況に簡単になり、現実的に計算不可能になってしまいます。

実験計画的なアプローチで計算するべき組み合わせを間引けば、全探索よりは計算時間が短くなりますが、現実的に計算可能な問題になるかどうかはパラメータ数とマシンパワー次第です。

よりモダンなアプローチとしては、シミュレーションモデルをブラックボックスな目的関数と捉えて最適化問題と考えることができます。ベイズ最適化やメタヒューリスティクスアルゴリズムを使用することで、比較的効率的に最適なパラメータを探索することができます。

また、純粋にブラックボックスな目的関数と考えずに、最適化したい問題に合わせたアルゴリズム、アプローチを設定することができれば、さらに効率的に解くことができる場合もあります。

シミュレーション活用による問題解決事例

ここでは、シミュレーションを用いた具体期な事例をいくつか紹介します。

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

■窓口の要員計画

官庁・郵便局・銀行・駅など社会には、多種多様な窓口が存在します。これらどの窓口にも共通しますが、窓口が混雑している場合にはお客様はサービスを受ける為に行列に並びます。この待ち時間が長くなってしまうと、お客様の満足度の低下を招いてしまい、売り上げにも影響が出てしまう可能性があります。

お客様一人あたりの待ち時間をある時間以内に抑えるように、窓口の要員配置を考えるには、シミュレーションが最適です。

>>具体的な事例はこちら

■生産ライン設計の最適化

生産ラインを新規に設計、あるいは、改良する事を考えた場合、単純に生産量の増加のみを目標とする事は出来ません。物を作るには材料、作業員や作業機械、作業場所が必要となりますが、それらにはコストを要します。生産ラインのボトルネックを迅速に発見して、改善策を立てるのにシミュレーションは非常に有用なソリューションになります。

>>具体的な事例はこちら

■構内物流の効率化

工場内や倉庫内のような構内物流を効率化することで、生産性、効率性を向上させる事は大変重要です。AGVにおける搬送システムを使えば、無人化、省力化することが可能となりますが、シミュレーションでAGVを効率よく運用する方法を検討したり、適正な台数を検討する事で、さらなる効率化を図る事が可能となります。

>>具体的な事例はこちら

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

■人流シミュレーション

イベント会場近くの歩道や、駅・ショッピングモールのような大規模施設のように人が集まる空間では、各人がそれぞれの目的地に向かう事で、 人の滞留が起こります。非常灯やサインシステムを適切に配置する事で、人の流れをスムーズにしたり、警備員を適切に配置する事で、事故の 発生を防ぐ等、事前にシミュレーションで人の流れを分析し、施策を検討しておく事は非常に重要です。

>>具体的な事例はこちら

■倉庫内ピッキング作業の効率化

物流倉庫での出荷作業の中に、ピッキング作業があります。注文が入ると、倉庫から商品をピックアップして、配送することになります。商品の種類が多様化し、またECサイトの台頭もあり、物流倉庫内で効率よく商品を保管しておき、ピッキング作業を効率化することは大変重要です。ピッキング作業において、半分以上を占めるのが移動時間です。移動時間を短縮する事が、効率化に直結します。

移動時間を短縮するには、作業員のピッキング導線(ピッキングの順番)と、オーダーピッキング(複数の注文をまとめてピッキング)、商品の棚割り、レイアウトが課題となります。シミュレーションを使えば、これらの戦略の定量的な評価が可能となります。

>>具体的な事例はこちら

■レベニューマネジメント、ダイナミックプライシング

ホテルや旅館といった旅館業で取り扱う"部屋"の在庫には、宿泊されないままにその1日が過ぎてしまうと、途端に在庫の価値が失われてしまう陳腐化という特性があります。しかし価格の設定を変更して在庫調整を図るにも、顧客満足度や売り上げなど考えるべき制約が多い上に、非常にリスクが高いという問題があります。

想定される顧客像や競合企業、その他周辺環境による制約を加味して、自社の価格設定変更による影響をシミュレーションすることで、期待収益や顧客満足度を数値的に評価することができます。

>>具体的な事例はこちら

おわりに

今回、3種類のシミュレーションについてご紹介しました。それぞれについて、「こういうことができる」というのが伝わったのであれば幸いです。 ただし、原理原則を理解すればすぐに実務に落とし込むことができるかと言われれると難しく、複雑な条件下でのシミュレーションになればなるほど当然ながら設計やプログラミングも複雑になっていきます。

NTTデータ数理システムでは、誰でも簡単に複雑なモデルをGUI上で表現しシミュレーションを行なえる汎用シミュレーションシステム「S4 Simulation System」をご提供しています。 シミュレーションに必要な基本的な部品は全て用意されており、それらを組み合わせるだけで簡単に独自のシミュレーションモデルを作ることができます。またそれだけでなく、この記事でご紹介した「シミュレーション最適化」の機能もあるため、様々な条件下で最適化の良し悪しを判断することが可能です。ご興味ある方はシミュレーションに関する記事で事例も紹介していますのでご覧ください。

ツールの無料体験やツールを用いた分析のご相談ができるセミナーを全国各地にて開催しておりますので、ぜひお気軽にお申し込みをご検討ください。 (半導体設計技術者の方々に向けて、半導体プロセスシミュレーションツール「ParadiseWorld2」もご提供しています。)

またNTTデータ数理システムでは、お客様のご要望に合わせた受託開発を承っております。研究や製品開発などのためのオーダーメイドのシミュレーションもできるほか、既存のシミュレータの改修・機能追加などのご相談も可能です。 ぜひお気軽にお問い合わせ、ご相談いただけると幸いです。