欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于路徑規(guī)劃的搜索方法

文檔序號:6579546閱讀:292來源:國知局
專利名稱:用于路徑規(guī)劃的搜索方法
技術(shù)領(lǐng)域
本發(fā)明屬于運輸智能領(lǐng)域,尤其涉及 一 種用于路徑規(guī)劃的隨機搜索算.法。
背景技術(shù)
路徑規(guī)劃問題是一個經(jīng)典的組合優(yōu)化問題,在工業(yè)領(lǐng)域中具有廣泛的 應(yīng)用。例如城市中的灑水路由、垃圾收集、信件投遞、校車調(diào)度等問題均 看看作是路徑規(guī)劃問題。路徑規(guī)劃問題可看作是在給定的圖上構(gòu)造若干條 回路,使得這些回路滿足一些特定的條件和約束并且路由這些回路的總消 耗最少。由于路徑規(guī)劃問題經(jīng)常涉及到龐大的市場或巨額的資金,因此設(shè) 計有效的解決方法是非常有必要的。然而,經(jīng)理論證明路徑規(guī)劃問題是一
個NP (非確定性多項式時間)難問題,即找到問題的全局最優(yōu)解的時間隨 著問題規(guī)模的增長呈指數(shù)級增長。
很多成功的先例已經(jīng)證明了在傳統(tǒng)的演化算法中加入局部搜索的概念 能夠在路徑規(guī)劃問題等這類NP難的組合優(yōu)化問題表現(xiàn)出有效的性能。這 是因為路徑規(guī)劃問題的解空間很大并且復(fù)雜,加入局部搜索能夠加強算法 的收斂性從而在有限的時間內(nèi)得到性能更好的解。然而,這些方法都有一 個共有的缺陷,那就是它們均采用了傳統(tǒng)的小步長局部搜索,在局部搜索 的每一步,只能產(chǎn)生與當(dāng)前解極為相似的解。這樣在某些情況下,例如問 題的解空間較大或者容量約束較嚴(yán)格導(dǎo)致解空間由大量分散的可行區(qū)域組 成的情況下,用傳統(tǒng)的小步長局部搜索將不能達(dá)到理想的結(jié)果。在前一種 情況下,從當(dāng)前解可能需要很多步局部搜索才能達(dá)到全局最優(yōu)解,而在后 一種情況下,傳統(tǒng)的小步長局部搜索可能導(dǎo)致搜索無法越過可行區(qū)域之間 的非可行區(qū)域從而跳出當(dāng)前的局部最優(yōu)解。
因此確定算法只能適用于小規(guī)模的路徑規(guī)劃問題,而無法適用于在實 際中常常出現(xiàn)的中等或大規(guī)模問題。

發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決現(xiàn)有技術(shù)中的上述問題之一 。
為此,本發(fā)明的實施例提出 一種更有效的用于路徑規(guī)劃的搜索方法。
根據(jù)本發(fā)明的一個方面,本發(fā)明實施例提出了 一種用于路徑規(guī)劃的搜
索方法,所述搜索方法包括以下步驟a)對對應(yīng)路徑圖的路徑規(guī)劃方案的 種群中各個個體進(jìn)行初始化,其中每個個體S包括按照所述路徑圖對各個 車輛規(guī)劃的任務(wù)回路序列,每個任務(wù)回路中包括一個車輛對應(yīng)的回路任務(wù) 序列;b)對每個個體S依次執(zhí)行傳統(tǒng)步長的局部搜索和大于所述傳統(tǒng)步長 的可變步長局部搜索,以獲得對應(yīng)的局部最優(yōu)解個體S, ; c)根據(jù)每個個體 對應(yīng)的所有回路總消耗和/或每個個體違背容量約束的程度對所有的局部 最優(yōu)解個體S,進(jìn)行排序;以及d)根據(jù)所述排序確定所述路徑圖的最優(yōu)路 徑規(guī)劃方案。
根據(jù)本發(fā)明進(jìn)一步的實施例,所述步驟a包括對所述路徑圖對應(yīng)的 所有任務(wù)邊進(jìn)行編號,其中每個任務(wù)邊以其對應(yīng)的兩個端點表示;以及對 于每個車輛對應(yīng)的回路任務(wù)序列,從所有任務(wù)邊的未選取任務(wù)編號中選擇
可在不違反容量約束條件的條件下插入對應(yīng)序列的任務(wù)編號。
根據(jù)本發(fā)明進(jìn)一步的實施例,所述步驟b包括首先對每個個體S執(zhí) 行所述傳統(tǒng)步長的局部搜索,獲得對應(yīng)的第一局部最優(yōu)解個體S1;對每個 第 一局部最優(yōu)解個體S1執(zhí)行所述可變步長的局部搜索,獲得對應(yīng)的第二局 部最優(yōu)解個體S2;以及再次對每個第二局部最優(yōu)解個體S2執(zhí)行所述傳統(tǒng) 步長的局部搜索,獲得所述對應(yīng)的局部最優(yōu)解個體S,。
根據(jù)本發(fā)明進(jìn)一步的實施例,所述可變步長局部搜索包括從每個個 體包含的任務(wù)回路序列中選擇部分任務(wù)回路,并將所述部分任務(wù)回^各對應(yīng) 的車輛回路任務(wù)序列融合為 一 個任務(wù)序列;按照所選任務(wù)不違背容量約束
且任務(wù)之間距離最近的條件,從所述融合任務(wù)序列依次選擇任務(wù)進(jìn)行排序; 利用Ulusoy劃分算法將所述排序的任務(wù)重新劃分為回路,以使得重新劃分 后每個回路產(chǎn)生的額外消耗最?。灰约耙运鲋匦聞澐值幕芈穪硖鎿Q所述 部分任務(wù)回路。 根據(jù)本發(fā)明再一步的實施例,若每次選擇時存在多個任務(wù)滿足所述條 件,進(jìn)一步利用下面多個規(guī)則中至少 一個比較所述多個任務(wù)以選擇一個任務(wù)進(jìn)行當(dāng)前排序;所述多個規(guī)則包括l.最大化任務(wù)與倉庫之間的距離; 2.最小化任務(wù)與倉庫之間的距離;3.最大化任務(wù)的需求量與服務(wù)消耗之比; 和4.最小化任務(wù)的需求量與服務(wù)消耗之比。進(jìn)一步地,若當(dāng)前排序中任務(wù) 的總需求量小于容量的一半,采取所述規(guī)則1;否則采取所述規(guī)則2。
根據(jù)本發(fā)明進(jìn)一步的實施例,在所述步驟b之前還包括利用每個個 體S交叉生成不同于個體S的后代群體;分別計算所述后代群體的每個個 體與所有個體S之間的距離;按照所述后代群體的每個個體距離個體S的 距離最小值排序選擇所述后代群體的部分個體來替代個體S。
根據(jù)本發(fā)明進(jìn)一步的實施例,所述排序步驟包括計算每個個體的違 背容量約束的程度和每個個體對應(yīng)的所有回路總消耗;在比較任意兩個個 體時,若其對應(yīng)的違背容量約束的程度為零,則根據(jù)其對應(yīng)的所有回路總 消耗大小排序;若其對應(yīng)的違背容量約束的程度大于零,則根據(jù)以預(yù)定概 率比較其對應(yīng)的違背容量約束的程度和以預(yù)定概率比較其對應(yīng)的所有回路 總消耗來進(jìn)行排序。
本發(fā)明引入了一個新的具有可變步長的局部搜索算子,基于此算子的 局部搜索能夠產(chǎn)生在較大程度上不同于當(dāng)前解的相鄰解,因此算法在現(xiàn)有 算法較難解決的上述兩種情況下具有較好的路徑規(guī)劃性能。另外,本發(fā)明 將可變步長和傳統(tǒng)步長局部搜索相結(jié)合,對算法性能提升起著重要作用。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面 的描述中變得明顯,或通過本發(fā)明的實踐了解到。


本發(fā)明的上述和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描 述中將變得明顯和容易理解,其中
圖1為本發(fā)明一個實施例的用于路徑規(guī)劃的搜索方法的步驟流程圖2為本發(fā)明實施例的可變步長的局部搜索原理圖3為本發(fā)明另一個實施例的用于路徑規(guī)劃的搜索方法的步驟流程圖。
具體實施例方式
下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其
6能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā) 明,而不能解釋為對本發(fā)明的限制。
圖1給出了本發(fā)明一個實施例的用于路徑規(guī)劃的搜索方法的步驟流程 圖。如圖所示,首先對對應(yīng)路徑圖的路徑規(guī)劃方案的種群中各個個體進(jìn)行
初始化(步驟102),其中每個個體S包括按照所述路徑圖對各個車輛規(guī) 劃的任務(wù)回路序列,每個任務(wù)回路中包括一個車輛對應(yīng)的回路任務(wù)序列。
然后,對每個個體S依次執(zhí)行傳統(tǒng)步長的局部搜索和大于所述傳統(tǒng)步 長的可變步長局部搜索,以獲得對應(yīng)的局部最優(yōu)解個體S,(步驟104)。
根據(jù)每個個體對應(yīng)的所有回路總消耗和/或每個個體違背容量約束的 程度對所有的局部最優(yōu)解個體S,進(jìn)行排序(步驟106)。最后,根據(jù)上述 排序確定該路徑圖的最優(yōu)路徑規(guī)劃方案(步驟108)。
在步驟102對各個個體進(jìn)行初始化時,首先對個體進(jìn)行編碼
首先將路徑圖對應(yīng)的所有任務(wù)邊進(jìn)行編號,假如有^條任務(wù)邊,則給定 編號集合為0,UxO,對每條邊各分配兩個編號/和/ +門對于某條任務(wù)邊
",、),給其分配的一個編號表示從"到,的方向,而另一個編號表示從,到 v'的方向。
另外,為了表示方便,本發(fā)明實施例額外定義了一個虛擬任務(wù)并為其 分配編號為0,其頭節(jié)點與尾節(jié)點均為倉庫點,經(jīng)過消耗與需求均為O。這 個虛擬任務(wù)表示車輛從倉庫出發(fā)或回到倉庫。當(dāng)以上預(yù)處理完畢后,每個 個體S可以表示為若干條編號序列,其中每條序列表示一輛車所經(jīng)過的回 路,可記為S-(A,A,…,&)。每個編號序列的起始和終結(jié)均為分隔符0,即 A-(0,^,x",…,Xw,0),這保證了每輛車均從倉庫出發(fā)而且最終回到倉庫。在
每個序列中間的值為給某個任務(wù)邊分配的編號,其順序表示它們被服務(wù)的 順序。相鄰任務(wù)之間由從前一個任務(wù)尾節(jié)點到后一個任務(wù)頭節(jié)點的最短路 徑相連接并在解的編碼中進(jìn)行忽略。
然后,對每個個體S進(jìn)行初始化首先設(shè)置個體的所有序列為空,并 對所有任務(wù)編號標(biāo)記為未選取,然后進(jìn)入插入階段。在插入階段的開始, 開啟第一條序列并將虛擬任務(wù)0插入。接下來在每一次插入時,先從所有 未選取的任務(wù)編號中挑選出能夠在不違反容量約束的條件下插入當(dāng)前序列的任務(wù)編號作為候選編號,然后從候選編號中隨機選出 一個插入到當(dāng)前序 列的最后。假如候選編號為空,對當(dāng)前序列的最后插入0以完成對其的構(gòu) 造,同時開啟一條新的序列(與開啟第一條序列方式一致),并重新挑選
候選編號。在插入候選編號以后,將它所對應(yīng)的任務(wù)邊所分配的2個編號 均標(biāo)記為已選取,至此, 一次插入操作結(jié)束。當(dāng)所有的任務(wù)編號均被插入 時,對一個個體的初始化即完成。
最后,對群體進(jìn)行初始化在群體中為了維持各個個體之間的多樣性, 相同的個體不允許同時存在。因此只有在新生成的個體與群體中現(xiàn)有的所 有個體均不相同時才會被加入到群體中。
同時,為了避免過多的重復(fù)初始化個體,對每個個體有一個最大嘗試 初始化次數(shù)m加'"L具體的初始化群體步驟如下首先將群體設(shè)置為空,然 后依次將初始化的個體按一定的標(biāo)準(zhǔn)插入至群體中。在初始化每個個體時, 若該個體與群體中現(xiàn)有個體無重復(fù),則將其插入至群體,否則將重新對其
進(jìn)行初始化。假如連續(xù)^"'"/次初始化均無法生成滿足條件的個體,則停止 初始化并將群體規(guī)模重新設(shè)置為當(dāng)前規(guī)模。
上述初始化群體步驟以程序語言可以表示如下
初始4b個體/mZ/;
/W/沒出現(xiàn)在群體中 pop = po/ u zW/;在步驟104對每個個體S執(zhí)行局部搜索時,可以將局部搜索分為以下 三個階段
第一階段首先對個體S進(jìn)行傳統(tǒng)步長的局部搜索,將最終得到的局 部最優(yōu)解記為,。
此處選取的傳統(tǒng)步長的搜索算子可以為以下三種i)將一個任務(wù)編號 從原位置取出插入到另 一個位置;ii)將相鄰的兩個任務(wù)編號從原位置取出 插入到另一個位置;iii)將兩個任務(wù)編號互換位置。例如給定一個服務(wù)6 條任務(wù)邊的解為((0, 3, 5, 12, 2, 0, ) , (0, 10, 7, 0)),將3 移動至10的后面得到((0, 5, 12, 2, 0, ) , (0, 10, 3, 7, 0)); 將(5, 12)移動至7后面得到((0, 3, 2, 0, ) , (0, 10, 7, 5, 12, 0));將2與7互換位置得到((0, 3, 5, 12, 7, 0, ) , (0, 10, 2, 0))。
需要注意的是任務(wù)編號在插入時可以改變其方向,例如選取3后既可 以插入3也可以插入其相反的方向9,具體選取方案由插入后所得到的解 的質(zhì)量好壞決定。
第二階段對S'進(jìn)行可變步長(擴展步長)的局部搜索,將得到的局 部最優(yōu)解記為S。在本發(fā)明實施例中,可變步長的局部搜索是以大于傳統(tǒng) 步長的擴展步長進(jìn)行局部搜索。具體工作原理可以參考圖2,圖2為本發(fā) 明實施例的可變步長的局部搜索原理圖
首先,對于給定的一個具有若干個回路的個體s,選取其對應(yīng)任務(wù)回 路序列中的P條回路(其中P不超過個體所含有的回路總個數(shù)),并將這P 條回路融合為一個非順序的任務(wù)編號列表。然后,利用路徑掃描(path
scanning )啟發(fā)式算法對此非順序的任務(wù)編號列表進(jìn)行排序。
Path scanning由一個空的回路開始,并把融合列表中的多個任務(wù)按一 定的順序插入到當(dāng)前回路排序中。在每一次插入時,先選擇出不違背容量 約束的任務(wù)中距離當(dāng)前排序的回路最后一個任務(wù)最近的任務(wù);如果無任務(wù)滿足該條件,則封閉當(dāng)前回路并開啟一個新的回路繼續(xù)進(jìn)行排序,直至融 合列表中所有的任務(wù)均排序完成,得到它們的順序列表。
在實際操作中,按照每次排序插入所選任務(wù)不違背容量約束且任務(wù)之
間距離最近的條件,可能存在有多個任務(wù)滿足上述條件的情況。這時,可
以從以下5種規(guī)則中的一個,對這些滿足條件的多個任務(wù)進(jìn)行比較,從而
選擇一個合適的任務(wù)插入當(dāng)前排序中。
這5種規(guī)則包括l.最大化任務(wù)與倉庫之間的距離,即從多個任務(wù)中 選擇距離倉庫距離最遠(yuǎn)的任務(wù);2.最小化任務(wù)與倉庫之間的距離,即從多 個任務(wù)中選擇距離倉庫距離最近的任務(wù);3.最大化編號為^的任務(wù)的需求量 與服務(wù)消耗之比,即"(^)"c(W),也就是從多個任務(wù)中選擇對應(yīng)"(W)〃c(^)最 大的任務(wù);4.最小化"(^)"c(W),即從多個任務(wù)中選擇對應(yīng)W")〃c(^)最小 的任務(wù);5.如果當(dāng)前排序回路中的任務(wù)總需求量小于容量的一半,則采取 規(guī)則1,反之則采取規(guī)則2。
通過選擇上面的任意一種M^則,可以產(chǎn)生對應(yīng)非順序融合序列的一個 順序任務(wù)排列列表。當(dāng)然,本發(fā)明也可以選擇上述5個規(guī)則中的至少一個 規(guī)則分別對這些融合序列進(jìn)行排序。
在圖2所示實施例進(jìn)行啟發(fā)式掃描時,則利用上述5個^L則分別對這 些融合任務(wù)列表進(jìn)行排序,也就是每次排序時始終利用相同的一個規(guī)則, 從而產(chǎn)生有5個不同的解(順序列表1到順序列表5)。當(dāng)融合列表中所 有的任務(wù)均凈皮插入時,path scanning終止。
然后,在利用path scanning產(chǎn)生了 5個解之后,對此5個解分別利用 Ulusoy劃分算法(Ulusoy,s splitting,具體可參考文獻(xiàn)G. Ulusoy, "The fleet size and mix problem for capacitated arc routing," European Journal of Operational Research, vol. 22, no. 3, pp. 329-337, 1985.)進(jìn)行重新劃分,即將 上述排序的任務(wù)重新劃分為回路,以使得重新劃分后每個回路產(chǎn)生的額外 消庫毛最小。對應(yīng)path scanning產(chǎn)生6勺5個解,Ulusoy戈寸分后4尋至!J 5個回路 劃分后的新解1到5。此劃分方法可以對排序后的順序回路列表以最優(yōu)方 案進(jìn)行劃分,使得每個產(chǎn)生的解在滿足容量約束的條件下由劃分導(dǎo)致的回 路的額外消耗最小。
最后,通過比較這5個新解對應(yīng)的回路消耗大小,在這5個解之中逸擇一個最好的解替換原個體S中被選中的回路,從而產(chǎn)生一個新的個體^ 。 當(dāng)然,在僅利用其中一個規(guī)矩得到一個順序回路列表時,僅需要將該
一個排序的任務(wù)重新劃分為回路,并且以該重新劃分的回路來替換;故選中 的部分任務(wù)回路。
第三階段對S"再一次進(jìn)行傳統(tǒng)步長的局部搜索,將得到的局部最優(yōu) 解記為s'。此階段與第一階段的搜索步驟相同,這里不再贅述。
在該實施例中,步驟106即在當(dāng)前得到的該局部最優(yōu)解S基礎(chǔ)上進(jìn)行 排序。將這所有的個體利用隨機排序法進(jìn)行從好到壞的排序,根據(jù)排序可 以確定最優(yōu)的路徑規(guī)劃方案。
如上文所述,步驟106可以根據(jù)每個個體對應(yīng)的所有回路總消耗和/或 每個個體違背容量約束的程度進(jìn)行排序。具體來說,計算每個個體的違背 容量約束的程度和每個個體對應(yīng)的所有回路總消耗。
個體違背容量約束的程度,即對容量約束的違反值表示為
臺 ,其中"(^)表示回路^中所服務(wù)的總需求量,
c/(^) = '^^(i to), ^表示在回路^中的第Z個任務(wù)邊對應(yīng)的編號,2表示回
路對應(yīng)車輛的容量。
個體中所有回路的總消耗可通過以下公式求出
/ cos《S) = Z £ (血爭(i^), /iv()) + "()),
其中^'表示在回路^中的第z個任務(wù)編號;而對某任務(wù)編號^, &(^)與 "(^)分別表示它所代表的任務(wù)邊的相應(yīng)方向的起始和終止頂點,則
), ;^(^阿)表示路徑圖中兩個相鄰任務(wù)邊A,的終止點與A('+"起始點 之間路段的最短距離,最短距離可以通過迪杰斯特拉算法計算獲得,"(A) 表示任務(wù)邊A'的服務(wù)消耗。
由于需要排序的個體可能違反容量約束,則在比較兩個體時需要同時 考慮它們的回路的總消耗和違背容量約束的程度。具體來說,在比較任意 兩個個體時,若其對應(yīng)的違背容量約束的程度為零,則根據(jù)其對應(yīng)的所有 回路總消耗大小進(jìn)行排序。當(dāng)然,對應(yīng)回路總消耗較小的個體越優(yōu)。
若其對應(yīng)的違背容量約束的程度大于零,則根據(jù)以預(yù)定概率比較其對應(yīng)的違背容量約束的程度和以預(yù)定概率比較其對應(yīng)的所有回路總消耗來進(jìn)
行排序。例如當(dāng)^(&)或W(S2)〉0時,以0.45的概率(權(quán)重)比較M,而另 外0.55的概率比較"os"S)。當(dāng)然,所得值越小表示對應(yīng)的個體越優(yōu)。這樣, 根據(jù)上述個體的優(yōu)劣排序可以確定每個個體對應(yīng)的路徑規(guī)劃方案的好壞程 度,從而能夠確定路徑圖的最優(yōu)路徑規(guī)劃方案。
圖3給出了本發(fā)明的另一個實施例,在該實施例中在對每個個體執(zhí)行 局部搜索步驟之前,進(jìn)一步對初始化的個體S作為父代來生成后代群體, 以進(jìn)一步優(yōu)化本發(fā)明的路徑規(guī)劃方案。
如圖3所示,首先讀入問題的輸入數(shù)據(jù)(步驟202)。這里輸入數(shù)據(jù) 可以包括路徑圖的鄰接矩陣、每條任務(wù)邊的服務(wù)消耗"(e)、經(jīng)過消耗^(e)和 需求量"(e)以及所有車輛的容量2。然后計算每對頂點之間的最短距離(步
驟204)。這里頂點表示路徑圖中每個任務(wù)邊的起始或終點編號,每個頂 點分別表示為v'"",…,",這里n為頂點的個數(shù)。通過迪杰斯特拉算法計算 并存儲路徑圖中每兩個點之間的最短距離以便后續(xù)步驟的計算,例如后續(xù) 個體中所有回路的總消耗"os"S)的計算。同時可以將所有這些距離值保存 為 一 個闘矩陣, v》。
接著是步驟206,該步驟是將路徑圖對應(yīng)的當(dāng)前群體初始化為規(guī)模為
個隨機生成又各不相同的個體。具體的初始化步驟可以參考上文圖1
中關(guān)于步驟102的描述,這里不再贅述。并且計算得到所有個體中兩兩之 間的距離,根據(jù)距離的計算可以防止生成相同的個體。
在計算個體之間距離時,采取的是個體所代表的任務(wù)鄰接矩陣之間的 距離。假設(shè)兩個體的任務(wù)鄰接矩陣分別為A和B,則其之間距離為A-B中 非零元素的總個數(shù)。
為了實現(xiàn)后續(xù)步驟的多次循環(huán)以及個體排序,在初始化階段,需要記 錄種群中每個個體所包含的所有屬性,并將所有屬性的懲罰值均初始為0
(步驟208 )。這里,將個體的屬性定義為任意兩個任務(wù)之間是否相鄰。
給定一個具有"個任務(wù)的問題,其包含的所有屬性可定義為矩陣7,,其中7"
為關(guān)于任務(wù)f和任務(wù)7的屬性,即,如果任務(wù)^和任務(wù)7相鄰,則々=1;否則 /y =0。
在上述初始化步驟之后,根據(jù)后續(xù)步驟的每次循環(huán),判斷當(dāng)前步驟是否滿足終止條件,即是否達(dá)到設(shè)定的循環(huán)要求(步驟212)。若滿足則下 面的算法結(jié)束(步驟210),否則設(shè)置后代群體為空(步驟214),進(jìn)入生 產(chǎn)后代個體的階段。具體步驟如下
初始生成后代群體時,在當(dāng)前群體中選擇兩個個體進(jìn)行交叉產(chǎn)生一個 新的個體^ (步驟218)。交叉規(guī)則為對于給定兩個個體&和&,交叉算 子在A中隨機選取回路A,在&中隨機選取回^各A。 A與&又分別進(jìn)一步 隨機分割成兩個子路,記為^=(^"^)與A=(A"A2)。之后用^2替換^構(gòu)
成一個新的回路。最后,在這個新的回路中把重復(fù)出現(xiàn)的任務(wù)去除,并將 遺漏的任務(wù)添加進(jìn)修改過的&從而得到新的個體&。添加遺漏任務(wù)時,可
以選擇其插入位置使其滿足額外消耗和對容量約束的超過量最小。
然后,判斷&是否與當(dāng)前群體或后代群體中的某個個體相同,即&是
否不重復(fù)(步驟220)。若&與當(dāng)前群體或后代群體中的某個個體存在相
同,則將其拋棄,否則將其添加到后代群體中(步驟222)。
當(dāng)然,若需要生成一定規(guī)模的后代群體,還需要在步驟218前增設(shè)判
斷步驟216,以判斷后代個體中的個體個數(shù)達(dá)到預(yù)定的數(shù)量。
重復(fù)上述步驟216到步驟220,直到后代個體中的個體個數(shù)達(dá)到預(yù)定
的數(shù)量,例如6><戶;《&。顯然,本發(fā)明不局限于該具體實施例,生成的后
代個體可以是任意數(shù)量,大于、小于或等于當(dāng)前群體的W戸&個數(shù)量。
在生成的后代群體規(guī)模達(dá)到預(yù)定數(shù)量要求之后,對后代群體中的所有 個體,計算其與當(dāng)前群體中所有個體的距離的最小值(步驟224),并以 此值從大到小將后代個體進(jìn)行排序。然后,優(yōu)先選擇與當(dāng)前群體較遠(yuǎn)的個 體,即選擇后代群體中排在前面的一定比例,例如20。/。的個體S進(jìn)行傳統(tǒng) 步長與擴展步長相結(jié)合的局部搜索,將搜索得到的局部最優(yōu)解替換原個體 中4皮選中的回路(步驟226)。這里步驟226的局部^_索可以與圖1的步 驟104相同,這里不再贅述。此外,在對個體進(jìn)行局部搜索時優(yōu)先選擇與 當(dāng)前群體較遠(yuǎn)的個體,這樣能夠有效地避免重復(fù)搜索相同的區(qū)域從而減少
了計算資源的浪費。
其中,若局部搜索后得到的個體與當(dāng)前群體和后代群體中的某個個體 相同,則將其從后代群體中拋棄。
接下來,將后代群體與當(dāng)前群體合并和排序,選取最靠前的P叩"'ze個最好的個體構(gòu)成新的當(dāng)前群體,以作為下一代群體(步驟228)。
這里對合并群體中每個個體的排序與圖1中步驟106類似,但是如上
文所述在設(shè)置循環(huán)次數(shù)的終止條件下,若沒達(dá)到終止條件,則重復(fù)步驟212
到228。因此,這里對個體進(jìn)行排序比較時,兩個體時則需要同時考慮它
= f max(牟4) - g,O) 們的增長適應(yīng)度函數(shù)值g")和違背容量約束的程度 L
對個體S ,其增長適應(yīng)度函數(shù)定義如下 '=1 y=w ,其中
為個體S的原始適應(yīng)度函數(shù),這里把個體中所有回路的總消耗"o"(S)直接 作為個體的原始適應(yīng)度。w為任務(wù)總數(shù),^即為屬性"的懲罰值。
在每次循環(huán)時,對于步驟228合并后選取作為下一代的群體,需要對 其中的個體更新各個屬性在下一代的懲罰值。具體來說,各屬性的懲罰值 主要通過如下步驟進(jìn)行更新
對下 一代群體中的每個個體S ,首先計算各個屬性々對其的效用值
1 + & 。即,如果個體S不包含屬性々,則屬性、對其的效用值為0,
否則屬性々對其的效用值為1 + ;7",其中 (S)為任務(wù)7與任務(wù)y之間的距離; 而A為其當(dāng)前懲罰值。然后,將對其效用值最大的屬性、的懲罰值&增加
1。同時保持其他屬性的懲罰值不變。
因此在步驟228的每次合并后,需計算所有個體的基于當(dāng)前懲罰值的 在導(dǎo)向局部搜索中所定義的增長適應(yīng)度函數(shù)。
然后,根據(jù)個體對應(yīng)的增長適應(yīng)度函數(shù)值和違背容量約束的程度, 選取其中最好的^^&個個體構(gòu)成新的當(dāng)前群體。相應(yīng)地,在比較兩個個 體&與&時,分如下幾種情況考慮當(dāng)= "/052) = 0時,直接比較g(S); 當(dāng)/v/(&)或rv/(S2)〉0時,例如以0.45的概率比較^,而另夕卜0.55的概率比 較柳。
本發(fā)明通過引入了一個新的具有擴展步長的局部搜索算子,基于此算 子的局部搜索能夠產(chǎn)生在較大程度上不同于當(dāng)前解的相鄰解,因此算法在 現(xiàn)有算法較難解決的上述兩種情況下具有較好的性能。
另外,由于傳統(tǒng)步長局部搜索的存在,該算法在一般的情況下同樣具
14有優(yōu)異的性能。擴展步長和傳統(tǒng)步長局部搜索相結(jié)合,對算法性能提升起著重要作用。
本發(fā)明還在對個體進(jìn)行局部搜索時優(yōu)先選擇與當(dāng)前群體較遠(yuǎn)的個體,這樣能夠有效地避免重復(fù)搜索相同的區(qū)域從而減少了計算資源的浪費。
最后,本算法結(jié)合了導(dǎo)向局部搜索的思想,進(jìn)一步減少了搜索陷入局部最優(yōu)的可能性。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。
權(quán)利要求
1.一種用于路徑規(guī)劃的搜索方法,其特征在于,所述搜索方法包括以下步驟a)對對應(yīng)路徑圖的路徑規(guī)劃方案的種群中各個個體進(jìn)行初始化,其中每個個體S包括按照所述路徑圖對各個車輛規(guī)劃的任務(wù)回路序列,每個任務(wù)回路中包括一個車輛對應(yīng)的回路任務(wù)序列;b)對每個個體S依次執(zhí)行傳統(tǒng)步長的局部搜索和大于所述傳統(tǒng)步長的可變步長局部搜索,以獲得對應(yīng)的局部最優(yōu)解個體S’;c)根據(jù)每個個體對應(yīng)的所有回路總消耗和/或每個個體違背容量約束的程度對所有的局部最優(yōu)解個體S’進(jìn)行排序;以及d)根據(jù)所述排序確定所述路徑圖的最優(yōu)路徑規(guī)劃方案。
2. 如權(quán)利要求1所述的搜索方法,其特征在于,所述步驟a包括 對所述路徑圖對應(yīng)的所有任務(wù)邊進(jìn)行編號,其中每個任務(wù)邊以其對應(yīng)的兩個端點表示;以及對于每個車輛對應(yīng)的回路任務(wù)序列,從所有任務(wù)邊的未選取任務(wù)編號 中選擇可在不違反容量約束條件的條件下插入對應(yīng)序列的任務(wù)編號。
3. 如權(quán)利要求1所述的搜索方法,其特征在于,所述步驟b包括 首先對每個個體S執(zhí)行所述傳統(tǒng)步長的局部搜索,獲得對應(yīng)的第一局部最優(yōu)解個體S1;對每個第一局部最優(yōu)解個體Sl執(zhí)行所述可變步長的局部搜索,獲得對 應(yīng)的第二局部最優(yōu)解個體S2;以及再次對每個第二局部最優(yōu)解個體S2執(zhí)行所述傳統(tǒng)步長的局部搜索,獲 得所述對應(yīng)的局部最優(yōu)解個體S,。
4. 如權(quán)利要求1或3所述的搜索方法,其特征在于,所述可變步長局 部搜索包括任務(wù)回路對應(yīng)的車輛回路任務(wù)序列融合為 一 個任務(wù)序列;按照所選任務(wù)不違背容量約束且任務(wù)之間距離最近的條件,從所述融合任務(wù)序列依次選擇任務(wù)進(jìn)行排序;利用Ulusoy劃分算法將所述排序的任務(wù)重新劃分為回路,以使得重新劃分后每個回路產(chǎn)生的額外消耗最?。灰约耙运鲋匦聞澐值幕?各來替換所述部分任務(wù)回路。
5. 如權(quán)利要求4所述的搜索方法,其特征在于,若每次選擇時存在多 個任務(wù)滿足所述條件,進(jìn)一步利用下面多個規(guī)則中至少一個比較所述多個 任務(wù)以選擇一個任務(wù)進(jìn)行當(dāng)前排序;所述多個規(guī)則包括l.最大化任務(wù)與倉庫之間的距離;2.最小化任務(wù)與 倉庫之間的距離;3.最大化任務(wù)的需求量與服務(wù)消耗之比;和4.最小化任 務(wù)的需求量與服務(wù)消耗之比。
6. 如權(quán)利要求5所述的搜索方法,其特征在于,若當(dāng)前排序中任務(wù)的 總需求量小于容量的一半,采取所述規(guī)則1;否則采取所述規(guī)則2。
7. 如權(quán)利要求1所述的搜索方法,其特征在于,在所述步驟b之前還 包括利用每個個體s交叉生成不同于個體S的后代群體; 分別計算所述后代群體的每個個體與所有個體S之間的距離; 按照所述后代群體的每個個體距離個體S的距離最小值排序選擇所述 后代群體的部分個體來替代個體S。
8. 如權(quán)利要求7所述的搜索方法,其特征在于,所述距離為兩個個體 分別對應(yīng)的任務(wù)鄰接矩陣之間的距離。
9. 如權(quán)利要求7所述的搜索方法,其特征在于,所述步驟c包括 將所述后代群體的部分個體與所述局部最優(yōu)解個體S,進(jìn)行合并;以及 對所述合并的個體進(jìn)行排序。
10. 如權(quán)利要求1或9所述的搜索方法,其特征在于,所述排序步驟 包括計算每個個體的違背容量約束的程度和每個個體對應(yīng)的所有回路總消耗;在比較任意兩個個體時,若其對應(yīng)的違背容量約束的程度為零,則根 據(jù)其對應(yīng)的所有回路總消耗大小排序;若其對應(yīng)的違背容量約束的程度大于零,則根據(jù)以預(yù)定概率比較其對 應(yīng)的違背容量約束的程度和以預(yù)定概率比較其對應(yīng)的所有回路總消耗來進(jìn) 行排序。
全文摘要
本發(fā)明公開了一種用于路徑規(guī)劃的搜索方法,包括以下步驟對對應(yīng)路徑圖的路徑規(guī)劃方案的種群中各個個體進(jìn)行初始化,其中每個個體S包括按照所述路徑圖對各個車輛規(guī)劃的任務(wù)回路序列,每個任務(wù)回路中包括一個車輛對應(yīng)的回路任務(wù)序列;對每個個體S依次執(zhí)行傳統(tǒng)步長的局部搜索和大于所述傳統(tǒng)步長的可變步長局部搜索,以獲得對應(yīng)的局部最優(yōu)解個體S’;根據(jù)每個個體對應(yīng)的所有回路總消耗和/或每個個體違背容量約束的程度對所有的局部最優(yōu)解個體S’進(jìn)行排序;以及根據(jù)所述排序確定所述路徑圖的最優(yōu)路徑規(guī)劃方案。本發(fā)明具有良好的路徑規(guī)劃性能。
文檔編號G06Q10/00GK101650805SQ200910161350
公開日2010年2月17日 申請日期2009年7月31日 優(yōu)先權(quán)日2009年7月31日
發(fā)明者傅浩波, 珂 唐, 新 姚, 一 梅 申請人:中國科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
田林县| 张北县| 聂拉木县| 潞城市| 海安县| 泽普县| 贞丰县| 崇仁县| 东丽区| 平阳县| 庆云县| 农安县| 新建县| 曲麻莱县| 溆浦县| 高平市| 新昌县| 乐亭县| 永福县| 辽阳县| 花垣县| 民乐县| 腾冲县| 青冈县| 鹤峰县| 桐城市| 和平县| 汝阳县| 融水| 酉阳| 巴东县| 古浪县| 伊金霍洛旗| 泽普县| 芦溪县| 镇坪县| 海兴县| 理塘县| 隆林| 宣汉县| 塔河县|