一種基于遺傳算法實(shí)現(xiàn)mas負(fù)載均衡的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于遺傳算法實(shí)現(xiàn)MAS (Multi Agent System,多智能體系統(tǒng))負(fù) 載均衡的方法,屬于分布式系統(tǒng)負(fù)載均衡技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 多智能體系統(tǒng)是多個(gè)智能體組成的集合,它的目標(biāo)是將大而復(fù)雜的系統(tǒng)建設(shè)成小 的、彼此互相通信和協(xié)調(diào)的,易于管理的系統(tǒng)。通過(guò)智能體的合作來(lái)完成任務(wù)的求解,實(shí)現(xiàn) 多智能體系統(tǒng)的關(guān)鍵是多個(gè)智能體之間的通信和協(xié)調(diào)。
[0003]當(dāng)系統(tǒng)越來(lái)越大,系統(tǒng)節(jié)點(diǎn)隨之增多的時(shí)候,不得不考慮負(fù)載均衡的問(wèn)題。如何使 MAS任務(wù)的分配執(zhí)行達(dá)到最優(yōu)或接近最優(yōu),整體效率較高,這是本發(fā)明將要研究的問(wèn)題。
[0004] 負(fù)載均衡是一種能夠通過(guò)恰當(dāng)?shù)娜蝿?wù)分配來(lái)進(jìn)行資源優(yōu)化利用,實(shí)施并行運(yùn)算, 提高處理機(jī)吞吐量和縮短執(zhí)行任務(wù)時(shí)間的技術(shù)。一般分為靜態(tài)負(fù)載均衡和動(dòng)態(tài)負(fù)載均衡。 通常情況下,靜態(tài)負(fù)載均衡算法都沒有考慮系統(tǒng)的動(dòng)態(tài)變化情況,往往會(huì)表現(xiàn)出任務(wù)分配 的不均衡性。
[0005] 動(dòng)態(tài)負(fù)載均衡是指根據(jù)目標(biāo)系統(tǒng)上負(fù)載的變化,動(dòng)態(tài)地進(jìn)行任務(wù)分配。動(dòng)態(tài)負(fù)載 均衡中的任務(wù)調(diào)度可分為集中式調(diào)度和分布式調(diào)度兩大類,集中式調(diào)度由一個(gè)任務(wù)調(diào)度 器負(fù)責(zé)搜集系統(tǒng)負(fù)載信息,并由它來(lái)決定負(fù)載均衡調(diào)度方案。集中式調(diào)度實(shí)現(xiàn)簡(jiǎn)單,但在 節(jié)點(diǎn)數(shù)較多或大規(guī)模并行分布式系統(tǒng)中,由于處理能力和通信的受限的原因,任務(wù)調(diào)度器 成為系統(tǒng)瓶頸。分布式調(diào)度解決了集中式調(diào)度所存在的問(wèn)題,但隨著節(jié)點(diǎn)數(shù)目和任務(wù)數(shù)目 的增加,分配效率也隨之下降。
[0006] 張玉芳在《基于負(fù)載權(quán)值的負(fù)載均衡算法》中為解決服務(wù)器集群負(fù)載分配不均的 問(wèn)題,綜合考慮節(jié)點(diǎn)負(fù)載和節(jié)點(diǎn)性能信息,提出了基于負(fù)載權(quán)值的動(dòng)態(tài)反饋負(fù)載均衡算法。 利用負(fù)載權(quán)值選擇分配負(fù)載的節(jié)點(diǎn)集合,保證性能高的節(jié)點(diǎn)分配到較多的負(fù)載;引入負(fù)載 差值計(jì)算節(jié)點(diǎn)分配負(fù)載的概率,使得負(fù)載的分布更加均勻;通過(guò)負(fù)載增量及負(fù)載修正保持 系統(tǒng)的穩(wěn)定性。使用0PNET仿真軟件進(jìn)行測(cè)試,結(jié)果表明該算法能有效提高負(fù)載均衡效率, 有較好的負(fù)載均衡效果。但是使用修正負(fù)載增量來(lái)抵消節(jié)點(diǎn)完成任務(wù)對(duì)負(fù)載造成的影響, 有一定的滯后性。另外,均衡效率雖然有了一定的提高,但與理論上存在差距。
[0007] 曹蘭在《遺傳算法在負(fù)載均衡系統(tǒng)中的應(yīng)用研究》將并行分布式系統(tǒng)中廣泛使用 的遺傳算法應(yīng)用到增值業(yè)務(wù)計(jì)費(fèi)系統(tǒng)即負(fù)載均衡系統(tǒng)的設(shè)計(jì)中,并根據(jù)增值業(yè)務(wù)計(jì)費(fèi)系 統(tǒng)的具體特點(diǎn),對(duì)遺傳算法作了適當(dāng)?shù)母倪M(jìn),提高了后臺(tái)服務(wù)器CPU的利用率,從而改善 系統(tǒng)性能。但在分配的過(guò)程中,沒有為節(jié)點(diǎn)設(shè)置負(fù)載閾值,可能會(huì)出現(xiàn)節(jié)點(diǎn)過(guò)載。
【發(fā)明內(nèi)容】
[0008] 發(fā)明目的:針對(duì)現(xiàn)有技術(shù)存在的缺陷,本發(fā)明的目的在于提供一種基于遺傳算法 實(shí)現(xiàn)MAS負(fù)載均衡的方法。在待分配任務(wù)和節(jié)點(diǎn)之間建立基于遺傳算法的負(fù)載均衡器,以 此實(shí)現(xiàn)MAS各節(jié)點(diǎn)的負(fù)載均衡。其中,MAS中所有的待分配任務(wù)的詳細(xì)信息都要發(fā)送到負(fù) 載均衡器。同時(shí),負(fù)載均衡器收集各個(gè)節(jié)點(diǎn)的負(fù)載情況,以此作出有效的任務(wù)調(diào)度。
[0009]同時(shí)在分配的過(guò)程中,對(duì)每個(gè)節(jié)點(diǎn)設(shè)置負(fù)載閾值,當(dāng)前負(fù)載大于閾值的時(shí)候,停止 向該節(jié)點(diǎn)分配任務(wù),這樣可以縮小搜索空間并以此加快任務(wù)分配效率。
[0010] 技術(shù)方案:一種基于遺傳算法實(shí)現(xiàn)MAS負(fù)載均衡的方法,包括如下步驟:步驟一、 建立分配模型
[0011] 在MAS中,存在有多個(gè)Agent,Agent之間協(xié)同完成某項(xiàng)任務(wù)。同時(shí)系統(tǒng)中幾個(gè) Agent自發(fā)建立一個(gè)系統(tǒng)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)就是一個(gè)管理Agent,每個(gè)管理Agent分配任務(wù)到 執(zhí)行任務(wù)的Agent,節(jié)點(diǎn)上的Agent受節(jié)點(diǎn)的管理。整個(gè)系統(tǒng)存在多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)間相對(duì)獨(dú) 立,并沒統(tǒng)一的管理中心。
[0012] 每個(gè)節(jié)點(diǎn)可以接受系統(tǒng)分配的任務(wù),當(dāng)節(jié)點(diǎn)接受任務(wù)后,會(huì)指派底層Agent執(zhí)行 任務(wù)。如果沒有負(fù)載均衡器,可能會(huì)出現(xiàn)個(gè)別節(jié)點(diǎn)負(fù)載過(guò)大或者個(gè)別節(jié)點(diǎn)負(fù)載過(guò)輕,因而就 需要考慮節(jié)點(diǎn)負(fù)載。具體如下:
[0013] Load(i) =x(i) (1)
[0014] Load(i)為各個(gè)節(jié)點(diǎn)的負(fù)載值,其值的大小衡量節(jié)點(diǎn)所處的狀態(tài),即空載、輕載、重 載或超載。
[0015]
P)
[0016] Sum(l〇ad)表現(xiàn)為整個(gè)系統(tǒng)所有節(jié)點(diǎn)(假設(shè)系統(tǒng)節(jié)點(diǎn)總數(shù)為n)的負(fù)載量。
[0017]
_
[0018] Average(load)表現(xiàn)為系統(tǒng)的平均負(fù)載,等同于系統(tǒng)負(fù)載。
[0019] V(i) =Load(i)-Average(load) (4)
[0020]V(i)為負(fù)載偏差。
[0021]
〇)
[0022] R(i)為負(fù)載偏差率,取值為0-1之間,表現(xiàn)為節(jié)點(diǎn)的負(fù)載均衡性能。
[0023] 步驟二、染色體定義
[0024] 遺傳算法的運(yùn)算對(duì)象是表示個(gè)體的符號(hào)串,所以必須把變量編碼為一種符號(hào)串用 二進(jìn)制整數(shù)來(lái)表示。
[0025] 將節(jié)點(diǎn)的編號(hào)通過(guò)二進(jìn)制數(shù)表示,然后將總的任務(wù)序列中每個(gè)任務(wù)對(duì)應(yīng)的站點(diǎn)用 站點(diǎn)的序號(hào)的^進(jìn)制整數(shù)表不,總的任務(wù)序列對(duì)應(yīng)的站點(diǎn)^進(jìn)制整數(shù)序列即為個(gè)體的基因 型。
[0026] 假設(shè)有節(jié)點(diǎn)xl,x2, x3,六個(gè)任務(wù)分別為tl,t2, t3, t4, t5, t6。在此節(jié)點(diǎn)有3個(gè), 即最大的節(jié)點(diǎn)序號(hào)為3,所以用6組2位(若節(jié)點(diǎn)總數(shù)為n,將n轉(zhuǎn)化為二進(jìn)制數(shù),即位數(shù)) 無(wú)符號(hào)二進(jìn)制整數(shù)來(lái)表示,將它們連接在一起所組成的12位無(wú)符號(hào)二進(jìn)制數(shù)就形成了個(gè) 體的基因型,表示一個(gè)可行解。
[0027] 例如,基因型X= 10 11 10 01 10 11所對(duì)應(yīng)的表現(xiàn)型是:x= [2,3,2,1,2,3]。 即tl分配到節(jié)點(diǎn)2, t2分配到節(jié)點(diǎn)3, t3分配到節(jié)點(diǎn)2, t4分配到節(jié)點(diǎn)1,t5分配到節(jié)點(diǎn)2, t6分配到節(jié)點(diǎn)3。
[0028] 步驟三、群體初始化
[0029] 遺傳算法是對(duì)群體進(jìn)行的進(jìn)化操作,需要給其淮備一些表示起始搜索點(diǎn)的初始群 體數(shù)據(jù),設(shè)置群體的規(guī)模(對(duì)于適應(yīng)值函數(shù)比較復(fù)雜的情況,群體規(guī)模與基因長(zhǎng)度之比應(yīng) 當(dāng)保持在1. 5以上)。步驟二中基因長(zhǎng)度為12,以此群體規(guī)模的大小選取為20,即群體由 20個(gè)個(gè)體組成,每個(gè)個(gè)體可通過(guò)隨機(jī)方法產(chǎn)生。
[0030] 步驟四、適應(yīng)度計(jì)算
[0031] 通過(guò)節(jié)點(diǎn)的負(fù)載偏差R(i)計(jì)算染色體的適應(yīng)度,染色體適應(yīng)度越好,越有可能遺 傳到下一代。對(duì)應(yīng)的分配方案被選中的概率越高。
[0032] 步驟五、選擇運(yùn)算
[0033] 選擇運(yùn)算(或稱為復(fù)制運(yùn)算)把當(dāng)前群體中適應(yīng)度較高的個(gè)體按某種規(guī)則或模型 遺傳到下一代群體中。一般要求適應(yīng)度較高的個(gè)體將有更多的機(jī)會(huì)遺傳到下一代群體中。 本發(fā)明選擇操作采用典型的輪盤賭方法。
[0034] 步驟六、交叉運(yùn)算
[0035] 交叉運(yùn)算是遺傳算法中產(chǎn)生新個(gè)體的主要操作過(guò)程,它以某一概率相互交換某兩 個(gè)個(gè)體之間的部分染色體。
[0036] 步驟七、變異運(yùn)算
[0037] 變異運(yùn)算是對(duì)個(gè)體的某一個(gè)或某一些基因座上的基因值按某一較小的概率進(jìn)行 改變,它也是產(chǎn)生新個(gè)體的一種操作方法。
[0038] 步驟八、縮小搜索空間
[0039] 設(shè)定節(jié)點(diǎn)負(fù)載的閾值,當(dāng)當(dāng)前負(fù)載大于閾值的時(shí)候,可以暫時(shí)不分配任務(wù)到該節(jié) 點(diǎn),依此減小了搜索的范圍。
[0040] 經(jīng)過(guò)設(shè)定的代數(shù)遺傳后,按照前面染色體定義的方案,反向解碼,得到最終的分配 方案,使得各個(gè)節(jié)點(diǎn)負(fù)載均衡。
[0041] 本發(fā)明的有益之處在于:
[0042] 對(duì)MAS系統(tǒng)中加入基于遺傳算法的負(fù)載均衡器,利用其概念清晰、搜索速度快、易 于實(shí)現(xiàn)的優(yōu)點(diǎn)求解負(fù)載均衡是一項(xiàng)非常好的選擇。設(shè)計(jì)的任務(wù)均衡器能夠有效的解決MAS 系統(tǒng)在任務(wù)分配時(shí)出現(xiàn)的負(fù)載不均衡問(wèn)題。該方法提高了實(shí)現(xiàn)負(fù)載均衡的效率,同時(shí)減少 了節(jié)點(diǎn)間的通訊量。
【附圖說(shuō)明】
[0043] 圖1為MAS系統(tǒng)分布式體系結(jié)構(gòu)圖;
[0044] 圖2為染色體定義的原理圖;
[0045] 圖3為基于遺傳算法的負(fù)載均衡器應(yīng)用說(shuō)明【具體實(shí)施方式】原理圖;
[0046] 圖4為基于遺傳算法實(shí)現(xiàn)MAS負(fù)載均衡實(shí)現(xiàn)流程圖。
【具體實(shí)施方式】
[0047] 下面結(jié)合具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說(shuō)明本發(fā)明 而不用于限