• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
56
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

護理人員換班問題之圖形演算法

Graph Algorithms for the Nurse Shift Exchanging Problem

系 所 別:生 物 資 訊 系 碩 士 班  學號姓名:M09720002  賴  吟  貞 

指導教授:侯  玉  松      博  士 

中  華  民  國  九  十  九  年  八  月 

(2)

在醫院中,護理人員的換班問題為逐漸被重視的問題,我們期望能夠透過實 際的操作換班過程,以解決護理人員換班問題。在過去文獻中指出,護理人員的 換班問題目前尚未發展出較佳的演算法解決這個問題。本論文中將設計一套圖形 演算法(Graph Algorithm)求解護理換班問題。透過結構陣列及相鄰矩陣法建立換 班圖形;再者透過深先搜尋法(Depth-First Search, DFS)及回溯法(Backtracking)找 到可以換班之迴圈換班解,提供護理人員多種換班的方式,以達到護理人員之換 班期望。

關鍵字:護理人員換班問題、圖形演算法、深先搜尋法、回溯法。

           

(3)

In hospitals, nurse shift exchanging problem have been gradually shift attention to the problem, we expect to shift through the actual operation of the process to resolve the nurse shift exchanging problem. In the literatures review, the nurse shift exchanging problem has not yet developed a better algorithm to solve this problem.

This paper will design a set of graph algorithms to solve the nurse shift exchanging problem. Through the structure of the array and the adjacent matrix to establish shift patterns; Furthermore, through depth-first search and backtracking to find the cycle solution of the nurse shift exchanging, multiple shifts in the way of providing nursing staff to meet the shift expectations.

Keywords : Nurse shift exchanging problem、Graph Algorithm、Depth-First Search、Backtracking .

             

(4)

本論文能如期完成,皆蒙指導教授侯玉松老師悉心指導與督促。在進入研究 所就讀的二年期間,侯老師在學業及研究方面細心的指導與建議,即針對做研究 的態度及方法上,幫我進行觀念的培養。而後在研究方向的確立、研究的過程及 撰寫定稿,侯老師皆細心教導,讓我受益匪淺。至此深感師恩浩大,內心充滿無 限之謝意與敬意。 

此外,當然要感謝我的父母,有他們的鼓勵,才更有信心與勇氣繼續深造。

在從小到大的求學過程中,父母無不全力支援,使我無後顧之憂。在此謹以此篇 論文,獻給這些愛我的家人。 

最後感謝在我求學的道路上曾經指導過我的師長、同學及幫助過我的人,所 有在我身旁關心我的人,因為有你們的支持與協助,才能促使我順利完成每一個 階段的學業,你們的鼓勵就是支持我完成論文的原動力,謝謝你們。 

                   

賴吟貞      謹致於  中華大學生物資訊研究所  中華民國九十九年八月 

(5)

第一章 緒論 ... 1

1-1 護理人員排班方式之定義 ... 1

1-2 護理人員換班問題之定義 ... 11

1-3 研究目的 ... 15

1-4 論文架構 ... 16

第二章 文獻回顧 ... 17

2-1 護理人員排班問題之文獻回顧 ... 17

2-2 護理人員換班問題之文獻回顧 ... 18

第三章 護理人員排班表之圖形轉換方法 ... 21

3-1 護理人員排班表之圖形轉換 ... 21

3-2 產生有向迴圈之換班方式進行換班 ... 27

第四章 護理人員換班問題之圖形演算法設計 ... 31

4-1 圖形演算法之設計 ... 31

4-2 從換班圖形中找出有向迴圈之換班解之演算法設計 ... 36

4-2-1 運用深先搜尋法找換班解 ... 36

4-2-2 運用回溯法找換班解 ... 38

4-2-3 深先搜尋法與回溯法之差異 ... 39

4-2-4 檢查硬限制:每班需一位 level 3 的護理人員上班 ... 41

第五章 討論與結論 ... 45

5-1 討論與結論 ... 45

5-2 未來發展方向 ... 45

參考文獻 ... 46

(6)

圖1-1:97 年 7 月第二呼吸照護中心部分護理人員約班表………1

圖1-2:97 年 7 月第二呼吸照護中心部分護理人員排班表………2

圖1-3:上班天數沒有連續超過 7 天………3

圖1-4:上班天數連續超過 7 天………3

圖1-5:小、大夜班隔天不可以接白班………4

圖1-6:大夜班隔天不可以接小夜班………5

圖1-7:每天每個人只能上一種班………5

圖1-8:每個班 level 3 一定要有一個人上班………6

圖1-9:休假天數平均分配給每位護理人員………7

圖1-10:星期六日及國定假日需平均分配給每個人………8

圖1-11:連續三天不要出現休假、上班、休假的組合………9

圖1-12:護理人員個人約班需求………9

圖1-13:沒有跳班(D→E→N)的情況………10

圖1-14:出現跳班(D→E→N)的情況………10

圖1-15:護理人員換班問題,二人可以換班的選擇………12

圖1-16:護理人員換班問題,二人不可以換班的選擇………13

圖1-17:護理人員換班問題,二人不可以換班的選擇………13

圖1-18:護理人員換班問題,三人可以換班的選擇………14

圖2-1:區段兩兩互換示意圖………19

圖2-2:區段兩兩交叉互換示意圖………19

圖3-1:97 年 7 月已完成之部分班表,圈出護理人員欲換班的日期………22

圖3-2:換班之圖形節點中所需之換班資訊………24

圖3-3:建構護理人員換班之圖形節點………24

圖3-4:從圖形節點產生邊線………25

(7)

圖3-6:找出 4 號節點形成有向迴圈之換班解………27

圖3-7:找出 5 號節點形成有向迴圈之換班解………28

圖3-8:找出 2、4、5 號節點形成有向迴圈之換班解………29

圖3-9:有向迴圈對應到 7 月 8 日班表前後之換班方式………30

圖4-1:讀取 7 月 8 日之排班表………31

圖4-2:將 7 月 8 日之結構陣列轉換成圖形節點………34

圖4-3:邊線矩陣………34

圖4-4:換班圖形………35

圖4-5:以深先搜尋法之方式建立其換班樹狀圖………37

圖4-6:以回溯法之方式建立其換班樹狀圖………38

圖4-7:7 月 8 日之換班圖形………39

圖4-8:檢查每班是否至少有一位 level 3 的護理人員值班………41

圖4-9:1、4、5 號護理人員互相換班的結果………42

圖4-10:2、4、5 號護理人員互相換班的結果………42

圖4-11:圖形演算法之流程圖………44

(8)

表2-1:英國與本國排班表之差異比較………18

表3-1:護理人員 7 月 8 日班表轉換成表格方式呈現………23

表4-1:紀錄護理人員的編號及當天值班班別………32

表4-2:將 7 月 8 日的班表轉成陣列儲存………33

(9)

第一章 緒論

1-1 護理人員排班方式之定義

護理人員排班是醫院中每位護理長每月需要面臨的重要課題,為研究此問題,我 們與彰化基督教醫院(簡稱「彰基」)合作,據彰基呼吸照護科曾麗卿護理長所提供的 資料顯示,每位護士輪值排班的班別有:

1. 白班 (D),上班時間為 08:00-16:00 2. 小夜班 (E),上班時間為 16:00-24:00 3. 大夜班 (N),上班時間為 00:00-08:00 4. 休假 (R)

在人力與法規限制下決定每月護理人員排班表,並盡量滿足護理人員的期望。以 97 年 7 月彰基第二呼吸照護中心為例,該月中心有 23 名護士,每位護士在 6 月中旬 先填寫約班期望,綜合為約班表,部分約班表如圖1-1。圖 1-1 約班表顯示王素素在 7 月 1 日要做 JCI/PMR,7 月 5 日期望上白班(約 D),7 月 6 日期望休假(約 R),餘類 推。在約班表左邊會顯示「包班」資訊,例如:王素素期望本月不要排小夜班(不上 E)、洪香香望不要排大夜班(不上 N)等等。

圖1-1:97 年 7 月第二呼吸照護中心部分護理人員約班表

(10)

護理長即根據護理人員的約班表,開始製作每月的排班表。圖1-2 則為 97 年 7 月第二呼吸照護中心部分排班表,為滿足護理人員的期望,王素素在7 月 1 日排休假 (R),以方便做 JCI/PMR,7 月 5、6 日則依其約班,分別排給白班(D)、休假(R)。因 為洪香香期望不要排大夜班,所以圖二顯示其1-6 日排班為 RREEEE,未排大夜班(N)。

圖1-2:97 年 7 月第二呼吸照護中心部分護理人員排班表

在排班時,除了盡量滿足護理人員的約班需求之外,還需要遵守相關規定限制,

而相關規定限制會因為醫院或病房的不同而有所差異,以彰基為例,歸納出下列排班 規定必須遵守,稱為硬限制:

1. 上班天數不可連續超過 7 天(≦ 7 天),後面一定要休假。如圖 1-3 所示,郭 雅雅7 月 19-25 日的排班為 NNNNNNR,連續上 6 天大夜班(N)之後接 1 天 的休假(R),這樣是符合此項規定的。但是若是如圖 1-4 中,林純純 7 月 2-10 日的排班為NNNNNNNNR,連續上 8 天大夜班(N)之後接 1 天的休假(R),

這樣是不符合此項規定的。而規定上班天數不可以連續超過7 天之原因在於 期望護理人員能有良好的服務品質及工作表現,因為連續工作8 天以上會使 得護理人員的工作士氣降低,為維持護理人員之工作熱忱及適當休息,即規 定上班天數不可連續超過7 天。

(11)

圖1-3:上班天數沒有連續超過 7 天

圖1-4:上班天數連續超過 7 天

2. 小、大夜班隔天不可以接白班。而小、大夜班隔天不可以接白班之原因是因 為小夜班從下午4 點值班至晚上 12 點之後若接白班,早上 8 點又要繼續工 作,中間只間隔8 小時的休息時間;而大夜班是從凌晨 12 點值班至早上 8 點之後又連續接著早上8 點的白班繼續工作,連續工作二個時段且工作時間 過長,會讓護理人員過於勞累而降低工作效率,因此規定小、大夜班之後不 能接白班。

(12)

如圖1-5 中顯示小夜班(E)、大夜班(N)之後都是接休假(R)的排班組合較多,

這樣可以讓護理人員在小、大夜班之後獲得充分的休息及調整作息的時間。

舉例來說:詹琴琴7 月 11-14 日的排班為 EEER,小夜班之後接休假,賴姿 姿7 月 11-15 日的排班為 NNNNR,大夜班之後亦是接休假,這樣是符合規 定的。而紀秀秀7 月 13-17 日的排班為 EEEDD,林珊珊 7 月 15-20 日的排班 為NNNNDD,二人的排班都是違反其硬限制之規定。不過白班後面可以接 小、大夜班,因為白班至隔天的小、大夜班中間間隔24-32 小時的時間,可 以有充分的休息後再值班,但是相反過來小、大夜班之後不可以接白班。

圖1-5:小、大夜班隔天不可以接白班

3. 大夜班隔天不可以接小夜班。如圖 1-6 所示,王筑筑 7 月 11-16 日的班表為 NNREEE,在二天大夜班之後接著休假一天,休假完再接小夜班是符合規定 的;而游敏敏7 月 13-18 日的班表維 NNNNEE,連續工作四天的大夜班之後 接著二天的小夜班是不符合規定的,會違反硬限制。因為大夜班隔天接小夜 班,中間只間隔八小時的休息時間,無法讓護理人員獲得充分的休息,若帶 著疲憊的身心繼續上班,會影響到護理人員的工作效能,於是規定大夜班隔 天不可以接小夜班。

(13)

圖1-6:大夜班隔天不可以接小夜班

4. 每天每個人只能上一種班。如圖 1-7 所示,醫院規定每位護理人員每天只能 上一種班別,目的是希望護理人員能夠有適當的工作時間,讓每位護理人員 在當天值班可以發揮最大的工作效能,若工作時數過長會導致護理人員工作 士氣及精神力降低,因此讓每位護理人員可以擁有適當的工作時間及充分休 息的時間。

圖1-7:每天每個人只能上一種班

(14)

5. 強制要求每個班 level 3 一定要有一個人上班。而 level 3 的護理人員則是由 護理長依護理人員能力狀況及工作年資來作為判斷的依據,醫院會規定每班 都需有一位level 3 的護理人員上班之原因是因為 level 3 的護理人員年資較 久、工作經驗較多,若遇到緊急且臨時的狀況可以立即處理;若資歷較淺的 護理人員有可能會慌了手腳而耽誤病患就醫的時間。

如圖1-8 所示,黃娟娟、陳珍珍、程君君及蔡婷婷四位護理人員皆為 level 3 層級的護理人員,而規定需要每班至少有一位level 3 的護理人員上班,舉例 來說:在7 月 15 日的排班中,黃娟娟值小夜班(E)、程君君值大夜班(N)、蔡 婷婷值白班(D),可知白班、小夜班、大夜班都有一位 level 3 的護理人員值 班;而7 月 16 日的排班中,黃娟娟值小夜班(E)、陳珍珍及程君君值大夜班 (N)、蔡婷婷值白班(D),至少每班都有一位 level 3 護理人員值班,其餘的 level 3 護理人員則為休假,餘類推。

透過護理長篩選出level 3 的護理人員,並在排班時安排每班至少都有一位 level 3 的護理人員值班,以提高護理人員的服務品質與工作表現。

圖1-8:每個班 level 3 一定要有一個人上班

(15)

6. 需滿足每日白班(D)、小夜班(E)及大夜班(N)護理人員需求數。

以彰基第二呼吸照護中心為例,每月白班、小夜班、大夜班三班人力配置是 白班6 人、小夜班 5 人、大夜班 5 人,而假日三班人力配置則是白班 5 人、

小夜班5 人、大夜班 5 人,護理長在排班時需滿足每天所需之上班人數。

除了上述排班規定硬限制之外,彰基多位護理長還歸納下列護理人員的一般個人 需求,排班時也需盡量滿足,稱為軟限制。不過軟限制不像硬限制一定要符合規定,

因為軟限制是屬於護理人員的個人需求及期望,是可以被違反的。以下是軟限制的條 件:

1. 休假天數需平均分配給每位護理人員。如圖 1-9 所示,每天輪流休假的人數 是平均約7-8 位左右,這樣每天固定輪休之數量對每位護理人員而言,休假 平均分配才會公平,亦可滿足護理人員的休假期望。

圖1-9:休假天數平均分配給每位護理人員

(16)

2. 星期六日或國定假日需平均分配給每位護理人員。如圖 1-10 所示,以彰基 第二呼吸照護中心97 年 7 月為例,共計 4 週。護理長會針對每月每位護理 人員的約班需求及需要平均分配假日的考量之下,將每週六日平均分配給每 位護理人員,而統計7 月份的排班表後發現每位護理人員每月每週六日所獲 得的總休假天數平均為4 天。因此護理長在排班時,會平均分配星期六日或 國定假日給每位護理人員,讓每位護理人員在每月值班時都可以享有星期六 日或國定假日輪休的機會,亦可滿足護理人員休假的期望。

圖1-10:星期六日及國定假日需平均分配給每個人

3. 連續三天不要出現休假、上班、休假的組合。如圖 1-11 所示,黃娟娟 7 月 26-30 日的班表為 RRDDR,沒有出現休假、上班、休假的狀況;但是在程 君君7 月 22-24 日的班表為 RER,出現連續三天休假、上班、休假的狀況,

是違反軟限制條件的,因為連續三天出現休假、上班、休假的狀況會中斷護 理人員的連續假日,而護理長在排班時會盡量避免出現休假、上班、休假的 排班情況產生,讓護理人員能夠享有完整的連續假日,而透過連續假日護理 人員可以獲得充分的休息。

(17)

圖1-11:連續三天不要出現休假、上班、休假的組合

4. 護理人員個人約班需求。如圖 1-12 所示,護理人員可以在表格上方約班,

而表格下方則為護理長實際排出來的班表。舉例來說,郭雅雅在7 月 9-11 日期望休假(約 R),實際排班是 RRR,7 月 14-19 日期望休假及大夜班(約 R、

N),實際排班是 RRRRRN,皆符合郭雅雅的約班期望,餘類推。因為每位 護理人員在每月除了上班之外,也會有其他的安排或生活規劃,所以護理長 在排班時,會盡量滿足護理人員的約班需求。

圖1-12:護理人員個人約班需求

(18)

5. 跳班(D→E→N)。護理長在排班時會盡量避免出現跳班(D→E→N)的狀況,

因為跳班會影響到護理人員的生理時鐘。舉例來說,如圖1-13 中王筑筑 7 月1-6 日的班表為 DEENNN,並沒有出現跳班的情形,因為白班(D)之後接 二個小夜班(E),最後是三個大夜班(N),這樣可以慢慢適應值班的時間從白 班到小夜班,再接著上大夜班,若DEN 都只排一天,護理人員的生理時鐘 會很難適應,因此便會違反此規定。如圖1-14 所示的,詹琴琴在 7 月 1-3 日出現跳班(D→E→N)的情況,因為連續三天都排不一樣的班,上班時間從 D→E→N 會將護理人員的生理時鐘會亂掉,所以護理長會盡量避免出現跳 班(D→E→N)的排班出現。

圖1-13:沒有跳班(D→E→N)的情況

圖1-14:出現跳班(D→E→N)的情況

(19)

每月班表的產生,是由護理長針對每月的護理人員約班期望進行排班,並根據上 述多項護理人員約班需求與排班規定,排出滿足所有硬限制的班表,並盡量滿足護理 人員的約班期望,也就是盡量符合軟限制的班表。因此,軟、硬限制皆為護理長在排 班時需要考量的條件。

1-2 護理人員換班問題之定義

本文最主要研究的部分在於護理人員的換班問題,針對已完成班表進行護理人員 個人需求及期望做微調,針對二人某日某班互換、或是三人以上某日某班彼此互換,

形成多人多種班表互換的可能,若只考慮一種換班方式讓二人某日某班互換,而實際 情況下需要換班的護理人員提出指定換班班別的需求,而我們找到的二人互換之換班 解可能就會不符合護理人員的換班期望,因此才會提出多人換班的方式提供護理人員 多種換班的選擇。

換班問題之重點在於護理人員提出某日某班表需要換班的需求之後,在不違反硬 限制的情況之下,從護理人員提出換班的當天班表中尋找可以換班的可能,進而提供 可換班的選擇並進行換班的動作,以解決護理人員所提出的換班需求。而換班的方式 則有二人兩兩互換,三人或三人以上互相換班的可能,提供給需要換班的護理人員多 種換班的選擇。

以二人某日某班別互換的換班方式舉例來說:如圖1-15 所顯示的,林珊珊在 7 月26 日的班表為大夜班(N),若林珊珊因為個人因素的關係,提出需要換班的需求。

在這樣的情況下,我們就可以提供給需要換班的護理人員多種換班的選擇。在林珊珊 提出換班的需求之下,但又不能違反硬限制,我們可以在林珊珊提出換班的同一天,

尋找可以換班的護理人員。於是找到同一天游敏敏的休假(R)可以與林珊珊的大夜班 交換,換班後不違反硬限制,不可以隨便找一個人的某日某班做交換,因為這樣有可 能會嚴重違反硬限制。

(20)

圖1-15:護理人員換班問題,二人可以換班的選擇

我們不只有提供一種換班的選擇,會列出所有可以兩兩互換班別的可能,讓護理 人員可以選擇自己想要換班的人及班別。再以圖1-15 為例,林珊珊的大夜班除了可 以和游敏敏的休假交換之外,亦可以和同一天紀秀秀的小夜班(E)交換,這兩種換班 選擇都不會違反硬限制,因此就可以提供林珊珊兩種換班的方式,可以從中選擇想要 換班的護理人員及換班班別。透過這樣的方式,協助護理人員能夠找到想要換班的人 及班別。

在尋找是否可以換班的過程中,也有可能找到無法換班的情況。舉例來說:在圖 1-16 中顯示黃娟娟在 7 月 15 日的班表為小夜班(E),若因身體不適而提出請假的要 求,需要找到其他的護理人員換班。在考慮硬限制的條件之下,又不可以與同一天王 素素的休假(R)及洪香香的休假(R)換班,王素素會違反硬限制:大夜班之後不可以接 小夜班,若換班後王素素的班表則會違反此規定;而洪香香的班表亦會違反硬限制:

上班天數不可以連續超過7 天(≦7 天)的條件,因而無法與王素素及洪香香的休假換 班。不過圖1-16 為部分班表,我們仍可繼續在已完成排班之整份班表中尋找是否有 可換班的組合,若找到可換班的方式即可提供護理人員進行換班,以滿足其需求。

1

2

(21)

圖1-16:護理人員換班問題,二人不可以換班的選擇

以三人某日某班別互換的換班方式舉例來說:如圖1-17 所示,林珊珊 7 月 8 日 晚上值小夜班(E),但是晚上臨時有事情,想要換成白班(D),但是又不可以直接和王 筑筑7 月 8 日的白班交換,因為換班之後王筑筑 7 月 8-9 日的班表前後會變成小夜班、

白班(E→D),會違反硬限制。

圖1-17:護理人員換班問題,二人不可以換班的選擇  

 

(22)

因此,我們需要提供其他換班方式,讓需要換班的護理人員可以有換班的選擇,

於是就從三人或三人以上來尋找可以換班的可能。以圖1-17 的例子來說,林珊珊 7 月8 日晚上因為有事情而無法值小夜班(E),於是提出想要換成白班(D)的需求,圖 1-17 中共有六位護理人員,在考慮硬限制的條件之下,林珊珊的小夜班不能直接與王筑筑 的白班交換,亦不能與其他護理人員換班,於是無法從二人兩兩互換的換班方式中找 出換班的可能,就再加入第三位護理人員來考慮換班的可能性,找出可換班解。

在考慮硬限制,而不考慮軟限制的情況下,在林珊珊、葉玲玲及王筑筑三位護理 人員之間,找到一組迴圈之換班解。如圖1-18 所顯示,我們在林珊珊、葉玲玲及王 筑筑三位護理人員之間進行換班,而換班步驟是同時進行:

第一步驟:先將7 月 8 日王筑筑的白班與葉玲玲的休假,換班後王筑筑的班表換成休 假,雖然換班之後王筑筑7 月 8- 10 日的班表會出現違反軟限制休假、上班、休假 (R→D→R)的情況,但是護理人員的換班問題並不考慮軟限制,只考慮硬限制是否有 違反,若無違反硬限制即可換班。而換班後葉玲玲的班表則換成白班,7 月 7-8 日前 後班別接小夜班之後白班(E→D),會違反硬限制。

第二步驟:再將葉玲玲的白班與林珊珊的小夜班交換,換班後葉玲玲的班表便不會違 反硬限制,而林珊珊則換成白班,是期望換班之班別,即換班成功。

   

圖1-18:護理人員換班問題,三人可以換班的選擇

(23)

我們期望提供給護理人員在排班系統上看到自己的排班表後,若有不符合自己期 望的班表,或是臨時有事需要換班,可以提供護理人員來提出自己欲換班的日期及班 別,而系統會找出符合規範之可換班選擇,並呈現欲換班當天可和自己換班的人及班 別,提供護理人員多種換班選擇。

因此,護理人員的換班問題就是在護理長已完成排班之班表中,針對某位護理人 員提出某日某班因個人需求或臨時需要換班的情況下,進行換班的動作,而換班的過 程中必須符合硬限制。在某位護理人員某日某班提出需要換班的同時,找出符合硬限 制的條件且不限換班人數的互相換班,期望找出多種換班選擇,以提供護理人員換班 之需求。換班問題重點在於解決護理人員的個人需求或緊急調班狀況,以滿足護理人 員的換班期望。

1-3 研究目的

護理長以人工方式產生出排班表是十分耗時的,後來學者研究並撰寫出許多程式 來協助護理人員的排班,但是電腦程式跑出來的排班表不一定會完全滿足所有護理人 員的上班需求及期望,程式所考慮到的是符合所有軟、硬限制之規定,這麼多年來,

都無法透過程式的方式找出排班之最佳解。

因此本文研究的目的就是期望能在電腦程式跑出當月排班表之後,針對每位護理 人員的個人需求及期望做微調,若護理人員臨時有需要請假或換班,可以在當月欲換 班之某日選出欲換班的班別,程式則會找出符合硬限制之規定且可與其他護理人員換 班的班別選項,針對自己的需要來進行個人換班,滿足每位護理人的需求及期望,以 提高工作滿意度。

(24)

1-4 論文架構

論文的第一章為護理人員的排班問題定義,主要在介紹護理人員的排班班別、約 班與排班及排班時需要考慮到的軟、硬限制,接著介紹護理人員的換班問題及研究目 的,在不違反硬限制的條件之下,找出二人或三人以上的換班方式,提供多種換班選 擇,以解決護人員換班之需求;第二章主要是文獻回顧,針對之前的護理排班問題做 重點的回顧,接著是本文的重點,護理人員換班問題的論文回顧,之前論文所提到的 換班方式為區段(Block)換班,會在此章節做重點的介紹;第三章則是本文所提出的一 個新想法,開始說明如何將護理人員的班表轉換成圖形,並產生可以換班的迴圈 (Cycle)之換班方式;第四章主要在介紹圖形演算法的設計,並運用圖形演算法在換班 圖形上找出可以換班的有向迴圈(Cycle)之換班解,提供給護理人員多種換班選擇,讓 護理人員可以選擇自己想要換班的人及班別;第五章則是針對本文做最後的討論及結 論,並提出護理人員換班問題之未來展望,期許換班問題可以持續深入,以達到真正 的解決護理人員的換班問題。

(25)

第二章 文獻回顧

2-1 護理人員排班問題之文獻回顧

從1976 年開始,Miller[18]即已經研究護理人員排班問題。在 2000 年經資訊學 者研究證明[8、19],護理人員排班問題是 NP-hard 的難題,因此護理人員排班困擾許 多護理長,至今也尚未發展出快速的演算法,可以得到最佳的排班結果。早期在求解 護理人員排班問題,多為設計最佳化演算法[1-7、16-18],但是程式的執行效率不佳,

非常耗時。

在過去文獻當中,E.K. Burke 曾經利用多種演算法來解決護理人員排班問題,例 如:禁忌搜尋法(tabu search)二篇[9、14]、變動鄰域搜尋法(variable neighbourhood search) 二篇[10、12]、基因演算法(genetic algorithm)三篇[11、13、15]等,但是過去文獻的缺 點,有些缺乏實際的醫院護理人員排班資料測試,僅止於理論探討;有些是國外所開 發的系統與模式,因國外護理人員輪值的考量與國內不盡相同,輪值週期亦有差異,

無法直接應用於國內護理人員輪值問題上。另外,目前國內文獻未詳盡考慮排班限 制,亦無法應用於實務排班。

最新的國內相關文獻為2007 年交通大學運輸科技與管理學系韓復華教授所著 [7],該論文採用二階段整數規劃的方法,解決護理人員排班問題。該論文的優點是 定義護理人員排班問題相當詳細,但是從論文的測試結果來看,以新竹署立醫院的 20 名護士的排班,在二階段分別需先產生 3520、4660 個變數與 5592、4939 個限制 式,才能使用ILOG OPL Studio 軟體,解出其整數規劃式的答案。對護理長而言,要 學習如何產生8000 多個變數、10000 多個限制式,還要學習數學規劃軟體,而且醫 院還需購買ILOG OPL Studio 軟體,就實務層面來看是行不通的。我們曾與彰基多位 護理長進行溝通,發現各護士需求與約班方式不同,護理長排班方式也有差異。所以,

很難直接將程式導入國內外的護理人員排班系統應用在醫院。

(26)

2-2 護理人員換班問題之文獻回顧

護理人員的換班問題到目前為止這方面的研究論文篇幅並不多,許多學者都只考 慮到排班問題,卻鮮少人去發現排班問題後續所產生的問題,若排班表出來後護理人 員不滿意呢?護理人員該如何透過護理排班系統來協助他們換班,而不需要透過護理 長以人工的方式進行微調,因為這樣會耗時又耗力。

目前在 2004 年 E.K. Burke 所著的論文[12],該論文「Variable Neighborhood Search (VNS) for Nurse Rostering Problems」中所採用的方法為變動臨域搜尋法(variable neighborhood search,VNS),文中提到運用區段的換班方式,以解決護理人員換班問 題。而文中則是以英國(United Kingdom,UK)的醫院為例,護理人員的班別與本國醫 院的規定也有所差異,如表2-1 所示,英國的排班又細分為五個班別:

表2-1:英國與本國排班表之差異比較

UK Shift Day (D) 日班 Early (E) 早班 Late (L) 晚班 Night (N) 大夜班

R 休假

舉例說明文中運用區段換班的方式如圖2-1 中所顯示的,而圖中圈起來的部分所 指的是某位護士某一區段班表。圖中Nurse A 週一到週四的班表和另一護士 Nurse C 同一時段的一整段班表互換,這樣的換班方式稱為區段換班,透過這樣換班的方式,

期望能滿足護理人員的換班需求。

Taiwan Shift D 白天班 E 小夜班 N 大夜班 R 休假

(27)

圖2-1:區段兩兩互換示意圖

文中除了區段兩兩互換之外,有提到另一種區段互換的方式,也就是區段兩兩交 叉換班之方式。舉例來說:如圖2-2 所顯示的,Nurse A 週一的早班(E)和週三的晚班 (L),與 Nurse C 週一的大夜班(N) 和週三的早班(E)交叉互換,餘類推。透過區段交 叉互換的換班方式來找到更符合護理人員的個人換班需求及期望。

圖2-2:區段兩兩交叉互換示意圖

該論文的優點是將換班需求定義的相當簡單,將欲換班的某一段班表與另一段之 班表互換;但是從論文的結果來看,需花更多時間尋找可互換的區段,且一整段班表 互換的結果並沒有辦法同時考慮到硬限制,互換之後有可能會違反更多的硬限制,就 實務層面來看,既耗時又費工,且又不一定可以找到最佳的換班方式,如此一來這樣 的方式是不可行的。

(28)

雖然國外學者所發表的論文有開始在關注換班的問題,但是尚未找到完善的解決 方法。為研究護理人員換班問題,透過實際的操作換班過程,期能找出更有效率的方 式產生換班之方法,提供給每位護理人員更多的換班選擇,以降低護理長的工作負 擔,並達到彰基護理人員的換班需求與期望。

根據過去文獻都沒有解決到護理人員的換班問題,故本論文將使用圖形演算法 (Graph algorithm)來解決護理人員換班問題,將於第三章及第四章詳細介紹。

(29)

第三章 護理人員排班表之圖形轉換方法

3-1 護理人員排班表之圖形轉換

我們將運用圖形演算法來解決護理人員的換班問題,而圖形演算法中很重要的就 是圖形,圖形(Graph) 指的是以邊(Edge)將節點(node)連接起來的物件。因此,我們需 要考慮到的是如何將護理人員的排班表轉換成圖形?問題的解答在於將已完成之排 班表的某日轉換成圖形,意思就是將欲換班那天的每一位護士當作一個節點,將每一 個節點建構完成後,再列出每個節點可以允許換班的班別,若其中某二個節點可以互 相換班便將兩節點之間標上邊線,即可建構出某日班表轉換成圖形的動作。

在某日班表轉換成圖形的過程中,需要考慮硬限制,軟限制則不需要考慮。硬限 制又細分為直行條件及橫列條件:

(一) 直行條件

(1) 需滿足每日白班(D)、小夜班(E)、大夜班(N)之護理人員需求數。

(2) 強制要求每個班 level 3 一定要有一個人上班。

(二) 橫列條件

(1) 上班天數不可連續超過 7 天( ≦ 7 天),後面一定要休假。

(2) 小、大夜班之後不可以接白班。

(3) 大夜班之後不可以接小夜班。

排班表的某一天(一天為一直行)必須滿足所有護理人員需求的硬限制稱為直行 條件。若只考慮直行條件的情況下,需滿足每天每班的護理人員需求數是可以被忽略 不用檢查的條件,因為我們是在某一天的班表中交換班別,並不會影響到當天的值班 人員數。而每班level 3 一定要有一個人上班亦先忽略不做檢查,我們先將所有可能 的換班解都先列出來,並列出所有多人多種換班的有向迴圈之換班解,再來考慮限制 level 3 的人員上班之條件。

(30)

考慮完直行條件後,接著考慮橫列條件。橫列條件指的是每位護理人員每月(一 月為一橫列)的排班組合是否符合硬限制之橫列條件,需要將某日欲換班之班表前後 班別都列入考慮,在不違反橫列限制的情況下,才能確實的找出可以換班的可行解。

舉例來說,如圖 3-1 所顯示的,我們列出彰基 97 年 7 月第二呼吸照護中心部分 護理人員已完成之排班表,若林珊珊7 月 8 日原本排小夜班,但因為當天晚上臨時有 其他重要事情需要換班,而林珊珊提出換班的需求,我們就需要在班表中找出可換班 解,提供給護理人員做換班的選擇。

圖3-1:97 年 7 月已完成之部分班表,圈出護理人員欲換班的日期

所以需要將 7 月 8 日這天的排班表轉換成圖形,首先必須將圖 3-1 中的六位護理 人員之班表轉換成圖形節點,才能夠一步一步建構出換班圖形。而班表中六位護理人 員的圖形節點需要具備幾個重要的換班資訊:

1. 每位護理人員的編號 2. 護理人員當天的班別 3. 可以換班的班別選項

(31)

首先我們先將每一位護理人員標上編號,如表 3-1 所示,將六位護理人員標上編 號從1 號編到 6 號,並列出原本排班之班別及可換班之班別,提供詳細的換班資訊,

以便接下來將班表轉換成圖形節點。而可換班之班別的產生方式則是需符合硬限制之 橫列條件:

(1) 上班天數不可連續超過 7 天(≦7 天),後面一定要休假。

(2) 小、大夜班之後不可以接白班。

(3) 大夜班之後不可以接小夜班。

在不違反上述硬限制之規定的情況下,找出可以換班的班別。舉例來說:編號1 號的游敏敏原本班別為大夜班(N),而 7 月 7-9 日的班表為 NNN,在考慮硬限制之後,

大夜班之後不能接白班,亦不能接小夜班,因此7 月 8 日若要換班,只能換休假。而 編號2 號的王筑筑原本班別為白班(D),7 月 7-9 日班表為 DDD,小、大夜班之後都 不能接白班,因此7 月 8 日也只能換休假,類餘推。透過這樣的方式可產生出六位護 理人員所有可以換班的班別。

在林珊珊提出 7 月 8 日的小夜班想要換班的需求之後,我們便以 7 月 8 日這一天 的班表為例,並仔細考慮換班前後是否符合硬限制條件,便可以產生出表3-1 之可換 班之班別,讓我們可以更清楚地了解六位護理人員之間可換班之關係,藉由表3-1 的 換班資訊可以提供我們將7 月 8 日之班表轉換成換班圖形。

表3-1:護理人員 7 月 8 日班表轉換成表格方式呈現

護理人員 編號 原本班別 可換班之班別

游敏敏 1 N R

王筑筑 2 D R

陳梅梅 3 E R

葉玲玲 4 R E

紀秀秀 5 E D, N, R

林珊珊 6 E D, R

(32)

接著我們利用表 3-1 的換班資訊建構出六位護理人員的節點,將 7 月 8 日這天 的班表轉換成圖形節點。而每一位護理人員對應一個節點,每一個節點中會紀錄表 3-1 的換班資訊,如圖 3-2 所示,我們將每一個節點細分成三個欄位:

第一個欄位:放入可代表每一位護理人員的編號 第二個欄位:護理人員當天值班之班別

第三個欄位:在不違反硬限制的條件下,所有可以換班的班別

圖3-2:換班之圖形節點中所需之換班資訊

實際舉例來說,我們以表3-1 的換班資訊可以建構出如圖 3-3 的圖形節點,而第 一個欄位放入編號1 號代表游敏敏,第二個欄位放入游敏敏原本的班別:大夜班(N),

第三個欄位經考慮符合硬限制之規定後,放入可換班的班別:休假(R),餘類推。

圖3-3:建構護理人員換班之圖形節點 1

N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E 護理人員編號

原本班別 可換班之班別

(33)

將所有換班資訊運用在換班圖形之節點的轉換後,會建構出如圖3-3 的換班圖 形,於是我們便可以從圖3-3 中找出換班圖形之節點彼此之間的關係,指的是從圖形 節點的資訊中找出是否有換班的可能。

透過圖3-3 的換班圖形節點,找出節點彼此之間的換班關係便可找出節點之邊 線。從圖3-3 中所表示的護理人員換班之圖形節點中,找出兩兩節點中可以換班的班 別選項,便可以在兩兩節點中找出有方向性之邊線。

邊線的產生方式為某節點的第二個欄位班別與另一節點的第三個欄位放入可換 班之班別,若有相同之班別代表可以互相換班,便找出兩節點之間的邊線。舉例來說:

如圖3-4 所示,1 號節點中的第二個欄位放入原本的班別為大夜班(N),而 5 號節點中 的第三個欄位放入可換班之班別為白班(D)、大夜班(N)、休假(R),因為 5 號節點可以 允許換成大夜班,所以1 號節點的大夜班可以換到 5 號節點上。由於我們是將 1 號節 點的大夜班換至5 號節點,因此可以在 1 號節點與 5 號節點之間畫上邊線,邊線方向 則是由1 號指向 5 號。而 3 號節點的第二個欄位為 E,第三個欄位為 R,而 4 號節點 的第二個欄位為R,第三個欄位為 E,因此兩節點的班別可以互換,邊線方向則為雙 向箭頭,餘類推。

圖3-4:從圖形節點產生邊線 1

N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(34)

透過上述之邊線產生方式,可以建立換班之圖形節點所有的換班關係。如圖3-5 所顯示的,我們逐步將邊線完成後,找出所有節點之間的換班關係,即可從圖3-5 的 換班圖形中找出可循環換班的換班方法,提供給護理人員進行換班,以滿足護理人員 的換班需求。

圖3-5:完成邊線,建立換班圖形

因此,透過護理人員提出換班需求之後,我們將班表轉換成圖形的步驟如下:

1. 護理人員提出某日某班需要換班之資訊

2. 將護理人員提出某日某班需要換班的當天之班表轉換成圖形節點 3. 建構出圖形節點之後,找出節點之間的換班關係,畫出邊線

當護理人員提出某日某班需要換班的需求之後,我們就將換班問題之目標鎖定護 理人員提出換班需求的當天,將護理人員標上編號、當天值班之班別以及可以換班之 所有班別列出來,形成換班之圖形節點,再利用節點之間的換班關係找出邊線,如圖 3-5 中顯示林珊珊提出 7 月 8 日換班需求之後,所建立的換班圖形。

1 N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(35)

3-2 產生有向迴圈之換班方式進行換班

透過上述的換班圖形,可以協助我們提供給需要換班的護理人員找到可換班的人 及班別。而換班方式有二人兩兩換班或三人以上換班所產生的有向迴圈之所有換班 解。在換班圖形中,一個迴圈即代表一種換班解,因此我們在換班圖形中,最重要的 部分就是找出所有的換班迴圈,列出所有迴圈之換班方式,以提供護理人員多種換班 的選擇。

以圖3-6 為例,若 4 號護理人員提出換班需求,我們則以 4 號節點作為出發點,

從4 號節點開始尋找是否有回到 4 號節點的迴圈,若找到即為一個迴圈之換班解。而 4 號護理人員原本的班表為休假(R)可以和 3 號護理人員小夜班(E)兩兩互相交換,亦 可以和5 號、6 號護理人員小夜班(E)兩兩互相交換,餘類推。若 4 號護理人員提出換 班的需求,我們以編號的方式來表示迴圈之換班解,並列出所有可以換班的選擇:

(1) 4 → 3 → 4 (2) 4 → 5 → 4 (3) 4 → 6 → 4 (4) 4 → 1 → 5 → 4 (5) 4 → 2 → 5 → 4 (6) 4 → 2 → 6 → 4

圖3-6:找出 4 號節點形成有向迴圈之換班解 透過換班圖形產生循環換班解之方式,提供4 號護理人員有多種換班之選擇,可 以從中挑選出自己想要換班的人或換班班別,以滿足護理人員的換班期望。

1 N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(36)

但是本文重點在於處理多位護理人員的換班問題,不僅是可以找出二人兩兩互相 換班的可能,亦能從三人或三人以上找出所有的換班可能,以提供護理人員多種換班 的選擇。以圖3-7 為例:若 5 號護理人員提出換班需求,所以我們以 5 號節點作為出 發點,找出可以回到5 號節點的有向迴圈之換班解。因此,我們找到 5 號護理人員的 小夜班(E) 可以直接與 4 號護理人員的休假(R)互相換班,這是一種換班方式。我們亦 可找到三人的迴圈之換班方式,例如:5 號的小夜班可與 4 號的休假換班,而 4 號的 休假亦可與1 號的大夜班換班,1 號的大夜班又可以與 5 號的小夜班換班,形成一個 換班迴圈,這又是一種換班的方式,餘類推。因此,我們則可以從圖3-7 中找出所有 的有向迴圈之換班選擇:

(1) 5 → 4 → 5 (2) 5 → 4 → 1 → 5 (3) 5 → 4 → 2 → 5

圖3-7:找出 5 號節點形成有向迴圈之換班解 1

N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(37)

另外,護理人員亦可提出想要換班之班別,再以圖3-7 為例:若 5 號護理人員提 出換班需求,且希望將小夜班(E)換成白班(D),為滿足護理人員之換班期望,5 號護 理人員的小夜班又不能直接與2 號護理人員的白班互換,會違反硬限制,於是再加入 一位護理人員進來考慮可以換班的方法。如圖3-8 所顯示的,我們可以在圖中找出 2、

4、5 號護理人員的有向迴圈之換班方式。以 5 號節點為出發點,尋找可以回到 5 號 節點的有向迴圈之換班解。依照5 號護理人員的換班需求,將 2、4、5 號的班別同時 互換5 號的小夜班(E)同時與 4 號休假(R)及 2 號的白班(D)交換,換班後 5 號護理人員 會換成白班,4 號護理人員會換到小夜班,而 2 號護理人員會換到休假。換班後便可 以滿足5 號護理人員想將小夜班換成白班的換班需求。由於 5 號護理人員提出指定換 班的需求,我們只能找到一組有向迴圈之換班方式:

(1) 5 → 4 → 2 → 5

圖3-8:找出 2、4、5 號節點形成有向迴圈之換班解

在圖3-8 中,我們可以找出一組有向迴圈之換班方式,將換班圖形的換班迴圈對 應到7 月 8 日班表中,如圖 3-9 所示,圖左為原本班表,經由換班迴圈的換班之後,

將2、4、5 號護理人員之間的班表同時互換,形成圖右之換班之後的班表。

1 N R

3 E R 5

E D, N, R

4 R E

2 D R 6

E D, R

(38)

圖3-9:有向迴圈對應到 7 月 8 日班表前後之換班方式

透過上述之方式可找出所有的有向迴圈之換班方式,而從換班圖形中可得知一個 迴圈代表一種換班方法,藉由某日班表轉成換班圖形,我們可以從中找出所有的有向 迴圈之換班解,提供護理人員多種換班方式,可以選擇自己想要換班的人或班別。

不過醫院中每個單位病房之護理人員並不只六位,為解決護理人員數量多而繁雜 的圖形轉換過程,則必須透過圖形演算法來解決這樣的問題,其演算法的設計方式將 詳述於第四章。

換班後

(39)

第四章 護理人員換班問題之圖形演算法設計

4-1 圖形演算法之設計

在3-1 節所提到的換班圖形是如何透過圖形演算法來轉換呢?最重要的是護理人 員提出某日某班需要換班的需求,透過換班資訊將護理人員某日班表轉換成換班圖形 之節點,並透過節點之間的換班資訊建立邊線,形成換班圖形之後便可找出循環換班 之方式。

如圖4-1 所顯示的,在護理人員提出換班的需求之後,我們便可以將護理人員所 提出的換班日期7 月 8 日當天的班表資料讀取出來。

圖4-1:讀取 7 月 8 日之排班表

將7 月 8 日之班表讀取出來之後,可以紀錄在陣列中。而讀取出來的資料有:

1. 護理人員的姓名 2. 當天的值班班別

讀取出資料後,我們先將用編號代表護理人員的姓名,依序將每位護理人員標上編 號,例如:第一位護理人員為游敏敏,標上編號1 號;第二位為王筑筑,標上編號 2 號,餘類推。

(40)

因此,將護理人員的姓名用編號取代,在陣列中會紀錄兩筆資料:

1. 護理人員編號 2. 當天值班班別

如表4-1 中所顯示的,取而代之的是代表護理人員的編號及當天值班班別。一位護理 人員會對應一個班別,透過陣列的方式將換班資訊儲存起來。

表4-1:紀錄護理人員的編號及當天值班班別

接下來就是開始判斷是否能夠換班,若可以換班再將所有可以換班的班別紀錄於 陣列中。而輪值排班之班別有:白班(D)、小夜班(E)、大夜班(N)及休假(R),共有四 種班別。我們該如何判斷當天值班之班別是否可以換成別的班別呢?答案在於透過硬 限制的檢查,我們便可以找出所有可以換班的班別。依照硬限制之橫列條件規定而逐 一檢查:

(1) 上班天數不可連續超過 7 天( ≦ 7 天),後面一定要休假。

(2) 小、大夜班之後不可以接白班。

(3) 大夜班之後不可以接小夜班。

舉例來說:1 號當天是大夜班(N),而可能可以換班的班別有:白班、小夜班、休假。

我們必須一個一個檢查每個班別是否能夠與1 號的大夜班進行換班,而針對上述之硬 限制來逐一檢查是否符合規定。

護理人員編號 班別

1 N 2 D 3 E 4 R 5 E 6 E

(41)

首先,先檢查是否能換成白班(D)?7 月 8 日當天的班別為 N,若換成 D,必須前 後檢查是否有違反硬限制,而往前檢查的結果發現7 月 7 日的班別為 N,若 7 月 8 日 換成D,則違反大夜班之後不可以接白班之規定,因此不能換成 D,於是我們在陣列 中D 的位置標示不能換班的記號為「0」。

接著檢查是否能換成小夜班(E)?若換成 E,往前檢查 7 月 7 日的班別為 N,這樣 會違反大夜班之後不可以接小夜班之規定,於是在陣列中E 的位置紀錄為「0」。

最後檢查是否能換成休假(R)?若換成 R,往前檢查會找到 7 月 7 日為 N,往後 檢查找到7 月 9 日為 N,並不會違反任何一個硬限制之規定,於是我們在陣列中紀錄 R 的位置是可以換班的記號為「1」。

如表4-2 所顯示的,透過硬限制之規定可找出所有換班可能,並利用結構陣列的 方式紀錄所有可以換班之班別。透過表4-2 的換班資訊將圖形節點所需要的資訊儲存 於陣列中。

表4-2:將 7 月 8 日的班表轉成陣列儲存

我們將表4-2 中的換班資訊,可轉換成圖形節點,如圖 4-2 所顯示的,1 號護理 人員值大夜班(N),可以換班的班別有:休假(R)。2 號護理人員值白班(D),可以換班 的班別有:休假(R),餘類推。因而形成一個換班之圖形節點。

護理人員編號 班別

可換班之班別

D E N R

1 N 0 0 0 1

2 D 0 0 0 1

3 E 0 0 0 1

4 R 0 1 0 0

5 E 1 0 1 1

6 E 1 0 0 1

(42)

圖4-2:將 7 月 8 日之結構陣列轉換成圖形節點

從圖形節點之陣列中,可以找出節點之間的關係,並延伸出圖形之邊線。找出邊 線後,我們可以利用相鄰矩陣法來儲存圖形之邊線。如何透過節點陣列之資訊找出邊 線?找出節點陣列之資訊中的關聯性,舉例來說:1 號原本班別為 N,找到陣列中 5 號可換成N,於是便在 1→5 之間標上記號「1」。而 1 號不能與其他編號之護理人員 換班,我們亦需要將不能換班之編號標上記號「0」。2 號原本班別為 D,找到 5、6 號護理人員都可以換成D,便在 2→5 及 2→6 標上記號「1」,其餘無法換班則標上記 號「0」,餘類推。透過這樣的步驟可找出所有的邊線,並紀錄在矩陣中。如圖 4-3 所 顯示的,透過圖形節點之陣列中找出所有邊線,並將所有邊線都儲存在相鄰矩陣中。

圖4-3:邊線矩陣

1 2 3 4 5 6

1 0 0 0 0 1 0

2 0 0 0 0 1 1

3 0 0 0 1 0 0

4 1 1 1 0 1 1

5 0 0 0 1 0 0

6 0 0 0 1 0 0

1 N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(43)

透過表 4-2 的圖形節點之陣列與圖 4-3 的邊線矩陣,我們可以建立換班的圖形如 圖4-4。透過圖形演算法將護理人員換班當天之班表資訊,轉換成換班圖形,從圖形 中找出所有可以換班的組合,以提供護理人員換班之需求。

圖4-4:換班圖形

在排班表轉換成圖形的過程中,我們透過結構陣列紀錄節點,並利用相鄰矩陣法 來紀錄節點之間所產生的邊線,透過演算法亦能勾勒出一個完整的換班圖形。

接下來我們要透過圖形演算法所轉換的換班圖形,找出圖形中可以換班的有向迴 圈之換班解,若找到多種迴圈之換班解,便將所有的迴圈之換班方式列出來,提供給 護理人員從多種迴圈之換班解中,找到一組最符合自己換班需求的可行解,以滿足護 理人員的換班需求。

1 N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(44)

4-2 從換班圖形中找出有向迴圈之換班解之演算法設計

透過換班圖形,我們該如何從中找出是否有迴圈之換班方式?在本文中利用演算 法之技巧來找出有向迴圈之換班解。我們運用到的演算法有:

1. 深先搜尋法 (depth-first search, DFS) 2. 回溯法 (backtracking)

我們透過深先搜尋法及回溯法可以找出所有迴圈之換班解及最短迴圈之換班解,運用 兩種不同的演算法解決護理人員之換班問題,以滿足護理人員換班之需求。

4-2-1 運用深先搜尋法找換班解

深先搜尋法是透過遞迴的概念,走訪所有的節點,針對每一個節點進行檢查,便 可找出換班迴圈。在走訪每一個節點的過程中,會從編號較小的開始拜訪,從小編號 檢查到大編號,拜訪完一節點之後若無法再往下走,便往回走,走回上一個節點再繼 續走下一個節點,仔細檢查每一個節點所產生的路徑是否能返回起始點。

以圖4-4 為例,若 5 號護理人員提出需要換班的需求,5 號節點為樹根,並往下 尋找其他節點是否有可回到樹根5 號節點的迴圈。而 5 號節點只有一個換班之方法,

就是和4 號節點換班,於是從 5 號出發至 4 號(5→4),接著 4 號可以走到 1、2 號,

而1、2 號又可以走回 5 號,便找到二組迴圈之換班解,4 號也可以直接走回 5 號,

這也是一組迴圈之換班解,所以我們發現可以從圖4-4 中,可以找到三組有向迴圈之 換班解:

(1) 5 → 4 → 1 → 5 (2) 5 → 4 → 2 → 5 (3) 5 → 4 → 5

(45)

透過深先搜尋法讓我們找到三組迴圈之換班解,並藉由圖4-4 可以畫出如圖 4-5 之樹狀圖,以樹狀圖的方式紀錄深先搜尋法走訪每一個節點的過程。以5 號節點為樹 根,開始尋找迴圈。針對每一個節點進行檢查,是否可以回到5 號節點,若找到便是 一組迴圈換班解,這是深先搜尋法尋找迴圈換班解的方式。

圖4-5:以深先搜尋法之方式建立其換班樹狀圖

深先搜尋法的方式可以運用在護理長完成班表後,若不符合護理人員之上班期 望,便可提出換班需求。護理人員提出換班需求之後,不限定任何換班要求,透過深 先搜尋法可以找出所有的迴圈之換班組合,提供給護理人員多種換班方式進行換班。

隨著找到的迴圈越長,表示需要協調換班的護理人員就越多,也就需要越多的時間來 協調換班,因此運用深先搜尋法找出換班解之後,需要較多時間協調換班,所以護理 人員需要較早提出換班需求。而深先搜尋法較耗時,原因在於需要檢查每一個節點可 以走訪的路徑是否有可以返回起點的迴圈,會花費較多的時間逐一檢查。但其效果是 好的,可以找到所有的換班組合。

5

2 5 6

5 5 6

4 4

1 3

(46)

4-2-2 運用回溯法找換班解

回溯法的原理是利用深先搜尋法(depth-first search,DFS)與界限函式

(bounding function)來找出最短換班人數解。利用深先搜尋法,可以產生所有護理 人員之換班解,再透過界限函式檢查是否有找到最短路徑可返回出發點,若有即找到 最短換班解,以求快速搜尋換班解之方式。當問題的解答是由一系列的選擇所組成 時,可以用回溯法來縮小選擇的範圍。回溯法找出來的換班解為深先搜尋法的部分換 班解,而我們可以透過回溯法找到最短的迴圈之換班方式。

再以上述例子為例,5 號護理人員提出換班,以 5 號節點當作樹根作為出發點,

尋找迴圈之換班組合。透過回溯法的方式,從5 號節點開始,便以 5 號節點為樹根,

尋找其他節點是否能夠回到5 號的方式找換班解。於是從 5 號出發至 4 號(5→4),回 溯法會檢查4 號節點是否能夠直接走回起始點,檢查發現 4 號節點可直接走回 5 號,

於是便會停住,不會再繼續向下延伸。回溯法在找到解之後便會停止尋找其他的解 答。所以並不會像深先搜尋法會檢查每一個節點,而找到三組迴圈換班解,運用回溯 法只找到一組換班解:

(1) 5 → 4 → 5

我們可以透過回溯法讓我們找到一組最短的迴圈之換班方式,藉由圖4-4 可以畫出如 圖4-6 之樹狀圖,以樹狀圖的方式紀錄回溯法走訪的過程。

圖4-6:以回溯法之方式建立其換班樹狀圖 5

4 B

(47)

回溯法可以運用在臨時或緊急狀況下的換班。若某護理人員臨時需要換班,提出 換班需求之後,透過回溯法,找到最短的迴圈之換班路徑,對於需要換班之護理人員 來說,可能只需要和一位護理人員協調換班即可,可以達到省時之效果,並不需要與 很多人互相換班,也可為護理人員省下不少協調換班的時間。因為回溯法的方式是找 到最短的迴圈之換班路徑,換班的人數越少越好,因此運用回溯法會較為省時。

4-2-3 深先搜尋法與回溯法之差異

      我們運用深先搜尋法及回溯法兩種演算法的過程中,發現兩種演算法找出來的換 班解有很大的差異,深先搜尋法是會將所有的換班解都找出來,而回溯法找到解之後 就會停住,不再往下尋找,是為尋找最短換班方式,讓換班人數越少越好。

以上述的例子來說,以圖4-7 為例,5 號護理人員想要換班,我們運用深先搜尋 法可以找到三組迴圈之換班解:

(1) 5 → 4 → 1 → 5 (2) 5 → 4 → 2 → 5 (3) 5 → 4 → 5

而運用回溯法只會找到一組換班解:

(1) 5 → 4 → 5

圖4-7:7 月 8 日之換班圖形

1 N

R 2

D R

3 E R 6

E D, R

5 E D, N, R

4 R E

(48)

為什麼需運用深先搜尋法及回溯法二種演算法一起找換班解呢?原因在於可以 提供給護理人員多種選擇換班的方式。假設5 號護理人員沒有提出任何換班需求,只 要可以換班就好,那我們透過回溯法,協助5 號護理人員找到與 4 號護理人員換班之 方法,5 號護理人員可以換成休假,4 號護理人員換成小夜班,即可滿足 5 號護理人 員所提出的換班需求。

若 5 號護理人員提出換班需求,並指定要換成白班,這樣需要考慮的因素就會有 所不同,就無法用回溯法找到換班解,因為運用回溯法會找不到換班解的答案。在這 樣的情況下,我們就必須使用深先搜尋法法來找到換班解答。而深先搜尋法會找出所 有的換班解,再針對5 號護理人員所提出的換班需求:換成白班來進一步的找出符合 之換班解,於是從所有解中找到一組換班解:

(1) 5 → 4 → 2 → 5

5 號護理人員與 4 號、2 號護理人員同時換班,5 號會換成白班,4 號換成小夜班,2 號則換成休假。在這樣的換班過程中,可以滿足5 號護理人員限定換成白班的換班需 求,因此解決此換班問題。

在深先搜尋法及回溯法中,差別在於找出來的換班解不同,換到的班別也會不 同。以上述例子來說,5 號護理人員想要換成白班,運用深先搜尋法找到 5 號護理人 員可以換成白班的方法,但是運用回溯法則無法找到;但是若無任何指定換班的情況 下,回溯法便可以找到換班方式,在5 號及 4 號護理人員之間找到換班方法,而 5 號護理人員則會換成休假。因此透過兩種演算法換到的班別會有所不同,因此可以讓 護理人員有更多的換班選擇。

我們可以透過深先搜尋法找到更多的換班方式,讓護理人員有多種換班選擇;也 可以透過回溯法找出最短的換班方式,讓換班的護理人員越少越好,以滿足護理人員 換班之便。二種演算法找到可換班的班別會有所不同,因此可以針對每位護理人員的 個人換班需求,選擇自己想要換班的人及班別。

(49)

4-2-4 檢查硬限制:每班需一位 level 3 的護理人員上班

透過深先搜尋法及回溯法之二種演算法找出所有的迴圈換班解之後,最後再檢查 一個直行條件限制:每班需要一位level 3 的人上班。以圖 4-8 舉例來說:假設圖 4-8 中有三位護理人員升級為level 3 的護理人員,分別為:游敏敏、王筑筑、陳梅梅,

在換班之前,是符合每班需要一位level 3 的人上班之條件。運用深先搜尋法及回溯 法找到換班解之後,需要再一次檢查是否滿足此條件。當我們透過回溯法找到一組換 班解:

(1) 5 → 4 → 5

接著需要進行檢查每班是否至少有一位level 3 的人上班的步驟:

level 3 的護理人員為游敏敏、王筑筑、陳梅梅,對應到的編號為 1、2、3 號,透過回 溯法找到5 號護理人員紀秀秀的小夜班與 4 號護理人葉玲玲休假互相換班之後,並不 會影響到level 3 的護理人員的值班,換班前後每班都有一位 level 3 的護理人員上班,

檢查完此條件後,若無違反其硬限制,便可換班。

圖4-8:檢查每班是否至少有一位 level 3 的護理人員值班 當我們運用深先搜尋法會找到三組換班解:

(1) 5 → 4 → 1 → 5 (2) 5 → 4 → 2 → 5 (3) 5 → 4 → 5

換班後

(50)

於是我們便需要逐一檢查是否符合每班至少一位level 3 的護理人員上班之條件。首 先,我們先檢查第一組解:

(1) 5 → 4 → 1 → 5

如圖4-9 中所顯示的,透過換班的過程之後,發現 level 3 的護理人員少了一位護理人 員上大夜班,於是這一組換班解並不符合此條件,此解會被刪除。

圖4-9:1、4、5 號護理人員互相換班的結果 接著檢查第二組解:

(2) 5 → 4 → 2 → 5

如圖4-10 中所顯示的,透過換班的過程之後,發現 level 3 的護理人員少了一位護理 人員上白班,於是這一組換班解並不符合此條件,此解也會被刪除。

圖4-10:2、4、5 號護理人員互相換班的結果 換班後

換班後

(51)

檢查最後一組解:

(3) 5 → 4 → 5

檢查後則會發現與回溯法的檢查結果一致,會符合每班至少一位level 3 的護理人員 上班之條件,於是透過深先搜尋法及回溯法找到所有換班解之後,再檢查此硬限制,

發現最後只找到一組符合的換班解。最後再將符合所有規定之換班解輸出,提供給護 理人員換班,以滿足護理人員的換班需求。

我們透過演算法的設計:運用深先搜尋法及回溯法來檢查換班之條件,尋找最佳 的迴圈換班解或是較好的迴圈換班解之方法,如圖4-11 所示,為本文運用到的重要 圖形演算法及圖形演算法之流程圖。

(52)

圖4-11:圖形演算法之流程圖 開始執行

結束 讀取護理人員所提出之換班日期及排班資訊

判斷是否違反硬限制,然後建立換班之圖形節點

判斷節點之間是否有換班的可能,

然後建立節點之間的邊線

完成換班圖形

從換班圖形中,尋找換班解

是否需要找出 所有換班解

輸出換班解

是 否

深先搜尋法 回溯法

檢查每班是否至少有一位 level 3 的 護理人員上班,然後輸出換班解

是否有解

輸出無換班解 是

(53)

第五章 討論與結論

5-1 討論與結論

本文提出一套圖形演算法可以運用在解決護理人員換班問題,而從過去的文獻資 料可得知到目前為止並沒有相關之論文提出解決護理人員換班的問題,較多的論文在 於處理護理人員排班之問題,但是在一份已完成之排班表中一定會有不符合護理人員 上班期望之班表,因此護理人員的換班問題是值得注意的。

過去所設計的換班方法在於區段的互換,需要耗費許多時間尋找可以換班的區 段,而又不一定能夠找出最佳的換班方式。本論文中所提到的圖形演算法,先利用結 構陣列及相鄰矩陣法將某日需要換班之班表轉換成圖形,再透過深先搜尋法及回溯法 找出所有可以換班的迴圈之換班解,提供一套較佳的演算法以求解決護理人員換班之 問題。

我們利用圖形演算的方式找到可換班之組合,在找出所有迴圈之換班解後,列出 所有可以換班的迴圈換班解,提供給需要換班的護理人員選擇想要換班的人及班別,

以滿足其換班期望。這樣的方法對於解決護理人員換班問題上有很大的突破,期望透 過其演算法,滿足護理人員的換班期望,以達到提升護理人員之服務品質及工作表現。

5-2 未來發展方向

本文所提到的是由一人提出單日某班換班需求,從班表中找出換班當天多位護理 人員的多種換班方式;未來可以朝二個連續天或三個連續天尋找多種換班方式邁進。

從某位護理人員提出換班需求之後,融合之前論文所提到的區段換班的概念,可以從 多天中找出多位護理人員的多種換班方式,也就是「多人多天互換」的方式求解護理 人員換班問題,以提供護理人員更多的換班選擇。

(54)

參考文獻

[1] 王裕元,「應用多目標決策模式建立護理人員排班方法之研究」,屏東科技大學 工業管理系碩士論文,民國92年。

[2] 李俊德,「兩階段限制規劃模式求解護理人員輪值問題」,國立交通大學運輸科 技與管理學系所碩士論文,民國96年。

[3] 郭金青,「整數目標規劃應用於護士排班之個案研究」,國立中正大學企業管理 研究所碩士論文,兩階段限制規劃模式求解護理人員輪值問題,民國85年。

[4] 郭娓吟,「整數目標規劃應用於護理人力-以中部某醫院附設護理之家為例」,

中國醫藥學院醫務管理研究所碩士論文,民國91年。

[5] 莊凱翔,「求解護理人員排班最佳化之研究─以遺傳演算法求解」,國立成功大 學工業管理學系碩士論文,民國90年。

[6] 劉光宗,「數位化護理人員排班系統之研究」,國立東華大學企業管理學系碩士 論文,民國90年。

[7] 韓復華、李俊德,「兩階段限制規劃模式求解護理人員輪值問題」,管理與系 統,第14卷,第1期,民國96年。

[8] U. Aickelin and K. Dowsland, Exploiting problem structure in a genetic algorithm approach to a nurse rostering problem, Journal of Scheduling 3 (3) (2000) pp.

139–153.

[9] E.K. Burke, P. Cowling, P. De Causmaecker and G. Vanden Berghe, A memetic approach to the nurse rostering problem, Applied Intelligence 15 (3) (2001) pp.

199–214.

[10] E.K. Burke, T. Curtois, G. Post, R. Qu and B. Veltman, A hybrid heuristic ordering and variable neighbourhood search for the nurse rostering problem, European Journal of Operational Research 188 (2008) pp. 330–341.

(55)

[11] E.K. Burke, P. De Causmaecker, S. Petrovic and G. Vanden Berghe, Fitness evaluation for nurse scheduling problems, in: Proceedings of the Congress on Evolutionary Computation (CEC2001), IEEE Press, Seoul, Korea, 2001, pp.

1139–1146.

[12] E.K. Burke, P. De Causmaecker, S. Petrovic and G. Vanden Berghe, Variable neighborhood search for nurse rostering problems, in: M.G.C. Resende, J.P. de Sousa (Eds.), Metaheuristics: Computer Decision-Making, Kluwer, 2004, pp.

153–172.

[13] E.K. Burke, P. De Causmaecker, S. Petrovic and G. Vanden Berghe, Metaheuristics for handling time interval coverage constraints in nurse scheduling, Applied

Artificial Intelligence 20 (3) (2006).

[14] E.K. Burke, P. De Causmaecker and G. Vanden Berghe, A hybrid tabu search algorithm for the nurse rostering problem, in: B. McKay et al. (Eds.), Simulated Evolution and Learning, Selected Papers from the 2nd Asia-Pacific Conference on Simulated Evolution and Learning, SEAL 98, Springer Lecture Notes in Artificial Intelligence, vol. 1585, Springer (1999) pp. 187–194.

[15] E.K. Burke, P. De Causmaecker and G. Vanden Berghe, Novel Meta-heuristic Approaches to Nurse Rostering Problems in Belgian Hospitals, in: J. Leung (Ed.), Handbook of Scheduling: Algorithms, Models and Performance Analysis, CRC Press, 2004.

[16] B. Jaumard, F. Semet and Vovor, T., “A Generalized Linear Programming Model for Nurse Scheduling,” European Journal of Operational Research 107 (1998) pp.

1-18.

(56)

[17] H. Millar and M. Kiragu, “Cyclic and Non-Cyclic Scheduling of 12h Shift Nurses by Network Programming,” European Journal of Operational Research 104 (1998) pp. 582-592.

[18] H. E. Miller, P. William and J. R. Gustave, “Nurse Scheduling Using Mathematical Programming,”Operations Research 24 (5) (1976) pp. 857-870.

[19] C. Valouxis and E. Housos, “Hybrid Optimization Techniques for The Workshift and Rest Assignment of Nursing Personnel,” Artificial Intelligence in Medicine, Vol. 20 (2000) pp. 155-175.

 

參考文獻

相關文件

Reading Task 6: Genre Structure and Language Features. • Now let’s look at how language features (e.g. sentence patterns) are connected to the structure

The Secondary Education Curriculum Guide (SECG) is prepared by the Curriculum Development Council (CDC) to advise secondary schools on how to sustain the Learning to

 Promote project learning, mathematical modeling, and problem-based learning to strengthen the ability to integrate and apply knowledge and skills, and make. calculated

Wang, Solving pseudomonotone variational inequalities and pseudocon- vex optimization problems using the projection neural network, IEEE Transactions on Neural Networks 17

volume suppressed mass: (TeV) 2 /M P ∼ 10 −4 eV → mm range can be experimentally tested for any number of extra dimensions - Light U(1) gauge bosons: no derivative couplings. =>

Define instead the imaginary.. potential, magnetic field, lattice…) Dirac-BdG Hamiltonian:. with small, and matrix

incapable to extract any quantities from QCD, nor to tackle the most interesting physics, namely, the spontaneously chiral symmetry breaking and the color confinement.. 

• Formation of massive primordial stars as origin of objects in the early universe. • Supernova explosions might be visible to the most