[問題] 模擬具Queue的兩個server 服務效能

看板C_and_CPP作者 (fresh-air)時間13年前 (2012/04/27 03:21), 編輯推噓0(0020)
留言20則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) "lcgrand.h" 問題(Question): 程式跑不出來,不知道問題在哪QQ 餵入的資料(Input): 欲模擬的"時間" 預期的正確結果(Expected Output): 統計結果: 1.第一個server的最大服務容量 這邊我定義的是模擬過程中queue數目最大到多少+1 2.平均一個小時從系統一(inspection)成功離開的人數(也就是不須進入系統二的) 在模擬時間內成功從第一個server(inspection server)離開的人數/總模擬時間 3.所有server的使用率(total busy time/total simulation time) 錯誤結果(Wrong Output): 完全跑不出來QQ 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/gOQro 這個是lcgrand.c的程式碼 http://www.ie.metu.edu.tr/~ie505/lcgrand.c 補充說明(Supplement): 重新敘述題目,我要模擬兩個系統(inspection,repair)串再一起, 第二個系統(repair)會有0.5的機率feedback回第一個系統(inspection) 也就是說沒修好就繼續去第一個系統檢查,修好機率是0.5 修好就直接離開 也就是說顧客進入第一個系統的來源有兩個, 一個是隨機產生,產生時間遵循exponetial分布(mean是2), 另一個是剛剛從第二個系統(repair)離開的,且需要進入第一個系統(p=0.5) 一離開就馬上進入第一個系統 第一個系統(inspection)的服務時間是uniform(0.25,1.05), 然後有0.3的機率進入第二個系統(repair) 也就是說檢查沒問題就離開,有問題就馬上去第二個系統(repair)修理, 沒問題的機率是0.7 第二個系統(repair)的來源只有一個 就是剛剛從第一個系統(inspection)離開的且需要進入第二個系統的(p=0.3) 第二個系統(repair)的服務時間是uniform(2.1,4.5) 總結就是先檢查,檢查不ok(不ok機率0.7,服務完才知道ok於否) 就去下一站修理,修理不好再檢查(不好機率0.5,服務完才知道修好於否) 模擬時間到就終止,並匯出所需要數據 注意:第一個系統&第二個系統均有Queue,第一個系統有一個server, 第二個系統有兩個server 時間串列是自己產生的~ 請高手幫幫忙,題目不難懂,畫個圖就很清楚敘述了 感謝大家QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.233.234

04/27 07:25, , 1F
敘述不夠。轉去programming較合適,先說明時間離散化是怎處
04/27 07:25, 1F

04/27 07:25, , 2F
理為佳。
04/27 07:25, 2F

04/27 07:36, , 3F
<補>敘述不夠指的是,1. exp分佈除了means,還需要sd<沒有>
04/27 07:36, 3F

04/27 07:37, , 4F
2. 第一個 server 最大服務容量 <未定義,是要算不等待??>
04/27 07:37, 4F

04/27 07:38, , 5F
3. 離開人數未定義 <重回到station1的要再計時?>
04/27 07:38, 5F

04/27 07:38, , 6F
自己做一個時間串列阿
04/27 07:38, 6F

04/27 07:39, , 7F
exp分布只要mean.....
04/27 07:39, 7F

04/27 07:41, , 8F
最大服務容量一般是指 queue大小+server個數
04/27 07:41, 8F

04/27 07:42, , 9F
但這邊queue大小是自己定的,所以我定義的最大容量是
04/27 07:42, 9F

04/27 07:44, , 10F
模擬過程中 queue最大使用數+server數目(就是1)
04/27 07:44, 10F

04/27 07:46, , 11F
3.不懂你的意思= =|||,我只計算模擬時間內共多少人
04/27 07:46, 11F

04/27 07:47, , 12F
從系統離開,然後我要算平均一個小時有幾個是從系統
04/27 07:47, 12F

04/27 07:47, , 13F
一 成功離開....
04/27 07:47, 13F

04/27 07:48, , 14F
假設系統1裡最終出去的有100人,其中30人是系統2回鍋的,
04/27 07:48, 14F

04/27 07:49, , 15F
所以從系統1離開的是100人還是70人?
04/27 07:49, 15F

04/27 07:54, , 16F
100,回鍋的只要在模擬時間出去都算~
04/27 07:54, 16F
※ 編輯: freshair1219 來自: 140.112.233.234 (04/27 08:22)

04/27 10:01, , 17F
是個有趣的問題,不過沒時間幫你看.點幾個有問題的地方。
04/27 10:01, 17F

04/27 10:01, , 18F
1. EVENT event, event 變數名稱和 struct event 相衝。
04/27 10:01, 18F

04/27 10:02, , 19F
2. add_queue 裡面,前面有可能有空位<有人離開>,要再修。
04/27 10:02, 19F

04/27 10:03, , 20F
3. 在link做插入比較時,再加一個,若時間一樣,left先處理。
04/27 10:03, 20F
文章代碼(AID): #1FcQ0wTO (C_and_CPP)