2010年5月4日 星期二

C98010:作業十:銀行櫃台

政府或服務業在臨櫃服務項目中,最常需要面對的問題是,在一個人來人往的基層政府機關或小店面要有多少人服務,而計算此一類問題的方法中,模擬是一項常用的方法。


在這次的作業中,我們要模擬一個小小的基層機構,有兩個服務人員,在面對每天來此辦公的八小時之內,探討顧客的滿意度。


顧客的滿意度往往是使用等待時間來評量。等待時間愈長,相對的顧客滿意度就愈差。在計算這種問題,我們有兩種重要參數,第一個是顧客的到達時間,第二個是服務的使用時間。


在這個問題中,我們使用平均分配來製造到達時間與服務時間,製造的函數完整C#程式碼下:

static ArrayList getRandom(int seed, int minV, int maxV)
{
Random rand = new Random(seed);
ArrayList randList = new ArrayList();
for (int i = 0; i < 50; i++)
{
randList.Add(rand.Next(minV, maxV));
}
return randList;
}

應用範例如後,到達時間間隔使用(100,5,20),兩個服務人員的服務時間分別為(101,15,25)和(102,20,30)。
由於這裡的隨機函數使用C#提供的Random類別,在使用種子初始化後,該種子每次產生的隨機數序列均會相同,且每此僅產生50個變數(已足夠本作業使用)。產生的隨機數內容如下表:


到達率與處理率
編號到達間隔P1 處理時間P2 處理時間
參數(100,5,20)參數(101,15,25)參數(102,20,30)
1191920
271927
3151820
4181623
5102322
6192326
7151626
8141626
9101925
1072028
11192224
12131821
13101527
14121525
15192123
16121627
17181827
18192122
19101924
2051928
2161723
22102128
23181522
24191826
25122026
26171921
27182226
28141728
2971927
30141922
3161928
32161523
33122423
34122025
35132422
3661621

在這個作業中,我們要調查的是在一天八小時中的顧客滿意度,因此在480分鐘以後到達的顧客將不再處理。


這個基層機構的排隊隊伍只有一行,顧客到達時,若P1與P2兩個服務人員皆空閒著,則顧客以P1為服務對象,若僅有單一服務人員空閒,則由該服務人員提供服務,若兩者皆忙碌,則會產生等待的情形,當然,最快完成服務的人員,將持續位下一位顧客服務,因此,根據上表的到達時間與服務時間,所產生的完整服務情形如下表。


處理統計
編號到達時間開始時間受理者完成時間等待時間
11919P1380
22626P2460
34141P1600
45959P2860
56969P1870
68888P11040
7103103P21230
8117117P11400
9127127P21500
10134140P11636
11153153P21750
12166166P11820
13176176P22020
14188188P12040
15207207P12260
16219219P22450
17237237P12570
18256256P22820
19266266P12880
20271282P230711
21277288P130611
22287306P132119
23305307P23352
24324324P13390
25336336P23600
26353353P13740
27371371P23920
28385385P14010
29392392P24190
30406406P14240
31412419P24447
32428428P14490
33440444P24674
34452452P14710
35465467P24942
36471471P14900


輸出入格式
每一行為一個測試題目,每行有九個數字分別為 s1 min1 max1 s2 min2 max2 s3 min3 max3,以空白隔開,s1為到達時間的亂數種子,s2, s2則為兩個服務人員的亂數種子,min1與max1為到達時間的最小與最大範圍,而min2,max2和min3,max3為兩個服務人員時間的最小與最大範圍。每一個問題會有一行輸出,計有六個數字d1 d2 d3 d4 d5 d6,以空白隔開,內容如下:

  • d1是等待時間為0的顧客累計人數

  • d2是等待時間為大於0,小於等於10分鐘的顧客累計人數

  • d3是等待時間為大於10,小於等於20分鐘的顧客累計人數

  • d4是等待時間為大於20,小於等於30分鐘的顧客累計人數

  • d5是等待時間為大於30,小於等於40分鐘的顧客累計人數

  • d6是等待時間為大於40分鐘的顧客累計人數


範例
Input:
100 5 20 101 15 25 102 20 30
200 5 20 201 15 25 202 20 30
Output:
28 5 3 0 0 0
19 16 3 0 0 0

by Alent

解答連結
回C#語言教學目錄
回首頁

沒有留言: