私たちの周りのランダム性
不確実性は私たちの日常生活の本質的な部分です。簡単な例を次に示します。1日あたり約100人の顧客に温かい飲み物とおいしいペストリーを提供するカフェを所有しているとします。
カフェの営業時間は午前9時から午後7時までです。最初のゲストは、午前10時に到着するかもしれませんし、翌日は、午前9時50分に到着する可能性があります。また、2人の顧客、または12人の顧客が同時に入店する可能性もあります。
シミュレーションモデルを作成するときは、現実の世界をできるだけ忠実に反映させたいと考えています。そのためには、シミュレーションにランダム性を含める必要があります。
AnyLogicモデルにランダム性を設定する方法とは?
別の例を見てみましょう。あなたは銀行をモデル化していて、マネージャーがクライアントのために新しい銀行口座を開くのにどれくらいの時間が必要かを知りたいと思っています。
あなたの経験から、それは少なくとも10分、おそらく20分、そして40分かかります。この遅延をどのようにモデル化できるのでしょうか?AnyLogicでは、確率分布を設定できます。
確率分布とカスタム分布
AnyLogicは、天候の変化、製品の需要の変化、その他のランダム性など、非決定論的なプロセスをモデル化するための一連の確率分布関数を提供します。このソフトウェアは、均一、三角、指数など、さまざまな分布タイプをサポートしています。
しかし、事前設定された関数のいずれもプロジェクトに適合しない場合はどうなるのでしょうか?カスタム(経験的)分布を作成して、モデルで使用できます。
AnyLogicに含まれるランダム性
モデルには、確率論的モデルと決定論的モデルの2種類があります。
決定論的モデルには内部ランダム性がありません。同じ入力パラメータのセットで実行され、同じ出力結果が得られます。たとえば、10,000人の個人がそれぞれ1年で95%の確率で生き残る場合、9,500人が生き残ると合理的に確信できます。
一方、確率モデルには、ランダム性の内部ソースがあります。したがって、(同じパラメータを使用しても)実行するたびに異なる出力が得られる可能性があります。
確率モデルを1回実行すると、代表的なシミュレーション結果は得られません。したがって、同じ入力パラメータを使用する場合でも、複数回実行する必要があります。ランダム性(内部、入力パラメーターレベル、またはその両方)で実行される一連のシミュレーションは、Monte Carloシミュレーションと呼ばれます。
Monte Carloシミュレーションの結果は統計的に処理され、通常、確率、ヒストグラム、散布図、エンベロープグラフなどとして表されます。
詳細:さまざまなタイプのAnyLogicモデルにおけるランダム性の内部ソース [PDF]
乱数ジェネレータ
コンピューターは決定論的なデバイスです。では、シミュレーションモデルのランダム性はどこから来るのでしょうか?
アプリケーションは、外部の物理乱数ジェネレータ(RNG)にアクセスしない限り、真のランダム性を備えていません。ただし、計算されたRNGで作成された疑似乱数を使用できます。
計算されたRNGは、明らかにランダムな結果の長いシーケンスを生成する決定論的アルゴリズムに基づいています。これは、実際には、シードと呼ばれる短い初期値によって完全に決定され、周期的です。したがって、これらは疑似乱数ジェネレータと呼ばれます。
再現性のあるユニークな実験
疑似乱数ジェネレータは「真にランダムな」番号ストリームを提供しませんが、重要な機能があります。選択したシードに応じて、モデルを実行するたびに一意または同じ数列が生成されます。
この機能のおかげで、AnyLogicの確率モデルを使用して、一意の(ランダムな)実験または再現可能な実験を作成できます。
再現性のある実験の実行は、1つのシナリオで作業する場合、またはモデルをデバッグする場合に役立ちます。確率論ではエラーの追跡とエラーの原因の理解が困難になるため、シミュレーションの開発中はモデルの実行を再現可能に保つことをお勧めします。
このステップバイステップガイドに従って、モデルがランダムまたは再現可能なシミュレーション結果を提供するようにします。
短編教育ビデオ – 関連するAnyLogic YouTubeプレイリスト。
これが、AnyLogicのランダム性機能の概要です。トピックの技術的な側面をさらに深く掘り下げたい場合は、シミュレーションモデリングビッグブック第15章[PDF]を確認してください。
YouTubeでは定期的に新しいブログ記事やハウツービデオを公開しています。お見逃しなく! ぜひ月刊ニュースレターを購読し、最新情報を入手してください。