一種基于雙目標(biāo)蟻群算法的云任務(wù)分配方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及云計(jì)算領(lǐng)域,更具體地,涉及一種基于雙目標(biāo)蟻群算法的云任務(wù)分配 方法。
【背景技術(shù)】
[0002] 蟻群算法應(yīng)用于云任務(wù)分配問(wèn)題的求解,主要有兩種。一種是針對(duì)單目標(biāo)優(yōu)化問(wèn) 題,另一種是針對(duì)多目標(biāo)優(yōu)化問(wèn)題。
[0003] 在應(yīng)用蟻群算法求解云任務(wù)分配問(wèn)題時(shí),人們常常使用針對(duì)單目標(biāo)的基于蟻群算 法的云任務(wù)分配方法,該方法在蟻群算法的能見(jiàn)度計(jì)算上考慮單目標(biāo)問(wèn)題的優(yōu)化,然而這 樣的方法不能兼顧多個(gè)目標(biāo)函數(shù)。
[0004] 而針對(duì)多目標(biāo)優(yōu)化問(wèn)題的基于蟻群算法的云任務(wù)分配方法,使用的是通過(guò)蟻群算 法與其他理論相結(jié)合的方法,如蟻群算法與Pareto最優(yōu)化理論相結(jié)合的方法,雖然這樣的 方法能夠求解針對(duì)多目標(biāo)優(yōu)化問(wèn)題的云任務(wù)分配問(wèn)題,有著較好的求解性能,但是求解過(guò) 程相對(duì)來(lái)說(shuō)比較復(fù)雜。
【發(fā)明內(nèi)容】
[0005] 為解決以上現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于雙目標(biāo)蟻群算法的云任務(wù)分 配方法,該方法的求解過(guò)程簡(jiǎn)單且具有較好的完成時(shí)間和負(fù)載均衡。
[0006] 為實(shí)現(xiàn)以上發(fā)明目的,采用的技術(shù)方案是:
[0007] -種基于雙目標(biāo)蟻群算法的云任務(wù)分配方法,用于求解考慮雙目標(biāo)函數(shù)優(yōu)化的云 任務(wù)分配問(wèn)題,所述雙目標(biāo)函數(shù)包括任務(wù)完成時(shí)間函數(shù)Π 和系統(tǒng)負(fù)載均衡函數(shù)f2,所述雙 目標(biāo)蟻群算法包括以下步驟:
[0008] SI.設(shè)云任務(wù)的數(shù)量為n,螞蟻可以選擇的虛擬機(jī)構(gòu)成集合allowedk,螞蟻的數(shù)量 為antNum,螞蟻的編號(hào)用antid表示,迭代次數(shù)用t表示,總的迭代次數(shù)為times,迭代次數(shù) t < times ;
[0009] S2.初始化迭代次數(shù)t = 0,初始化蟻群和信息素,初始化的信息素通過(guò)下式表 示:
[0010]
[0011] 其中τ JO)表示初始化的信息素,i表示任務(wù)的序號(hào),j表示虛擬機(jī)的編號(hào),#(0) 表示任務(wù)i到虛擬機(jī)j的與任務(wù)完成時(shí)間函數(shù)Π 有關(guān)的初始信息素,i(〇)表示任務(wù)i到 虛擬機(jī)j的與系統(tǒng)負(fù)載均衡函數(shù)f2有關(guān)的初始信息素,Wl+w2= 1 ;
[0012] S3.將編號(hào)antid = 0的螞蟻確定為第t次迭代中的第一只螞蟻,然后經(jīng)過(guò)計(jì)算確 定云任務(wù)i分配的虛擬機(jī)j,將云任務(wù)分配到虛擬機(jī)j上,再將虛擬機(jī)j排除出all〇Wedk, 并根據(jù)系統(tǒng)產(chǎn)生的值域?yàn)椋ī枺?)的隨機(jī)數(shù)r對(duì)能見(jiàn)度進(jìn)行更新,具體如下:
[0013]
[0014]
[0015]
[0016] 其中n ij(t)為更新后的能見(jiàn)度,η?]1⑴為antid = 0時(shí)任務(wù)i到虛擬機(jī)j的與任 務(wù)完成時(shí)間函數(shù)Π 有關(guān)的能見(jiàn)度,Hf (t)為antid = 0時(shí)任務(wù)i到虛擬機(jī)j的與系統(tǒng)負(fù)載 均衡函數(shù)f2有關(guān)的能見(jiàn)度,η??1⑴為antid > 0時(shí)任務(wù)i到虛擬機(jī)j的與任務(wù)完成時(shí)間函 數(shù)Π 有關(guān)的能見(jiàn)度,η??2⑴為antid > 0時(shí)任務(wù)i到虛擬機(jī)j的與系統(tǒng)負(fù)載均衡函數(shù)f2有 關(guān)的能見(jiàn)度,q"為系統(tǒng)的第一設(shè)定值;
[0017] S4.令編號(hào)antid = 0的螞蟻將所有的云任務(wù)分配完畢之后,計(jì)算該螞蟻得出的分 配方案的衡量S(t),然后進(jìn)行信息素局部更新,其中計(jì)算該螞蟻得出的分配方案衡量S(t) 的過(guò)程具體如下:
[0018]
[0019]
[0020] S1U)表示與任務(wù)完成時(shí)間函數(shù)Π 有關(guān)的分配方案的衡量,S2 (t)表示與系統(tǒng)負(fù)載 均衡函數(shù)f2有關(guān)的分配方案的衡量;
[0021] S5.令antid = antid+Ι并通過(guò)該編號(hào)對(duì)應(yīng)的螞蟻重復(fù)執(zhí)行步驟S3~S4,然后重 復(fù) S5 直至 antid ^ antNum ;
[0022] S6.通過(guò)步驟S5能夠獲得各個(gè)螞蟻在第t次迭代中得出的分配方案的衡量,從中 選擇最優(yōu)的分配方案的衡量并命名為Sgl (t),然后進(jìn)行全局信息素更新;
[0023] S7.令t = t+Ι并重復(fù)步驟S3~S6的操作,再重復(fù)步驟S7直至t彡times ;
[0024] S8.通過(guò)步驟S7能夠獲得各次迭代獲得的最優(yōu)分配方案的衡量,根據(jù)各次迭代獲 得的最優(yōu)分配方案的衡量選擇出最佳的分配方案并進(jìn)行輸出;
[0025] 系統(tǒng)根據(jù)雙目標(biāo)蟻群算法輸出的最佳分配方案對(duì)云任務(wù)進(jìn)行分配。
[0026] 優(yōu)選地,步驟S3中,螞蟻確定云任務(wù)i分配的虛擬機(jī)j的過(guò)程具體如下:
[0027]
[0028] 其中q為系統(tǒng)產(chǎn)生的值域?yàn)椋?, 1)的隨機(jī)數(shù),qc!為系統(tǒng)的第二設(shè)定值。
[0029] 優(yōu)選地,通過(guò)輪盤(pán)賭算法確定分配的虛擬機(jī)的過(guò)程具體如下:
[0030] 先計(jì)算第k只螞蟻分配云任務(wù)i到虛擬機(jī)j的選擇概率:
[0031]
[0032] α為信息素啟發(fā)因子,β為能見(jiàn)度啟發(fā)因子;然后系統(tǒng)產(chǎn)生一個(gè)值域?yàn)椋?, 1)的 隨機(jī)數(shù)V,將云任務(wù)i到各個(gè)虛擬機(jī)的選擇概率做累積概率統(tǒng)計(jì),隨機(jī)數(shù)V落在哪一個(gè) 累積概率中,該累積概率對(duì)應(yīng)的虛擬機(jī)即為確定分配的虛擬機(jī)。
[0033] 優(yōu)選地,步驟S3中,將云任務(wù)分配到虛擬機(jī)上時(shí),若allowed,為空集,則重新初始 化allowedk,再將云任務(wù)分配到allowedk中的虛擬機(jī)上。
[0034] 優(yōu)選地,步驟S4中,進(jìn)行信息素局部更新的具體過(guò)程如下:
[0035]
[0036] τ ij(t+l)為更新的信息素,P是信息素?fù)]發(fā)系數(shù),
[0037] 優(yōu)選地,步驟S6中,進(jìn)行全局信息素更新的具體過(guò)程如下:
[0038]
[0039] τ u (t+Ι)為全局更新的信息素,
[0040] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0041] 本發(fā)明提供的方法按不同概率為蟻群算法中的能見(jiàn)度選取與相應(yīng)的目標(biāo)函數(shù)有 關(guān)的計(jì)算方式,來(lái)達(dá)到求解考慮雙目標(biāo)優(yōu)化的云任務(wù)分配問(wèn)題,該方法的求解過(guò)程簡(jiǎn)單且 具有較好的完成時(shí)間和負(fù)載均衡。
【附圖說(shuō)明】
[0042] 圖1為云任務(wù)分配方法的流程圖。
[0043] 圖2為更新能見(jiàn)度的流程圖。
[0044] 圖3為計(jì)算該螞蟻得出的分配方案的衡量的流程圖。
[0045] 圖4為三個(gè)算法的完成時(shí)間對(duì)比示意圖。
[0046] 圖5為三個(gè)算法的不均衡度標(biāo)準(zhǔn)差對(duì)比示意圖。
【具體實(shí)施方式】
[0047] 附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專(zhuān)利的限制;
[0048] 以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步的闡述。
[0049] 實(shí)施例1
[0050] 對(duì)本發(fā)明提供的方法進(jìn)行仔細(xì)的闡述之前,本實(shí)施例首先對(duì)云任務(wù)和虛擬機(jī)的描 述方式進(jìn)行說(shuō)明,云任務(wù)的描述如下:
[0051] Task = {Taskld, Length, ExCpuMips, ExMem, ExBw}
[0052] 其中TaskId是云任務(wù)的編號(hào);Length是云任務(wù)的長(zhǎng)度;ExCpuMips是云任務(wù)期待 的cpu指令執(zhí)行速度需求;ExMem是云任務(wù)期待的內(nèi)存大小需求;ExBw是云任務(wù)期待的帶 寬大小需求。
[0053] 虛擬機(jī)描述如下:
[0054] Vm = {Vmld, CpuNum, CpuMips, Mem, Bw}
[0055] 其中VmId是虛擬機(jī)的編號(hào);CpuNum是虛擬機(jī)的CPU個(gè)數(shù);CpuMips是虛擬機(jī)的Cpu 指令執(zhí)行速度;Mem是虛擬機(jī)的內(nèi)存大??;Bw是虛擬機(jī)的帶寬大小。
[0056] 而在計(jì)算能見(jiàn)度和信息素時(shí),首先需要對(duì)云任務(wù)和虛擬機(jī)進(jìn)行歸一化,歸一化的 過(guò)程具體如下:
[0057] 按下面方式對(duì)云任務(wù)i的長(zhǎng)度進(jìn)行歸一化:
[0058]
[0059] 其中其中TLeArr [i]表示歸一化后的云任務(wù)i的任務(wù)長(zhǎng)度,maxLe是所有云任務(wù) 中最大的云任務(wù)長(zhǎng)度,minLe是所有云任務(wù)中最小的云任務(wù)長(zhǎng)度。云任務(wù)i的ExCpuMips, ExMem,ExBw的歸一化同理。因此得到云任務(wù)i的4個(gè)歸一化數(shù)組:TLeArr、TCpArr、TMeArr 和 TBwArr0
[0060] 虛擬機(jī)j的計(jì)算能力歸一化如下:
[0061]
[0062] vm[j]. Capacity = vm[j]. CpuNumX vm[j]. CpuMips
[0063] 虛擬機(jī)j的Mem,Bw的歸一化與云任務(wù)的歸一化方式相同。因此得到虛擬機(jī)j的 3 個(gè)歸一化數(shù)組:VCaAr;r、VMeArr 和 VBwArr。
[0064] 在以上基礎(chǔ)上,再對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的敘述,本發(fā)明提供的方法用于 求解考慮雙目標(biāo)函數(shù)優(yōu)化的云任務(wù)分配問(wèn)題,其中雙目標(biāo)函數(shù)包括任務(wù)完成時(shí)間函數(shù)Π 和系統(tǒng)負(fù)載均衡函數(shù)f2,如圖1所示,雙目標(biāo)蟻群算法包括以下步驟:
[0065] SI.設(shè)云任務(wù)的數(shù)量為n,螞蟻可以選擇的虛擬機(jī)構(gòu)成集合allowedk,螞蟻的數(shù)量 為antNum,螞蟻的編號(hào)用antid表示,迭代次數(shù)用t (t從0開(kāi)始)表示,總的迭代次數(shù)為 times,迭代次數(shù) t < times ;
[0066] S2.初始化迭代次數(shù)t = 0,初始化蟻群和信息素,初始化的信息素通過(guò)下式表 示:
[0067] ·
[0068] 其中τ u(〇)表示初始化的信息素,i表示任務(wù)的序號(hào),j表示虛擬機(jī)的編號(hào),4(0) 表示任務(wù)i到虛擬機(jī)j的與任務(wù)完成時(shí)間函數(shù)Π 有關(guān)的初始信息素,i(〇)表示任務(wù)i到 虛擬機(jī)j的與系統(tǒng)負(fù)載均衡函數(shù)f2有關(guān)的初始信息素,Wl+w2= 1 ;
[0069] S3.將編號(hào)antid = 0的螞蟻確定為第t次迭代中的第一只螞蟻,然后經(jīng)過(guò)計(jì)算確 定云任務(wù)i分配的虛擬機(jī)j,將云任務(wù)分配到虛擬機(jī)j上,再將虛擬機(jī)j排除出all〇Wedk, 并根據(jù)系統(tǒng)產(chǎn)生的值域?yàn)椋ī枺?)的隨機(jī)數(shù)r對(duì)能見(jiàn)度進(jìn)行更新,具體如下:
[0070]
[0071]
[0072]
[0073] 其中n u(t)為更新后的能見(jiàn)度,<⑴為antid = 0時(shí)任務(wù)i到虛擬機(jī)j的與任 務(wù)完成時(shí)間函數(shù)Π 有關(guān)的能見(jiàn)度,Tlf (t)為antid = 0時(shí)任務(wù)i到虛擬機(jī)j的與系統(tǒng)負(fù)載 均衡函數(shù)f2有關(guān)的能見(jiàn)度,η??1⑴為antid > 0時(shí)任務(wù)i到虛擬機(jī)j的與任務(wù)完成時(shí)間函 數(shù)Π 有關(guān)的能見(jiàn)度,η??2⑴為antid > 0時(shí)任務(wù)i到虛擬機(jī)j的與系統(tǒng)負(fù)載均衡函數(shù)f2有 關(guān)的能見(jiàn)度,q"為系統(tǒng)的第一設(shè)定值;
[0074] 步驟S3中,螞蟻確定云任務(wù)i分配的虛擬機(jī)j的過(guò)程具體如下:
[0075]
[0076] 其中q為系