トラフィック理論:JavaScriptによるErlangB, ErlangC
電話回線の必要回線数やコールセンターでの必要席数の算出に利用されるアーラン式。呼損率をベースに算出するアーランBと、待ち時間を考慮した待ち合わせ率を算出するアーランCをJavaScriptでプログラム化しました。
アーランの公式です。難しいですね。僕も完全には理解出来ません。
くわしくは統計学の専門家にでも聞いてください。
・AHT = Average Handling Time (1件あたり処理時間)
・E = アーラン(呼量) = 入電数 * AHT / 収集期間
・n = エージェント数
・t = 待ち時間
・e = 2.71828182845904… (自然対数の底:ネピア数)
ErlangB公式:
(呼損率)
ErlangC公式:
(サービスレベル外率)
アーランB
応答率
アーランB
必要回線数
アーランC
サービスレベル
アーランC
必要回線数
入電数:
AHT:
収集期間:
回線数:

入電数:
AHT:
収集期間:
応答率:%

入電数:
AHT:
収集期間:
待ち時間:
回線数:

入電数:
AHT:
収集期間:
待ち時間:
サービスレベル:%

Javascriptサンプル(アーランC)

//小数点計算を行うのでとりあえず全部Floatに
incalls = parseFloat(incalls);
aht = parseFloat(aht);
duration = parseFloat(duration);
waittime = parseFloat(waittime);
serviceLvl = parseFloat(serviceLvl)/100;

var erlang = (incalls*aht)/duration;//呼量(アーラン)
var factorial = 0;//nの階乗の部分
var factorialOneBefore = 1;//nの階乗一つ前 最初は1
var denominator = 1;//アーランBの分母の部分 最初は1でΣの部分をどんどん足していく
var ErlangB = 0;
var ErlangC = 0;
var n=0;

while(ErlangC<=serviceLvl){//1-アーランCがサービスレベル以上になるまでループ
n++;
factorial = erlang/n;
factorial = factorial*factorialOneBefore;//これで分子の部分は算出
factorialOneBefore = factorial;//次のループの為に階乗の値を保存
denominator = denominator+factorial;//これで分母の部分は算出
ErlangB = factorial/denominator;//これでアーランB(呼損率)算出
ErlangC = (n*ErlangB)/(n-erlang*(1-ErlangB));//これでアーランC算出
ErlangC = 1-ErlangC*Math.exp((-(n-erlang)*waittime)/aht);
//これでWaittimeを加味したアーランC算出。サービスレベル内の確率が欲しいので1から引く。
}

result = n;//nが適切な回線数ということになる

上記のループの部分を「n < lines(回線数)」と修正すればループが終了したときに「ErlangC」がサービスレベルの値として取得できます。アーランBの値もこの中で既に取得できているので、ちょっとループの部分を修正すればアーランBも取得できますね。

リンク等はトップページ(こちら)に対して貼っていただけるとありがたいです。

inserted by FC2 system