張發(fā)展,張 潼
(河北地質(zhì)大學(xué) 信息工程學(xué)院,河北 石家莊 050031)
無容量設(shè)施選址問題(UFLP)[1]是由Kuehn和Hamburger于1963年首次提出的一個重要的組合優(yōu)化問題。UFLP不僅對于學(xué)校、工廠、倉庫、消防站、醫(yī)院等基礎(chǔ)設(shè)施的選址具有重要的應(yīng)用價值[2-3],而且在資源配置、資金預(yù)算、物流運輸、計算機網(wǎng)絡(luò)和計算機視覺等領(lǐng)域具有重要的理論意義[4-7]。
近年來,國內(nèi)外學(xué)者對 UFLP的求解算法進行了廣泛的研究。Galv?o和Raggi[8]提出了一種求解UFLP一般0-1公式的三階段精確方法。Conn和 CornuéJols[9]提出了一種基于凝聚對偶的正交精確解求解超線性規(guī)劃的新方法投影,并用于求解UFLP問題。Charikar和Guha[10]提出了一種簡單的貪婪局部搜索算法,在 (2/ )O n?時間內(nèi)達到了2.414+?的近似比。Takaya等人[11]和Atta[12]等人先后提出了利用螢火蟲算法(FA)和猴群算法(MA)求解UFLP的方法,但是他們都沒有給出大規(guī)模UFLP實例的計算結(jié)果。通過上述文獻可以看出,精確算法在求解大規(guī)模UFLP實例時是非常耗費時間的,而非精確算法尤其是演化算法的求解速度遠遠快于精確算法。目前,如何利用演化算法快速高效地求解UFLP已經(jīng)成為一個熱點問題。因此,本文研究如何利用DE求解UFLP問題,本文首先提出了一個新型傳遞函數(shù)Ntf,將DE中的個體的實向量轉(zhuǎn)換為二進制向量,以適用于直接求解二元優(yōu)化問題。然后基于 Ntf給出了一種新的離散差分演化算法(N-DisDE),并利用N-DisDE提出了求解UFLP的一個新的高效方法。
UFLP的定義一般描述為:給定客戶的集合K= {k1,k2,… ,kn},其中m為客戶的數(shù)量,ki表示第i個客戶。給定可以開放的設(shè)施集合S={s1,s2,… ,sn},其中n為設(shè)施數(shù)量,sj表示第j個設(shè)施。給定一個m×n的服務(wù)矩陣D= [dij]m×n,其中dij表示當(dāng)?shù)趇個客戶從第j個設(shè)施獲得服務(wù)時的服務(wù)成本。G= {g1,g2,… ,gn}是設(shè)施固定開放成本的集合,其中g(shù)j表示第j設(shè)施開放所需要的開放成本。
首先定義了兩個二進制變量yij和xj如下:
根據(jù)上述定義,UFLP的數(shù)學(xué)模型描述如下:
近年來,傳遞函數(shù)已經(jīng)成為將連續(xù)型演化算法轉(zhuǎn)換為離散演化算法的重要方法之一。目前,已有的轉(zhuǎn)換函數(shù)可以分為兩類:S型傳遞函數(shù)和V型傳遞函數(shù)[13-14]。在表1中給出了8個已有的S型和V型轉(zhuǎn)換函數(shù)的函數(shù)公式,其中S型轉(zhuǎn)換函數(shù)分別命名為S1 ~S4,V型轉(zhuǎn)換函數(shù)分別命名為V1 ~V4。
表1 S型轉(zhuǎn)換函數(shù)和V型轉(zhuǎn)換函數(shù)Tab.1 S-shaped conversion function and V-shaped conversion function
book=28,ebook=32本文受S型和V型傳遞函數(shù)的啟發(fā),提出了一個新型轉(zhuǎn)換函數(shù),命名為Ntf。轉(zhuǎn)換函數(shù)Ntf的計算公式為:
其中, T∈(0,1) 是一個預(yù)先設(shè)定的閾值,本文設(shè)為0.5。
輸入:一個UFLP實例,參數(shù)A,N,CR,T,F(xiàn)S和MI;
輸出:最好解B和最好值f( B, Q).
在算法 1中,step(1)的時間復(fù)雜度為O(N×n);step(2)~step(7)的時間復(fù)雜度為O(N×m×n2);step(8)的時間復(fù)雜度為O(N);step(9)~step(18)的時間復(fù)雜度為O(MI×N×m×n2);因此,算法 1的時間復(fù)雜度為O(N×n) +O(N×m×n2)+O(N)+O(MI×N×m×n2)。當(dāng)m(客戶個數(shù)),N,MI是關(guān)于n的多項式時,算法1為具有多項式時間復(fù)雜度的演化算法。
本文所有計算在配置為(英特爾)Intel(R)Core(TM)i5-7500 CPU@3.40GHz(3401 MHz)和4GB的RAM 2.90ghz的微型計算機上進行,編程語言為C,編譯環(huán)境為Code:Blocks。
我們利用 15個來自 OR-library[15]的 UFLP benchmark實例對EGTOA與上述算法進行比較,這15個benchmark實例根據(jù)它的規(guī)模大小分為4類:第一類是16×50(即16個設(shè)施和50個客戶)的小規(guī)模實例,編號分別為cap71~cap74;第二類是25×50(即25個設(shè)施和50個客戶)的中等規(guī)模實例,編號分別為 cap101~cap104;第三類是50×50(即50個設(shè)施和 50個客戶)的中等規(guī)模實例,編號分別為 cap131~cap134;第四類是100×1000(即100個設(shè)施和1000個客戶)的大規(guī)模實例,編號分別為 capA~capC。四類 UFLP實例的規(guī)模大小與最優(yōu)值見表2所示。
表2 UFLP 實例Tab.2 Th e UFLP instances
從表3可以看出,N-DisDE,HBDE 和BPSO對于第一類UFLP實例均能100%求得最優(yōu)值。從表4可以看出,對于第二類UFLP實例,N-DisDE和HBDE均能100%求得最優(yōu)值,而BPSO對于實例Cap101和Cap103的求解結(jié)果較差,對于實例Cap102和Cap104的求解結(jié)果較好。從表5可以看出,對于第三類UFLP實例,HBDE的求解效果最好;N-DisDE對于實例Cap131的計算結(jié)果較差,30次獨立運行中有29次可以求得最優(yōu)值;BPSO的計算結(jié)果最差,僅對于實例Cap134的計算結(jié)果較好。從表5中可以看出,對于第四類大規(guī)模UFLP實例,N-DisDE的計算結(jié)果明顯優(yōu)于其他算法,不僅求解質(zhì)量最好,且魯棒性更佳;其次是BPSO,而HBDE的計算結(jié)果最差。
表3 N-DisDE ,HBDE和BPSO求解UFLP實例(16×50)的結(jié)果Tab.3 Calculation results of N-DisDE, HBDE and BPSO for solving UFLP instances (16×50)
表4 N-DisDE ,HBDE和BPSO求解UFLP實例(25×50)的結(jié)果Tab.4 Calculation results of N-DisDE, HBDE and BPSO for solving UFLP instances (25×50)
表5 N-DisDE ,HBDE和BPSO求解UFLP實例(50×50)的結(jié)果Tab.5 Calculation results of N-DisDE, HBDE and BPSO for solving UFLP instances (50×50)
表6 N-DisDE ,HBDE和BPSO求解UFLP實例(100×1 000)的結(jié)果Tab.6 Calculation results of N-DisDE, HBDE and BPSO for solving UFLP instances (100×1 000)
本文受已有的S型和V型轉(zhuǎn)換函數(shù)的啟發(fā),提出了一種新型轉(zhuǎn)換函數(shù)Ntf,并在此基礎(chǔ)上,給出了一種基于新型轉(zhuǎn)換函數(shù)的離散差分演化算(N-DisDE)。為了驗證N-DisDE的求解性能,本文通過求解4類不同規(guī)模UFLP實例,驗證了算法的高效性和有效性,并通過與已有算法的計算結(jié)果比較表明:NDDE 比HBDE和BPSO的求解結(jié)果更優(yōu),算法的魯棒性更佳,非常適用于求解大規(guī)模UFLP實例。
通過實驗證明,本文提出的基于新型轉(zhuǎn)換函數(shù)是非常成功的,這為連續(xù)演化算法離散化提供了一種新型函數(shù)。在未來研究中,我們將探索新型轉(zhuǎn)換函數(shù)對其他算法的影響,如煙花算法(fireworks algorithm, FA)[18]和鴿群優(yōu)化算法(pigeon-inspired optimization algorithm, PIO)[19]等。此外,我們將繼續(xù)嘗試?yán)?N-DisDE求解其他二元優(yōu)化問題,例如各種背包問題[20-21],集合覆蓋問題[22]等。