集合覆蓋問題 最大覆蓋問題 呼叫中心排班問題閒談

2021-05-28 15:04:20 字數 1616 閱讀 4993

一、集合覆蓋問題

集合覆蓋問題(

set covering problem

,簡稱scp)

是運籌學研究中典型的組合優化問題之一,工業領域裡的許多實際問題都可建模為集合覆蓋問題,如資源選擇問題、設施選址問題(移動基站的選址、物流中心的選址)等。

scp的乙個典型應用描述如下:要在乙個城市建造若干個消防隊駐紮地,使得全城的每乙個建築物都能在某個消防隊的5分鐘車程內。在不同的地方建造駐紮地都有相應的代價,那麼在哪些地方建造駐紮地能滿足上述條件且花費的總代價最低就成為待解決的問題。

集合覆蓋問題已被證明是乙個np完全問題,沒有多項式時間精確演算法,因此實際應用中,往往採用一些近似演算法,如貪婪演算法,或元啟發式演算法,如蟻群演算法、禁忌搜尋演算法、遺傳演算法來求得近似最優解。

集合覆蓋問題也可從設施選址的角度描述如下:待建的設施點集合為n,需要滿足服務的需求點的集合為m,每個設施點都能覆蓋一定範圍內的需求點。集合覆蓋問題就是從設施點集合n中找出數量最少的子集去覆蓋全部的需求點。當每個設施點都有一定的代價(建造費用、地價)等,這個時候集合覆蓋問題就是選擇代價最低的一組設施點去建造設施,使其覆蓋全部的需求點。這個叫帶有權重的集合覆蓋問題。

二、最大覆蓋問題

最大覆蓋問題:但現實情況是,我能提供的錢(代價)有乙個上限。我必須限定的錢去建造足夠多的設施,使其盡可能的滿足需求。那麼這個問題就叫最大覆蓋問題。最大覆蓋問題就是在代價被限定的條件下,去選擇設施點建造設施,使其最大限度的覆蓋需求點。它的目標變成了覆蓋範圍最大,而總代價變成了約束條件。

三、部分覆蓋問題

部分覆蓋問題(也叫廣義最大覆蓋問題):主要是針對最大覆蓋問題的乙個補充,即把是否覆蓋的二元(要麼覆蓋,要麼不覆蓋)變成了覆蓋程度的乙個衡量,每個需求點都有其各自的覆蓋程式。部分覆蓋問題的目標就是使覆蓋需求點的總權重達到最大。

四、排班問題

其實呼叫中心排班問題就可以歸結為部分覆蓋問題,準確的說是m/g/p排隊系統的部分覆蓋問題。因為顧客有多個,每天每個時間點的顧客數量是隨機的,那麼排班問題就是這一整天我如何安排話務員數量,能盡可能的覆蓋顧客的話務,並且這一整天可供安排的話務員(提供服務的設施)數量是一定的。

以上各問題,當規模較小時,可以用整數規劃的分支定界法(先求解原問題的線性鬆弛問題,對解向量中的非整數部分再進行分支定界)、拉格朗日鬆弛演算法(利用拉格朗日運算元鬆弛掉原問題中難以處理的約束,從而將問題變為較易解決的拉格朗日問題,並通過求取拉格朗日對偶問題而逐步逼近獲取原問題的最優解),當規模比較大時,可以採用元啟發式演算法來求得近似最優解。如蟻群演算法、禁忌搜尋演算法、遺傳演算法等。

目前,國內對於這些問題已經有所研究,特別是集合覆蓋問題,相關文獻較多。但多數是給出近似演算法後,進行理論驗證,而缺少資料實驗驗證。個別有資料實驗的文獻,又因為例項規模較小,而沒有什麼說服力。例項資料可見:

or-library: (scp開頭的例項為集合覆蓋問題),共有數十個例項。

其中各例項規模一般較大,如scp41,為200×1000的規模。即待選設施點為200個,需求點為1000個。scpcyc06(240×192)、scpcy07(672×448)等為不帶權重的集合覆蓋問題,規模較小。文獻《一種遺傳演算法在集合覆蓋問題中的應用研究》(陳亮)中針對四個例項進行了數值實驗,但均未能得到最優解。

集合覆蓋問題 最大覆蓋問題 呼叫中心排班問題閒談

經典scp描述包含乙個集合u以及u內元素構成的 若干各小類集合s,目標是找到s 的乙個子集,該子集滿足所含元素包含了所有的元素且使小類集合個數最少。例如,u s 找到集合能滿足條件的可以有o 或是o 至於具體選哪種組合,還有引申的乙個問題 wsc,即weighted set cover加權集合覆蓋,...

演算法 集合覆蓋問題

假設你辦了個廣播節目,要讓全美50個州的聽眾都收聽得到,為此,你需要決定在哪些廣播台播出。這是乙個貪婪演算法問題,隨著廣播台的數量增加,計算時間將會 所以用近似演算法來解。states needed set mt wa or id nv ut ca az stations stations kone...

8593 最大覆蓋問題

時間限制 50ms 記憶體限制 1000k 提交次數 193 通過次數 88 題型 程式設計題 語言 g gcc vc description 輸入格式 第1行是正整數n,n 10000 第2行是整數序列 a1 a2 an 輸出格式 計算出的最大覆蓋區間長度 輸入樣例 101 6 2 1 2 3 5...