一種基于密母算法的軟件模塊聚類分析方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于軟件工程領(lǐng)域,特別涉及一種基于密母算法的軟件模塊聚類分析方 法。
【背景技術(shù)】
[0002] 軟件模塊聚類是軟件系統(tǒng)設(shè)計,維護(hù)和發(fā)展的過程中不可缺少的一部分。隨著目 前的商業(yè)和生活中對軟件系統(tǒng)的功能需求急劇增加,軟件的高度模塊化成了各大軟件設(shè)計 公司不斷努力解決的問題,尤其是對于大型的軟件系統(tǒng)。因此,設(shè)計一種合理有效的軟件模 塊聚類方法仍是研究的重要方向。
[0003] 方案一,Doval 等發(fā)表的"Automatic clustering of software systems using a genetic algorithm',( ((Software technology and engineering practice〉〉,文章編號: 73-81 (1999)),該文章的核心是使用遺傳算法對解空間進(jìn)行搜索,具體的做法是用種群中 的個體串來對問題的輸入數(shù)據(jù)進(jìn)行編碼,將模塊度質(zhì)量作為適應(yīng)度函數(shù),每一次搜索稱為 一代,在每一代中保留種群中適應(yīng)度函數(shù)最大的個體,直至滿足一定的終止條件。
[0004] 方案二,Mitchell 等發(fā)表的 "A heuristic search approach to solving the software clustering problem',(Ph. D dissertation in Drexel University, 2002),該文 章中提出用啟發(fā)式搜索的策略來對解空間進(jìn)行快速搜索,具體使用的是爬山算法來解決軟 件模塊聚類問題。爬山法在搜索過程中,從一個隨機(jī)的系統(tǒng)模塊劃分開始,不斷地在該劃分 周圍尋找模塊度質(zhì)量更高的劃分,并替換原有劃分進(jìn)行重復(fù)尋找更優(yōu)劃分。
[0005] 在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0006] 方案二的搜索空間占用較大,并且搜索效率較低;而方案二的執(zhí)行效率非常高,但 是容易陷入局部最優(yōu)解而難以得到最優(yōu)解。
【發(fā)明內(nèi)容】
[0007] 為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種基于密母算法的軟件模塊聚類分析 方法,所述基于密母算法的軟件模塊聚類分析方法,包括:
[0008] 步驟一,構(gòu)建初始種群,所述初始種群中包含預(yù)設(shè)數(shù)量的個體;
[0009] 步驟二,獲取所述初始種群中每個所述個體的適應(yīng)度數(shù)值,根據(jù)所述適應(yīng)度數(shù)值 從大到小進(jìn)行排序,選取前N個所述個體構(gòu)成樣本種群;
[0010] 步驟三,產(chǎn)生第一隨機(jī)數(shù)值,如果所述第一隨機(jī)數(shù)值小于第一預(yù)設(shè)閾值,則從所述 樣本種群中隨機(jī)選取第一個體和第二個體,對所述第一個體和第二個體進(jìn)行交叉處理,得 到交叉?zhèn)€體,獲取所述交叉?zhèn)€體的適應(yīng)度數(shù)值,將所述交叉?zhèn)€體存入所述樣本種群中得到 樣本交叉種群;
[0011] 步驟四,產(chǎn)生第二隨機(jī)數(shù)值,如果所述第二隨機(jī)數(shù)值小于第二預(yù)設(shè)閾值,則從所述 樣本交叉種群中隨機(jī)選取待變異個體,對所述待變異個體進(jìn)行變異處理,得到變異個體,獲 取所述變異個體的適應(yīng)度數(shù)值,將所述變異個體存入所述樣本交叉種群中,得到樣本變異 種群;
[0012] 步驟五,對所述樣本變異種群中的個體按適應(yīng)度數(shù)值由大到小進(jìn)行排序,將最大 所述適應(yīng)度數(shù)值對應(yīng)的個體存放在最優(yōu)個體數(shù)組中,并對種群代數(shù)加一;
[0013] 步驟六,獲取中間代種群,對所述中間代種群進(jìn)行如所述步驟二至所述步驟五的 處理,直至所述種群代數(shù)大于預(yù)設(shè)代數(shù)閾值時,對所述最優(yōu)個體數(shù)組中存儲的所述個體按 所述適應(yīng)度數(shù)值進(jìn)行由大到小的排序,結(jié)合爬山法對所述最優(yōu)個體數(shù)組中存儲的所述個體 進(jìn)行優(yōu)化,將優(yōu)化后的與最大所述適應(yīng)度數(shù)值對應(yīng)的所述個體存入結(jié)果個體數(shù)組中,根據(jù) 所述結(jié)果個體數(shù)組中所述個體的數(shù)據(jù)進(jìn)行軟件模塊聚類。
[0014] 可選的,所述產(chǎn)生第一隨機(jī)數(shù)值,如果所述第一隨機(jī)數(shù)值小于第一預(yù)設(shè)閾值,則從 所述樣本種群中隨機(jī)選取第一個體和第二個體,對所述第一個體和第二個體進(jìn)行交叉處 理,得到交叉?zhèn)€體,獲取所述交叉?zhèn)€體的適應(yīng)度數(shù)值,將所述交叉?zhèn)€體存入所述樣本種群中 得到樣本交叉種群,包括:
[0015] 根據(jù)預(yù)設(shè)算法產(chǎn)生第一隨機(jī)數(shù)值;
[0016] 如果所述第一隨機(jī)數(shù)值小于第一預(yù)設(shè)閾值,則從所述樣本種群中隨機(jī)選取第一個 體和第二個體,在所述第一個體中隨機(jī)確定第一交叉位置和第二交叉位置,在所述第二個 體中產(chǎn)生第三交叉位置;
[0017] 將位于所述第一交叉位置和所述第二交叉位置之間的轉(zhuǎn)移數(shù)據(jù)插入到所述第三 位置處,刪除所述第二個體中與所述轉(zhuǎn)移數(shù)據(jù)編號相同的數(shù)據(jù),得到交叉?zhèn)€體;
[0018] 確定所述交叉?zhèn)€體的適應(yīng)度數(shù)值,將所述交叉?zhèn)€體存入所述樣本種群中,直至所 述樣本種群中所有所述個體均為所述交叉?zhèn)€體時,則此時的所述所述樣本種群即為樣本交 叉種群。
[0019] 可選的,所述產(chǎn)生第二隨機(jī)數(shù)值,如果所述第二隨機(jī)數(shù)值小于第二預(yù)設(shè)閾值,則從 所述樣本交叉種群中隨機(jī)選取待變異個體,對所述待變異個體進(jìn)行變異處理,得到變異個 體,獲取所述變異個體的適應(yīng)度數(shù)值,將所述變異個體存入所述樣本交叉種群中,得到樣本 變異種群,包括:
[0020] 根據(jù)預(yù)設(shè)算法產(chǎn)生第二隨機(jī)數(shù)值;
[0021] 如果所述第二隨機(jī)數(shù)值小于第二預(yù)設(shè)閾值,則獲取隨機(jī)個體編號;
[0022] 從所述樣本交叉種群中選取與所述隨機(jī)個體編號對應(yīng)個體的鄰接個體,將所述與 所述隨機(jī)個體編號對應(yīng)個體中的數(shù)據(jù)轉(zhuǎn)移到所述鄰接個體中,得到變異個體;
[0023] 確定所述變異個體的適應(yīng)度數(shù)值,將所述變異個體存入所述樣本交叉種群中,直 至所述樣本交叉種群中所有所述個體均為所述變異個體時,則此時的所述樣本交叉種群即 為樣本變異種群。
[0024] 可選的,結(jié)合爬山法對所述最優(yōu)個體數(shù)組中存儲的所述個體進(jìn)行優(yōu)化,將優(yōu)化后 的與最大所述適應(yīng)度數(shù)值對應(yīng)的所述個體存入結(jié)果個體數(shù)組中,根據(jù)所述結(jié)果個體數(shù)組中 所述個體的數(shù)據(jù)進(jìn)行軟件模塊聚類,包括:
[0025] 構(gòu)建與所述最優(yōu)個體數(shù)組中存儲的所述個體對應(yīng)的計數(shù)變量;
[0026] 如果所述計數(shù)變量小于預(yù)設(shè)迭代閾值,則對所述最優(yōu)個體數(shù)組中存儲的所述個體 進(jìn)行變異處理,得到第一變異個體,獲取所述第一變異個體的適應(yīng)度數(shù)值,如果所述第一變 異個體的適應(yīng)度數(shù)值大于所述最優(yōu)個體數(shù)組中存儲的所述個體得適應(yīng)度數(shù)值,則令所述第 一變異個體替換所述最優(yōu)個體數(shù)組中存儲的所述個體,得到替換后的存儲在所述最優(yōu)個體 數(shù)組中的個體,并將所述計數(shù)變量加一;
[0027] 直到所述計數(shù)變量等于或大于所述預(yù)設(shè)迭代閾值時,將根據(jù)此時所述存儲在所述 最優(yōu)個體數(shù)組中的個體進(jìn)行軟件模塊聚類。本發(fā)明提供的技術(shù)方案帶來的有益效果是:
[0028] 通過在包含多個個體的種群中使用交叉算法和變異算法,并結(jié)合爬山法確定最終 聚類方法,避免了現(xiàn)有技術(shù)中僅僅得到局部聚類效果明顯、難以獲取全局最優(yōu)解這一情況 的發(fā)生,并且采用群組的編碼方式降低了搜索空間的占用,同時采用密母算法的優(yōu)化方式, 加快了搜索收斂速度,還提高了聚類的穩(wěn)定性。
【附圖說明】
[0029] 為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖 作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普 通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0030] 圖1是本發(fā)明提供的一種基于密母算法的軟件模塊聚類分析方法的流程示意圖;
[0031] 圖2是本發(fā)明提供的種基于密母算法的軟件模塊聚類分析方法的簡要流程示意 圖;
[0032] 圖3(a)是本發(fā)明提供的一種基于密母算法的軟件模塊聚類分析方法對數(shù)據(jù)集 mtunis進(jìn)行仿真的結(jié)果示意圖;
[0033] 圖3(b)是本發(fā)明提供的一種基于密母算法的軟件模塊聚類分析方法對數(shù)據(jù)集 ispell進(jìn)行仿真的結(jié)果示意圖;
[0034] 圖3(c)是本發(fā)明提供的一種基于密母算法的軟件模塊聚類分