持不變;若Zl+Z2+Z3+ Z4=, 預設精度(即-I. ox I(Tn),則將Zmin對應的基因值減少預設精度1.0 X KTn,其它基因值不 變。
[0209]步驟406:對于該更新后的個體中的后兩個基因a、|3,若有任一基因不滿足預設 精度要求,則對不滿足精度要求的基因進行四舍五入處理。
[0210] 步驟407 :設a、0四舍五入前的值分別為x5、X6,四舍五入后的值分別為y5、y 6, 計算z5 - X 5_y5, Z6 - x 6_y6;計算zmax- max (z 5, z6)和zmin- rnin (z5,z6),Q - y5、|3 =la。
[0211] 步驟 408 :若z5+z6=0,則 a、|3的值都不調整,仍然是 a =y5、|3 = y6;g z 5+z6 =預設精度(即I. 〇X I(Tn),則將z'_對應的基因值增加預設精度1.0 X 10'另一基因 值不變;若z5+z6=負預設精度(即-1.0 X I(Tn),則將z' min對應的基因值減少預設精度 1.0 X 10'另一基因值不變。
[0212] 需要說明的是,當網(wǎng)絡拓撲發(fā)生變化后,算法服務器可重新采用遺傳算法計算影 響因子的最優(yōu)解X best。
[0213] 算法服務器通過遺傳算法得到Xb6st后,網(wǎng)絡中的節(jié)點就可使用X b6st計算最優(yōu)路徑 了。
[0214]圖5為本申請實施例提供的利用Xbest計算最優(yōu)路徑的方法流程圖,其具體步驟如 下:
[0215] 步驟501:對于網(wǎng)絡中的任一節(jié)點,設為節(jié)點i,該節(jié)點i實時或周期性地檢測本 節(jié)點的可用網(wǎng)絡帶寬NETbw i、本節(jié)點與各相鄰節(jié)點之間的網(wǎng)絡鏈路的吞吐量NETthrji (j為 節(jié)點i的任一相鄰節(jié)點的標號)、本節(jié)點的CPU占用率LoadCPUi、本節(jié)點的CPU熱點閾值 Tcpu i、本節(jié)點的內(nèi)存占用率LoadMEMi、本節(jié)點的內(nèi)存熱點閾值Tmemi、本節(jié)點的帶寬占用率 LoadNET i、本節(jié)點的帶寬熱點閾值Tneti、本節(jié)點的連接數(shù)占用率LoadCONi、本節(jié)點的連接數(shù) 熱點閾值 Tconi,將檢測到的 NETbwi、NETthr、LoadCPUi、Tcpui、LoadMEM i、Tmemi、LoadNETi、 Tnetp LoadCONp Tconi實時上報給中心服務器;中心服務器接收并保存節(jié)點i發(fā)來的 NETbwi' NETthrji' LoadCPUi' Tcpui' LoadMEMi' Tmemi' LoadNETi' Tneti' LoadCONi' Tconi〇
[0216] 在實際應用中,算法服務器和中心服務器可為同一節(jié)點。
[0217] 步驟502 :網(wǎng)絡中的一節(jié)點(設為源節(jié)點)接收到其它節(jié)點發(fā)來的訪問請求,從請 求中獲取目的節(jié)點的地址。
[0218] 步驟503 :源節(jié)點根據(jù)自身維護的網(wǎng)絡拓撲,計算從本節(jié)點到目的節(jié)點的所有路 徑,針對每條路徑,向中心服務器獲取計算該條路徑經(jīng)過的每條網(wǎng)絡鏈路的代價所需要的 NETbw i' NETthrji' LoadCPUi' Tcpui' LoadMEMi' Tmemi' LoadNETi' Tneti' LoadCONi' Tconi,結合 從算法服務器獲取的Xbest,并利用公式(1)計算該條路徑經(jīng)過的每條網(wǎng)絡鏈路的代價,根據(jù) 該條路徑經(jīng)過的每條網(wǎng)絡鏈路的代價計算該條路徑的花費(cost)。
[0219] 步驟504 :源節(jié)點根據(jù)計算出的從本節(jié)點到目的節(jié)點的各條路徑的cost,選擇出 一條最優(yōu)路徑,將訪問請求通過該最優(yōu)路徑發(fā)送出去。
[0220] 最后,將本申請實施例提供的方法與現(xiàn)有技術中常用的窮舉法在不同精度下求得 最優(yōu)解所花費的時間進行比較,比較結果如表1所示。
[0221] 其中,窮舉法指的是:將每個影響因子在0~精度之間按照預設幅度進行取值,將 所有影響因子的不同取值進行排列組合,得到不同的影響因子集合,然后在所有的影響因 子集合中找出最優(yōu)集合。例如:當精度=〇. 1時,每個影響因子都有11個可能的取值(〇、 0. 1、0. 2、…、0.9、1),本申請實施例中共有6個影響因子,則可能的影響因子集合共有Il6 個,在這Il6個影響因子集合中選擇一個最優(yōu)集合,即網(wǎng)絡平均響應時間最小的集合。
[0222]
[0223] 表 1
[0224] 從表1可以看出,本申請實施例提供的方法在不同精度要求下,得到最優(yōu)解花費 的時間基本保持一致,不受精度的影響;而窮舉法在精度大于等于〇. 01時,得到最優(yōu)解花 費的時間基本上不可接受。
[0225] 表2給出了本申請實施例提供的方法在不同精度下得到最優(yōu)解的概率:
[0226]
[0227] 表 2
[0228] 表2中,size為種群大小,P。為交叉概率閾值,P 為變異概率閾值。
[0229] 從表2可以看出,本申請實施例提供的方法能夠以很高的概率找到最優(yōu)解。
[0230] 本申請實施例的有益技術效果如下:
[0231] 一、利用遺傳算法提高影響因子的精度。
[0232] 本申請采用遺傳算法求得影響因子的最優(yōu)解,使得采用較高的精度時仍然可以將 實驗時間控制在有限范圍內(nèi)。
[0233] 二、一旦求得影響因子的最優(yōu)解,則可以實時計算出最優(yōu)路徑。
[0234] 在實時性要求很高的通信網(wǎng)絡中,一旦網(wǎng)絡拓撲結構固定,采用遺傳算法求出影 響因子的最優(yōu)解后,此后可直接利用該最優(yōu)解計算出本節(jié)點到任意其它節(jié)點間的最優(yōu)路 徑,實時性較高。
[0235] 三、采用等比例縮放和規(guī)范化的修補策略,將無效解轉化為有效解。
[0236] 在交叉過程中,有4/5的情況會產(chǎn)生無效解,只有1/5的情況產(chǎn)生有效解,而如果 某一位基因發(fā)生了變異,則必然會產(chǎn)生無效解。因此,采用拋棄所有進化過程中產(chǎn)生的無效 解的拒絕策略就不適用了。另外,如果采用改進交叉和變異算子的策略,就會使算法變得更 加復雜。
[0237] 本申請采用等比例縮放的修補策略保持了影響因子之間的相對大小,巧妙地將不 滿足條件的解轉化為了解空間中的有效解,而沒有改變影響因子之間的相對大小。對于修 補后超出解空間的解,通過規(guī)范化操作,將它們變成解空間中的解。
[0238] 四、采用遺傳算法求影響因子的最優(yōu)解,適應性更高。
[0239] 采用遺傳算法總可以計算出對于當前網(wǎng)絡來說最優(yōu)或近似最優(yōu)的一組影響因子, 在網(wǎng)絡條件不變的情況下保持這組影響因子不變,而當網(wǎng)絡拓撲發(fā)生改變時,重新計算影 響因子以滿足改變后的網(wǎng)絡,適應性強。
[0240] 圖6為本申請實施例提供的確定最優(yōu)路徑的裝置的組成示意圖,該裝置主要包 括:
[0241] 代價函數(shù)構造模塊:根據(jù)網(wǎng)絡節(jié)點的狀態(tài)參數(shù)以及網(wǎng)絡鏈路的狀態(tài)參數(shù)構造網(wǎng)絡 鏈路的代價函數(shù),并為各網(wǎng)絡節(jié)點的狀態(tài)參數(shù)和網(wǎng)絡鏈路的狀態(tài)參數(shù)設置影響因子;
[0242] 遺傳算法運行模塊:采用遺傳算法為代價函數(shù)構造模塊構造的代價函數(shù)中的各影 響因子尋找最優(yōu)解;
[0243] 影響因子發(fā)送模塊:將遺傳算法運行模塊求得的各影響因子的最優(yōu)解發(fā)送給網(wǎng)絡 中的各節(jié)點,以使得:網(wǎng)絡中的各節(jié)點在接收到數(shù)據(jù)訪問請求時,根據(jù)各影響因子的最優(yōu)解 及所述代價函數(shù)計算本節(jié)點到目的節(jié)點的最優(yōu)路徑。
[0244] -種實施例中,遺傳算法運行模塊采用遺傳算法為代價函數(shù)中的各影響因子尋找 最優(yōu)解包括:
[0245] 預先將各影響因子構成一個染色體;
[0246] 定義染色體的適應度為該染色體對應的網(wǎng)絡平均響應時間的倒數(shù);
[0247] 對每一代種群中的染色體進行選擇、交叉、變異操作;
[0248] 當滿足迭代結束條件時,將最后一代種群中的適應度最強的染色體作為最優(yōu)解。
[0249] -種實施例中,遺傳算法運行模塊采用的迭代結束條件為:
[0250] 迭代總次數(shù)達到預設迭代次數(shù)閾值;
[0251] 或者,連續(xù)預設代種群中的適應度最強的染色體的網(wǎng)絡平均響應時間都小于預設 網(wǎng)絡平均響應時間閾值。
[0252] -種實施例中,遺傳算法運行模塊對每一代種群中的染色體進行選擇、交叉、變異 操作進一步包括:
[0253] 當對一代種群中的染色體進行變異操作后,以前一代種群中適應度最強的染色體 替換當前代種群中適應度最弱的染色體。
[0254] -種實施例中,代價函數(shù)構造模塊根據(jù)網(wǎng)絡節(jié)點的狀態(tài)參數(shù)包括:
[0255] 根據(jù)網(wǎng)絡節(jié)點的CPU參數(shù)、網(wǎng)絡節(jié)點的內(nèi)存參數(shù)、網(wǎng)絡節(jié)點的連接數(shù)參數(shù)之一或 任意組合;
[0256] 根據(jù)網(wǎng)絡鏈路的狀態(tài)參數(shù)包括:根據(jù)網(wǎng)絡鏈路的帶寬參數(shù)、網(wǎng)絡鏈路的吞吐量參 數(shù)之一或組合。
[0257] -種實施例中,代價函數(shù)構造模塊構造的網(wǎng)絡鏈路的代價函數(shù)為:
[0260] 其中,i,j為網(wǎng)絡中任意兩個相鄰的節(jié)點的標號,Cij為節(jié)點i、j之間的網(wǎng)絡鏈路 的代價函數(shù);
[0261] NETbwi為節(jié)點i的可用網(wǎng)絡帶寬;
[0262] NETthrij為節(jié)點i、j之間的網(wǎng)絡鏈路的吞吐量;
[0263] LoadCPUj為節(jié)點j的CPU的占用率;
[0264] Tcpuj為節(jié)點j的CPU熱點閾值;
[0265] LoadMEMj為節(jié)點j的內(nèi)存占用率;
[0266] Tmemj為節(jié)點j的內(nèi)存熱點閾值;
[0267] LoadNETj為節(jié)點j的帶寬占用率;
[0268] Tnetj為節(jié)點j的帶寬熱點閾值;
[0269] LoadCONj為節(jié)點j的連接數(shù)占用率;
[0270] Tconj為節(jié)點j的連接數(shù)熱點閾值;
[0271] 為節(jié)點j的CPU影響因子;
[0272] 為節(jié)點j的內(nèi)存影響因子;
[0273] Aie0為節(jié)點j的帶寬影響因子;
[0274] P 為節(jié)點j的連接數(shù)影響因子