本發(fā)明涉及云技術(shù)技術(shù)領(lǐng)域,具體涉及一種基于混合云的可靠應(yīng)用分配分布式遺傳算法。
背景技術(shù):
由于現(xiàn)有的以云計算為核心的集中式大數(shù)據(jù)處理技術(shù)已經(jīng)不能完全滿足日益龐大的物聯(lián)網(wǎng)邊緣設(shè)備所產(chǎn)生的海量數(shù)據(jù)處理要求,所以需要一個新的云架構(gòu),這種新的架構(gòu)體系應(yīng)該能快速響應(yīng)邊緣設(shè)備的需求,以減少云計算中心的數(shù)據(jù)傳輸及處理壓力?;旌显聘拍顟?yīng)運而生,其由多個單個的具有異構(gòu)功能的小云組成,他們在避免產(chǎn)生大的網(wǎng)絡(luò)延遲的同時能提供更快地數(shù)據(jù)計算。然而,這種云環(huán)境常常包含一些容易導(dǎo)致任務(wù)失敗的不可靠的節(jié)點和鏈路。因此,具有有效性保障的應(yīng)用調(diào)度是目前研究面臨的挑戰(zhàn)。應(yīng)用程序需要一種配置算法能兼顧cpu、存儲、網(wǎng)絡(luò)和有效性以盡可能優(yōu)化地使用資源,并保持很小的出錯率。應(yīng)用程序在基礎(chǔ)設(shè)施網(wǎng)絡(luò)中的優(yōu)化調(diào)度是一個np-hard難度問題,因此,精確的算法用來解決此問題是不可擴展的。
遺傳算法(geneticalgorithm)是一類借鑒生物界的進化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的j.holland教授1975年首先提出,其主要特點是直接對結(jié)構(gòu)對象進行操作,不存在求導(dǎo)和函數(shù)連續(xù)性的限定;具有內(nèi)在的隱并行性和更好的全局尋優(yōu)能力;采用概率化的尋優(yōu)方法,能自動獲取和指導(dǎo)優(yōu)化的搜索空間,自適應(yīng)地調(diào)整搜索方向,不需要確定的規(guī)則。遺傳算法的這些性質(zhì),已被人們廣泛地應(yīng)用于組合優(yōu)化、機器學(xué)習(xí)、信號處理、自適應(yīng)控制和人工生命等領(lǐng)域。它是現(xiàn)代有關(guān)智能計算中的關(guān)鍵技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中的上述缺陷,提供一種基于混合云的可靠應(yīng)用分配分布式遺傳算法,該算法創(chuàng)新應(yīng)用程序分配方法,提升混合云環(huán)境中應(yīng)用程序分配的可靠性,同時減小延遲。
本發(fā)明的目的可以通過采取如下技術(shù)方案達到:
一種基于混合云的可靠應(yīng)用分配分布式遺傳算法,所述算法包括:
s1、構(gòu)建優(yōu)化模型,該模型包括云環(huán)境模塊和應(yīng)用程序幾何模塊,過程如下:
s1-1、用一個實體設(shè)備集pms和一個實體鏈路集pls來構(gòu)建云環(huán)境;
s1-2、將應(yīng)用程序集合分配到云環(huán)境中,每個應(yīng)用包括一個服務(wù)集和一個虛擬鏈路集vls;
s2、根據(jù)混合云環(huán)境的特點及應(yīng)用分配所涉及內(nèi)容定義約束條件,過程如下:
s2-1、準(zhǔn)入控制:每個應(yīng)用程序分配的副本數(shù)最多不超過δ:
|d|=δ,
其中,δ為某個應(yīng)用程序的副本數(shù)量,d為某個應(yīng)用程序所有副本組成的集合;
至少有一個對應(yīng)的副本被分配時,一個應(yīng)用程序才能被認(rèn)為成功分配:
其中,a表示某個應(yīng)用程序;d表示應(yīng)用程序a的副本d;a為所有應(yīng)用程序組成的集合,oa是一個變量,其定義為:如果應(yīng)用程序a被成功分配則值為1,反之為0;gd,a是一個變量,其定義為:如果應(yīng)用程序a的副本d被分配則值為1,反之為0;
s2-2、節(jié)點嵌入:只在副本被認(rèn)為已成功放置時才為其分配節(jié)點資源:
其中,s表示某個服務(wù),n表示某個實體設(shè)備pm,s為所有的服務(wù)組成的集合,n為所有的實體設(shè)備pm組成的集合,
如果一個副本沒有成功放置則不會有實例化的服務(wù):
如果一個服務(wù)寄宿在一個節(jié)點上,那么cpu資源必須預(yù)先分配給該服務(wù):
其中,
對每個服務(wù)而言,其最多寄宿在一個節(jié)點上:
cpu和內(nèi)存資源的保護約束:
其中,ωs為服務(wù)s要求的cpu資源,ωn為實體設(shè)備pmn的cpu容量,且
其中,us,n是一個變量,其定義為:如果服務(wù)s寄宿在實體設(shè)備pmn上則值為1,反之為0,γs為服務(wù)s的存儲容量要求,γn為實體設(shè)備pmn的存儲容量;
一旦一個服務(wù)被某個副本使用,此服務(wù)必須寄宿在某個節(jié)點上:
s2-3、鏈路嵌入:在每個節(jié)點上的多網(wǎng)絡(luò)流約束可表示為:
其中,
其中,
每個鏈路使用的總帶寬不能超過總連接能力:
其中,
s2-4、可靠性感知約束:對于一個可用副本,它所使用的每一個單獨組件必須是可用的,當(dāng)一個組件被任意一個副本的服務(wù)或虛擬鏈路使用時即認(rèn)為這個組件被此副本所使用:
其中,c表示某個實體組件,包括實體設(shè)備pm和實體鏈路pl,c為實體組件的集合,即c=n∪e,
單個組件的狀態(tài)描述為:
其中,χc表示實體組件c的狀態(tài);
一個組建的失敗概率:
基層網(wǎng)絡(luò)狀態(tài)可以被描述為:
x=(χ1,χ2,...,χ|c|);
s3、定義目標(biāo)函數(shù),將算法所要解決的問題轉(zhuǎn)換為最大化分配的應(yīng)用數(shù)量:
pmn所使用的
pmn所使用的
ple所使用的
s4、定義染色體c,具體如下:
其中,a1,a2,...,aa,描述應(yīng)用分配的順序,其中aa表示應(yīng)用程序集合a中的第a個應(yīng)用程序;
s5、構(gòu)建一個分布式池模型,一個集中池包含所有的遺傳算法中的個體,任務(wù)將分布式地選擇一個隨機的個體集來進化成新的一代,在每一代中所有的個體都被存儲在分布池中,每個任務(wù)可以檢查結(jié)束條件,如有必要,任務(wù)可以計算下一代;
s6、譯碼,用一個譯碼算法將染色體轉(zhuǎn)換成一個解空間的解,過程如下:
s6-1、將應(yīng)用程序根據(jù)染色體的第一部分的值a1,a2,...,aa,進行排序,如果要分配一個應(yīng)用,從第一個副本開始分配,如果這個副本已被分配,檢查其可用性;
s6-2、按照染色體第二部分的值
s7、判斷應(yīng)用程序放置的數(shù)量或迭代次數(shù)是否達到規(guī)定值,過程如下:
s7-1、若已達到規(guī)定值,則跳到s13,算法結(jié)束得出對應(yīng)解集合;
s7-2、若未達到規(guī)定值,則執(zhí)行s8;
s8、計算個體的適應(yīng)度;
s9、復(fù)制,復(fù)制過程采用精英策略,即根據(jù)約束條件和計算的適應(yīng)度并按照一定比例選擇一部分優(yōu)秀個體復(fù)制形成下一代的子個體;
s10、選擇交叉,交叉的兩個個體,一個來自精英群體,另一個以隨機方式從全部個體中產(chǎn)生;
s11、變異,變異操作在下一代種群中增加更多的新個體,即按照初始解空間生成相同的分布,以隨機方式來選擇一些個體加入新一代的解空間;
s12、返回步驟s7;
s13、結(jié)束,輸出最優(yōu)解。
進一步地,所述步驟s1-1中的云環(huán)境由5個實體設(shè)備pm和8個實體鏈路pl組成,實體鏈路pl按如下方式選擇,首先創(chuàng)建一個最小生成樹,之后隨機添加邊直到混合云中出現(xiàn)8個實體鏈路集pl;
每個實體鏈路pl擁有帶寬為1,對每個實體設(shè)備pmn:ωn∈{0.5,2,10,50}并且γn∈{1,1.5,2},其中,ωn為實體設(shè)備pmn的cpu容量,γn為實體設(shè)備pmn的存儲容量;
對每個實體鏈路pl和每個實體設(shè)備pm,失效概率從集合{0,0.025,0.05}中均勻分布的隨機選擇;
每個實體設(shè)備pm有一個有限的cpu容量ω和一個有限的存儲容量γ,節(jié)點間的實體鏈路pl的特征是一個有限帶寬b,假設(shè)實體鏈路pl是對稱鏈路,節(jié)點和鏈路都有一個已知的故障概率,分別為pn、pl,假設(shè)故障發(fā)生時相互獨立的,同時也定義一個節(jié)點和鏈路的可用率分別為
進一步地,所述步驟s1-2中假設(shè)服務(wù)是相對應(yīng)用獨立的,所以不同應(yīng)用可以共享同一個服務(wù),但是虛擬鏈路集是應(yīng)用專有的;每個服務(wù)都有一個確定的cpu容量ω和存儲容量γ要求,每個虛擬鏈路vl要求一定量的帶寬β;假設(shè)虛擬鏈路使用的帶寬是對稱的,應(yīng)用要求一個最小有效值r,以及可能存在一個最大副本數(shù)δa。
進一步地,所述步驟s2-2中定義cpu負(fù)載系數(shù)clf,即被要求的cpu和云環(huán)境中可用的cpu之比,以評估輸入復(fù)雜性,cpu負(fù)載系數(shù)clf的值取0.1~1范圍,且步長為0.1。
進一步地,所述步驟s2-3中定義每一個包含10個應(yīng)用的應(yīng)用組至少有一個服務(wù),每個應(yīng)用的服務(wù)都從一個由3個服務(wù)組成的服務(wù)集合中以60%的概率隨機的選擇,對每個服務(wù)s:ωs在[0.2,1]的區(qū)間隨機選擇,而γs在[0.75,1]的區(qū)間隨機選擇,其中ωs為服務(wù)s要求的cpu資源,γs為服務(wù)s的存儲容量要求,對每個應(yīng)用a,所有的服務(wù)都相互連接至少|(zhì)sa|-1,且最大|sa|雙向vls的帶寬在[0.02,0.04]范圍隨機選擇,其中,sa為應(yīng)用程序a占用的所有服務(wù)組成的集合。
進一步地,所述步驟s2-4中每個應(yīng)用程序要求的最小可用性(0%,90%,99%),交叉操作是統(tǒng)一交叉的,并且一個浮動字符串以突變概率0.05發(fā)生個體突變,每個個體只能發(fā)生一個突變。
進一步地,所述步驟s4中定義染色體c采用一個偏隨機秘鑰,偏隨機秘鑰染色體是一個在0到1之間取值的浮點數(shù)組,被用于染色體的解碼階段進行決策,同時,利用偏隨機秘鑰定義解碼方法。
進一步地,所述步驟s5中分布式池模型框架基于evospace,同時取代原來的重新插入管理,增加容錯機制并且使用一致的數(shù)據(jù)庫,每個分布式的任務(wù)可以直接在數(shù)據(jù)庫中分配一存儲桶的個體,而其他的分布式任務(wù)不能選擇這個被分配的存儲桶,如果一個任務(wù)已經(jīng)完成工作,便將已經(jīng)分配過的舊的存儲桶從數(shù)據(jù)庫移除并且插入從下一代的存儲桶中隨機選擇的新的個體。
進一步地,所述步驟s6-1中如果可保證的可用性比此應(yīng)用要求的可用性要高,則成功地分配了這個應(yīng)用并且將嘗試分配下一個應(yīng)用,如果這個可用性保證低于應(yīng)用要求,在還有多余的應(yīng)用的副本前提下將嘗試配置一個新的副本,如果可用性保證低于應(yīng)用要求并且沒有副本剩余,那這個應(yīng)用將不能被分配并且將從分配集中移除;
進一步地,所述步驟s6-2中,對于每個服務(wù)s,創(chuàng)建一個所有能運行服務(wù)s的pms的表l,以使得所有約束條件有效,同時必須檢查每個pm的cpu和存儲容量,以及相同副本的其它服務(wù)的帶寬;只有服從于所有這些參數(shù)的pms才是列表l的元素,如果表l為空,便可以從分配集合中移除應(yīng)用a,否則,如果|l|>0,算法對表l中的所有pms排序并選擇在
進一步地,所述步驟s10中設(shè)交叉概率為0.7,即子代以0.7的概率從精英父代中獲得基因,以0.3的概率從一般個體中獲得基因。否則選擇第二個染色體。
本發(fā)明相對于現(xiàn)有技術(shù)具有如下的優(yōu)點及效果:
1)將傳統(tǒng)云環(huán)境中在遠(yuǎn)距離的云中心中處理的應(yīng)用程序放置到靠近終端用戶的邊緣云中的可用設(shè)備(包括基站、開關(guān)、路由器甚至終端移動設(shè)備等等)處理,不僅減少了延遲同時也節(jié)約了帶寬資源,減小了能耗;
2)傳統(tǒng)的應(yīng)用分配算法是不可伸縮的,且沒有可用性保證,導(dǎo)致在傳統(tǒng)云環(huán)境中,本發(fā)明提出一種用副本來增加應(yīng)用程序可用性的方法,同時也采用分布式遺傳算法定義了一個可伸縮算法來尋找一個好的配置方法。
3)相比已經(jīng)提出的ilp(整數(shù)線性規(guī)劃)方法在可用性要求提高時不可擴展的缺點,本發(fā)明提出的分布式遺傳算法是基于soa(面向服務(wù)的架構(gòu))的可擴展的可調(diào)有效性的。
附圖說明
圖1是本發(fā)明公開的一種基于混合云的可靠應(yīng)用分配分布式遺傳算法流程圖;
圖2是evospace模型主要的組件和數(shù)據(jù)流;
圖3是偏隨機秘鑰遺傳算法交叉操作實例;
圖4是當(dāng)最小可用性要求為90%且應(yīng)用程序最大副本數(shù)為1時,整數(shù)線性規(guī)劃(ilp)最優(yōu)解與測試算法的平均應(yīng)用配置比對比;
圖5是當(dāng)最小可用性要求為0時,整數(shù)線性規(guī)劃(ilp)與測試算法的平均執(zhí)行時間對比;
圖6是當(dāng)最小可用性要求為90%且應(yīng)用程序最大副本數(shù)為1時,整數(shù)線性規(guī)劃(ilp)與測試算法的平均執(zhí)行時間對比。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例
附圖1是本發(fā)明公開的一種基于混合云的可靠應(yīng)用分配分布式遺傳算法流程圖,下面結(jié)合附圖1,對本發(fā)明的步驟做進一步描述:
s1、構(gòu)建優(yōu)化模型,包括兩個主要的模塊:云環(huán)境模塊和應(yīng)用程序幾何模塊。
s1-1、用一個實體設(shè)備集pm和一個實體鏈路集pl來構(gòu)建云環(huán)境。
在具體實施方式中,混合云環(huán)境由5個實體設(shè)備pm和8個實體鏈路pl組成。實體鏈路pl按如下方式選擇,首先創(chuàng)建一個最小生成樹,之后隨機添加邊直到混合云中出現(xiàn)8個實體鏈路pl。每個實體鏈路pl擁有帶寬為1。對每個實體設(shè)備pmn:ωn∈{0.5,2,10,50}并且γn∈{1,1.5,2},其中,ωn為實體設(shè)備pmn的cpu容量,γn為實體設(shè)備pmn的存儲容量。
對每個實體鏈路pl和每個實體設(shè)備pm,失效概率從集合{0,0.025,0.05}中均勻分布的隨機選擇。
每個實體設(shè)備pm有一個有限的cpu容量ω和一個有限的存儲容量γ。節(jié)點間的實體鏈路pl的特征是一個有限帶寬b。假設(shè)實體鏈路pl是對稱鏈路。節(jié)點和鏈路都有一個已知的故障概率,分別為pn、pl。假設(shè)故障發(fā)生時相互獨立的。同時也定義一個節(jié)點和鏈路的可用率分別為
s1-2、應(yīng)用程序集合分配到云環(huán)境中,每個應(yīng)用包括一個服務(wù)集和一個虛擬鏈路集。
假設(shè)服務(wù)是相對應(yīng)用獨立的,所以不同應(yīng)用可以共享同一個服務(wù),但是虛擬鏈路vl是應(yīng)用專有的。每個服務(wù)都有一個確定的cpu容量ω和存儲容量γ要求。另外,每個虛擬鏈路vl要求一定量的帶寬β。假設(shè)虛擬鏈路使用的帶寬是對稱的,應(yīng)用要求一個最小有效值r,以及可能存在一個最大副本數(shù)δa。
s2、根據(jù)混合云環(huán)境的特點及應(yīng)用分配所涉及內(nèi)容定義約束條件:
s2-1、準(zhǔn)入控制:每個應(yīng)用程序分配的副本數(shù)最多不超過δ:
|d|=δ,
其中,δ為某個應(yīng)用程序的副本數(shù)量,d為某個應(yīng)用程序所有副本組成的集合;
至少有一個對應(yīng)的副本被分配時,一個應(yīng)用程序才能被認(rèn)為成功分配:
其中,a表示某個應(yīng)用程序;d表示應(yīng)用程序a的副本d;a為所有應(yīng)用程序組成的集合,oa是一個變量,其定義為:如果應(yīng)用程序a被成功分配則值為1,反之為0;gd,a是一個變量,其定義為:如果應(yīng)用程序a的副本d被分配則值為1,反之為0。
s2-2、節(jié)點嵌入:只在副本被認(rèn)為已成功放置時才為其分配節(jié)點資源:
其中,s表示某個服務(wù),n表示某個實體設(shè)備pm,s為所有的服務(wù)組成的集合,n為所有的實體設(shè)備pm組成的集合,
如果一個副本沒有成功放置則不會有實例化的服務(wù):
如果一個服務(wù)寄宿在一個節(jié)點上,那么cpu資源必須預(yù)先分配給該服務(wù):
其中,
對每個服務(wù)而言,其最多寄宿在一個節(jié)點上:
cpu和內(nèi)存資源的保護約束:
其中,ωs為服務(wù)s要求的cpu資源,ωn為實體設(shè)備pmn的cpu容量,且
其中,us,n是一個變量,其定義為:如果服務(wù)s托管在實體設(shè)備pmn上則值為1,反之為0,γs為服務(wù)s的存儲容量要求,γn為實體設(shè)備pmn的存儲容量;
一旦一個服務(wù)被某個副本使用,此服務(wù)必須寄宿在某個節(jié)點上:
在具體實施方式中,定義cpu負(fù)載系數(shù)clf,即被要求的cpu和云環(huán)境中可用的cpu之比,以評估輸入復(fù)雜性,cpu負(fù)載系數(shù)clf的值取0.1~1范圍,且步長為0.1。對每個cpu負(fù)載系數(shù)clf值,創(chuàng)造100個隨機應(yīng)用例。
s2-3、鏈路嵌入:在每個節(jié)點上的多網(wǎng)絡(luò)流約束(mcf)可表示為:
其中,
其中,
每個鏈路使用的總帶寬不能超過總連接能力:
其中,
在具體實施方式中,定義每一個包含10個應(yīng)用的應(yīng)用組至少有一個服務(wù)。每個應(yīng)用的服務(wù)都從一個由3個服務(wù)組成的服務(wù)集合中以60%的概率隨機的選擇。對每個服務(wù)s:ωs在[0.2,1]的區(qū)間隨機選擇,而γs在[0.75,1]的區(qū)間隨機選擇,其中ωs為服務(wù)s要求的cpu資源,γs為服務(wù)s的存儲容量要求。對每個應(yīng)用a,所有的服務(wù)都相互連接至少|(zhì)sa|-1,且最大|sa|雙向vls的帶寬在[0.02,0.04]范圍隨機選擇,其中,sa為應(yīng)用程序a占用的所有服務(wù)組成的集合。
s2-4、可靠性感知約束:對于一個可用副本,它所使用的每一個單獨組件必須是可用的,當(dāng)一個組件被任意一個副本的服務(wù)或虛擬鏈路使用時即認(rèn)為這個組件被此副本所使用:
其中,c表示某個實體組件,包括實體設(shè)備pm和實體鏈路pl,c為實體組件的集合,即c=n∪e,
單個組件的狀態(tài)描述為:
其中,χc表示實體組件c的狀態(tài),
一個組建的失敗概率:
基層網(wǎng)絡(luò)狀態(tài)可以被描述為:
x=(χ1,χ2,...,χ|c|)。
在具體實施方式中,每個應(yīng)用程序要求的最小可用性(0%,90%,99%),ga的操作者是統(tǒng)一交叉的,并且一個浮動字符串突變概率0.05發(fā)生個體突變。每個個體只能發(fā)生一個突變。
s3、定義目標(biāo)函數(shù),將算法所要解決的問題轉(zhuǎn)換為最大化放置的應(yīng)用數(shù)量:
如果一個對應(yīng)不同副本或應(yīng)用的服務(wù)被配置在同一個實體設(shè)備pm上,或者相同的虛擬鏈路vl被配置在一個實體鏈路pl上,它們可以重復(fù)使用資源,因此,如果服務(wù)s被同一個應(yīng)用配置到實體設(shè)備pmn上兩次,就沒有必要再次分配cpu和存儲資源,只有當(dāng)服務(wù)s因不同應(yīng)用而被安置時才需分配更多的cpu資源;
pmn所使用的
pmn所使用的
ple所使用的
在具體實施方式中,設(shè)定結(jié)束條件:算法將在計算到100代時或者在計算到20時代出現(xiàn)相同解決方案時停止。
s4、定義染色體,具體如下:
其中,a1,a2,...,aa,描述應(yīng)用分配的順序,其中aa表示應(yīng)用程序集合a中的第a個應(yīng)用程序,
采用一個偏隨機秘鑰,相比于用布爾數(shù)組構(gòu)成染色體,一個偏隨機秘鑰染色體是一個在0到1之間取值的浮點數(shù)組,被用于染色體的解碼階段進行決策;利用偏隨機秘鑰定義解碼方法,避免創(chuàng)建無效的解決方案,以優(yōu)化解空間。
s5、構(gòu)建一個分布式池模型:一個集中池包含所有的遺傳算法中的個體,任務(wù)將分布式地選擇一個隨機的個體集來進化成新的一代。在每一代中所有的個體都被存儲在分布池中,每個任務(wù)可以檢查結(jié)束條件,如有必要,任務(wù)可以計算下一代。
這個集中池模型框架是基于evospace(圖2)的,但是取代原來的重新插入管理,本發(fā)明增加容錯機制并且使用一致的數(shù)據(jù)庫(mongodb,一個基于分布式文件存儲的數(shù)據(jù)庫)。每個分布式的任務(wù)可以直接在數(shù)據(jù)庫中分配一存儲桶的個體。而其他的分布式任務(wù)不能選擇這個被分配的存儲桶。如果一個任務(wù)已經(jīng)完成了它的工作,便將已經(jīng)分配過的舊的存儲桶從數(shù)據(jù)庫移除并且插入從下一代的存儲桶中隨機選擇的新的個體。
s6、譯碼。用一個譯碼算法將染色體轉(zhuǎn)換成一個解空間的解。
s6-1、將應(yīng)用程序根據(jù)染色體的第一部分的值a1,a2,...,aa,進行排序,如果要配置一個應(yīng)用,本算法從第一個副本開始分配,如果這個副本已被分配,檢查其可用性以保證對應(yīng)的應(yīng)用程序有效性。
所述步驟s6-1中,如果可保證的可用性比此應(yīng)用要求的可用性要高,則成功地分配了這個應(yīng)用并且將嘗試分配下一個應(yīng)用。如果這個可用性保證低于應(yīng)用要求,在還有多余的應(yīng)用的副本前提下將嘗試配置一個新的副本。如果可用性保證仍然低于應(yīng)用要求并且沒有副本剩余,那這個應(yīng)用將不能被分配并且將從分配集中移除。
s6-2、按照染色體第二部分的值
所述步驟s6-2中,對于每個服務(wù)s,創(chuàng)建一個所有能運行服務(wù)s的pms的表l,以使得所有約束條件有效。同時必須檢查每個pm的cpu和存儲容量,以及相同副本的其它服務(wù)的帶寬。只有服從于所有這些參數(shù)的pms才是列表l的元素。如果表l為空,便可以從配置集合中移除應(yīng)用a,因為沒有有效地方式來分配a。否則,如果|l|>0,算法對l中的所有pms排序并選擇在
s7、判斷應(yīng)用程序放置的數(shù)量或迭代次數(shù)是否達到規(guī)定值。
s7-1、若已達到規(guī)定值,則跳到s13,算法結(jié)束得出對應(yīng)解集合。
s7-2、若未達到規(guī)定值,則執(zhí)行s8。
s8、計算個體的適應(yīng)度。
s9、復(fù)制。復(fù)制過程采用精英策略,即根據(jù)約束條件和計算的適應(yīng)度并按照一定比例選擇一部分優(yōu)秀個體復(fù)制形成下一代的子個體。精英策略能有效地確保解的質(zhì)量在進化過程中不斷獲得提升。
s10、選擇交叉。交叉的兩個個體,一個來自精英群體,另一個以隨機方式從全部個體中產(chǎn)生。
所述步驟s10中,如圖3所示,染色體1代表精英個體,染色體2表示一般個體。設(shè)交叉概率為0.7,即子代以0.7的概率從精英父代中獲得基因,以0.3的概率從一般個體中獲得基因。以擲硬幣的方式?jīng)Q定從哪個染色體選擇基因,頭面朝上時選擇第一個染色體,否則選擇第二個染色體。模擬拋擲一枚偏斜的硬幣來產(chǎn)生隨機數(shù),該硬幣有0.7的概率頭面朝上。當(dāng)生成的隨機數(shù)小于等于0.7時,從第一個染色體獲得基因;當(dāng)隨機數(shù)大于0.7時,選擇第二個染色體產(chǎn)生基因。這樣產(chǎn)生的子代更接近于精英個體,可起到加速收斂的作用。
s11、變異。變異操作在下一代種群中增加更多的新個體,即按照初始解空間生成相同的分布,以隨機方式來選擇一些個體加入新一代的解空間,從而起到防止早熟的作用。
s12、返回步驟s7。
s13、結(jié)束,輸出最優(yōu)解。
上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護范圍之內(nèi)。