專利名稱:一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法,屬于組合優(yōu)化問題的求解技術(shù)領(lǐng)域。
背景技術(shù):
最小集合覆蓋問題是一種抽象的組合優(yōu)化問題。該問題給出一系列元素和一系列集合,其中每個(gè)集合包含一個(gè)或者多個(gè)元素,并且每一個(gè)集合擁有一個(gè)權(quán)值。最小集合覆蓋問題即是要從這些集合中挑選一組集合,使得每一個(gè)元素至少出現(xiàn)在這一組集合中的某個(gè)集合中(即形成一個(gè)對(duì)所有元素的覆蓋),并且要使得這一組集合的權(quán)值之和最小。形式化地描述,有n個(gè)元素U= {1,2,. . .,n},和m個(gè)集合C = (S1, S2,, Sj,其中對(duì)于任意1=1,2,...,!11有友£隊(duì)并且¥技)為集合SJA權(quán)值。最小集合覆蓋問題要尋找C的一個(gè)子集C*使得Esec*切⑷:最小,同時(shí)滿足Usee* = 最小集合覆蓋問題廣泛存在于工業(yè)生產(chǎn)中,例如物流倉(cāng)儲(chǔ)的布局、基站的布局、故障診斷、分布式系統(tǒng)、無線傳感器網(wǎng)絡(luò)配置、調(diào)度等等。然而由于最小集合覆蓋問題為NP難問題,在極有可能成立的NP幸P的假設(shè)條件下,不存在解決該問題的高效的算法(即多項(xiàng)式時(shí)間內(nèi)能夠求解最優(yōu)解的算法)。目前工業(yè)應(yīng)用上,用于處理類似NP難問題的方法主要為啟發(fā)式搜索算法,包括模擬退火算法、演化算法、粒子群算法等,以期望取得較好的解。然而這些算法對(duì)于取得的解過于隨意,解的質(zhì)量并沒有任何保障,有可能獲得很差的解從而導(dǎo)致應(yīng)用中過大的成本開銷等問題。
發(fā)明內(nèi)容
發(fā)明目的本發(fā)明主要針目前求解最小集合覆蓋問題的啟發(fā)式算法,缺乏對(duì)取得的解的質(zhì)量的保障這一問題,提出一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法,該方法令取得的解的集合權(quán)值之和除以最優(yōu)解的集合權(quán)值之和為“近似率”,令k為所有集合
的勢(shì)的最大值,則該裝置取得近似率SHk (取=Eti I)的解的期望步數(shù)為mn2,取得近似率為Hk - _的解的期望步數(shù)為mk+1n2。技術(shù)方案一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法,包括如下步驟步驟(1),根據(jù)給出的最小集合覆蓋問題,設(shè)置算法SEIP的參數(shù);步驟(2),運(yùn)行SEIP算法,獲得一個(gè)布爾向量解;步驟(3),將布爾向量解碼為對(duì)應(yīng)的集合;步驟(4),結(jié)束。所述算法SEIP的參數(shù)包括元素的個(gè)數(shù)n,集合的個(gè)數(shù)m,集合的權(quán)值向量w,以及設(shè)置用戶期望的算法運(yùn)行步數(shù)T ;其中集合的權(quán)值向量w的設(shè)置如下令最小集合覆蓋問題給出的集合按照任意順序排列為S1, S2,, Sm,令W(S)表示集合S的權(quán)值,貝U集合的權(quán)值向量W為長(zhǎng)度為m的實(shí)值向量,對(duì)于所有的i=l,2,都有W[i]=W(Si)。
所述步驟(2)中,使用布爾向量表示一個(gè)解時(shí),向量的第i個(gè)元素值為I時(shí)表示集合Si包含在這個(gè)解中、為0則表示不包含。所述算法SEIP的流程為首先分配n+1個(gè)布爾向量的空間I,該空間在初始化后,空間I中的值均為空,然后將0向量放入I
空間中,循環(huán)計(jì)數(shù)器t置0 ;其中SEIP算法的主體是一個(gè)循環(huán),循環(huán)結(jié)束的條件是I [n]空間中的值不為空,并且循環(huán)數(shù)量達(dá)到預(yù)設(shè)值T,否則繼續(xù)執(zhí)行循環(huán);這里,T值越大,得到的解的質(zhì)量就會(huì)越好,但同時(shí)循環(huán)的次數(shù)(即所需的時(shí)間)也就越大,因此T值根據(jù)用戶的需求來設(shè)定。當(dāng)循環(huán)結(jié)束時(shí),輸出I[n]中的布爾向量。所述算法SEIP的每一次循環(huán),從空間I中隨機(jī)的選取一個(gè)非空的空間,并復(fù)制該空間中存儲(chǔ)的向量為X;當(dāng)?shù)谝淮螆?zhí)行循環(huán)時(shí),只有I
為非空,因此這時(shí)取出的向量為初始化時(shí)放入的0向量;然后對(duì)X執(zhí)行“變異”操作對(duì)X的每一位,獨(dú)立地獲取一個(gè)(0,I)區(qū)間的隨機(jī)變 量r,如果r〈l/m,則翻轉(zhuǎn)(0變?yōu)镮或I變?yōu)?)該位上的值,否則保持該位的值不變;計(jì)算出“變異”后的X的隔離值u和適應(yīng)值f (X),隔離值即為該向量表示的集合中包含的元素去除重復(fù)后的數(shù)目,適應(yīng)值即為該向量表示的集合的權(quán)值之和;考察I[u]空間,如果該空間為空,則將X放入I [u]空間;如果該空間中的向量的適應(yīng)值不大于f (X),則使用X替換掉I[u]空間中的向量;其他情況則不做處理。有益效果與現(xiàn)有技術(shù)相比,本發(fā)明所提供的求解最小集合覆蓋問題近似解的組合優(yōu)化方法,通過SEIP算法使最小集合覆蓋問題的解的質(zhì)量得到了保證,從而大大節(jié)省了應(yīng)用過程中的成本開銷解。
圖I為本發(fā)明實(shí)施例的工作流程圖;圖2為本發(fā)明實(shí)施例中SEIP算法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。如圖I所示。首先,用戶給出一個(gè)最小集合覆蓋問題。然后,需要從用戶給出的問題中提取需要的參數(shù),包括元素的個(gè)數(shù)n,集合的個(gè)數(shù)m,集合的權(quán)值向量W,以及設(shè)置用戶期望的算法運(yùn)行步數(shù)T。其中集合的權(quán)值向量的設(shè)置如下令最小集合覆蓋問題給出的集合按照任意順序排列為S1, S2,, Sm,令W(S)表示集合S的權(quán)值,則權(quán)值向量W為長(zhǎng)度為m的實(shí)值向量,對(duì)于所有的i=l, 2,. . .,m,都有w[i] =W(Si)tj這樣就可以使用布爾向量表示一個(gè)解,向量的第i個(gè)元素值為I時(shí)表示集合Si包含在這個(gè)解中、為0則表示不包含。例如,給出一個(gè)最小集合覆蓋問題元素{1,2,3,4,5},集合 S1=U, 2,3} ,S2= {2,4},S3={1,3,5},S1 權(quán)值為 3,S2權(quán)值為2,S3權(quán)值為I。則設(shè)置參數(shù)n=5,m=3,w=[3,2,I]。一個(gè)解x = [1,0, I]表示包含集合S1和S3,對(duì)一個(gè)用布爾向量表示解的適應(yīng)值函數(shù)可以簡(jiǎn)單的寫成f (X)=W1X,即向量W和向量X的內(nèi)積。當(dāng)設(shè)置完SEIP的參數(shù)后,執(zhí)行SEIP算法,獲得SEIP算法的輸出,為一布爾向量。使用布爾向量與集合的對(duì)應(yīng)關(guān)系(即向量的第i個(gè)元素值為I表示集合Si包含在這個(gè)解中),將該布爾向量轉(zhuǎn)換為選取的集合,即為最終求得的解。本發(fā)明的核心算法SEIP的流程如圖2所示。開始步驟為設(shè)置算法的參數(shù)。然后進(jìn)行初始化首先分配n+1個(gè)布爾向量的空間I,該空間I在初始化后,空間I中的值均為空,然后將0向量(即每一位都為0的向量)放入1
空間中,循環(huán)計(jì)數(shù)器t置O。算法的主體是一個(gè)循環(huán),循環(huán)結(jié)束的條件是I [n]空間中的值不為空,并且循環(huán)數(shù)量達(dá)到預(yù)設(shè)值T,否則繼續(xù)執(zhí)行循環(huán)。這里,T值越大,得到的解的質(zhì)量就會(huì)越好,但同時(shí)循環(huán)的次數(shù)(即所需的時(shí)間)也就越大,因此T值根據(jù)用戶的需求來設(shè)定。當(dāng)循環(huán)結(jié)束時(shí),輸出I[n]空間中的布爾向量。算法SEIP的每一次循環(huán),從空間I中隨機(jī)的選取一個(gè)非空的空間,并復(fù)制該空間中存儲(chǔ)的向量為X。當(dāng)?shù)谝淮螆?zhí)行循環(huán)時(shí),只有I
空間為非空,因此這時(shí)取出的向量為初始化時(shí)放入的0向量。然后對(duì)X執(zhí)行“變異”操作對(duì)X的每一位,獨(dú)立地獲取一個(gè)(0,I) 區(qū)間的隨機(jī)變量r,如果r〈l/m,則翻轉(zhuǎn)(0變?yōu)镮或I變?yōu)?)該位上的值,否則保持該位的值不變。然后計(jì)算出“變異”后的X的隔離值u和適應(yīng)值f (X),隔離值即為該向量表示的集合中包含的元素去除重復(fù)后的數(shù)目,適應(yīng)值即為該向量表示的集合的權(quán)值之和??疾霫[u]空間,如果該空間為空,則將X放入I[u]空間;如果該空間中的向量的適應(yīng)值不大于f(x),則使用X替換掉I [u]空間中的向量;其他情況則不做處理。
權(quán)利要求
1.一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法,其特征在于包括如下步驟 步驟(1),根據(jù)給出的最小集合覆蓋問題,設(shè)置算法SEIP的參數(shù); 步驟(2),運(yùn)行SEIP算法,獲得一個(gè)布爾向量解; 步驟(3),將布爾向量解碼為對(duì)應(yīng)的集合; 步驟(4),結(jié)束。
2.如權(quán)利要求I所述的求解最小集合覆蓋問題近似解的組合優(yōu)化方法,其特征在于所述算法SEIP的參數(shù)包括元素的個(gè)數(shù)n,集合的個(gè)數(shù)m,集合的權(quán)值向量W,以及設(shè)置用戶期望的算法運(yùn)行步數(shù)T ;其中集合的權(quán)值向量w的設(shè)置如下令最小集合覆蓋問題給出的集合按照任意順序排列為S1, S2,, Sm,令W(S)表不集合S的權(quán)值,則集合的權(quán)值向量W為長(zhǎng)度為m的實(shí)值向量,對(duì)于所有的i=l,2,. . .,m,都有w[i] =w (Si)。
3.如權(quán)利要求I所述的求解最小集合覆蓋問題近似解的組合優(yōu)化方法,其特征在于所述步驟(2)中,使用布爾向量表示一個(gè)解時(shí),向量的第i個(gè)元素值為I時(shí)表示集合Si包含在這個(gè)解中、為O則表示不包含。
4.如權(quán)利要求2所述的求解最小集合覆蓋問題近似解的組合優(yōu)化方法,其特征在于所述算法SEIP的流程為首先分配n+1個(gè)布爾向量的空間I,該空間在初始化后,空間I中的值均為空,然后將O向量放入I
空間中,循環(huán)計(jì)數(shù)器t置0 ;其中SEIP算法的主體是一個(gè)循環(huán),循環(huán)結(jié)束的條件是I [n]空間中的值不為空,并且循環(huán)數(shù)量達(dá)到預(yù)設(shè)值T,否則繼續(xù)執(zhí)行循環(huán);當(dāng)循環(huán)結(jié)束時(shí),輸出I[n]中的布爾向量; 所述算法SEIP的每一次循環(huán),從空間I中隨機(jī)的選取一個(gè)非空的空間,并復(fù)制該空間中存儲(chǔ)的向量為X;當(dāng)?shù)谝淮螆?zhí)行循環(huán)時(shí),只有I
為非空,因此這時(shí)取出的向量為初始化時(shí)放入的0向量; 然后對(duì)X執(zhí)行“變異”操作對(duì)X的每一位,獨(dú)立地獲取一個(gè)(0,I)區(qū)間的隨機(jī)變量r,如果r〈l/m,則翻轉(zhuǎn)該位上的值,否則保持該位的值不變;計(jì)算出“變異”后的X的隔離值u和適應(yīng)值f (X); 考察I[u]空間,如果該空間為空,則將X放入I [u]空間;如果該空間中的向量的適應(yīng)值不大于f(x),則使用X替換掉I [u]空間中的向量;其他情況則不做處理。
全文摘要
本發(fā)明公開了一種求解最小集合覆蓋問題近似解的組合優(yōu)化方法,首先,根據(jù)給出的最小集合覆蓋問題,設(shè)置算法SEIP的參數(shù);其次,運(yùn)行SEIP算法,獲得一個(gè)布爾向量解;然后,將布爾向量解碼為對(duì)應(yīng)的集合。本發(fā)明通過SEIP算法使最小集合覆蓋問題的解的質(zhì)量得到了保證,從而大大節(jié)省了應(yīng)用過程中的成本開銷解。
文檔編號(hào)G06F17/17GK102799566SQ20121020340
公開日2012年11月28日 申請(qǐng)日期2012年6月19日 優(yōu)先權(quán)日2012年6月19日
發(fā)明者俞揚(yáng), 周志華 申請(qǐng)人:南京大學(xué)