次のものがキューにある順番待ちリストがあると想像してください
Service 1 - 5 minutes
Service 2 - 10 minutes
Service 3 - 5 minutes
Service 4 - 15 minutes
Service 5 - 20 minutes
キューにあるこれら5人のクライアントにサービスを提供するスタッフが2人いる場合、次の人が店を歩くまでの待ち時間をどのように見積もることができますか。
実際、これは非常に単純です。EricLippertによって説明されている「W」キューモデルです。
2つの「スタッフ」メンバーの配列を設定します。
List<int>[] staff = new [] {new List<int>(), new List<int>()};
キューを定義します。
int[] queue = new int[] {5, 10, 5, 15, 20};
次に、処理をシミュレートします。後続の各顧客は、最初に実行されるサービサーに移動します。
foreach (int i in queue)
{
List<int> shortest = staff.OrderBy(s=>s.Sum()).First();
shortest.Add(i);
}
入ってくる「次の」人は、最初のサービサーが無料になるまで待たなければなりません。これは、サービスを受けた各顧客の合計です。
int nextTime = staff.Min(s=>s.Sum());
Console.WriteLine("The wait time for the next customer is {0} minutes",nextTime);
出力:
次の顧客の待ち時間は25分です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加