本發(fā)明涉及虛擬內(nèi)存技術(shù)領(lǐng)域,特別是涉及一種物理主機虛擬內(nèi)存分析方法及裝置。
背景技術(shù):
目前,物理主機虛擬內(nèi)存在主機中使用廣泛,也起著非常重要的作用,但是一般在對物理主機虛擬內(nèi)存進行分析的過程中,需要分析虛擬內(nèi)存的大小,但是每次檢測到的物理主機虛擬內(nèi)存的數(shù)據(jù)非常多,無法獲取物理主機虛擬內(nèi)存局部最優(yōu)解,無法獲取更精確的虛擬內(nèi)存的大小,且采用通用算法獲取局部最優(yōu)解的復(fù)雜度較高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種物理主機虛擬內(nèi)存分析方法及裝置,以實現(xiàn)降低復(fù)雜度。
為解決上述技術(shù)問題,本發(fā)明提供一種物理主機虛擬內(nèi)存分析方法,該方法包括:
步驟1、隨機選擇多個染色體作為初始值輸入至遺傳算法,得到最優(yōu)的兩條作為父母染色體;所述多個染色體為物理主機虛擬內(nèi)存數(shù)據(jù);
步驟2、根據(jù)父母染色體產(chǎn)生多個孩子染色體;
步驟3、評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,從種群中選擇出最優(yōu)的兩個計算結(jié)果作為新的父母染色體;
步驟4、重復(fù)步驟2至步驟3,直至獲取到最優(yōu)解,將最優(yōu)解作為物理主機虛擬內(nèi)存局部最優(yōu)解。
優(yōu)選的,所述根據(jù)父母染色體產(chǎn)生多個孩子染色體,包括:
獲取染色體的平均值,方差,期望,部分交叉和父母個體,產(chǎn)生一個孩子染色體的集合。
優(yōu)選的,所述評估每個孩子染色體所對應(yīng)個體的適應(yīng)度之后,還包括:
在孩子染色體中去除不符合適應(yīng)度要求的染色體。
優(yōu)選的,所述將孩子染色體傳入遺傳算法中之前,還包括:
對孩子染色體進行交叉操作和變異操作。
本發(fā)明還提供一種物理主機虛擬內(nèi)存分析裝置,用于實現(xiàn)物理主機虛擬內(nèi)存分析方法,該裝置包括:
選擇模塊,用于隨機選擇多個染色體作為初始值輸入至遺傳算法,得到最優(yōu)的兩條作為父母染色體;所述多個染色體為物理主機虛擬內(nèi)存數(shù)據(jù);
生產(chǎn)模塊,用于根據(jù)父母染色體產(chǎn)生多個孩子染色體;
評估模塊,用于評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,從種群中選擇出最優(yōu)的兩個計算結(jié)果作為新的父母染色體;
重復(fù)模塊,用于重復(fù)調(diào)用生產(chǎn)模塊和評估模塊,直至獲取到最優(yōu)解,將最優(yōu)解作為物理主機虛擬內(nèi)存局部最優(yōu)解。
優(yōu)選的,所述生產(chǎn)模塊具體用于獲取染色體的平均值,方差,期望,部分交叉和父母個體,產(chǎn)生一個孩子染色體的集合。
優(yōu)選的,所述評估模塊還包括:去除單元,用于在孩子染色體中去除不符合適應(yīng)度要求的染色體。
優(yōu)選的,所述評估模塊還包括:操作單元,用于對孩子染色體進行交叉操作和變異操作。
本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析方法及裝置,步驟1、隨機選擇多個染色體作為初始值輸入至遺傳算法,得到最優(yōu)的兩條作為父母染色體;所述多個染色體為物理主機虛擬內(nèi)存數(shù)據(jù);步驟2、根據(jù)父母染色體產(chǎn)生多個孩子染色體;步驟3、評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,從種群中選擇出最優(yōu)的兩個計算結(jié)果作為新的父母染色體;步驟4、重復(fù)步驟2至步驟3,直至獲取到最優(yōu)解,將最優(yōu)解作為物理主機虛擬內(nèi)存局部最優(yōu)解??梢?,采用遺傳算法確定物理主機虛擬內(nèi)存局部最優(yōu)解,彌補了普通算法尋找局部最優(yōu)解題的不足和以往經(jīng)驗數(shù)據(jù)引起的誤差,本發(fā)明采用高度非線性的方式,并實現(xiàn)給出局部最優(yōu)解,大大降低了獲取最優(yōu)解的復(fù)雜度,并且評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,有效提高了虛擬內(nèi)存大小和物理主機的適配度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖 1為本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析方法的流程圖;
圖2為遺傳算法的運行時間和運行結(jié)果示意圖;
圖3為本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析裝置的結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明的核心是提供一種物理主機虛擬內(nèi)存分析方法及裝置,以實現(xiàn)降低復(fù)雜度。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,圖1為本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析方法的流程圖,該方法包括:
步驟1、隨機選擇多個染色體作為初始值輸入至遺傳算法,得到最優(yōu)的兩條作為父母染色體;
其中,所述多個染色體為物理主機虛擬內(nèi)存數(shù)據(jù);
步驟2、根據(jù)父母染色體產(chǎn)生多個孩子染色體;
步驟3、評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,從種群中選擇出最優(yōu)的兩個計算結(jié)果作為新的父母染色體;
步驟4、重復(fù)步驟2至步驟3,直至獲取到最優(yōu)解,將最優(yōu)解作為物理主機虛擬內(nèi)存局部最優(yōu)解。
可見,該方法采用遺傳算法確定物理主機虛擬內(nèi)存局部最優(yōu)解,彌補了普通算法尋找局部最優(yōu)解題的不足和以往經(jīng)驗數(shù)據(jù)引起的誤差,本發(fā)明采用高度非線性的方式,并實現(xiàn)給出局部最優(yōu)解,大大降低了獲取最優(yōu)解的復(fù)雜度,并且評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,有效提高了虛擬內(nèi)存大小和物理主機的適配度。
基于上述方法,具體的,對于步驟2,根據(jù)父母染色體產(chǎn)生多個孩子染色體的過程具體包括:獲取染色體的平均值,方差,期望,部分交叉和父母個體,產(chǎn)生一個孩子染色體的集合。
進一步的,步驟3中,所述評估每個孩子染色體所對應(yīng)個體的適應(yīng)度之后,還包括:在孩子染色體中去除不符合適應(yīng)度要求的染色體。
進一步的,步驟3中,所述將孩子染色體傳入遺傳算法中之前,還包括:對孩子染色體進行交叉操作和變異操作。
其中,可以根據(jù)染色體的選擇和交叉過程修改算法來增強適應(yīng)性。本方法中,包括:最優(yōu)化問題表示方法、處理約束條件、初始化過程、選擇過程、災(zāi)變、交叉過程、變異操作、循環(huán)操作、得到最優(yōu)解。
其中,染色體的確定是:初始運行確定多個染色體(隨機確定即可),第一次運算的所產(chǎn)生的染色體作為選擇最優(yōu)的兩條為父母染色體,然后在根據(jù)需求設(shè)置一個或多個孩子染色體傳入這次遺傳算法中,從而產(chǎn)生更多的孩子染色體,在將此作為下次的染色體的父母染色體,但記錄最優(yōu)解,以此類推。主要分為三種確定染色體的方法:(1)爬山法。(2)模擬退火。(3)遺傳算法。
遺傳算法的局部搜索能力較強,但是很容易陷入局部極值,雖然增加變異概率可以搜索到遠離當(dāng)前極值的點,但是新點的值往往不能和當(dāng)前保留下來的較優(yōu)值相提并論,因為這些較優(yōu)值都是經(jīng)過千百代的進化而存留下來的,于是遠離當(dāng)前極值的點往往在兩到三代以內(nèi)就被淘汰掉了。那么如何解決遺傳算法容易陷入局部極值的問題呢?要跳出局部極值就必須殺死當(dāng)前所有的優(yōu)秀個體,從而讓遠離當(dāng)前極值的點有充分的進化余地,這就是災(zāi)變的思想。
對于局部最優(yōu)解,一般來說,最優(yōu)解在每次傳入的遺傳算法的父母染色體中,也可以分析日志得出想要的結(jié)果。
因為遺傳算法中的每一個染色體,對應(yīng)著遺傳算法的一個解決方案,我們遺傳算法中還有自適應(yīng)函數(shù)來判斷這個染色體的優(yōu)劣,所以從一個染色體到其解的適應(yīng)度形成一個映射。正好和虛擬內(nèi)存測試需要大量微小差別的測試用例相適應(yīng)。
基于本方法,具體實施過程包括:(1)隨機選擇多個染色體作為初始值傳入遺傳算法得到最優(yōu)的兩條為父母染色體,以往經(jīng)驗數(shù)據(jù)也可作為初始染色體、(2)根據(jù)父母染色體產(chǎn)生多個孩子染色體,比如經(jīng)過取父母染色體平均值,方差,期望,部分交叉,父母個體或全部加減部分區(qū)間等方式產(chǎn)生一個孩子染色體的集合,這個部分也稱父母染色體變異、(3)評估每條染色體所對應(yīng)個體的適應(yīng)程度,首先,剔除明顯不符合要求的染色體,然后將這些染色體傳入遺傳算法中、(4)遵照適應(yīng)度越高,選擇概率越大的原則,從種群中選擇兩個計算結(jié)果最優(yōu)的染色體作為父方和母方,但同時記錄下所有染色體的計算數(shù)據(jù),(5)、然后在重復(fù)(2)、(3)、(4)步。
遺傳算法的運行時間和得到最優(yōu)解的結(jié)果如圖2所示,當(dāng)?shù)竭_一定時間后,結(jié)果將趨近于最優(yōu)解,但是未到達運行時間內(nèi)就是局部最優(yōu)解,因為最優(yōu)解有可能運行時間太長,所以只能取可以接受的部分最優(yōu)解。
本發(fā)明的有益效果是:(1)現(xiàn)行的大多數(shù)優(yōu)化算法都是基于線性、凸性、可微性等要求,而遺傳算法只需要適合度信息,不需要導(dǎo)數(shù)等其他輔助信息,對問題的依賴性較小,因而具有高度的非線性。(2)遺傳算法從一組初始點開始搜索,而不是從某一個單一的初始點開始搜索。而且給出的是一組優(yōu)化解,而不是一個優(yōu)化解,這樣可以給設(shè)計者更大的選擇余地。(3)遺傳算法具有很強的易修改性。即使對虛擬內(nèi)存大小問題進行很小的改動(比如目標函數(shù)的改進),現(xiàn)行的大多數(shù)算法就有可能完全不能使用,而遺傳算法則只需作很小的修改就完全可以適應(yīng)新的問題。(4)將搜索過程作用在編碼后的字符串上,不直接作用在優(yōu)化問題的具體變量上,在搜索中用到的是隨機的變換規(guī)則,而不是確定的規(guī)則。
遺傳算法在搜索時采用啟發(fā)式的搜索,而不是盲目的窮舉,因而具有更高所搜索效率,得出更精確的虛擬內(nèi)存大小。用遺傳算法確定物理主機虛擬內(nèi)存局部最優(yōu)解具有上述優(yōu)點,使其彌補了普通算法尋最優(yōu)解的不足和以往經(jīng)驗數(shù)據(jù)引起的誤差,采用高度非線性的方法,并實現(xiàn)給出局部最優(yōu)解的方法,大大降低了此類問題的復(fù)雜度,有效提高了虛擬內(nèi)存大小和物理主機的適配度,不論是在算法方面還是在虛擬內(nèi)存的確定等問題都有很高的技術(shù)價值。
生物遺傳物質(zhì)的主要載體是染色體,在遺傳算法中,染色體通常是一串?dāng)?shù)據(jù)(或數(shù)組),用來作為優(yōu)化問題的解的代碼,其本身不一定是解。遺傳算法一般經(jīng)過這樣幾個過程:首先,隨機產(chǎn)生一定數(shù)量的隨機染色體,這些隨機產(chǎn)生的染色體組成一個種群。種群中染色體的數(shù)目稱為種群大小或種群規(guī)模。然后用評價函數(shù)評價每一個染色體的優(yōu)劣,即染色體對環(huán)境的適應(yīng)程度(稱為適應(yīng)度),用來作為以后遺傳的依據(jù)。接著進行選擇過程,選擇的目的是為了從當(dāng)前種群中選出優(yōu)良的染色體,使他們稱為新一代的染色體,判斷染色體優(yōu)良與否的標準就是各自的適應(yīng)度,即染色體的適應(yīng)度越高,其被選擇的機會就越多。通過選擇過程,產(chǎn)生一個新的種群。對這個新的種群進行交叉操作,交叉操作是遺傳算法中主要的遺傳操作之一。接著進行變異操作,變異的操作是挖掘種群中個體的多樣性,克服有可能陷入局部解的弊病。這樣,經(jīng)過上述運算產(chǎn)生的染色體稱為后代。然后,對新的種群(即后代)重復(fù)進行選擇、交叉和變異操作,經(jīng)過給定次數(shù)的迭代處理后,把最好的染色體最為優(yōu)化問題的最優(yōu)解。
最優(yōu)化問題表示方法:最優(yōu)化問題的解有兩種表示方法:二進制向量和浮點向量。使用二進制向量作為一個染色體來表示決策變量的真實值,向量的長度依賴于要求的精度,使用二進制代碼的必要性已經(jīng)受到一些批評。在求解復(fù)雜優(yōu)化問題時,二進制向量表示結(jié)構(gòu)有時不大方便。另一種表示方法是浮點向量,每一個染色體由一個浮點向量表示,其長度與解向量相同。這里用x=(x1,x2,...,xn)表示最優(yōu)化問題的解,其中n是維數(shù),則相應(yīng)的染色體也是V=(x1,x2,...,xn)。
處理約束條件:處理約束條件的關(guān)鍵在于(1)刪除約束條件中所有的等式,(2)設(shè)計恰當(dāng)?shù)倪z傳操作以保證所有新產(chǎn)生的染色體在可行集中。
初始化過程:評價函數(shù)(用eval(V)來表示)用來對種群中的每個染色V設(shè)定一個概率,以使該染色體被選擇的可能性與種群中其它染色體的適應(yīng)性成比例,即通過輪盤賭,適應(yīng)性強的染色體被選擇產(chǎn)生后代的機會要大。第一種方法,設(shè)目前該代中的染色V1,V2,...,Vn,可以根據(jù)染色體的序進行再生分配,而不是根據(jù)實際的目標值。無論何種數(shù)學(xué)規(guī)劃(單目標、多目標或目標規(guī)劃)都可以作一合理假設(shè),即在染色體V1,V2,...,Vn中,決策者可以給出一個序的關(guān)系,使染色體由好到壞進行重排,就是說,一個染色體體越好,其序號越小。設(shè)參數(shù),定義基于序的評價函數(shù)為:i=1,2,...,n;i=1意味著染色體最好,i=n說明染色體是最差的。
第二種方法對適應(yīng)度進行適當(dāng)?shù)目s放調(diào)整(稱為適應(yīng)度定標)來設(shè)計評價函數(shù)。用f1,f2,...,fn(即染色體V1,V2,...,Vn各自的目標值)來表示原來的適應(yīng)度。Goldberg[1]提出一種線性適應(yīng)度定標方案為:i=1,2,...,n;其中為新的適應(yīng)度,a和b為參數(shù)。這種方法假定使用者了解目標函數(shù)的性質(zhì),這樣才能設(shè)計合理的參數(shù)a和b。這種情況下,評價函數(shù)定義為:i=1,2,...,n。
選擇過程:選擇過程是以旋轉(zhuǎn)輪盤賭n次為基礎(chǔ)的。每次旋轉(zhuǎn)都為新的種群選擇一個染色體。賭輪是按照每個染色體的適應(yīng)度進行選擇染色體的。無論使用哪一種評價函數(shù),選擇函數(shù)總可以寫成如下形式:(1)對每個染色體Vi,計算累計概率qi;(2)從區(qū)間[0,qn]中產(chǎn)生一個隨機數(shù)r;(3)若r=qi,則選擇第i個染色體Vi,(1≤i≤n);(4)重復(fù)步驟2和步驟3共n次,這樣可以得到n個復(fù)制的染色體。在實際應(yīng)用中可以將qi,i=1,2,...,n除以qn,使qn=1,新的概率同樣與適應(yīng)度成正比。
災(zāi)變操作:從500開始遞減,每一代遞減一次,如果出現(xiàn)了新的最優(yōu)值,就從新開始計數(shù),如果出現(xiàn)新最優(yōu)值的時候倒計數(shù)遞減次數(shù)的2.5倍已經(jīng)超過500則從新的初始值開始倒數(shù)。例:初始倒數(shù)500,如果倒數(shù)到200時出現(xiàn)新最優(yōu)值,則從(500-200)2.5=750開始從新倒數(shù),下一次如果倒數(shù)到100時出現(xiàn)新最優(yōu)值,則從(750-100)*2.5=1625開始倒計數(shù),這里的2.5是一個經(jīng)驗值,可以在全局參數(shù)設(shè)置里面調(diào)整。也就是說倒計數(shù)的長度取決于進化的速度,進化速度越慢倒計數(shù)長度越長。如果倒計數(shù)完畢還沒有新的最優(yōu)值,就認為局部搜索已經(jīng)充分,就發(fā)生災(zāi)變,剔除qi(1≤i≤5),并返回選擇過程。災(zāi)變過程滿足一定條件執(zhí)行。
交叉過程:首先定義Pc作為交叉操作的概率,這個概率說明種群中有期望值為Pc·n個染色體進行交叉操作。為確定交叉操作的父代,從i=1到n重復(fù)以下操作:從[0,1]中產(chǎn)生隨機數(shù)r,如果r<Pc,則選擇Vi作為一個父代。將選擇出來的父代隨機分成對。然后對每對進行交叉操作,例如首先產(chǎn)生(0,1)之間的一個隨機數(shù)c,然后按下列形式在之間進行交叉操作,并產(chǎn)生兩個后代X和Y。如果可行集是凸的,這種凸組合交叉運算保證兩個后代也是可行的;如果可行集不是凸集或很難驗證,這時需要對X,Y進行檢驗,如果不符合約束條件,則需重新產(chǎn)生c值,重復(fù)以上交叉操作。
變異操作:定義Pm作為交叉操作的概率,這個概率說明種群中有期望值為Pm·n個染色體進行交叉操作。類似交叉操作,首先選擇需要變異的父代,然后對每個需變異的父代(用V表示),用下列方法進行變異。在Rn中隨機選擇變異方向d,取M為足夠大的一個數(shù),如果V+M·d是不可行的,則設(shè)M為0到M之間的隨機數(shù),直到其可行為止。
循環(huán)操作:將選擇好的染色體再次傳入遺傳算法,記錄每個染色體,然后再進入上述循環(huán)操作。
得到最優(yōu)解:可以設(shè)定算法運行時間,根據(jù)記錄的染色體日志或者自適應(yīng)方案選擇規(guī)定時間內(nèi)的最優(yōu)解。
請參考圖3,圖3為本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析裝置的結(jié)構(gòu)示意圖,該裝置用于實現(xiàn)上述物理主機虛擬內(nèi)存分析方法,該裝置包括:
選擇模塊101,用于隨機選擇多個染色體作為初始值輸入至遺傳算法,得到最優(yōu)的兩條作為父母染色體;
其中,所述多個染色體為物理主機虛擬內(nèi)存數(shù)據(jù);
生產(chǎn)模塊102,用于根據(jù)父母染色體產(chǎn)生多個孩子染色體;
評估模塊103,用于評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,從種群中選擇出最優(yōu)的兩個計算結(jié)果作為新的父母染色體;
重復(fù)模塊104,用于重復(fù)調(diào)用生產(chǎn)模塊和評估模塊,直至獲取到最優(yōu)解,將最優(yōu)解作為物理主機虛擬內(nèi)存局部最優(yōu)解。
可見,該裝置采用遺傳算法確定物理主機虛擬內(nèi)存局部最優(yōu)解,彌補了普通算法尋找局部最優(yōu)解題的不足和以往經(jīng)驗數(shù)據(jù)引起的誤差,本發(fā)明采用高度非線性的方式,并實現(xiàn)給出局部最優(yōu)解,大大降低了獲取最優(yōu)解的復(fù)雜度,并且評估每個孩子染色體所對應(yīng)個體的適應(yīng)度,將孩子染色體傳入遺傳算法中,有效提高了虛擬內(nèi)存大小和物理主機的適配度。
基于上述裝置,具體的,所述生產(chǎn)模塊具體用于獲取染色體的平均值,方差,期望,部分交叉和父母個體,產(chǎn)生一個孩子染色體的集合。
進一步的,所述評估模塊還包括:去除單元,用于在孩子染色體中去除不符合適應(yīng)度要求的染色體。
進一步的,所述評估模塊還包括:操作單元,用于對孩子染色體進行交叉操作和變異操作。
以上對本發(fā)明所提供的一種物理主機虛擬內(nèi)存分析方法及裝置進行了詳細介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。