易校石,易正俊,祁寶川**
(1.伊犁師范大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,新疆 伊寧 835000;2.重慶大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,重慶 401331;3.伊犁師范大學(xué) 化學(xué)與環(huán)境科學(xué)學(xué)院,新疆 伊寧 835000;4.伊犁師范大學(xué) 應(yīng)用數(shù)學(xué)研究所,新疆 伊寧 835000)
突發(fā)重大傳染疾病有極大可能給社會(huì)帶來(lái)災(zāi)難性的損失,如2019 年突發(fā)的COVID-19 病毒具有極強(qiáng)的傳染性.統(tǒng)計(jì)數(shù)據(jù)表明:截止2021 年1 月26 日,全球感染新冠病毒COVID-19 累計(jì)人數(shù)達(dá)到1 個(gè)億,死亡人數(shù)達(dá)到200 多萬(wàn)人.在疫情爆發(fā)時(shí),醫(yī)院組建傳染病病區(qū),抽調(diào)護(hù)士進(jìn)入傳染病病區(qū)中,傳統(tǒng)的護(hù)士排班一般是由護(hù)士長(zhǎng)采用緩慢輪班的排班機(jī)制,即在一個(gè)排班周期內(nèi),護(hù)士只工作一種班型,這樣的好處是避免打亂護(hù)士的生物鐘,造成護(hù)士身體的疲憊、困倦,一定程度上能降低醫(yī)療風(fēng)險(xiǎn)[1-2].這種排班方法是基于護(hù)士值班的均衡性,追求的目標(biāo)是提升護(hù)士滿意度,增加護(hù)士對(duì)醫(yī)院的認(rèn)同感,保障醫(yī)院正常運(yùn)轉(zhuǎn).但是排班的難度和繁瑣性會(huì)隨著護(hù)士人員的增加而急劇增加,需要耗費(fèi)較長(zhǎng)的時(shí)間,且排班結(jié)果還受到護(hù)士長(zhǎng)主觀因素的影響,很難同時(shí)照顧到均衡性和護(hù)士的心理特點(diǎn).國(guó)外的護(hù)士排班一般采用三班快速輪班制度,即:護(hù)士在一個(gè)排班周期內(nèi),會(huì)工作不同的班型;三班制指的是24 h 內(nèi)每個(gè)班型工作8 h,這種排班算法基于醫(yī)院的人力資源管理,追求的目標(biāo)是降低醫(yī)院人力成本.比較經(jīng)典的模型是Rahimian[3-4]等提出了整數(shù)-約束規(guī)劃相結(jié)合的模型,首先使用整數(shù)規(guī)劃的強(qiáng)度,獲得一個(gè)解的下界,然后再利用約束規(guī)劃的能力去尋找最優(yōu)解,求解算法有精確算法、啟發(fā)算法和混合算法.精確算法在面對(duì)較多的約束條件時(shí),求解耗時(shí)長(zhǎng),還有可能最優(yōu)解不存在;啟發(fā)式算法得到的解容易陷入局部最優(yōu).在疫情期間醫(yī)院的護(hù)士排班應(yīng)該是一個(gè)多目標(biāo)護(hù)士排班問(wèn)題,目標(biāo)函數(shù)應(yīng)該是多個(gè)目標(biāo)函數(shù)的優(yōu)化,既能照顧護(hù)士身心健康,又能保證抗擊疫情的工作順利開展和適當(dāng)?shù)亟档途仍杀?,?gòu)建突發(fā)重大傳染病期間的多目標(biāo)護(hù)士排班模型,并且該模型能夠通過(guò)計(jì)算機(jī)快速求解,以達(dá)到應(yīng)對(duì)突發(fā)重大傳染病期間的護(hù)士排班需求.
護(hù)士排班結(jié)果是護(hù)士在一個(gè)排班周期內(nèi)值班的狀態(tài)表,相當(dāng)于學(xué)校教師的課表.排班周期是指一個(gè)排班周期的長(zhǎng)度,一般將排班周期設(shè)置為一周,實(shí)際的護(hù)士排班表在一個(gè)周期內(nèi)是不會(huì)變更的;醫(yī)院在節(jié)假日照常運(yùn)行,醫(yī)院的護(hù)士采用輪休制度,即在一個(gè)排班周期內(nèi),滿足休息條件的護(hù)士都能達(dá)到休息要求[5-7].考慮到重大傳染病爆發(fā)期間,醫(yī)院的人力資源緊張等狀況,每個(gè)護(hù)士在一個(gè)排班周期內(nèi)的休息時(shí)間一般為1 d;醫(yī)院里護(hù)士值班的類型包括早班(A 班,08:00—16:00)、中班(P 班,16:00—24:00)和晚班(N 班,00:00—8:00).在重大傳染病期間,護(hù)士的工作壓力激增,不能讓護(hù)士處于過(guò)度疲勞而增加疫情防控風(fēng)險(xiǎn),對(duì)護(hù)士的連續(xù)工作時(shí)長(zhǎng)需要作出明確規(guī)定;每個(gè)值班類型需要確定護(hù)士的需求量,一般由醫(yī)院根據(jù)病人量和工作量確定護(hù)士人數(shù)的上下限;每個(gè)值班類型至少需要ICU 護(hù)士、呼吸科護(hù)士和感染科護(hù)士各1 名,這主要保證有相應(yīng)專業(yè)護(hù)士處理;模型包含每個(gè)護(hù)士的基本信息和科室屬性[8-11].
為建立護(hù)士的排班模型,用I表示護(hù)士集合,I={1,2,3,···,n},Ik為k班型護(hù)士集合;J表示工作日期集合,J={1,2,3,4,5,6,7};K表示排班班型集合,K={1,2,3,4},約定k=1表示早班(A 班),k=2表示中班(P 班),k=3表示夜班(N 班),k=4 表示休息狀態(tài);g表示護(hù)士類型屬性下標(biāo),g=1為ICU 護(hù)士,g=2為感染科護(hù)士,g=3為呼吸科護(hù)士,g=4為普通科護(hù)士;URk,LRk分別表示上k班型護(hù)士人數(shù)的上下限;W1為每周P 班工作次數(shù)上限;W2每周N 班工作次數(shù)上限.
護(hù)士排班的約束條件劃分為硬約束(HC)條件和軟約束條件(SC),硬約束條件是考慮護(hù)士的生理狀況、工作強(qiáng)度,病人的數(shù)量、醫(yī)院的管理?xiàng)l例和疫情防控的特殊要求,避免醫(yī)療事故的發(fā)生和感染擴(kuò)散.排班時(shí)必需滿足硬約束條件,否則排班問(wèn)題便無(wú)可行解,需要新增相應(yīng)的護(hù)士類型和數(shù)量[12-16];在排班的過(guò)程中盡可能滿足的條件稱為軟約束條件,可以把軟約束條件作為優(yōu)化的目標(biāo)函數(shù).
硬約束條件1(HC1):每個(gè)護(hù)士每天只能上1 種班型.
設(shè)xijk為第i個(gè)護(hù)士在j天的第k個(gè)班型的工作狀態(tài)變量,該變量取值為1 時(shí),表明護(hù)士在這個(gè)班型值班;如果該變量取值為0,表明護(hù)士在該班型沒(méi)有值班,即:
由于規(guī)定每個(gè)護(hù)士每天只能上1 個(gè)班型,所以該硬約束條件可表為:
硬約束條件2(HC2):每個(gè)班至少需要ICU 護(hù)士、傳染病科護(hù)士和呼吸科護(hù)士各1 名.
g表示護(hù)士類型,qig表示第i個(gè)護(hù)士的類型變量,其取值規(guī)則為:
硬約束條件3(HC3):為保證護(hù)士有充沛的精力,降低醫(yī)療事故的風(fēng)險(xiǎn),護(hù)士前一天的值班狀態(tài)不能隨便向第二天的值班狀態(tài)進(jìn)行轉(zhuǎn)移,如中班和夜班(P,N 班)第二天不能安排早班(A 班),夜班(N 班)不能安排第二天的中班(P 班),護(hù)士不能連續(xù)休息2 d,具體值班狀態(tài)轉(zhuǎn)移圖如圖1 所示.
圖1 值班狀態(tài)轉(zhuǎn)移圖Fig.1 Shift diagram of duty status
按照值班狀態(tài)轉(zhuǎn)移圖(圖1),前一天上了中班和夜班的護(hù)士在第二天不能安排早班,即:
前一天上了夜班的護(hù)士第二天不能安排中班,即:
硬約束條件4(HC4):對(duì)于每一個(gè)班型,護(hù)士的配備數(shù)量不超過(guò)要求的上下限:
硬約束條件5(HC5):連續(xù)上2 d 夜班(N 班)的護(hù)士必須安排休息:
硬約束條件6(HC6):連續(xù)上3 個(gè)中班(P 班)后安排休息.
硬約束條件7(HC7):每周只工作6 d,即:
軟約束條件(SC)是醫(yī)院為避免護(hù)士連續(xù)工作時(shí)間過(guò)長(zhǎng)和過(guò)于集中,降低醫(yī)療事故發(fā)生的概率和護(hù)士日常生活的正常需求所作出的規(guī)定.護(hù)士的排班盡可能不擾亂護(hù)士的生物鐘,同時(shí)還要注意排班的均衡性,“排班均衡”是指各個(gè)班型在護(hù)士之間進(jìn)行均勻分配,每個(gè)護(hù)士的勞動(dòng)強(qiáng)度幾乎相同,這主要是照顧護(hù)士的心理健康,避免引起護(hù)士的不滿,引發(fā)消極抗疫的工作局面.根據(jù)調(diào)研的結(jié)果確定了以下5 個(gè)軟約束條件.
軟約束條件1(SC1):每個(gè)排班周期內(nèi)護(hù)士上中班(P 班)次數(shù)不大于規(guī)定值W1.
軟約束條件2(SC2):每個(gè)排班周期內(nèi)護(hù)士上夜班(N 班)次數(shù)不大于規(guī)定值W2.
軟約束條件3(SC3):夜班(N 班)在一個(gè)排班周期內(nèi),其連續(xù)工作次數(shù)計(jì)數(shù)不大于2 次.(連續(xù)工作次數(shù)計(jì)數(shù)統(tǒng)計(jì)規(guī)則為:每相鄰2 次相同班型記為發(fā)生1 次連續(xù)工作,例如NNN 的排班情況記為2 次連續(xù)工作次數(shù)).
軟約束條件4(SC4):中班(P 班)在一個(gè)排班周期內(nèi),其連續(xù)工作次數(shù)計(jì)數(shù)不大于3 次.
軟約束條件5(SC5):一個(gè)排班周期內(nèi),每個(gè)護(hù)士工作的不同班型天數(shù)之差不超過(guò)3 d.
護(hù)士排班的原則是必須滿足硬約束條件,盡可能滿足軟約束條件.滿足硬約束條件的解就是可行解,軟約束條件是盡可能不擾亂護(hù)士的生物鐘和排班的均衡性,關(guān)心護(hù)士的身心健康,把軟約束條件作為目標(biāo)函數(shù)進(jìn)行優(yōu)化,每一個(gè)軟約束條件就作為一個(gè)優(yōu)化目標(biāo),因此護(hù)士排班模型應(yīng)該是一個(gè)多目標(biāo)優(yōu)化模型[15],對(duì)每個(gè)目標(biāo)fi賦予一個(gè)權(quán)重 αi,多目標(biāo)的加權(quán)組合就構(gòu)成護(hù)士排班的目標(biāo)函數(shù).權(quán)重 αi的確定采用層次分析法,層次分析法是把問(wèn)題分解成不同小目標(biāo),每個(gè)小目標(biāo)就形成一個(gè)層次,每個(gè)小目標(biāo)相對(duì)于總目標(biāo)的重要程度就能確定權(quán)重.
粒子群算法是模擬鳥群覓食的群體智能算法,每一只鳥就是一個(gè)基本粒子,鳥群就是粒子群.鳥群覓食的初始狀態(tài)比較雜亂無(wú)章,但鳥在覓食過(guò)程會(huì)向鳥群共享覓食信息,相互學(xué)習(xí),最終找到最優(yōu)覓食點(diǎn).粒子群算法包括初始化粒子群,粒子的適應(yīng)度,粒子的位置和速度的更新,粒子的最優(yōu)位置就是最優(yōu)解.但粒子群算法的迭代過(guò)程容易陷入局部最優(yōu),為了避免獲得的解是局部最優(yōu)解,我們?cè)诹W尤核惴ㄖ屑尤脒z傳智能算法,因?yàn)樗悄M生物進(jìn)化過(guò)程的算法,它的交叉過(guò)程可以組成新的染色體,在新染色體上修改若干基因的值,這種方法有利于尋找全局最優(yōu).
粒子群遺傳算法的具體步驟:
步驟1:錄入護(hù)士排班優(yōu)化模型基本信息,包括護(hù)士編號(hào),護(hù)士所屬科室等參數(shù)值.
步驟2:進(jìn)行染色體(粒子)基因編碼:算法應(yīng)采用兩層編碼技術(shù),第一層編碼表示護(hù)士的編號(hào),第二層編碼表示護(hù)士的排班狀態(tài).如3 名護(hù)士在3 d 內(nèi)的排班編碼如下:
左邊第一層編碼111222333 是護(hù)士的編號(hào)及工作時(shí)間,第一層編碼的長(zhǎng)度就是一個(gè)排班周期;右邊第二層編碼411334142 對(duì)應(yīng)護(hù)士的排班狀態(tài),其中的4,1,2,3 分別表示休息、早班、中班、夜班.對(duì)這兩層編碼的染色體的解釋是:護(hù)士1 在3 d 內(nèi)的工作狀態(tài)411 分別表示休息、早班、早班;護(hù)士2 在3 d 內(nèi)的排班334 分別表示夜班、夜班、休息;護(hù)士3 在3 d 內(nèi)的排班142 分別表示早班、休息、中班.
第二層編碼采用隨機(jī)編碼已經(jīng)滿足了硬約束條件HC1,但有可能無(wú)法滿足其他硬約束條件,此時(shí)需要調(diào)整,采用以下3 個(gè)調(diào)整規(guī)則使其每一條染色體均是一個(gè)可行解.
調(diào)整規(guī)則1:對(duì)于硬約束HC3,按照?qǐng)D1 的班型轉(zhuǎn)移來(lái)進(jìn)行第2 天的排班,對(duì)于任意一名護(hù)士,檢測(cè)其染色體編碼,如果未出現(xiàn)轉(zhuǎn)移圖的轉(zhuǎn)移情況,再一次隨機(jī)生成該護(hù)士的排班狀態(tài),直到所有護(hù)士均滿足HC3 即可,同理對(duì)于HC5,HC6,HC7 執(zhí)行類似的操作.
調(diào)整規(guī)則2:檢測(cè)每一天各班型所需的各科室類型護(hù)士,如果不滿足要求,則替換護(hù)士,直到滿足HC2的不等式為止.
調(diào)整規(guī)則3:統(tǒng)計(jì)每一班型的護(hù)士編號(hào)數(shù),檢測(cè)其是否滿足硬約束HC4,如果有多于數(shù)量要求上限的,則調(diào)整至未滿足數(shù)量下限的班型.
步驟3:粒子個(gè)體初始化,根據(jù)目標(biāo)函數(shù)計(jì)算粒子的適應(yīng)度,對(duì)比適應(yīng)度大小,記錄當(dāng)前最優(yōu)適應(yīng)度.
步驟4:個(gè)體交叉,交叉操作能夠獲得新的染色體,使得種群能夠向前操作.首先選取2 條用于交叉的染色體,如有如下2 個(gè)個(gè)體:
染色體1:122331231|21 103021;
染色體2:132113232|31022110.
選取染色體的n×m位,并隨機(jī)選擇交叉位置,交叉位置隨機(jī)到4,則前4 位編碼保留,從第5 位開始對(duì)第一層編碼進(jìn)行交換,交叉后為:
染色體1:122313232|21 103021;
染色體2:132131231|31022110.
對(duì)于交叉后的染色體1可以看出護(hù)士2多工作了1 d,護(hù)士1少工作了1 d,因此將交叉后的最后一個(gè)2調(diào)整為1,對(duì)于個(gè)體2執(zhí)行相同的操作.這調(diào)整后的染色體變?yōu)椋?/p>
染色體1:122313231|21 103021;
染色體2:132131232|31022110.
通過(guò)以上操作實(shí)現(xiàn)對(duì)第一層的編碼的交叉,可以看出交叉前后護(hù)士的工作狀態(tài)產(chǎn)生了很大的變化,有可能交叉后的染色體會(huì)違反某些硬約束條件,此時(shí)則需要依據(jù)步驟2調(diào)整第二層編碼,以保證交叉后的新染色體能夠滿足硬約束條件.
經(jīng)過(guò)如上操作后便生成了新的粒子.此時(shí)比較新舊粒子的所有目標(biāo)函數(shù)值,如果新粒子的所有目標(biāo)函數(shù)值均不大于舊粒子,此時(shí)新粒子支配舊粒子,便更新粒子;反之,則保存舊粒子;如果新舊粒子互不支配,則隨機(jī)保留一個(gè)粒子.最后將保留下來(lái)的粒子與個(gè)體最優(yōu)支配解比較,在含有支配關(guān)系的情況下,則更新個(gè)體最優(yōu)支配解,保存到最優(yōu)支配解集中,否則隨機(jī)選擇.
步驟5:群體交叉
將種群中的粒子同最優(yōu)支配解集中隨機(jī)抽取的一個(gè)粒子交叉,交叉操作同步驟4,然后比較粒子間的支配關(guān)系,存在支配關(guān)系則選取支配解,否則隨機(jī)選擇支配解,將新產(chǎn)生的粒子群與原群體最優(yōu)支配解集合并成新的最優(yōu)支配解集,在集合內(nèi)進(jìn)行支配關(guān)系比較操作,刪除劣解,如此變形成了新的群體最優(yōu)支配解集.
步驟6:變異
變異操作的對(duì)象為第二層編碼,首先設(shè)定變異因子μ,在變異前產(chǎn)生一個(gè)介于(0,1)之間的隨機(jī)數(shù)Random,如果Random >μ,則相對(duì)應(yīng)的交叉組進(jìn)行變異,反之則不變異.變異完成后比較新舊粒子,存在支配關(guān)系則選取,否則隨機(jī)選擇,之后重復(fù)步驟5.
步驟7:重復(fù)步驟4,5,6,進(jìn)行下一次迭代,直到達(dá)到預(yù)先設(shè)置的迭代次數(shù).
步驟8:最優(yōu)解選取
將所有的非劣解集合并,篩選出最優(yōu)解.在本模型中,存在5 個(gè)目標(biāo)函數(shù),模型中每個(gè)目標(biāo)的取值范圍均有不同,同時(shí)其取值波動(dòng)也不同,同時(shí)在計(jì)算過(guò)程中,某些軟約束可能會(huì)不可避免地被違反,因此為保證每一個(gè)目標(biāo)有著同等的地位,將使用如下方法進(jìn)行最優(yōu)解篩選:
(1)求合并后的非劣解集中各目標(biāo)的最小值 mini,i=1,2,···,5;最大值 maxi,i=1,2,···,5.
(2)計(jì)算每個(gè)粒子的每一個(gè)目標(biāo)的適應(yīng)度值與最小值差值和最大值差值的比值:
其中fi(x)為粒子第i個(gè)目標(biāo)的適應(yīng)度值.如果對(duì)于該粒子的所有Pi都小于0.5,則保留該粒子,否則刪除,通過(guò)該操作可以淘汰掉大量非劣解.
(3)挑選最優(yōu)粒子.經(jīng)過(guò)(2)的篩選后,使用距離法挑選最優(yōu)粒子,距離公式如下:
fi(i)指第i個(gè)目標(biāo)中的最小值.如果D最小,則為最優(yōu)方案.
粒子群-遺傳智能混合算法的具體設(shè)計(jì)流程圖如圖2 所示.
圖2 粒子群-遺傳智能混合算法流程圖Fig.2 Flowchart of particle swarm optimization and genetic intelligent hybrid algorithm
為驗(yàn)證本文的護(hù)士排班優(yōu)化模型和模型的求解算法,采用重慶三峽中心醫(yī)院在抗擊新冠肺炎的護(hù)士排班的數(shù)據(jù),其相關(guān)基本信息如表1 所示.
表1 護(hù)士智能排班的基本信息表Tab.1 Basic information of intelligent nurse scheduling
本文采用Python 語(yǔ)言對(duì)多目標(biāo)護(hù)士排班優(yōu)化模型采用粒子群-遺傳算法進(jìn)行迭代求解,在迭代次數(shù)達(dá)到150 次后,各個(gè)優(yōu)化目標(biāo)的最小值和最優(yōu)值變化已經(jīng)不再明顯,呈現(xiàn)收斂的態(tài)勢(shì),最小值是指在多次迭代后所得的所有解集中,目標(biāo)函數(shù)的最小值,最優(yōu)值是總目標(biāo)函數(shù)最小時(shí)該分目標(biāo)函數(shù)的取值.最優(yōu)值是多個(gè)目標(biāo)所決定的,分目標(biāo)間可能存在沖突,有可能為了整體目標(biāo)函數(shù)達(dá)到最優(yōu)需要犧牲局部分目標(biāo)的最優(yōu).迭代次數(shù)運(yùn)算結(jié)果如表2 所示.
表2 迭代次數(shù)及分目標(biāo)函數(shù)最值Tab.2 Iteration times and maximum value of sub-objective function
采用層次分析法得到各個(gè)分目標(biāo)的權(quán)重為w=(0.291 5,0.064 9,0.359 8,0.083 0,0.200 8),并通過(guò)了一致性的檢驗(yàn),λ=5.394 2,C.R=0.088 <0.1.
因此目標(biāo)函數(shù)為:
將本文的模型及智能求解算法用于三峽中心醫(yī)院抗擊疫情的數(shù)據(jù)進(jìn)行護(hù)士智能排班,排班結(jié)果如表3 所示.從排班結(jié)果可知使用層次分析法得出目標(biāo)2 的權(quán)重0.064 9 最小,與醫(yī)院人工排班的理念一致;目標(biāo)5 保證排班均勻性、平穩(wěn)性.在疫情期間,組織的抗疫護(hù)士人數(shù)較多,人工排班很難考慮到每一個(gè)護(hù)士在一個(gè)周期內(nèi)其排型安排的合理性.
護(hù)士排班采用人工排班方法耗時(shí)很長(zhǎng),且排班的結(jié)果違反目標(biāo)的護(hù)士人次較多,容易導(dǎo)致某些護(hù)士的工作強(qiáng)度加大,可能出現(xiàn)一些不必要的醫(yī)療事故,因?yàn)榕虐嗟牟痪鶆蛞鹱o(hù)士的不滿情緒,在工作中帶有消極情緒.本文的護(hù)士智能排班算法基于護(hù)士排班的優(yōu)化模型,滿足7 個(gè)硬約束條件和5 個(gè)軟約束條件,能滿足疫情管理規(guī)定要求,更符合護(hù)士個(gè)人生理狀態(tài)和排班的人性化.護(hù)士每個(gè)排班周期的中班、夜班工作次數(shù)的減少,連續(xù)上中班、夜班的次數(shù)減少,能夠顯著地減少護(hù)士工作的強(qiáng)度,這在重大傳染病爆發(fā)期間是相當(dāng)重要的.智能排班除了能夠以快速積極的狀態(tài)響應(yīng)疫情,在緊缺的醫(yī)療資源中優(yōu)化配置中,提升人力資源的利用率外,還能夠降低護(hù)士的健康風(fēng)險(xiǎn),醫(yī)院的疫情管理工作也能夠得到有效的提高.