2012年6月2日土曜日

JavaScriptでアーランCによりコールセンターの必要席数を計算する

アーランC式は下記になります。


アーランC式はこのページのように、別の計算方法もありまして、別の方法だと待ち時間をインプットするようですが、上記の式は待ち時間のインプット不要バージョンです。アーランC式がなぜこのような式になるのかは全然分かりませんが、コールセンターの必要席数試算でアーランC式がよく使われています。

アーランC式をJavaScriptで計算できるようにしたのが下記になります。大体アーランが700を超えるとJavaScriptの数字の取り扱いキャパシティーの関係上エラーになりますので、アーラン700を上限にしました。アーランはコール数×平均処理時間÷3600で出します。

1時間当たり着信数
平均処理時間
応答率%

<table>
<tr><td>1時間当たり着信数</td><td><input type="text" id="call" />件</td></tr>
<tr><td>平均処理時間</td><td><input type="text" id="aht" />秒</td></tr>
<tr><td>応答率</td><td><input type="text" id="sl" />%</td></tr>
</table>
<input type="button" id="erlangc" value="計算" /> 
<div id="sheet"></div>

<script type="text/javascript">
$(function(){
    $('#erlangc').click(function(){erlang();});
});

function erlang(){
    var call = parseFloat($('#call').val());
    var aht = parseFloat($('#aht').val());
    var sl = parseFloat($('#sl').val())/100;
    $('#sheet').empty();

    if(sl>1) sl = 1;
    if(sl<0){
        alert('応答率小さすぎ');return;
    }
    if(aht*call/3600>700){
        alert('アーラン大きすぎ');return;
    }

    var sheet = erlangc(call,aht,sl);
    $('#sheet').append(sheet + '席');
}

function erlangc(call,aht,sl){
    sl = 1 - sl;
    if(sl<=0)sl=0.0009;
    var erlang = aht*call/3600;
    var sheet = parseInt(erlang);
    var p = 1.0;
    var up = 1.0;
    var down = 0.0;
    var temp;

    while(p>=sl){
        sheet++;
        //分子
        for(var x=0; x<sheet; x++){
            up *= erlang/(sheet-x);
        }
        up = up*sheet/(sheet-erlang);
        //分母
        for(var x=0; x<sheet;x++){
            temp = 1.0;
            if(x!=0){
                for(var y=0; y<x;y++){
                    temp *= erlang/(x-y);
                }
            }
            down += temp;
        }
        down += up;
        p = up/down;
        up = 1.0; down = 0.0;
    }
    return sheet;
}
</script>

■ 関連記事:コールセンターの必要席数試算(アーランCと稼働率の関係)

0 件のコメント:

コメントを投稿