待ち行列シミュレーション.

Slides:



Advertisements
Similar presentations
1標本のt検定 3 年 地理生態学研究室 脇海道 卓. t検定とは ・帰無仮説が正しいと仮定した場合に、統 計量が t 分布に従うことを利用する統計学的 検定法の総称である。
Advertisements

1 運動方程式の例2:重力. 2 x 軸、 y 軸、 z 軸方向の単位ベクトル(長さ1)。 x y z O 基本ベクトルの復習 もし軸が動かない場合は、座標で書くと、 参考:動く電車の中で基本ベクトルを考える場合は、 基本ベクトルは時間の関数になるので、 時間で微分して0にならない場合がある。
シミュレーション論Ⅰ 第 7 回 待ち行列のシミュレーション(2). 第 6 回のレポート(解答例) 乱数表より乱数を記入し、到着間隔・サービス時間にした がってグラフを作成する 例) 最大待ち人数:2人 最大待ち時間:5分 平均待ち時間:3分.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
Probabilistic Method 7.7
第1回 確率変数、確率分布 確率・統計Ⅰ ここです! 確率変数と確率分布 確率変数の同時分布、独立性 確率変数の平均 確率変数の分散
疫学概論 ポアソン分布 Lesson 9.頻度と分布 §C. ポアソン分布 S.Harano,MD,PhD,MPH.
シミュレーション論Ⅰ 第6回 待ち行列のシミュレーション.
確率と統計 平成23年12月8日 (徐々に統計へ戻ります).
確率・統計Ⅰ 第12回 統計学の基礎1 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
全加算回路 A, Bはそれぞれ0または1をとるとする。 下位桁からの繰り上がりをC1とする。(0または1)
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
確率・統計Ⅰ 第11回 i.i.d.の和と大数の法則 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
ISDASインターネット分散観測: ワームの平均寿命はいくらか?
基礎プログラミングおよび演習 第9回
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
アルゴリズムイントロダクション第5章( ) 確率論的解析
ランダムウォークに関するいくつかの話題 ・ランダムウォークの破産問題 ・ランダムウォークの鏡像原理 1 小暮研究会Ⅰ 11月12日
プログラミング論 II 電卓,逆ポーランド記法電卓
アルゴリズムと データ構造 第4回 スタック・キュー.
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
ネットワーク性能評価.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
システムモデルと伝達関数 1. インパルス応答と伝達関数 キーワード : 伝達関数、インパルス応答、 ステップ応答、ランプ応答
アーランの即時式モデル.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
第10回関数 Ⅱ (ローカル変数とスコープ).
第8回授業(5/29日)の学習目標 検定と推定は、1つの関係式の見方の違いであることを学ぶ。 第3章のWEB宿題の説明
正規分布確率密度関数.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
確率論の基礎 「ロジスティクス工学」 第3章 鞭効果 第4章 確率的在庫モデル 補助資料
最小自乗法.
独立成分分析 5 アルゴリズムの安定性と効率 2007/10/24   名雪 勲.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
ランダムグラフ エルデシュとレーニイによって研究された.→ER-model p:辺連結確率 N:ノード総数 分布:
Introduction to Soft Computing (第11回目)
クイックソート.
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
様々な情報源(4章).
電機情報工学専門実験 6. 強化学習シミュレーション
疑似乱数, モンテカルロ法によるシミュレーション
プログラミング 3 スタックとキュー.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
ウィルスって どの位感染しているのかな? 菊池研究室  小堀智弘.
4. システムの安定性.
「データ学習アルゴリズム」 第3章 複雑な学習モデル 報告者 佐々木 稔 2003年6月25日 3.1 関数近似モデル
プログラミング序論演習.
シミュレーション論Ⅰ 第7回 シミュレーションの構築と実施.
最尤推定・最尤法 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
第5回 確率変数の共分散 確率・統計Ⅰ ここです! 確率変数と確率分布 確率変数の同時分布、独立性 確率変数の平均 確率変数の分散
プログラミングⅡ 第2回.
疫学概論 ポアソン分布 Lesson 9.頻度と分布 §C. ポアソン分布 S.Harano,MD,PhD,MPH.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
アルゴリズムとプログラミング (Algorithms and Programming)
人工知能特論II 第8回 二宮 崇.
確率と統計2007(最終回) 平成20年1月17日(木) 東京工科大学 亀田弘之.
or-6. 待ち行列シミュレーション (オペレーションズリサーチを Excel で実習するシリーズ)
精密工学科プログラミング基礎 第7回資料 (11/27実施)
4.プッシュダウンオートマトンと 文脈自由文法の等価性
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
ヒープソート.
Cプログラミング演習 ニュートン法による方程式の求解.
統計解析 第11回.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング入門2 第5回 配列 変数宣言、初期化について
Presentation transcript:

待ち行列シミュレーション

この資料の到達目標 待ち行列の数理について理解する 待ち行列の定常状態の意味を理解する システム内のジョブ総数 待ち行列の長さ 状態遷移 定常確率 待ち行列で重要な量 「確率」を使って,待ち行列の 振る舞いをとらえる

内容 基本的な待ち行列 (M/M/1/1 待ち行列)による説明 M/M/1 待ち行列 M/M/S 待ち行列の長さ システム内のジョブ総数 状態遷移 定常状態,定常確率 M/M/1 待ち行列 M/M/1/1 との違い M/M/S 「M/M/S」の意味

待ち行列とは

スタックとキュー スタック キュー データの挿入と取り出しの両方を列の一方の端から行う 一方の端から挿入を,もう一方の端から取り出しを行う 取り出されるのは最も古いデータ 最初に入れたデータが最初に取り出される FIFO(first-in-first-out,先入れ先出し)と呼ぶ データ 値の追加 値の取り出し

待ち行列 到着 サーバ 待ち行列

待ち行列 処理を受けるために順番待ちをする人がなす列 銀行の窓口や入場券売り場など

待ち行列の長さ/システム内のジョブ総数 到着 サーバ 待ち行列 待ち行列の長さ システム内のジョブ総数

遅延時間/待ち時間 到着 サーバ 待ち行列 待ち時間 ジョブ到着から サービス開始まで 遅延時間 ジョブ到着から サービス終了まで

遅延時間とシステム内のジョブ総数の関係 λD = N D: 「遅延時間」の平均 N: 「システム内のジョブ総数」の平均 λDW = NW 以下,システム内のジョブ総数,待ち行列の長さを考える 

ケンドール記法 X/Y/Z t サーバ するジョブ数:X 到着 待ち行列 サーバ数: Z 時間 (t, t +⊿ t) に到着 ジョブの処理を行う 処理時間:Y サーバ数: Z

ケンドール記法 X/Y/Z/K t サーバ するジョブ数:X 到着 待ち行列 待ち行列の大きさを K-1に制限 サーバ数: Z 時間 (t, t +⊿ t) に到着 するジョブ数:X t ジョブの処理を行う 処理時間:Y 待ち行列の大きさを K-1に制限 サーバ数: Z

「待ち行列の大きさ制限」 待ち行列の大きさに限りがある 特に K=0 ならば 待ち行列の最大長が K-1 に制限されるとき, システム内のジョブ総数は K に制限される 特に K=0 ならば すでにサーバが他のジョブを処理中 到着したジョブは棄却される(待ち行列に入らない) サーバがジョブを処理していない 到着したジョブは直ちに処理される 

ケンドール記法 X/Y/Z/K X/Y/Z X: 到着過程 Y: 処理時間分布 Z: サーバ数 K: 待ち行列の大きさ制限 待ち行列の大きさに制限無し

待ち行列解析

待ち行列解析 待ち行列の長さはいくらか  システム内のジョブ総数はいくらか  ジョブの遅延時間はいくらか  ジョブの待ち時間はいくらか 

手順 待ち行列の長さ,システム内のジョブ総数の分布を求めたい 「システムの状態」と「状態遷移」を考えて,待ち行列の長さ,システム内のジョブ総数を算出する システムの状態:P0, P1, P2, ・・・   (添字は,システム内のジョブ総数) 定常状態で考える システム内のジョブ総数は,初期状態の影響を受ける t→∞では,システムの状態は定常確率に漸近する(初期状態を無視できる)

方針 X: 到着過程 →ポアソン分布のみを考える Y: 処理時間分布 →指数分布のみを考える Z: サーバ数 →最初は1とする.あとで増やす K: 待ち行列の大きさ制限

平均到着率 単位時間に到着するジョブの平均値 待ち行列に加わろうとするジョブのやってくる頻度

到着率λのポアソン分布 ジョブの到着がランダム 「時間 (t, t +⊿ t) に到着するジョブ数」に注目 λは単位時間あたりの平均ジョブ数 平均値: λ⊿t λは単位時間あたりの平均ジョブ数

ポアソン分布 同じ幅をもった時間区間あたりの到着の仕方は,時刻に依存しない 共通部分のない時間区間たちのそれぞれの到着の仕方は独立である 同時刻に2人のジョブがやってくることはない ごく短い時間 ⊿tの間にジョブが1人来る確率はλ⊿t

平均処理率 単位時間に処理を受けるジョブの平均値 処理がどの程度で行われているかの尺度

処理率μの指数分布 ジョブの完了時刻がランダム 「あるジョブの処理の完了から次のジョブの完了までの時間」に着目 平均値: 1/μ μは単位時間あたりの平均ジョブ完了数 サーバがジョブを処理中の間,⊿t 内に完了する処理数: μ⊿t 

指数分布 進行中の処理が終了する確率は,それまでに処理に要した時間に依存しない ある時刻に開始される処理は,それ以前に行われた処理や到着に依存しない ごく短い時間 ⊿tの間に処理が1つ終了する確率は μ⊿t

「分布」の種類 M:  ポアソン分布/指数分布 Ek: k相のアーラン分布 D: 一定分布 G: 一般分布 GI: 独立性を有する一般分布

微小時間の意味 微小時間 ⊿tの間に到着するジョブ: 時間 ⊿tの間に終了する処理: たかだか1人 時間 ⊿tの間に終了する処理: たかだか1つ 時間 ⊿tの間に「ジョブの到着」「処理の終了」が同時になされることはない

M/M/1/1 待ち行列

M/M/1/1 待ち行列 サーバ 到着 待ち行列 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: 1個 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: 1個 待ち行列の大きさ: 0個(K-1=0なので)

システム処理能力ρ ρ= λ/μ λ⊿t: 「時間 (t, t +⊿ t) に到着するジョブ数」の平均 μ⊿t: 「サーバがジョブを処理中の間,⊿t 内に完了する処理数」の平均 待ち行列の大きさに限りがないとすると: λ < μ ( つまりρ<1)である必要がある   (さもないと待ち行列があふれる)

サーバの状態遷移 ジョブを処理 していない ジョブを処理中 ジョブが到着した 全てのジョブが処理終了した ジョブが到着 しない ジョブが処理 終了しない

M/M/1/1 サーバの状態 ジョブを処理中: P1 ジョブを処理していない: P0

M/M/1/1待ち行列の サーバの状態遷移 制限:待ち行列の大きさは0か1 λ⊿ t 1-λ⊿ t 1- μ⊿ t 待ち行列の 長さが0 (処理していない) 待ち行列の 長さが1 (処理中) μ⊿ t

M/M/1/1待ち行列の サーバの状態遷移 P0( t +⊿ t ) = (1- λ⊿ t)P0(t) + μ⊿ tP1(t)

定常確率 lim P0(t), lim P1(t) を求めよう t→∞ t→∞ t→∞ のとき P0(t) →P0, P1(t)→P1 (収束する)と仮定する d P0( t ) dt = -λP0(t) +μP1(t) だが(理由は後述) d P0( t ) 仮定より,t→∞ のとき = 0  なので dt -λP0 +μP1 = 0 μ λ これと P0 +P1 = 1 から, P0 = , P1 = λ+μ λ+μ

定常確率 P0( t +⊿ t ) = (1- λ⊿ t)P0(t) + μ⊿ tP1(t) P0( t +⊿ t ) - P0(t) = -λ⊿ t P0(t) +μ⊿tP1(t) = -λP0(t) +μP1(t) = -(λ+μ)P0(t)+μ P0( t +⊿ t ) - P0(t) ⊿ t P0( t +⊿ t ) - P0(t) ⊿ t (P0(t) + P1(t) = 1から) P0(t)の方程式が求まった

定常確率 lim = -(λ+μ)P0(t)+μ P0( t +⊿ t ) - P0( t ) = -(λ+μ)P0(t)+μ d P0( t ) dt これは P0( t ) の微分方程式 -(λ+μ)t λ+μ μ + ( P0( 0 ) - ) e μ P0( t ) = λ+μ λ+μ μ lim P0( t ) = ⊿ t→0

定常状態における性質 つまり λ⊿ t lim P0(t) = μ⊿ t lim P1(t) t→∞ t→∞ -λP0 +μP1 = 0 以内に到着する確率 処理中のジョブが⊿ t 以内に完了する確率

M/M/1/1 まとめ 定常状態でのサーバの状態 lim P0(t) = lim P1(t) = 定常状態でのサーバ内のジョブ総数 1 1+ρ t→∞ ρ (但し ρ= λ/μ) t→∞ 1+ρ t→∞ t→∞

M/M/1 待ち行列

M/M/1 待ち行列 サーバ 到着 待ち行列 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: 1個 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: 1個 待ち行列の大きさ: 制限なし

M/M/1 待ち行列 処理の窓口は1つ 処理を受けるための列は1つ いったん行列に加わったら,処理を受けるまで待ち続ける ジョブの到着の仕方はポアソン分布に従う 処理時間の分布は指数分布に従う

時刻t+⊿tにジョブが1個もない確率 時刻tにジョブが n 個ある確率: Pn(t)とおく (n=0,1,2,・・・) P(A)=P0(t)*(1- λ⊿t) 2. 1個のジョブが処理を受けていて,⊿tの間に処理が終了した P(B)=P1(t)*μ⊿ t これらは独立な事象なので, P0(t+⊿t) = P0(t)*(1-λ⊿t) + P1(t)* μ⊿t

続き Pn(t) は,時刻に依存しない(定常状態)と考えて 前ページの式に代入すると つまり P0(t) λ⊿ t=P1(t)μ⊿t Pn(t +⊿ t) = Pn(t) 前ページの式に代入すると P0(t) λ⊿ t=P1(t)μ⊿t つまり P0(t) λ=P1(t)μ

Pn(t) 時刻が t から t + ⊿t になった時点で,ジョブの総数が n である場合は以下の3通り P(A) = Pn(t)*(1-λ⊿ t)*(1-μ⊿ t) = Pn(t)*(1-λ⊿t – μ⊿t) 時刻 t に n-1個で,新たなジョブが1つ到着した P(B) = Pn-1(t)*λ⊿t 時刻 t に n+1 個で,ジョブの処理が1つ終了した P(C) = Pn+1(t)*μ⊿t

続き Pn(t+⊿t)=P(A)+P(B)+P(C)から Pn(t)(λ + μ) = Pn-1(t)λ + Pn+1(t)μ

M/M/1 待ち行列 λP0 = μP1 (λ+μ)P1 = λP0 +μP2 (λ+μ)Pi = λPi-1 +μPi+1

M/M/1 待ち行列 一方,ΣPi=1 なので Pi = (1-ρ)ρ P1 = ρP0 P2 = (1+ρ)P1 -ρP0

続き ρ≧1 ρ<1 ΣPi = 1 つまり, P0(t)*(1+ρ+ρ+・・・) = 1 処理できるジョブ数より,やってくる方が多い 1+ρ+ρ+・・・は発散する ρ<1 1+ρ+ρ+・・・=1/(1-ρ) (発散しない) P0(t)=1-ρ

平均ジョブ数,平均待ちジョブ数 N = ΣnPn = Σn(1-ρ)ρ = Nw = Σ(n-1)Pn = N - (1-P0) n = ΣnPn - (1-P0) = N - (1-P0) n ρ 1-ρ 2 ρ 1-ρ

平均ジョブ数 平均ジョブ数をLとおくと Lを計算すると ∞ L = ΣnPn n=0 ρ L= 1-ρ

処理を受けているジョブを含まない待ち行列内の平均ジョブ数: Lq ∞ Lq=Σ(n-1)Pn =Σ(n-1)(1-ρ)ρn =ρΣ(n-1)(1-ρ)ρn-1 =ρΣn(1-ρ)ρn =ρΣnPn =ρL Lq= n=1 ∞ n=1 ∞ n=1 ∞ n=1 ∞ n=1 ρ2 1-ρ

平均待ち時間 ジョブが並びはじめて処理を受け始めるまでの時間の平均: Wq Lq=λWq このことから Lq ρ ρ2 Wq = = = λ  λ(1-ρ) μ(1-ρ)

M/M/S 待ち行列

M/M/S 待ち行列 サーバ 到着 待ち行列 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: S個 ジョブの到着: ランダム ジョブの完了時刻: ランダム サーバの個数: S個 待ち行列の大きさ: 制限なし

M/M/S 待ち行列 N = (∑ + ∑ )P0 D = (n-1)! S n S-1 n S-1 (Sρ) n(Sρ) n-S n=1 N λ

課題 待ち行列プログラムを作成し,実行せよ λとμをいろいろ変化させて実行せよ また,λ > μのときの振る舞いを確認せよ

サンプルプログラム #include<stdio.h> #include <stdlib.h> #include <time.h> main() { FILE *outfile; int t,out[20], t_max; /*⊿tをtとする*/ long int n; float ramda,myu,n_sum,r; if ((outfile=fopen("output.dat", "w")) == NULL) { printf("can't open file %s\n", out); exit(0); } printf("Input (λ,μ,T) :"); scanf("%f,%f,%d", &ramda, &myu, &t_max); srand((unsigned int)time(NULL)); /* ランダム関数を初期化 */ n=0; /*行列の初期ジョブ数は0*/ n_sum=0;

for (t=0;t<=t_max;t++) {     /* tがt_maxになるまでシュミレーション*/ r = (double)rand() / ((double)RAND_MAX ); /* 0≦r≦1のランダムな実数 */ if ((n!=0) & (myu>=r)) { n=n-1; /* 処理を受ける*/ } if (ramda>=r) { n=n+1; /* ジョブが到着 */ fprintf(outfile,"⊿t = %d ジョブ数 = %d\n",t,n); /*ファイルに出力*/ n_sum=n_sum+n; fprintf(outfile,“\n\n平均ジョブ数 = %f\n”,n_sum/t_max);        fclose(outfile);