本發(fā)明涉及多目標(biāo)優(yōu)化技術(shù)領(lǐng)域,更具體地,涉及一種基于分解的多目標(biāo)優(yōu)化方法。
背景技術(shù):
基于分解的多目標(biāo)進(jìn)化算法把一個(gè)多目標(biāo)優(yōu)化問(wèn)題轉(zhuǎn)化為一系列的單目標(biāo)優(yōu)化子問(wèn)題;在傳統(tǒng)的基于分解的多目標(biāo)進(jìn)化算法中,在給定參數(shù)的情況下采用進(jìn)化算法(geneticalgorithm)優(yōu)化該問(wèn)題。多目標(biāo)規(guī)劃中,由于存在目標(biāo)之間的沖突和無(wú)法比較的現(xiàn)象,一個(gè)解在某個(gè)目標(biāo)上是最好的,在其他的目標(biāo)上比較差。在某個(gè)非支配解的基礎(chǔ)上改進(jìn)任何目標(biāo)函數(shù)的同時(shí),必然會(huì)削弱至少一個(gè)其他目標(biāo)函數(shù)。所以,多目標(biāo)優(yōu)化的目標(biāo)就是擬合出多目標(biāo)問(wèn)題中的整個(gè)帕累托前沿。
隨著實(shí)際生產(chǎn)中的需求越來(lái)復(fù)雜,多目標(biāo)優(yōu)化的任務(wù)也越來(lái)越多樣;導(dǎo)致實(shí)際生產(chǎn)中多目標(biāo)優(yōu)化的帕累托前沿(paretofront)往往不連續(xù),造成傳統(tǒng)的使用基于分解的采用固定子問(wèn)題權(quán)重的多目標(biāo)優(yōu)化算法(moea/d)無(wú)法很好求出所有的非連續(xù)帕累托前沿?,F(xiàn)有的基于分解的多目標(biāo)算法包都沒(méi)有實(shí)現(xiàn)并行化操作,隨著優(yōu)化算法的復(fù)雜度增加,對(duì)該算法框架的并行化需求也隨之增大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要克服帕累托前沿進(jìn)行近似求解出現(xiàn)的不連續(xù)帕累托前沿?cái)M合不好、非連續(xù)帕累托前沿?cái)M合丟失等缺陷,提供一種基于分解的多目標(biāo)優(yōu)化方法及多線程求解方法。
本發(fā)明為實(shí)現(xiàn)上述目的所提出的技術(shù)方案如下:
一種基于分解的多目標(biāo)優(yōu)化方法,包括以下步驟:
s1.選取一個(gè)多目標(biāo)函數(shù),并設(shè)置迭代次數(shù);
s2.通過(guò)n個(gè)向量,將目標(biāo)函數(shù)劃分為n個(gè)子問(wèn)題;
s3.采用遺傳算法對(duì)n個(gè)子問(wèn)題進(jìn)行求解;
s4.采用梯度下降算法對(duì)求解的子問(wèn)題進(jìn)行優(yōu)化;
s5.判斷是否達(dá)到預(yù)設(shè)迭代次數(shù),若是則輸出所有非支配解,否則重復(fù)步驟s3~s4。
其中,通過(guò)選取一個(gè)多目標(biāo)函數(shù),通過(guò)n個(gè)向量,將多個(gè)目標(biāo)函數(shù)劃分為n個(gè)子問(wèn)題;每次算法迭代中,分別采用遺傳算法對(duì)n個(gè)子問(wèn)題進(jìn)行求解,然后采用梯度下降算法對(duì)求解的子問(wèn)題的權(quán)重進(jìn)行優(yōu)化;當(dāng)達(dá)到預(yù)設(shè)的迭代次數(shù)后,輸出所有非支配解;在上述方案中,提高具有不連續(xù)帕累托前沿的多目標(biāo)問(wèn)題的求解質(zhì)量、讓得到的的帕累托前沿具有好的收斂性和多樣性。
優(yōu)選的,步驟s1所述的多目標(biāo)函數(shù)為:
f(x)=(f1(x),…,fm(x));
其中,m為目標(biāo)函數(shù)的個(gè)數(shù)。
優(yōu)選的,步驟s2的n個(gè)向量集合為:對(duì)于所有i=1,2,....,n;初始化b(i)={i1,i2,….,it},建立一組等距離的子問(wèn)題權(quán)重向量wi的子問(wèn)題權(quán)重向量集合:
w=(wi1,wi2,….,wit);
其中,t為每個(gè)子問(wèn)題的鄰居子問(wèn)題的數(shù)量。
優(yōu)選的,步驟s2將x和wi用做變量,構(gòu)建一個(gè)新的子問(wèn)題模型:
其中,dist(wi,w)為向量w與向量集合w之間的距離,w為除權(quán)重wi以外的權(quán)重集合;每個(gè)向量w擁有m個(gè)維度,即w=(wi1,wi2,….,wit)。
優(yōu)選的,步驟s3的具體步驟如下:
s31.在n個(gè)子問(wèn)題中選取兩個(gè)子問(wèn)題的解;
s32.對(duì)選取的兩個(gè)子問(wèn)題的解進(jìn)行模擬二進(jìn)制重組操作,獲取兩個(gè)解;
s33.按照預(yù)設(shè)的概率p對(duì)步驟s32進(jìn)行多項(xiàng)式變異操作,獲取兩個(gè)新的解;
s34.基于步驟s33新生成的兩個(gè)解中選取一個(gè)作為輸出。
優(yōu)選的,步驟s4的具體步驟如下:
s41.基于步驟s3的求解,構(gòu)造一個(gè)新的子問(wèn)題求解模型:
其中,wj表示第j個(gè)子問(wèn)題對(duì)應(yīng)的權(quán)重向量;y表示當(dāng)前子問(wèn)題的解向量;ft表示子問(wèn)題的第t個(gè)目標(biāo)函數(shù)的函數(shù)值;dist(wi,w)表示向量w與向量集合集合w之間的距離,w為除權(quán)重以外的權(quán)重集合;
s42.首先設(shè)定一個(gè)梯度下降的步長(zhǎng)a;
s43.對(duì)(gj(wj|y))進(jìn)行求導(dǎo),獲取導(dǎo)數(shù)值g;
s44.對(duì)wj進(jìn)行求解并輸出,其中,wj=wj-a*g。
優(yōu)選的,所述的優(yōu)化方法還包括多線程求解過(guò)程,所述的多線程求解過(guò)程包括以下步驟:
(1)任務(wù)分配線程負(fù)責(zé)子問(wèn)題信息的分發(fā),不斷更新完成的情況;
(2)每個(gè)線程從任務(wù)分配線程中獲取一個(gè)子問(wèn)題信息;
(3)根據(jù)該子問(wèn)題信息進(jìn)行優(yōu)化求解;
(4)線程0判斷結(jié)果是否為非支配解,若是,則保存,否則丟棄;
(5)通過(guò)多線程的方式并行進(jìn)行子問(wèn)題求解;
(6)由線程0合并所有子問(wèn)題的解得到該次算法迭代的結(jié)果。
其中,多線程求解方法中,任務(wù)分配線程給子問(wèn)題信息分發(fā)任務(wù),并不斷更新分發(fā)的情況;每個(gè)線程從任務(wù)分配線程中獲取一個(gè)字問(wèn)題信息;針對(duì)該子問(wèn)題進(jìn)行優(yōu)化求解,其中,線程0判斷結(jié)果是否為非支配解,若是,則進(jìn)行保存,否則丟棄;最后通過(guò)線程0合并所有子問(wèn)題的解,從而得到該次算法迭代的結(jié)果,有效提高了解決基于分解的多目標(biāo)優(yōu)化方法的效率。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明提出了一種基于分解的多目標(biāo)優(yōu)化方法,增加了子問(wèn)題的權(quán)重優(yōu)化,使得算法可以更好地?cái)M合非連續(xù)的帕累托前沿,從而求解質(zhì)量;同時(shí),多線程的方式并行求解多個(gè)子問(wèn)題,縮短算法運(yùn)行時(shí)間,有效提高了解決基于分解的多目標(biāo)優(yōu)化方法的效率。
附圖說(shuō)明
圖1為本發(fā)明提供的基于分解的多目標(biāo)優(yōu)化方法的流程圖。
圖2為本發(fā)明為解決基于分解的多目標(biāo)優(yōu)化方法提出的多線程求解過(guò)程的流程圖。
具體實(shí)施方式
附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專利的限制;
為了更好說(shuō)明本實(shí)施例,附圖某些部件會(huì)有省略、放大或縮小,并不代表實(shí)際產(chǎn)品的尺寸;
對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),附圖中某些公知結(jié)構(gòu)及其說(shuō)明可能省略是可以理解的。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。
一種基于分解的多目標(biāo)優(yōu)化方法,其步驟流程如圖1所示:
s1.選取一個(gè)多目標(biāo)函數(shù),并設(shè)置迭代次數(shù);
s2.通過(guò)n個(gè)向量,將目標(biāo)函數(shù)劃分為n個(gè)子問(wèn)題;
s3.采用遺傳算法對(duì)n個(gè)子問(wèn)題進(jìn)行求解;
s4.采用梯度下降算法對(duì)求解的子問(wèn)題進(jìn)行優(yōu)化;
s5.判斷是否達(dá)到預(yù)設(shè)迭代次數(shù),若是則輸出所有非支配解,否則重復(fù)步驟s3~s4。
其中,通過(guò)選取一個(gè)多目標(biāo)函數(shù),通過(guò)n個(gè)向量,將多個(gè)目標(biāo)函數(shù)劃分為n個(gè)子問(wèn)題;每次算法迭代中,分別采用遺傳算法對(duì)n個(gè)子問(wèn)題進(jìn)行求解,然后采用梯度下降算法對(duì)求解的子問(wèn)題的權(quán)重進(jìn)行優(yōu)化;當(dāng)達(dá)到預(yù)設(shè)的迭代次數(shù)后,輸出所有非支配解;在上述方案中,提高具有不連續(xù)帕累托前沿的多目標(biāo)問(wèn)題的求解質(zhì)量、讓得到的的帕累托前沿具有好的收斂性和多樣性。
在本實(shí)施例中,步驟s1所述的多目標(biāo)函數(shù)為:
f(x)=(f1(x),…,fm(x));
其中,m為目標(biāo)函數(shù)的個(gè)數(shù)。
在本實(shí)施例中,步驟s2的n個(gè)向量集合為:對(duì)于所有i=1,2,....,n;初始化b(i)={i1,i2,….,it},建立一組等距離的子問(wèn)題權(quán)重向量wi的子問(wèn)題權(quán)重向量集合:
w=(wi1,wi2,….,wit);
其中,t為每個(gè)子問(wèn)題的鄰居子問(wèn)題的數(shù)量。
在本實(shí)施例中,步驟s2將x和wi用做變量,構(gòu)建一個(gè)新的子問(wèn)題模型:
其中,dist(wi,w)為向量w與向量集合w之間的距離,w為除權(quán)重wi以外的權(quán)重集合;每個(gè)向量w擁有m個(gè)維度,即w=(wi1,wi2,….,wit)。
在本實(shí)施例中,步驟s3的具體步驟如下:
s31.在n個(gè)子問(wèn)題中選取兩個(gè)子問(wèn)題的解;
s32.對(duì)選取的兩個(gè)子問(wèn)題的解進(jìn)行模擬二進(jìn)制重組操作,獲取兩個(gè)解;
s33.按照預(yù)設(shè)的概率p對(duì)步驟s32進(jìn)行多項(xiàng)式變異操作,獲取兩個(gè)新的解;
s34.基于步驟s33新生成的兩個(gè)解中選取一個(gè)作為輸出。
在本實(shí)施例中,步驟s4的具體步驟如下:
s41.基于步驟s3的求解,構(gòu)造一個(gè)新的子問(wèn)題求解模型:
其中,wj表示第j個(gè)子問(wèn)題對(duì)應(yīng)的權(quán)重向量;y表示當(dāng)前子問(wèn)題的解向量;ft表示子問(wèn)題的第t個(gè)目標(biāo)函數(shù)的函數(shù)值;dist(wi,w)表示向量w與向量集合集合w之間的距離,w為除權(quán)重以外的權(quán)重集合;
s42.首先設(shè)定一個(gè)梯度下降的步長(zhǎng)a;
s43.對(duì)(gj(wj|y))進(jìn)行求導(dǎo),獲取導(dǎo)數(shù)值g;
s44.對(duì)wj進(jìn)行求解并輸出,其中,wj=wj-a*g。
其中,在本實(shí)施例中,優(yōu)化方法還包括多線程求解過(guò)程,其步驟流程如圖2所示:
(1)任務(wù)分配線程負(fù)責(zé)子問(wèn)題信息的分發(fā),不斷更新完成的情況;
(2)每個(gè)線程從任務(wù)分配線程中獲取一個(gè)子問(wèn)題信息;
(3)根據(jù)該子問(wèn)題信息進(jìn)行優(yōu)化求解;
(4)線程0判斷結(jié)果是否為非支配解,若是,則保存,否則丟棄;
(5)通過(guò)多線程的方式并行進(jìn)行子問(wèn)題求解;
(6)由線程0合并所有子問(wèn)題的解得到該次算法迭代的結(jié)果。
其中,多線程求解方法中,任務(wù)分配線程給子問(wèn)題信息分發(fā)任務(wù),并不斷更新分發(fā)的情況;每個(gè)線程從任務(wù)分配線程中獲取一個(gè)字問(wèn)題信息;針對(duì)該子問(wèn)題進(jìn)行優(yōu)化求解,其中,線程0判斷結(jié)果是否為非支配解,若是,則進(jìn)行保存,否則丟棄;最后通過(guò)線程0合并所有子問(wèn)題的解,從而得到該次算法迭代的結(jié)果,有效提高了解決基于分解的多目標(biāo)優(yōu)化方法的效率。
顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說(shuō)明本發(fā)明所作的舉例,而并非是對(duì)本發(fā)明的實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。