專利名稱:一種基于混合遺傳算法的地鐵乘務(wù)排班算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于混合遺傳算法的組合優(yōu)化問題,尤其涉及一種地鐵乘務(wù)排班算法。
背景技術(shù):
排班的主要功能是解決地鐵系統(tǒng)采用輪乘制分配運(yùn)營任務(wù),產(chǎn)生合理的任務(wù)序列,保證乘務(wù)人員休息日和工作任務(wù)之間的合理交替。目前排班系統(tǒng)主要基于手工方式而且約束條件較多,普遍存在著重復(fù)勞動,不能以已有的工作為基礎(chǔ),不能充分利用過去應(yīng)用系統(tǒng)開發(fā)中積累的知識和經(jīng)驗(yàn)。現(xiàn)行排班軟件適應(yīng)性差,應(yīng)變能力弱,移植困難。所以需要建立新的排班模型,最大程度的滿足運(yùn)營部門的需要、并且具有隨機(jī)性、科學(xué)性、合理性。
發(fā)明內(nèi)容
本發(fā)明提出了一種基于混合遺傳算法的乘務(wù)排班組合優(yōu)化方法,該方法包括:產(chǎn)生可行任務(wù)集合、構(gòu)造初始種群、建立遺傳算子(包括編碼、適應(yīng)度分析、選擇算子、交叉算子、變異算子)、構(gòu)造局部搜索策略。其中,通過分析運(yùn)行圖的行車計(jì)劃,對每個(gè)作業(yè)段生成一個(gè)樹型結(jié)構(gòu),子節(jié)點(diǎn)和父節(jié)點(diǎn)采用休息線連接,任務(wù)樹的根節(jié)點(diǎn)到每一個(gè)葉結(jié)點(diǎn)皆為一個(gè)可行的乘務(wù)任務(wù),這樣可以保證任務(wù)集合對作業(yè)段均勻覆蓋,如果一個(gè)乘務(wù)任務(wù)覆蓋的作業(yè)段被其它任務(wù)以更小的代價(jià)覆蓋,則刪除該乘務(wù)任務(wù),通過這種方式可以得到用來排班的所有集合分支,保證了任務(wù)的完整性。通過采用隨機(jī)構(gòu)造策略和貪婪構(gòu)造策略,根據(jù)之前生成的乘務(wù)集合構(gòu)造初始種群,并進(jìn)行后續(xù)的并行搜索,種群形成的多樣化保證其搜索過程的有效性。而采用不同的啟發(fā)性算法,提高種群個(gè)體的多樣性,防止“早熟”,同時(shí)保證某些個(gè)體的質(zhì)量,提高尋優(yōu)能力。在遺傳算子求解過程中,將作業(yè)段設(shè)為求解矩陣的行,將乘務(wù)任務(wù)對應(yīng)求解矩陣的列,采用非二進(jìn)制基于列的編碼方式,將每個(gè)染色體用變長數(shù)組表示,其長度表示作業(yè)段被完全覆蓋時(shí)乘務(wù)集合(即輪乘卡)的數(shù)量,這種編碼方式簡潔易懂并且利于計(jì)算個(gè)體適應(yīng)度是否達(dá)到收斂;本發(fā)明中將每個(gè)解得冗余列個(gè)數(shù)作為適應(yīng)度函數(shù),若最終冗余度為0,則算法將收斂;采用選擇、交叉、變異的方式,對每一次得到的解進(jìn)行優(yōu)化,避免有效解基因的損失,同時(shí)使高性能的個(gè)體以更大的概率生存,在產(chǎn)生新個(gè)體的同時(shí)降低對有效模式的破壞概率,以及按一定概率改變基因串中某個(gè)基因值,增加基因的多樣性,提高全局收斂和計(jì)算效率。通過局部搜索策略,采用領(lǐng)域變換的思想,與遺傳算法混合使用,對部分個(gè)體進(jìn)行爬山搜索,改善群體質(zhì)量,從而提高了對最有乘務(wù)任務(wù)劃分的生成質(zhì)量。本發(fā)明的有益技術(shù)效果是:根據(jù)遺傳算法策略和局部搜索算法策略混合使用,對地鐵運(yùn)行計(jì)劃進(jìn)行分解、組合、搜索、優(yōu)化,提高了解的靈活性、收斂性和完整性。
具體實(shí)施例方式根據(jù)地鐵運(yùn)營部門提供的運(yùn)行圖數(shù)據(jù)將該圖所有的作業(yè)段進(jìn)行分解,形成若干張作業(yè)卡組合成輪乘圖。其中,作業(yè)段的分解需要滿足一定的約束條件,包括:
I乘務(wù)員每月(周)累計(jì)出行時(shí)間的最大閾值。I乘務(wù)員每月(周)行車次數(shù)的最大閾值。I必須保證乘務(wù)員連續(xù)多個(gè)工作日之后獲得規(guī)定的休息日。I必須保證乘務(wù)員值班天數(shù)(周、月、年)的最大閾值。I同等級乘務(wù)員出 勤天數(shù)、月小時(shí)數(shù)、在外值班數(shù)相差的最大閾值。I每輪倒班中給每一位乘務(wù)員分配的工作在時(shí)間上不重疊。如果需要調(diào)用新的運(yùn)行圖將重新運(yùn)行該程序,確認(rèn)后可不再執(zhí)行,形成統(tǒng)一的輪乘圖。每張圖包括班次類型、出勤時(shí)間、折返車次、接/換車時(shí)間等。在性能上,要做到
I要求該程序具有收斂性,需要覆蓋運(yùn)行圖上所有的作業(yè)段。I程序需避免局部收斂,需要調(diào)試好其中的參數(shù)。I程序運(yùn)行并獲取結(jié)果的時(shí)間需要控制在30分鐘以內(nèi)。I算法需要具有可讀性 具體步驟如下:
一、產(chǎn)生可行任務(wù)集合
I)對行車計(jì)劃上每個(gè)作業(yè)段生成一個(gè)樹型結(jié)構(gòu),子節(jié)點(diǎn)與父節(jié)點(diǎn)之間使用休息連接線。2)任務(wù)樹的根節(jié)點(diǎn)到每一個(gè)葉結(jié)點(diǎn)即為一個(gè)可行的乘務(wù)任務(wù)。可以一定程度保證生成的任務(wù)集對作業(yè)段覆蓋均勻。3)如果一個(gè)乘務(wù)任務(wù)覆蓋的所有作業(yè)段被其它乘務(wù)任務(wù)以更小的代價(jià)覆蓋,則刪除該乘務(wù)任務(wù)。二、初始種群的生成
O由多個(gè)初始序列構(gòu)成一個(gè)初始種群以便進(jìn)行后續(xù)的并行搜索。2)采用啟發(fā)算法優(yōu)良性的特點(diǎn)
3)分為隨機(jī)構(gòu)造策略和貪婪隨機(jī)構(gòu)造策略
I)隨機(jī)構(gòu)造策略
a.X=NULLj w=0, I in I
b.1=I
c.Repeat
c.1在覆蓋行i的所有列中隨機(jī)選擇一列j
c.2將j加入到X中,設(shè)置w(i) = w⑴+1
c.3 i=i+l;
d.Until i= 111 ;
e.T = X
f.Repeat
f.1隨機(jī)從T中選擇一列j, f.2 if 對于 I (j)都有 w(i)>=2從X中移出j,并且w(i) = W(i)-1
g.Until T|=0
h.算法結(jié)束
II)貪婪隨機(jī)構(gòu)造策略需處理基本元素是:作業(yè)段和任務(wù)集合(FE),把結(jié)合FE中的任務(wù)j加入到解X時(shí),使用的指標(biāo)函數(shù)為:
f (C(j), k(j))=C(j)/k(j);
其中C(j) = I, k(j)是添加乘務(wù)任務(wù)j所帶來的新增覆蓋作業(yè)段的數(shù)量,
其中restriction:升高,隨機(jī)性:升高,質(zhì)量:一般
restriction:降低,解相似度:升高,種群多樣性:降低所以,增加評價(jià)函數(shù),將在priority的概率下選擇評價(jià)函數(shù)f(C(j), k(j))最好的任務(wù)加入到解中,剩余情況從候選集CL中隨機(jī)選擇任務(wù),保證種群的多樣性。所以,當(dāng)一個(gè)可行解構(gòu)造完畢以后,榮譽(yù)的乘務(wù)任務(wù),使用上述隨機(jī)構(gòu)造策略中的方法移出。三、遺傳算子設(shè)計(jì)
1)編碼
處理作業(yè)段集合和乘務(wù)任務(wù)集合。每個(gè)作業(yè)段對應(yīng)矩陣A的一行,每一個(gè)乘務(wù)任務(wù)對應(yīng)矩陣A的一列。所以,存在基于行的編碼和基于列的編碼兩種情況,確認(rèn)按照列編碼的方式求解。染色體由變長數(shù)組表示,長度為SCP矩陣的行輩完全覆蓋時(shí)解中列的個(gè)數(shù)。
2)適應(yīng)度
一般選取目標(biāo)函數(shù)作為適應(yīng)度函數(shù) Fitness(X) = I/所有 C (j) *X (j)求和 3)選擇算子(復(fù)制或繁殖)
采用輪盤賭的方式,
算法:
a.從當(dāng)前種群中選擇一個(gè)最好的個(gè)體作為父個(gè)體之一;
b.另一個(gè)父個(gè)體通過輪盤賭算法從剩余的種群中獲取,若兩個(gè)父個(gè)體不同則結(jié)束;
c.1ter=I;
d.Repeat
d.1通過輪盤賭操作獲取另一個(gè)父個(gè)體,若兩個(gè)個(gè)體相異也退出;
d.2 iter = iter + I ;
e.如果循環(huán)10次還沒有得到結(jié)果,則退出本操作。4)交叉算子 這是算法中最主要的個(gè)體重組和配對操作過程,同時(shí)降低對有效模式的破壞概率。通過算子在迭代構(gòu)造子染色體時(shí)使用已選出的基因集合覆蓋行的數(shù)量,和加入新基因后增加的覆蓋行數(shù)量差最多的因子,加入解集合,當(dāng)增量相同時(shí),則挑選增新基因后重復(fù)覆蓋最少的因子。
算法:
a.合并父個(gè)體的基因,P=PlU P2, PC=NULL ;
b.對P中所有的基因計(jì)算包含相同乘務(wù)段數(shù)量;
c.Repeat
C.1設(shè)置評價(jià)函數(shù),從P中選擇最好的基因集合;
c.2如果新選擇基因集合>=2,則選擇乘務(wù)段中重復(fù)覆蓋最小的基因j,PC=PC U {j},P=P-J ;
c.3累加已覆蓋的作業(yè)段;
d.如果所有的乘務(wù)段已經(jīng)排完,則退出循環(huán);
e.從PC中刪除冗余的基因。 5)變異算子
刪除染色體中部分基因,并通過貪婪和隨機(jī)算法重新構(gòu)造該染色體,有利于增強(qiáng)種群的多樣性。評價(jià)函數(shù)為Pr = I/(染色體覆蓋作業(yè)段的數(shù)量-染色體去掉該基因后覆蓋行的數(shù)量),這樣如果移出該基因?qū)Τ藙?wù)段覆蓋減少得越多,則被移出的幾率就越??;
算法:
a.Repeat
a.1隨機(jī)從染色體中選擇一個(gè)基因;
a.2計(jì)算Pr,若Pr小于設(shè)定概率則移出該基因;
c.當(dāng)移出基因數(shù)量達(dá)到設(shè)定值后,則退出。6)局部搜索策略
通過兩個(gè)步驟獲得一個(gè)鄰居解:
a.將當(dāng)前解X中一定數(shù)量的列隨機(jī)的選擇并移出,此時(shí)有部分行未被完全覆蓋,轉(zhuǎn)為不可行解X*。將目前未被覆蓋的行和不屬于當(dāng)前解的列組合成一個(gè)縮小問題的組合優(yōu)化問題。b.通過對該問題得到新解XI,合并原來不可行的解,得到X=Xl U X*,移出X中冗余的列得到最終解。
四、混合遺傳總算法
1.生成初始種群
2.T=O, count=0,設(shè)置best_fit為pop中最好個(gè)體的適應(yīng)度
3.Repeat
3.1使用輪盤賭操作獲得兩個(gè)相異的附帶染色體Pl和P2,使用交叉策略得到子代染色體Pc;
3.2從pop中隨機(jī)選一個(gè)個(gè)體Pm,如果Pm適應(yīng)度小于POP中個(gè)體的平均適應(yīng)度,用Pc替換Pm,否則重新選擇。3.3按適應(yīng)度由高到低對POP中個(gè)體排序
3.4 if rand (O, I)〈pmute,從POP中隨機(jī)選擇一個(gè)個(gè)體Pm,如果Pm不在POP的前10位,對Pm進(jìn)行變異操作。3.5 t=t+l;3.6 if t mod POP—SIZE = 0
3.6.1對POP中適應(yīng)度前10位的個(gè)體依次調(diào)用局部搜索算法,以提高種群中的個(gè)體質(zhì)
量
3.6.2if pop 中最好個(gè)體適應(yīng)度 fitness〈best—fit
Best_fit = fitness, count=0
3.6.3else count = count+1
4.Until count >= max_count 或 t/pop_size = gen
5.算法終止,取 POP中適應(yīng)度最好的個(gè)體為算法的最終解。
權(quán)利要求
1.一種基于混合遺傳算法的地鐵乘務(wù)排班方法,其特征在于:根據(jù)已有的地鐵列車運(yùn)行圖數(shù)據(jù)獲得行車計(jì)劃,將行車計(jì)劃組合成若干樹型結(jié)構(gòu)的任務(wù)集,根據(jù)隨機(jī)策略和貪婪策略這兩種啟發(fā)算法構(gòu)造初始種群。
2.根據(jù)權(quán)利要求1所述的種群進(jìn)行遺傳算子設(shè)計(jì)分析,其特征在于:對作業(yè)段集合和乘務(wù)集合進(jìn)行編碼,采用選擇、交叉、變異的方式,對每一次得到的解進(jìn)行優(yōu)化,避免有效解基因的損失,同時(shí)使高性能的個(gè)體以更大的概率生存,在產(chǎn)生新個(gè)體的同時(shí)降低對有效模式的破壞概率,以及按一定概率改變基因串中某個(gè)基因值,增加基因的多樣性,提高全局收斂和計(jì)算效率。
3.根據(jù)權(quán)利要求1所述的遺傳算子分析進(jìn)行局部搜索策略,其特征在于:對不斷進(jìn)行遺傳優(yōu)化的種群和全局結(jié)果實(shí)行部分進(jìn)行最差列刪除和隨機(jī)選擇評價(jià),提高解個(gè)體的多樣性。
全文摘要
本發(fā)明提出了一種基于混合遺傳算法的地鐵乘務(wù)排班的方法,該方法包括根據(jù)地鐵運(yùn)營的列車運(yùn)行圖數(shù)據(jù)和乘務(wù)司機(jī)工作的約束條件以及性能要求,動態(tài)將運(yùn)行圖數(shù)據(jù)分割為每日的任務(wù)輪乘卡。本發(fā)明有益的技術(shù)效果是解決了地鐵系統(tǒng)采用輪乘制分配運(yùn)營任務(wù),產(chǎn)生合理的任務(wù)序列,保證乘務(wù)人員休息日和工作任務(wù)之間的合理交替,不再用手工進(jìn)行繁瑣的任務(wù)劃分工作。
文檔編號G06N3/12GK103177292SQ201110431628
公開日2013年6月26日 申請日期2011年12月21日 優(yōu)先權(quán)日2011年12月21日
發(fā)明者萬禮華, 鄒燦, 劉俊, 張躍瀧 申請人:重慶金美通信有限責(zé)任公司