本發(fā)明涉及一種遺傳算法應(yīng)用領(lǐng)域,特別是涉及一種利用遺傳算法實(shí)現(xiàn)的自動排班方法及系統(tǒng)。
背景技術(shù):
排班是合理安排上班人力的重要手段,在所有企業(yè)中均廣泛應(yīng)用。排班主要是根據(jù)公司實(shí)際業(yè)務(wù)發(fā)展需要,合理的安排各個時間段內(nèi)上班人力,保證滿足公司業(yè)務(wù)需求,且又不引起人力資源的浪費(fèi)。一般企業(yè)中大都由管理人員或者專門的排班師進(jìn)行手動排班,該工作方式存在天然缺陷:
1、排班結(jié)果難以量化比較,排班人員的經(jīng)驗(yàn)、技能、應(yīng)變能力等各方面的綜合素質(zhì)都會影響排班結(jié)果。
2、排班的效率低、耗時長,對排班人員的工作壓力提出較高要求。
3、每個排班人員有自己的排班風(fēng)格和偏好,會引起排班結(jié)果存在較大差異,對上班員工的自我調(diào)節(jié)能力存在一定的考驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中手工排班存在很多缺點(diǎn)的缺陷,提供一種利用遺傳算法實(shí)現(xiàn)的自動排班方法及系統(tǒng)。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:
本發(fā)明提供了一種利用遺傳算法實(shí)現(xiàn)的自動排班方法,其特點(diǎn)在于,包括以下步驟:
s1、接收排班請求,提交排班參數(shù)開始排班;
s2、獲取原始排班數(shù)據(jù);
s3、利用遺傳算法對原始排班數(shù)據(jù)進(jìn)行調(diào)整,生成新的排班數(shù)據(jù);
s4、返回所述新的排班數(shù)據(jù)。
較佳地,步驟s1中所述排班參數(shù)包括上班時長;步驟s2中所述原始排班數(shù)據(jù)包括原始上班時長;步驟s3包括:
s31、計(jì)算原始上班時長矩陣;
其中,所述原始上班時長矩陣為1×n矩陣,所述原始上班時長矩陣中只有一個元素取值為1、其余元素取值為0,n個元素依次對應(yīng)時長遞增的n個上班時長,取值為1的元素對應(yīng)所述原始上班時長;
s32、生成概率轉(zhuǎn)移矩陣;
其中,所述概率轉(zhuǎn)移矩陣為n×n矩陣,所述概率轉(zhuǎn)移矩陣中的每個元素aij表示每個組上班時長從ti調(diào)整為tj的概率,i∈[1,n],j∈[1,n],t1-tn依次對應(yīng)時長遞增的所述n個上班時長;
aij=a(n-i+1)(n-j+1);
在所述概率轉(zhuǎn)移矩陣的每一行中,aii均為每一行的最大值,并且每一行越靠近aii的元素取值越大;
s33、用所述原始上班時長矩陣乘以所述概率轉(zhuǎn)移矩陣,得到調(diào)整為各種上班時長所對應(yīng)的概率;
s34、按照調(diào)整為各種上班時長所對應(yīng)的概率,隨機(jī)生成一個新的上班時長;
所述新的排班數(shù)據(jù)包括所述新的上班時長。
較佳地,在所述時長遞增的n個上班時長中,任意相鄰兩個上班時長的差值相等。
較佳地,步驟s1中所述排班參數(shù)包括上班時間;步驟s2中所述原始排班數(shù)據(jù)包括原始上班時間;步驟s3包括:
s31’、生成步長調(diào)整概率矩陣;
其中,所述步長調(diào)整概率矩陣為1×m矩陣,m個元素依次對應(yīng)遞增的m個時間調(diào)整幅度;
tk=tm-k;
s32’、根據(jù)所述步長調(diào)整概率矩陣,隨機(jī)生成一個調(diào)整步長;
s33’、將所述調(diào)整步長與所述原始上班時間進(jìn)行加法運(yùn)算,生成新的上班時間;
所述新的排班數(shù)據(jù)包括所述新的上班時間。
較佳地,在所述遞增的m個時間調(diào)整幅度中,任意相鄰兩個時間調(diào)整幅度的差值相等。
本發(fā)明的目的在于還提供了一種利用遺傳算法實(shí)現(xiàn)的自動排班系統(tǒng),其特點(diǎn)在于,包括:
接收模塊,用于接收排班請求,提交排班參數(shù)開始排班;
獲取模塊,用于獲取原始排班數(shù)據(jù);
生成模塊,用于利用遺傳算法對原始排班數(shù)據(jù)進(jìn)行調(diào)整,生成新的排班數(shù)據(jù);
返回模塊,用于返回所述新的排班數(shù)據(jù)。
較佳地,所述排班參數(shù)包括上班時長;所述原始排班數(shù)據(jù)包括原始上班時長;
所述生成模塊包括:
第一計(jì)算單元,用于計(jì)算原始上班時長矩陣;
其中,所述原始上班時長矩陣為1×n矩陣,所述原始上班時長矩陣中只有一個元素取值為1、其余元素取值為0,n個元素依次對應(yīng)時長遞增的n個上班時長,取值為1的元素對應(yīng)所述原始上班時長;
第一生成單元,用于生成概率轉(zhuǎn)移矩陣;
其中,所述概率轉(zhuǎn)移矩陣為n×n矩陣,所述概率轉(zhuǎn)移矩陣中的每個元素aij表示每個組上班時長從ti調(diào)整為tj的概率,i∈[1,n],j∈[1,n],t1-tn依次對應(yīng)時長遞增的所述n個上班時長;
aij=a(n-i+1)(n-j+1);
在所述概率轉(zhuǎn)移矩陣的每一行中,aii均為每一行的最大值,并且每一行越靠近aii的元素取值越大;
乘法運(yùn)算單元,用于用所述原始上班時長矩陣乘以所述概率轉(zhuǎn)移矩陣,得到調(diào)整為各種上班時長所對應(yīng)的概率;
第一隨機(jī)單元,用于按照調(diào)整為各種上班時長所對應(yīng)的概率,隨機(jī)生成一個新的上班時長;
所述新的排班數(shù)據(jù)包括所述新的上班時長。
較佳地,在所述時長遞增的n個上班時長中,任意相鄰兩個上班時長的差值相等。
較佳地,所述排班參數(shù)包括上班時間;所述原始排班數(shù)據(jù)包括原始上班時間;
所述生成模塊包括:
第二生成單元,用于生成步長調(diào)整概率矩陣;
其中,所述步長調(diào)整概率矩陣為1×m矩陣,m個元素依次對應(yīng)遞增的m個時間調(diào)整幅度;
tk=tm-k;
第二隨機(jī)單元,用于根據(jù)所述步長調(diào)整概率矩陣,隨機(jī)生成一個調(diào)整步長;
加法運(yùn)算單元,用于將所述調(diào)整步長與所述原始上班時間進(jìn)行加法運(yùn)算,生成新的上班時間;
所述新的排班數(shù)據(jù)包括所述新的上班時間。
較佳地,在所述遞增的m個時間調(diào)整幅度中,任意相鄰兩個時間調(diào)整幅度的差值相等。
為了避免現(xiàn)有技術(shù)的手工排班存在的諸多缺點(diǎn),本發(fā)明采用計(jì)算機(jī)自動排班,可以在各個維度上進(jìn)行量化比較、避免排班人員的經(jīng)驗(yàn)、技能、偏好而導(dǎo)致的排班結(jié)果差異。
業(yè)內(nèi)計(jì)算機(jī)自動排班算法中,遺傳算法是一種較成熟且有成功案例的算法。該算法一般由:擇優(yōu)復(fù)制、交叉、變異等步驟組成,其中變異是遺傳算中最重要的步驟。在自動排班中各個組每天的上班時間和上班時長時可以在規(guī)定范圍內(nèi)隨機(jī)調(diào)整,故可將其抽象為算法中變異算子。要求變異過程所代表的實(shí)際調(diào)整內(nèi)容盡量符合實(shí)際業(yè)務(wù)場景。實(shí)際使用過程中可以采用合適的概率(轉(zhuǎn)移)矩陣作為調(diào)整參數(shù),使上班時間和上班時長的調(diào)整,符合實(shí)際的業(yè)務(wù)場景。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能夠保證在排班過程中,對上班時間、上班時長的調(diào)整貼近實(shí)際業(yè)務(wù)場景,精確控制每種調(diào)整的概率,并且本發(fā)明的排班結(jié)果的整體擬合度無震蕩、平穩(wěn)上升,可以達(dá)到排班目標(biāo)、滿足業(yè)務(wù)需求。
附圖說明
圖1為本發(fā)明的實(shí)施例1的利用遺傳算法實(shí)現(xiàn)的自動排班方法的流程圖。
圖2為本發(fā)明的實(shí)施例2的利用遺傳算法實(shí)現(xiàn)的自動排班系統(tǒng)的模塊示意圖。
具體實(shí)施方式
下面通過實(shí)施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
實(shí)施例1
如圖1所示,本實(shí)施例的利用遺傳算法實(shí)現(xiàn)的自動排班方法包括以下步驟:
步驟101、接收排班請求,提交排班參數(shù)開始排班;
步驟102、獲取原始排班數(shù)據(jù);
步驟103、利用遺傳算法對原始排班數(shù)據(jù)進(jìn)行調(diào)整,生成新的排班數(shù)據(jù);
步驟104、返回所述新的排班數(shù)據(jù)。
其中,步驟101中所述排班參數(shù)包括上班時長;步驟102中所述原始排班數(shù)據(jù)包括原始上班時長;步驟103包括:
步驟1031、計(jì)算原始上班時長矩陣;
其中,所述原始上班時長矩陣為1×n矩陣,所述原始上班時長矩陣中只有一個元素取值為1、其余元素取值為0,n個元素依次對應(yīng)時長遞增的n個上班時長,其中優(yōu)選地,在所述時長遞增的n個上班時長中,任意相鄰兩個上班時長的差值相等;取值為1的元素對應(yīng)所述原始上班時長;
在本實(shí)施例的具體實(shí)施過程中,例如上班時長的范圍依次為8、8.5、9、9.5、10、10.5、11小時,則n取值即為7,若原始上班時長矩陣為(1000000),則表示原始上班時長為8小時,若原始上班時長矩陣為(0010000),則表示原始上班時長矩陣為9小時,以此類推。
步驟1032、生成概率轉(zhuǎn)移矩陣;
其中,所述概率轉(zhuǎn)移矩陣為n×n矩陣,所述概率轉(zhuǎn)移矩陣中的每個元素aij表示每個組上班時長從ti調(diào)整為tj的概率,i∈[1,n],j∈[1,n],t1-tn依次對應(yīng)時長遞增的所述n個上班時長;
aij=a(n-i+1)(n-j+1);即保證上班時長在調(diào)整區(qū)間內(nèi)平衡;
在所述概率轉(zhuǎn)移矩陣的每一行中,aii均為每一行的最大值,并且每一行越靠近aii的元素取值越大;即表示上班時長不變的概率最大,調(diào)整幅度越小其調(diào)整概率越大;
遺傳算法為在一個原始解的基礎(chǔ)上,逐步交叉、變異、擇優(yōu)而向最優(yōu)解逼近的過程。一般排班過程中所有班次的上班時長規(guī)定在一個區(qū)間內(nèi),例如上班時長為8小時到11小時(上班時長的時間粒度為半小時),根據(jù)實(shí)際的業(yè)務(wù)場景,每個組每天的上班時長可以根據(jù)實(shí)際業(yè)務(wù)需要延長或者減少。實(shí)際調(diào)整過程中要求:
1、每次調(diào)整的幅度盡量小,調(diào)整的內(nèi)容盡量平衡;
2、調(diào)整的區(qū)間滿足實(shí)際的業(yè)務(wù)規(guī)定;
3、排班擬合度應(yīng)該平穩(wěn)上升;
實(shí)際調(diào)整過程中,如果在代碼中根據(jù)不同原始輸入值,分別控制調(diào)整到不同上班時長的概率,將導(dǎo)致代碼混亂,邏輯不清晰,后期修改不便等問題。定義一個上班時長的概率轉(zhuǎn)移矩陣,可以統(tǒng)一控制各種情況下的調(diào)整概率。
例如8到11小時的上班時長區(qū)間內(nèi)一共有:8,8.5,9,9.5,10,10.5,11小時七種上班時長,定義一個7×7的概率轉(zhuǎn)移矩陣,覆蓋所有上班時長的調(diào)整場景。
例如生成的概率轉(zhuǎn)移矩陣如下:
步驟1033、用所述原始上班時長矩陣乘以所述概率轉(zhuǎn)移矩陣,得到調(diào)整為各種上班時長所對應(yīng)的概率;
采用概率轉(zhuǎn)移矩陣之和,可以利用矩陣運(yùn)算,直接計(jì)算從ti上班時間調(diào)整為其他上班時長的概率,從而減少編碼過程中的復(fù)雜度。例如從8小時的上班時長調(diào)整為其他上班時長的概率就可以進(jìn)行如下計(jì)算:
其中o即表示原始上班時長為8小時的原始上班時長矩陣,上述計(jì)算結(jié)果即表示從原始上班時長為8小時調(diào)整為新的上班時長8、8.5、9、9.5、10、10.5、11的概率分別為:0.4、0.3、0.2、0.05、0.05、0、0,其他場景的調(diào)整意義類似,在遺傳算法每次變異過程中,所有班次的上班時長都根據(jù)概率轉(zhuǎn)移矩陣調(diào)整,精確控制各種調(diào)整的概率。
步驟1034、按照調(diào)整為各種上班時長所對應(yīng)的概率,隨機(jī)生成一個新的上班時長;所述新的排班數(shù)據(jù)包括所述新的上班時長。
用本實(shí)施例的上述調(diào)整手段,調(diào)整后的新的上班時長和原始上班時長關(guān)系較大,保證某次變異出現(xiàn)大幅度調(diào)整的概率較小。由于概率轉(zhuǎn)移矩陣的平衡性保證了上班時長調(diào)整的平衡。
另外,優(yōu)選地,步驟101中所述排班參數(shù)包括上班時間;步驟102中所述原始排班數(shù)據(jù)包括原始上班時間;步驟103包括:
步驟1031’、生成步長調(diào)整概率矩陣;
其中,所述步長調(diào)整概率矩陣為1×m矩陣,m個元素依次對應(yīng)遞增的m個時間調(diào)整幅度;在所述遞增的m個時間調(diào)整幅度中,任意相鄰兩個時間調(diào)整幅度的差值相等。
tk=tm-k;即各組上班時間向前調(diào)整、向后調(diào)整相同步長的概率相同;
對于開始上班時間的調(diào)整,各組上班時間的范圍從0點(diǎn)到24點(diǎn),其粒度為半小時,如果采用類似上班時長的概率轉(zhuǎn)移矩陣,其矩陣規(guī)模達(dá)48×48,將會導(dǎo)致計(jì)算量大幅度增加,且在該矩陣中間存在很多概率為0的點(diǎn)(上班時間的調(diào)整時間跨度不能太大)。
在上班時間在實(shí)際的調(diào)整過程中,采用步長調(diào)整概率矩陣更為合適,該矩陣對每組、每種開始上班時間的調(diào)整都是一樣的,故只需用一個1×m的步長調(diào)整概率矩陣即可。
例如步長調(diào)整概率矩陣如下:
t=(0.020.080.20.40.20.080.02),表示所述步長調(diào)整概率矩陣表示上班時間調(diào)整-1.5、-1、-0.5、0、0.5、1、1.5小時的概率(根據(jù)實(shí)際業(yè)務(wù)場景可以自由調(diào)整各種步長及對應(yīng)的概率)。
步驟1032’、根據(jù)所述步長調(diào)整概率矩陣,隨機(jī)生成一個調(diào)整步長;
步驟1033’、將所述調(diào)整步長與所述原始上班時間進(jìn)行加法運(yùn)算,生成新的上班時間;所述新的排班數(shù)據(jù)包括所述新的上班時間。
例如假設(shè)生成的調(diào)整步長為0.5小時,原始上班時間為9:00,那么調(diào)整后的新的上班時間則為9:30。
用上述的概率轉(zhuǎn)移矩陣和步長調(diào)整概率矩陣,逐個作用于每個組每天的上班時間、上班時長的調(diào)整操作,對于這兩種調(diào)整,期間均不考慮實(shí)際業(yè)務(wù)場景中的各項(xiàng)約束條件,故在完成相應(yīng)的調(diào)整操作后,需根據(jù)實(shí)際調(diào)整的結(jié)果,進(jìn)行相關(guān)約束條件的檢查,如果發(fā)現(xiàn)調(diào)整之后違反任意一個約束條件,須回滾相關(guān)操作,即將調(diào)整后的值恢復(fù)為原始值,以保證解的合法性。
實(shí)施例2
如圖2所示,本實(shí)施例的利用遺傳算法實(shí)現(xiàn)的自動排班系統(tǒng)包括接收模塊1、獲取模塊2、生成模塊3以及返回模塊4;
其中,所述接收模塊1用于接收排班請求,提交排班參數(shù)開始排班;
所述獲取模塊2用于獲取原始排班數(shù)據(jù);
所述生成模塊3用于利用遺傳算法對原始排班數(shù)據(jù)進(jìn)行調(diào)整,生成新的排班數(shù)據(jù);
所述返回模塊4用于返回所述新的排班數(shù)據(jù)。
優(yōu)選地,所述排班參數(shù)包括上班時長;所述原始排班數(shù)據(jù)包括原始上班時長;
所述生成模塊包括:
第一計(jì)算單元,用于計(jì)算原始上班時長矩陣;
其中,所述原始上班時長矩陣為1×n矩陣,所述原始上班時長矩陣中只有一個元素取值為1、其余元素取值為0,n個元素依次對應(yīng)時長遞增的n個上班時長,在所述時長遞增的n個上班時長中,任意相鄰兩個上班時長的差值相等。取值為1的元素對應(yīng)所述原始上班時長;
第一生成單元,用于生成概率轉(zhuǎn)移矩陣;
其中,所述概率轉(zhuǎn)移矩陣為n×n矩陣,所述概率轉(zhuǎn)移矩陣中的每個元素aij表示每個組上班時長從ti調(diào)整為tj的概率,i∈[1,n],j∈[1,n],t1-tn依次對應(yīng)時長遞增的所述n個上班時長;
aij=a(n-i+1)(n-j+1);
在所述概率轉(zhuǎn)移矩陣的每一行中,aii均為每一行的最大值,并且每一行越靠近aii的元素取值越大;
乘法運(yùn)算單元,用于用所述原始上班時長矩陣乘以所述概率轉(zhuǎn)移矩陣,得到調(diào)整為各種上班時長所對應(yīng)的概率;
第一隨機(jī)單元,用于按照調(diào)整為各種上班時長所對應(yīng)的概率,隨機(jī)生成一個新的上班時長;
所述新的排班數(shù)據(jù)包括所述新的上班時長。
另外,優(yōu)選地,所述排班參數(shù)包括上班時間;所述原始排班數(shù)據(jù)包括原始上班時間;
所述生成模塊包括:
第二生成單元,用于生成步長調(diào)整概率矩陣;
其中,所述步長調(diào)整概率矩陣為1×m矩陣,m個元素依次對應(yīng)遞增的m個時間調(diào)整幅度;在所述遞增的m個時間調(diào)整幅度中,任意相鄰兩個時間調(diào)整幅度的差值相等
tk=tm-k;
第二隨機(jī)單元,用于根據(jù)所述步長調(diào)整概率矩陣,隨機(jī)生成一個調(diào)整步長;
加法運(yùn)算單元,用于將所述調(diào)整步長與所述原始上班時間進(jìn)行加法運(yùn)算,生成新的上班時間;
所述新的排班數(shù)據(jù)包括所述新的上班時間。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。