我不知道有關這類問題的文獻。不過,我認爲有一些,因爲排隊理論是一個大的學術領域,這聽起來不像是一個荒謬的人爲的情況。請注意,事實上你關心的是平均等待時間,而不是最差情況等待時間或第N個等待時間等待時間,這可能會使你處於少數。
我的第一個直覺是,由於似乎周圍有很多工作,一個好的解決方案將會有幾個「靈活」的工作人員連續工作。這是一組工人,他們之間可以完成大多數類型的普通工作,並具有可接受的等待時間。你想要延遲的時間越短,這個集合中的資源就越多,他們花費的時間就越多。此外,您輸入的「突發」越多(假設突發不可預知),您需要的空閒時間越多,以防止突發期間的高延遲。
然後在兩種情況下,你僱用更多的「專業」人員:
1)一種罕見類型的工作中來,您的當前設置員工可以在高時間成本只處理或根本沒有。所以你僱用(粗略地說)誰可以改變它,然後儘可能地做好剩餘的隊列。
2)沒有這樣的工作,但你找到一個機會僱用一個恰好能夠從當前隊列中取出一些工作組合的人,並且他們比你當前的工作人員更便宜,但是沒有離開你目前僱用閒置。所以你聘請了這個資源。
至於實際算法:找到最佳解決方案几乎肯定不是計算上可行的,所以正確的答案取決於處理資源,並且您正在尋找啓發式算法並解決部分問題。只要你僱用的每個人都很忙,而且你不能僱用其他人而不會在未來某個時候導致大量的空閒時間,那麼你可能就在一個很好的解決方案附近,並且在某個地方接近「 「延遲/成本折衷點。在此之後僱用更多的資源會帶來收益遞減,但這並不意味着您不願意爲特定的延遲和/或指定的預算執行此操作。
但它取決於傳入工作的樣子:如果您有一種資源只能執行一種類型的工作,並且該工作只能每天/每週/每年進行一次,那麼最好聘用他們一次一天只能等到你有足夠的工作來填補他們最小可能的時間片(這就是爲什麼消防隊員花大部分時間玩紙牌遊戲,而打字員花大部分時間打字。總是有足夠的打字來保持至少一個打字員很忙,但是火很少見,而且我們不希望火災的「最大爆炸」解決方案,我們想要比這更低的延遲)。因此,如果您正在解決某個特定的問題實例,而不是編寫通用調度軟件,那麼可能有機會針對您的特定資源和傳入作業模式調整算法。
加上大概是如果資源是人類,你實際上不能保證招聘成功。他們不會一整天坐在旁邊,只是在一分鐘的時間內工作,是嗎?
一張紙條上面的數值,他們不是硬性約束,而是平均值。 – sehugg 2009-06-23 15:01:45
哦,工作有確定的優先級(只有幾個)。我現在閉嘴:) – sehugg 2009-06-23 15:07:50
我不完全明白。 「等待時間」是指工作等待時間還是未使用的資源容量?如果前者只是招募儘可能多的資源,你就可以得到你的手。如果是後者,則爲每個適用性的硬限制僅招募一個資源。是否有一塊失蹤或我只是誤解了這個問題? – 2009-06-23 15:27:20