政府或服務業在臨櫃服務項目中,最常需要面對的問題是,在一個人來人往的基層政府機關或小店面要有多少人服務,而計算此一類問題的方法中,模擬是一項常用的方法。
在這次的作業中,我們要模擬一個小小的基層機構,有兩個服務人員,在面對每天來此辦公的八小時之內,探討顧客的滿意度。
顧客的滿意度往往是使用等待時間來評量。等待時間愈長,相對的顧客滿意度就愈差。在計算這種問題,我們有兩種重要參數,第一個是顧客的到達時間,第二個是服務的使用時間。
在這個問題中,我們使用平均分配來製造到達時間與服務時間,製造的函數完整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) | |
1 | 19 | 19 | 20 |
2 | 7 | 19 | 27 |
3 | 15 | 18 | 20 |
4 | 18 | 16 | 23 |
5 | 10 | 23 | 22 |
6 | 19 | 23 | 26 |
7 | 15 | 16 | 26 |
8 | 14 | 16 | 26 |
9 | 10 | 19 | 25 |
10 | 7 | 20 | 28 |
11 | 19 | 22 | 24 |
12 | 13 | 18 | 21 |
13 | 10 | 15 | 27 |
14 | 12 | 15 | 25 |
15 | 19 | 21 | 23 |
16 | 12 | 16 | 27 |
17 | 18 | 18 | 27 |
18 | 19 | 21 | 22 |
19 | 10 | 19 | 24 |
20 | 5 | 19 | 28 |
21 | 6 | 17 | 23 |
22 | 10 | 21 | 28 |
23 | 18 | 15 | 22 |
24 | 19 | 18 | 26 |
25 | 12 | 20 | 26 |
26 | 17 | 19 | 21 |
27 | 18 | 22 | 26 |
28 | 14 | 17 | 28 |
29 | 7 | 19 | 27 |
30 | 14 | 19 | 22 |
31 | 6 | 19 | 28 |
32 | 16 | 15 | 23 |
33 | 12 | 24 | 23 |
34 | 12 | 20 | 25 |
35 | 13 | 24 | 22 |
36 | 6 | 16 | 21 |
在這個作業中,我們要調查的是在一天八小時中的顧客滿意度,因此在480分鐘以後到達的顧客將不再處理。
這個基層機構的排隊隊伍只有一行,顧客到達時,若P1與P2兩個服務人員皆空閒著,則顧客以P1為服務對象,若僅有單一服務人員空閒,則由該服務人員提供服務,若兩者皆忙碌,則會產生等待的情形,當然,最快完成服務的人員,將持續位下一位顧客服務,因此,根據上表的到達時間與服務時間,所產生的完整服務情形如下表。
處理統計 | |||||
編號 | 到達時間 | 開始時間 | 受理者 | 完成時間 | 等待時間 |
---|---|---|---|---|---|
1 | 19 | 19 | P1 | 38 | 0 |
2 | 26 | 26 | P2 | 46 | 0 |
3 | 41 | 41 | P1 | 60 | 0 |
4 | 59 | 59 | P2 | 86 | 0 |
5 | 69 | 69 | P1 | 87 | 0 |
6 | 88 | 88 | P1 | 104 | 0 |
7 | 103 | 103 | P2 | 123 | 0 |
8 | 117 | 117 | P1 | 140 | 0 |
9 | 127 | 127 | P2 | 150 | 0 |
10 | 134 | 140 | P1 | 163 | 6 |
11 | 153 | 153 | P2 | 175 | 0 |
12 | 166 | 166 | P1 | 182 | 0 |
13 | 176 | 176 | P2 | 202 | 0 |
14 | 188 | 188 | P1 | 204 | 0 |
15 | 207 | 207 | P1 | 226 | 0 |
16 | 219 | 219 | P2 | 245 | 0 |
17 | 237 | 237 | P1 | 257 | 0 |
18 | 256 | 256 | P2 | 282 | 0 |
19 | 266 | 266 | P1 | 288 | 0 |
20 | 271 | 282 | P2 | 307 | 11 |
21 | 277 | 288 | P1 | 306 | 11 |
22 | 287 | 306 | P1 | 321 | 19 |
23 | 305 | 307 | P2 | 335 | 2 |
24 | 324 | 324 | P1 | 339 | 0 |
25 | 336 | 336 | P2 | 360 | 0 |
26 | 353 | 353 | P1 | 374 | 0 |
27 | 371 | 371 | P2 | 392 | 0 |
28 | 385 | 385 | P1 | 401 | 0 |
29 | 392 | 392 | P2 | 419 | 0 |
30 | 406 | 406 | P1 | 424 | 0 |
31 | 412 | 419 | P2 | 444 | 7 |
32 | 428 | 428 | P1 | 449 | 0 |
33 | 440 | 444 | P2 | 467 | 4 |
34 | 452 | 452 | P1 | 471 | 0 |
35 | 465 | 467 | P2 | 494 | 2 |
36 | 471 | 471 | P1 | 490 | 0 |
輸出入格式
每一行為一個測試題目,每行有九個數字分別為 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#語言教學目錄
回首頁
沒有留言:
張貼留言