待ち行列シミュレータ「Q-Simulation」の使用方法
○更新履歴○
○仕様
・客の到着時刻、各窓口でのサービス時間はユーザが設定する確率分布によって実数時間で生成し、早いものから順に処理していきます。
・設定された終了時刻まで来客の可能性があります。系内に客が残っていても設定された終了時点までのデータによって統計をとるようにしてあります。
・終了時刻後も系内の客が0になるまでそのまま処理が続けれられます。
・最大系内数が有限の場合、その数を超えて系内に到着する客は追い返され、呼損になります。
・サービス分布が一様分布のとき、サービス率(時間)は設定された最大値と最小値のメジアンとしています。
・トラフィック密度は通常λ/μで定義されますが、ここでは実質的な値としてこれを窓口数で割った値をトラフィック密度と呼ぶことにしています。
・結果の理論値は、計算可能なもの(M/M/s,M/D/1,M/Ek/1
など)のみを計算、表示します。
・到着確率分布、サービス確率分布にk次(位相k)のアーラン分布を追加しました。k=1は指数分布に対応します。
・指定したパラメタを指定した範囲で動かして実験し、データをファイル保存する機能をつけました(ただし、数値のみ)。
・系内人数が0になる確率の表示を訂正しました。
・pop up menuによってグラフをビットマップとしてクリップボードにコピーあるいはファイルとして保存できるようにしました。
・結果をクリップボードにコピーできるようにしました。
「設定」
・適切なパラメータを入れます。sとN(>s)は0以上の整数値にしてください。μとλは単位時間あたり何人〜か、あるいは一人あたりどのくらい〜か、のどちらかに単位を決めることができます。編集欄の横には設定した方と別の単位の時の値(逆数)を表示します。
・トラフィック密度ρに関するパラメータを変化させて、フォーカスを他に移すか、「トラフィック密度」のボタンを押すとρが計算されます。ρ>1になると、確率的には客がたまる一方です。その状態でシミュレートする場合は、「ρ>1でも・・・」にチェックをいれます。
・チェックを入れたパラメータの初期値、終了値、変化のステップ値を設定します。整数、浮動小数等与えるパラメータの種類と大きさに注意してください。・チェックを入れたパラメータ以外のパラメータは、「設定」のページに入力されている値を使用します。ひとつのパラメタの組み合わせにつき、「試行回数」だけデータを取ります。
・単なるfor文のネストによる実装です。ひとつのパラメータを動かし、他を固定し、そのパラメータセットにおける実行可能性を調べて実行、というプロセスを繰りかえしているだけであることに注意してください。特に一様分布のMinとMaxの値は、Max≧Minの時のみ実行します。また、ρ>1でも実行します。
・「保存先・・・」ボタンでデータを保存するファイル名を指定します。既存のファイルを上書きするので注意してください。ファイル名が指定されてない場合は、シミュレータを置いてあるディレクトリに"Qsim_data.txt"というファイルが作られます。
・出来上がるファイルはTextファイルですが、拡張子を変えてそのままExelで読み込むことができます。ただし、左下図のように、実行した順にはきだしているだけなので、その後のデータのまとめは各自で奮闘してください。
・あまりたくさんのパラメータを変動させたり、変化の刻み幅を小さくしすぎると、終了するまでに非常に時間がかかる上に、後のデータ処理も大変になると思います。使用する計算機の性能を考えて、適切な範囲で実験を繰り返すようにしてください。
UNIXバージョンについて
C言語によるシミュレータ"Q_Simulation.c"に関して簡単に説明しておきます。
○更新履歴○
2001年11月 1日Version2.00を公開。
2000年12月 8日Version1.20を公開。
2000年11月22日Version1.10を公開。
2000年11月 6 日Version1.00を公開。
○Version2.00での変更点
・Windows版と同様に、到着分布とサービス分布にk次(位相k)のアーラン分布を設定できるようにしました。
・570行目、待ち行列長*継続時間を格納する変数Ql_t_sumの計算にミスがあり、訂正。
・900行目、(0,1)乱数の生成において、1に近い値が生成されると、サービス時間あるいは到着時間が発散してしまうので、適当な値までを範囲とするフィルタを追加。(ただしコメントアウトしてあります。修正はユーザの方の判断にお任せします。)
・1.00におけるランダム関数のシードが近い値ばかりになるというバグを改良してあります。シミュレーションを一回やるごとにプログラムを終了してしまうより、連続して実験した方がランダムなシードが与えられるとおもいます。また結果表示にシードの値を表示させるようにしておきます。より優れた乱数の生成法もあります。自分で調べて試してみてください。
○仕様
・Windows版では機能が足りない、自分独自のシステムを組みたいという人に向けて作成したものです。
・入出力はコンソールを介して行います。
・到着率等の単位は、「単位時間あたりの人数」のみです。
・設定した終了時刻になると、系内に客がいても処理を終了して統計をとります。
・コア部分はWindows版と同様なので、双方の環境で実験した結果を混ぜて統計を取ることが可能です。
・コンパイルは、"gcc Q_Simulation.c
-lm" です。環境によっては"-lm"オプションが不要です。(エラーが出なければOKです)
・出来上がった実行ファイル"a.out"を実行します。
・コンソールからパラメータの入力が求められますので、適切な値を入れてください。
・日本語が正しく出ない場合は、使っているマシンの日本語設定に問題がある可能性があります。そちらを直すか、ソースを直すかして対処してください。
・トラフィック密度が1を超えると、メッセージが出ますが、そのままシミュレーションすることもできます。
・一回のシミュレーションが終了する度に、プログラムを終了するか、もう一度別のパラメータでシミュレーションをするかの選択をします。