• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
40
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

應用回溯法於護理人員換班程式設計 Applying the Backtracking Method to the

Nurse Shift Exchanging Program Design

系 所 別:生物資訊學系碩士班 學號姓名:M09820001 洪翊豪

指導教授:侯玉松 博士

中 華 民 國 101 年 7 月

(2)

中文摘要

在目前研究中,有許多人致力於排班的研究,想辦法排出最好的班表,卻沒 注意到,其實一個再怎麼完美的班表,一定會有人會提出不同的看法,而產生抱 怨,或是護士本身臨時有其他事情需要跟其他護士換班。因此設計一個可以幫護 士快速搜尋可換班的方法為本研究目的。

目前來說還尚未看到有針對換班的研究發表,護士之間需要換班還是以人與 人之間互相協調出來。所以本篇論文將想換班當天的班表資料轉換成圖形,再運 用回溯法從圖形裡找出使用者所設定的人數內換班的所有迴圈,並過濾出可換班 的方式。

關鍵字:換班、回溯法、圖形、迴圈。

(3)

ABSTRACT

In the current study, there are many people committed to researching ways to come up with the best roster when scheduling working hours. No one noticed that no matter how perfect a roster appeared, there would always be someone that had different opinions.

It often results in complaints from those who have different point of views. Sometimes nurses would have something that comes up at the last minute so they would have to switch shifts with other nurses. Therefore, the purpose of this research is to come up with a program to help nurses quickly search out ways to switch shifts with other nurses.

Presently, there has yet been seen a published study concerning the changing of shifts. The changing of shifts between nurses still requires direct contact and co-ordination between people. So this paper is dedicated to finding out a way for those who want to change shifts on a certain date to pull up the schedules of those who have shifts on the same date and convert the information into graphics. The graphics then uses backtracking to find all the loops in the different shifts and filters out the shifts that can be changed.

Keywords: shift, backtracking, graphics, loop.

(4)

誌 謝

本篇論文能夠如期完成,最主要是家人不斷的在背後督促,當我想偷懶的時 候在後面不斷的提醒,尤其是媽媽,幾乎每個禮拜打電話詢問進度,也因為這樣 我才不會放鬆過了頭,也感謝家人的支持和鼓勵。

最重要的要感謝老師侯玉松教授,不厭其煩的教導我,細心的指導與建議,

並教導我在做研究上的態度和方法,以及生活上或待人處事的態度和方法,在我 遇到困境時,適當的給予幫助;不時的討論並指點我正確的方向,讓我能順利完 成論文。

最後也要感謝其他教導過我的老師,以及幫助過我的老師們和朋友們,在學 校的這段時間,不管是在人生的道路上或學業的路途上遭遇困難,並給予適時且 適當的應對或解決方法,而在念研究所的這幾年,更是認識了不少朋友,在生活 上更是給了不少的幫助,在這裡至上滿滿的謝意。

(5)

目 錄

第一章 簡介...1

1-1護理人員換班問題概述...1

1-2護理人員換班問題之目的與架構...4

第二章 文獻回顧………..5

2-1基因演算法………...5

2-2禁忌搜尋法………...6

2-3變動鄰域搜尋法………...7

2-4整數規劃法……….………..7

2-5爬山法………..………...8

第三章 回溯法...10

3-1回溯法的原理. ………..………..10

3-2回溯法的應用...11

第四章 應用回溯法於護理人員換班程式設計...16

4-1圖形演算法基本概念 ...16

4-2護理人員換班表之圖形轉換 ...19

4-3迴圈的意義 ...22

4-4找尋換班的圖形中所有迴圈的方法 ...23

第五章執行過程與結果 ...24

5-1程式執行過程...25

5-2程式執行的結果...27

第六章結論...29

參考文獻 ...30

(6)

表目錄

表5-1:迴圈長度為5以內的迴圈總數和程式執行時間...27 表5-2:不同迴圈大小執行時間的比較...28

(7)

圖目錄

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

圖1-2:上班天數不可連續超過7天...2

圖3-1:陣列表示(1,3,0,2)所對應四后問題的盤面...11

圖3-2:四后問題窮舉法的樹狀圖...12

圖3-3:四后問題,用回溯法找出來第一組解的走法...14

圖3-4:四后問題回溯法的樹狀圖...14

圖3-5:四后問題判斷式...15

圖3-6:四后問題主要程式...15

圖4-1:圖形的節點與邊...16

圖4-2:無向圖...17

圖4-3:無向圖二維陣列的資料結構...17

圖4-4:有向圖...18

圖4-5:有向圖二維陣列的資料結構...18

圖4-6:理人員的排班表...19

圖4-7:每個護士可換班的節點...20

圖4-8:每個護理人員可換班的節點並加上邊...21

圖4-9:護理人員可換班的二維陣列結構...21

圖4-10:每個護理人員可換班的圖...22

圖4-11:換班判斷式...23

圖4-12:換班主程式...23

圖5-1:排班表...24

圖5-2:設定程式中所有參數...25

圖5-3:讀檔後班表...25

圖5-4:在想換班的人,想換班的日期上做點選...26

圖5-5:最後程式跑完所呈現的結果...26

(8)

第一章 簡介

在現今的社會,醫院扮演著一個很重要的單位,不管是生病或是受傷,都是 要在醫院中進行治療和照護,由護理人員負責協助看護病人,所以醫院裡二十四 小時都需要有護理人員進駐,但是護理人員也需要休假,所以會有排班表,但是 排班表並不是每個人都完全滿意,或是護理人員因為臨時有事而須要跟別人換班,

這時候就需要換班。

因為換班的方法很多,限制也很多,所以本論文的目的在開發護理人員的換 班程式,協助護理人員尋找所期待的換班方法。

1-1 護理人員換班問題概述

換班方式與各家醫院的制度有關,以彰基第二呼吸照護中心在 2008 年 7 月 排班表為測試所排出來的某部份班表為例(如圖 1-1),在班表中會看到一些字母,

所代表的意義是:

一、 「D」為「白天班」,上班時間為上午八點到下午四點。

二、 「E」為「小夜班」,上班時間為下午四點到隔天零時。

三、 「N」為「大夜班」,上班時間為零時到上午八點。

四、 「R」為「休假」。

(9)

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

換班的相關規定會因為不同醫院或病房的不同而有差異,經彰基護理長的病 房,得出以下的規定:

一、 每天每人只能上一種班

每位護士每天只能夠上一種班別,是希望護理人員能夠有適當的休息時間,

以免工作上的疲勞影響了工作的品質,也間接影響到病人的健康,所以每人每天 只能上一種班。

二、 上班天數不可以連續超過 7 天

護理人員也需要休假來放鬆自己,如圖 1-2 紅色方框處,陳姓護理人員連 續七天的大夜班(N)依規定上班天數不可超過七天,所以第八天給予休假。

圖 1-2:上班天數不可連續超過 7 天

(10)

三、 大夜班隔天不可以接白天班

在班表上,不能出現 N、D 的班別,大夜(約 N)上班的時間點為 00:00 - 08:00,

而白班(D)的上班時間為 08:00 – 16:00,這樣會導致護理人員超時工作,對護理 人員的健康和精神都有所影響,連帶著會影響工作品質和病人的健康,所以大夜 班隔天不可接白天班。

四、 大夜班隔天不可以接小夜班

在班表上,不能出現 N、E 的班別,大夜(N)工作時間為 00:00–08:00,小夜 (E)工作時間為 16:00 – 24:00,中間只間隔了八個小時,護理人員的休息時間太短,

對護理人員的健康和精神都有所影響,連帶著會影響工作品質和病人的健康,所 以大夜班隔天不可以接小夜班。

五、 小夜班隔天不可以接白天班

在班表上,不能出現 E、D 的班別,小夜(E)工作時間為 16:00–24:00,白班 (D)工作時間為 08:00 – 16:00,中間只間隔了八個小時,護理人員的休息時間太 短,對護理人員的健康和精神都有所影響,連帶著會影響工作品質和病人的健康,

所以小夜班隔天不可以接白天班。

六、 強制要求每天每個班 level 3 一定要有人上班 護理人員階級主要的判定:

(一) level 1 護理人員是屬於最基層的護士。

(二) level 2 護理人員是具有重症病人整體性的護理能力。

(三) level 3 護理人員是為培養副護理長所設立的層級,訓練重點是認識護理人 員法規,認識每位護理人員的專業能力。

因此在每一班別中需要有一個具備著 lever 3 的護理人員在場,已指派護理人員 去幫助病患,並且解決需要護理人員法規的問題。

(11)

經由遵守上面的規定所搜尋出的換班方法,如果只靠人力去找可能只能找出 一小部分的方法,讓護理人員不知道可以跟誰換,事情一忙更沒時間去跟其他護 理人員商量,因此設計護理人員換班程式,來幫護理人員快速搜尋到他們所希望 的換班方法。

1-2 論文架構

人工搜尋可以互換的班,常常會違反規定,或是找不到比較滿意的方法,甚 至需要花比較多的時間去找,用人力要將兩兩互換的所有方法找出來就很困難,

用電腦搜尋可以找到三個人以上的換班方法,目前還尚未看過有相關的論文發 表。

第二章文獻回顧,為了討論至今有哪些換班的方法,或是有哪些可以用來作 為換班的方法,都值得我們參考。

第三章中會討論回溯法的原理和應用。第四章則是討論論文中如何使用回溯

法來尋找可換班的方法。第五章則是討論使用回溯法後的執行結果。第六章為結

論。

(12)

第二章 文獻回顧

護理人員的換班問題目前尚待研究,排班問題有較多相關研究,所以學習護 理人員排班問題為主, Miller 早在 1976 年就已開始研究[1],2000 年被證實了,

護理人員排班問題是 NP-hard 的難題[2-3]。早期在護理人員排班問題上,通常都 以找尋最佳解的演算法 [4-9],在執行上非常的耗時,效率都不佳。

過去文獻中利用了很多種演算法,來試著解決護理人員排班的問題,例如:

基因演算法(genetic algorithm) [10-15]、 禁忌搜尋法(tabu search)[ 16-21]、變動鄰 域 搜 尋 法 (variable neighbourhood search)[ 22-25] 、 整 數 規 劃 法 (integer programming)[ 26-32]、爬山法(hill climbing)[33-34]…等,讓護理人員可以跟其他 人換班,以達到所有護理人員較滿意的結果。

2-1 基因演算法

「基因演算法」一名詞,首度用在1967年Holland的學生,Bagley發表的畢業 論文中,1975年Holland正式發表[15]。

利用達爾文進化演論「物競天擇,適者生存」的方式將生物演化機制所發展 出來的基因演算法,藉由生物物種的基本運算子,在每代間進行演化,從中尋找 適當的問題最佳解。

一開始是隨機產生的初始群體K=0代的個體,接著評估初始群體的個體的適 應度,再從群體中重新選擇高適應度、強競爭力的個體,經由遺傳機制的複製、

交配和突變產生新的K+1代的族群,再繼續評估重新選擇,再經由遺傳機制,再

(13)

形成一個新的世代的群體,然後再評估,這樣一直重複運作,一代一代的演化下 去,對於無法預知最佳解的狀況,快速求得某種程度的滿意解,適合非線性等多 變數複雜問題求解。

藉由基因演算法產生的護理人員排班表,提供了一個高效率、靈活的排班系 統,但搜尋解答時不能保證找到真正的最佳解,而是找出近似解,但近似最佳解 要經過廣大解答空間演化到某種程度的可能最適解,此系統只適用於某些狀況,

仍有需要改進的地方。

2-2 禁忌搜尋法

禁忌搜尋法於 1986 年左右由 Glover[16]所提出,近年來已廣泛運用於排班 問題、工程問題或管理領域問題等。忌演算法是模仿人類對於過去經驗的記憶進 行日常生活的決策行為;其優點可以跳脫於區域性最佳解,找尋全域最佳解。

禁忌演算法的演算過程,是利用短期記憶的結構,記錄前幾次的移動,這個 短期記憶的結構就稱為禁忌名單,紀錄目前最佳解,避免重複走相同路徑解。藉 由初始解開始找尋鄰近區域的最佳解,找到最佳解後檢查目前解移動到最佳解的 路徑是否在禁忌名單內,若禁忌名單內沒有這條路徑解,則此解就為目前最佳解,

並繼續搜尋附近鄰近解找尋更佳解,直到無更佳解出現為止。

在相關研究的論文中,比利時醫院的護士人員排班問題[18]、醫療機構的商

(14)

業系統的工作人員時間表問題[17]、歐洲大型綜合性醫院的護理人員名冊問題 [20],這些的相似缺點都在排班的過程中花費太長時間,還需在執行時間長度上 做加以改善。

2-3 變動鄰域搜尋法

變動鄰域搜尋法由Mladenović and Hansen [25]所提出,主要運用系統化地改 變預先定義的鄰域結構範圍,適時地跳出區域,讓求出的解可以不會在局部內。

而主要的理念是希望尋找區域最佳解,並與目前最好解進行比較,若目前最 好解列於區域最佳解,則此區域最佳解將會取代目前最好解,並繼續搜尋,一直 到滿足停止條件且無法在改善目標值之後,才結束搜尋。

當一個鄰近解取得之後又要往下一個鄰近解再繼續搜尋,這樣持續的找尋最 佳解會影響到更多搜尋的時間,所以要面對快速且又能更滿足護理人員需求的方 法,需要再改良。

2-4 整數規劃法

根據國內相關文獻,2007年交通大學運輸科技與管理學系韓復華教授所著

(15)

[27],將護理人員輪並採用「排休」與「派班」二階段限制規劃模式依序求解。

以新竹署立醫院的20名護理人員排班問題中,護理人員排班的軟、硬限制等各式 問題定義的相當詳細。從結果分析來看,二階段分別產生3520、4660個變數個數 與5592、4939個限制式數,並利用ILOG OPL Studio 3.0軟體,解出其整數規劃式 的答案。

對護理長而言,不只要了解ILOG OPL Studio 3.0軟體如何操作外,使用前還 需要學習如何產生8000多個變數、10000多個限制式,增加了護理長的時間,軟 體可以免費下載,但有可能會造成版權問題,還需花錢買正版,就這些實務層面 來看,是件麻煩且不易執行的事情。

2-5 爬山法

爬山法其局部搜索性能很好,但它不能保證找到全域最佳解。爬山法也是一 種「疊代改進演算法」,其運作過程是先定義出鄰近解,也就是利用單一解在解 空間作搜尋,讓評估函數評估所有的鄰近解,並在每一次的疊代評估與改進中,

在目前解的鄰近解空間選擇出一個最佳鄰近解,當最佳鄰近解的評估函數值比目 前解的評估函數值來的佳時,就以最佳鄰近解取代目前解,重複此過程,直到無 法找到更佳的鄰近解為止。

在林純玉的研究[33]中提到,利用此方式製作一份優良可行解的班表,找尋 到局部的最佳解就停止了,不能代表它找到的解答是最好的,在全域中它可能只 是一部分的可行解而已,而非最好,以此可以再作改進,去尋找全域最佳解會是 更好的解法。

(16)

以上為過去的文獻,部分缺少現實中與醫院護理人員排班資料的測試結果,

只用理論去探討如何解決護理人員排班的問題。國外不只為此問題作探討還開發 專家系統,但國外的護理人員排班情況與國內的護理人員排班方式不相同,無法 直接把國外的排班系統直接套用國內的醫院護理護理人員排班問題上。

(17)

第三章 回溯法

3-1 回溯法的原理

回溯法當問題的解答是由一系列的選擇所組成時,有許多方法可以來做搜尋,

如窮舉法和回溯法。

窮舉法採用搜尋整個問題狀態樹,又分為深先搜尋(Depth-First Search)和廣 先搜尋(Breadth-First Search),先將整個問題的狀態樹畫出來,再去做篩選,是否 符合解答的條件。

回溯法採用試錯的想法,它嘗試每一種選擇去解決一個問題。在每一個步驟 的選擇解決問題的過程中,當它通過嘗試發現現有的選擇不能得到正確或有效的 解答的時候,它將更改上一步甚至是上幾步的選擇,再通過其它的可能的選擇再 次嘗試尋找問題的答案。

回溯法通常用最簡單的遞迴方法來實現,在反覆重複上述的步驟後可能出現 兩種情況:

一、 找到一個或是全部可能存在的正確的答案。

二、 在嘗試了所有可能的選擇方法後找不到答案。

回溯法的好處,是在過程中只要遇到遇到無效的解答,則不繼續往下搜尋,

能有效的避免枚舉出不正確的數據,省下很多時間。

(18)

3-2 回溯法的應用

較常被討論的例子是 N 后問題(N-Queen Problem),是否能在一個 N×N 的西 洋棋盤上放置 N 個皇后而每一個皇后的直線、橫線和對角線不存在著其他皇后。

下面用四后問題當做例子。

如果用窮舉法去解四后問題,每一橫排只放一個皇后,第一個皇后放第 0 列,

第二個放第 1 列,第三個放第 2 列,第四個放第 3 列,會得到一個(n1,n2,n3,n4) 的陣列,這個陣列的意思是第 i 個皇后放在第 ni 行。以圖 3-1 為例,Q1 列的皇 后放在第 1 行,所以 n1 為 1,Q2 列的皇后放在第 3 行,所以 n2 為 3,Q3 列的 皇后放在第 0 行,所以 n3 為 0,Q4 列的皇后放在第 2 行,所以 n4 為 2,以陣列 表示為(1,3,0,2)。

圖 3-1:陣列表示(1,3,0,2)所對應四后問題的盤面

將每一種可能的放法全部列出,再去檢查是否有互相干擾。以此類推,四后 就有 4!,共 24 種可能解,N 后就有有 N! 的放置方式,如果將所有的可能解畫 成樹狀圖就會畫成圖 3-2。

(19)

圖 3-2:四后問題窮舉法的樹狀圖

圖 3-2 四后問題,窮舉法的所有解,所走出來的樹狀圖。綠色代表放入的皇 后與前一個或前幾個皇后的直線、橫線和對角線不互相重疊。紅色代表放入的皇 后跟前一個或前幾個皇后中至少一個以上直線、橫線和對角線會互相重疊。黃色 代表前面的皇后已經有衝突。粉紅色代表找到正確的解。

如果用回朔法來尋找出四后問題所有正確解,步驟如下:

step 1. 將第一個皇后放入第 0 列的第 0 格(如圖 3-3 的 a 圖),在陣列的第 0 格填上 0。

step 2. 將第二個皇后放入第 1 列的第 0 格,發現與第一個皇后在同一行,

所以往下一格檢查。放入第 1 列的第 1 格,發現與第一個皇后在同一個 斜線上,所以往下一格檢查。放入第 1 列的第 2 格,跟第一個皇后避開 (如圖 3-3 的 b 圖),在陣列的第 1 格填上 2。

step 3. 將第三個皇后放入第 2 列的第 0 格,發現第 2 列第 0~3 格通通不能 放(如圖 3-3 的 c 圖)。

step 4. 退回第 1 列,將第 2 個皇后從第 2 格移到第 3 格,跟第一個皇后互 不衝突,在陣列的第 1 格填上 3。

(20)

step 5. 將第 3 個皇后放入第 2 列的第 0 格,發現第 2 列第 0 格不能放,放 入第 1 格後跟前面兩個皇后互不衝突(如圖 3-3 的 d 圖),並在陣列的第 2 格填上 1。

step 6. 將第四個皇后放入第 3 列,發現第 3 列第 0~3 格通通不能放(如圖 3-3 的 e 圖)。

step 7. 退回第 2 列,第三個皇后放入第 2 格和第 3 格會跟第 2 個皇后互相 衝突,所以再退回第 1 列。第二個皇后已經是最後一格,所以退回第 0 列。

step 8. 將第一個皇后放入第 0 列的第 1 格(如圖 3-3 的 f 圖),在陣列的第 0 格填上 1。

step 9. 將第二個皇后放入第 1 列的第 0~2 格,發現與第一個皇后會互相衝 突。放入第 3 格後與第一個皇后不會互相衝突(如圖 3-3 的 g 圖),在陣 列的第 1 格填上 3。

step 10. 將第三個皇后放入第 2 列的第 0 格與第一個和第二個皇后不會互相 衝突,在陣列的第 2 格填上 0。

step 11. 將第四個皇后放入第 3 列的第 0 格與第三個皇后互相衝突,第 1 格 與第一個和第二個皇后互相衝突,第 2 格與前三個皇后都不會互相衝突 (如圖 3-3 的 h 圖),在陣列的第 3 格填上 2。

step 12. 找到第一組正確解,陣列表示為(1,3,0,2)。

step 13. 以此類推,可以找到第二組正確解為(2,0,3,1)。

由上述回溯法的步驟,畫出樹狀圖(圖 3-4),只要遇到不可行的地方馬上做 回溯的動作,不再往下繼續做,可以減少許多搜尋的範圍(圖 3-2 黃色的節點)和 時間。

(21)

圖 3-3:四后問題,用回溯法找出來第一組解的走法

圖 3-4:四后問題回溯法的樹狀圖

圖 3-4 四后問題,用回溯法找出來所有解,所走出來的樹狀圖。綠色代表放 入的皇后跟前一個或前幾個皇后的直線、橫線和對角線不互相重疊。紅色代表放 入的皇后跟前一個或前幾個皇后中至少一個以上的直線、橫線和對角線會互相重 疊。粉紅色代表找到正確的解。

(22)

回溯法比窮舉法少了許多不必要的步驟,如圖 3-1 的黃色節點,少了窮舉法 運算黃色節點的時間,程式的計算上相對的就比較快。

以下圖 3-5、圖 3-6 為回溯法執行四后問題的虛擬碼:

int Place(k,i) {

for(j = 0; j <= k-1; j++)

if(x[j] == i || Abs(x[j]-i) == Abs(j-k)) return(0);

return (0);

}

圖 3-5:四后問題判斷式

int NQueens(k,n) {

for( i = 1; i <= n-1; i++) {

if( Place(k,i) {

x[k] = i;

if( k = n-1) write(x[i : n]);

else NQueens(k + 1,n);

} } }

圖 3-6:四后問題主要程式

(23)

第四章 應用回溯法於護理人員換班程式設計

從第三章中,了解如何執行回溯法,在此章利用回溯法設計出一套符合規定 的護理人員換班程式,進而節省護理人員對於換班的時間和精神。在使用回溯法 去做換班前,必須先將當天的班,依圖形的想法建立成二維陣列,達到快速換班 的效果。

4-1 圖形基本概念

圖形(Graph)是指以邊(Edge)將節點(node)連接起來的物件,稱之為圖形,

如圖 4-1。圖形又分為有向圖和無向圖。

圖 4-1:圖形的節點與邊

一、無向圖:圖形上的邊是沒有方向性,只要有相連的節點,都可以互通,

例如圖 3-5 所示。可用二維陣列儲存。A、B、C、D、E,五個節點只 要有邊相連的話就可以互通性,這稱為無向圖。

(24)

圖 4-2:無向圖

以行為起點,列為終點,只要兩個節點間有產生邊便填上 1,若沒有邊,便 填上 0,以圖 4-2 為例,以 A 為起點,AB 之間有邊便在 A 行 B 列的陣列上填上 1,AD 之間沒有邊便在 A 行 D 列的陣列上填上 0,圖 4-3 為其二維陣列。

圖 4-3:無向圖二維陣列的資料結構

二、有向圖:指圖形上的邊是有方向性,邊的方向性可以表示兩點是否有相 通。節點與節點之間的邊,只要邊指向哪一邊,便可將資料換過去,但 另一方則不能交換。例如圖 4-4,當 A 點的邊指向 B 點,表示 A 點資

(25)

料可供給 B,但 B 點邊沒指向 A,表示 B 點資料不能給 A 點,稱為有 向圖。

圖 4-4:有向圖

以圖 4-4 為例,以 A 為起點,A B 之間的邊是從 A 到 B,便在 A 行 B 列的 陣列上填上 1,但是從 B 到 A 沒有箭頭,B 行 A 列的陣列上填上 0,圖 4-5 為其 二維陣列。

圖 4-5:有向圖二維陣列的資料結構

二維陣列的大小以節點多寡為判定,當圖有 4 個節點時二維陣列儲存大小為 4×4 的大小,當圖有 5 節點時則為 5×5 大小以此類推。

(26)

4-2 護理人員換班班表的圖形轉換

圖形演算法節點的建構,在護理人員的換班是非常重要的,護理人員排班需 要符合限制,來排出一個班表,就是第一章所說的六項規定。

建立圖形時,每個節點都需要具備幾個重要的換班資料:

1. 每位護理人員的編號。

2. 護理人員當天的排班別。

3. 可以換班的排班別。

圖 4-6;護理人員的排班表

(27)

圖 4-7:每個護士可換班的節點

首先必須先從排班表(如圖 4-6)計算每個護理人員可以上的班,每個邊線的 找法是將每個節點的原本班表上的班,跟其他節點所可以上的班去做比較,如圖 4-7 所示。舉例來說, 1 號護理人員原本所上的班為白天班, 4 號護理人員可以 上的班有白天班,所以在陣列的(4,1)裡填上 1,代表 1 號護理人員可以將原本所 上的班換給 4 號護理人員,若兩位護士原本所上的班都一樣,例如 3 號和 5 號護 理人員,則不能交換,陣列的(5,3)裡填上 0,以此類推,將圖形的邊界全部填完,

如圖 4-16。

(28)

圖 4-8:每個護理人員可換班的節點並加上邊

圖 4-9:護理人員可換班的二維陣列結構

利用圖形把某一天的圖形建立起來,可以得知每個節點之間的相連性,建立 出圖形演算法的二維陣列,藉由下一章節的用回溯法尋找出所有的迴圈,便可以 將護理人員換班的所有可能全部列出。

(29)

4-3 迴圈的意義

本論文將某一天護理人員的班表建立圖形,藉由圖形所儲存的資料去找可換 班別的迴圈,找出迴圈後便是換班的方法。

圖 4-10:每個護理人員可換班的圖

迴圈的意思是指護理人員可以互相換班的方法,迴圈的長度就是他是由多少 節點所形成的迴圈,而在換班中,迴圈長度就是有多少護理人員去進行同一次的 換班,以 1→4→2→1 這個迴圈來說,1 號護理人員原本上的班為 D(白天班),4 號護理人員可以上的班為 D(白天班)和 E(小夜班),1 號護理人員可以將 D(白天 班)換給 4 號護理人員,4 號護理人員原本上的班為 N(大夜班),2 號護理人員可 以上的班為 N(大夜班)和 R(休假),4 號護理人員可以將 N(大夜班)再換給 2 號護 理人員,2 號護理人員原本上的班為 E(小夜班),1 號護理人員可以上的班為 E(小 夜班)和 R(休假),2 號護理人員可以將 E(小夜班)換給 1 號護理人員,就形成了 其中一種換班的方法。

(30)

4-4 找尋換班的圖形中經過某節點所有迴圈的方法

根據上一節所描述,建立圖形後尋到的邊線,並儲存於二維陣列,藉由這個 二維陣列就可以找到以某節點為起點的所有迴圈。

int place(int k, int i) //k 為目前迴圈長度 {

if (k 大於使用者設定的長度) return(0);

if (k 為 0 時 i 不是起點) return(0);

if (k 為 0 時 i 是起點) return(1);

if (邊 k-1 到 k 時) return(0);

for (j=1; j<k; j++) if (x[j]==i) return(0);

return(1);

}

圖 4-11:換班判斷式 void find_cycle(int k)

{

for (i=0; i<n; i++) {

if (判斷式 Place 回傳 true) {

將節點編號放入陣列;

if (形成迴圈) {

if (每個班 level 3 有人上班) {

將迴圈轉換成換班方式秀出來;

換班數量+1;

} } }

else (find_cycle(k+1));

} }

圖 4-12:換班主程式

(31)

第五章 執行過程與結果

本論文使用 borland C++ builder 6 撰寫程式,作業系統為 Windows 7,硬體 規格是 Intel(R)Core(TM) i5 CPU 2.80GHz,搭配 DDR3 4.0 GB 記憶體。測試資 料為 2008 年的 7 月份彰化基督教醫院第二呼吸照護中心的班表。

本論文的目的是希望可以透過回溯法,幫助護理人員滿足換班的要求,達到 護理人員較滿意的上班情況,測試資料以 2008 年的 7 月份彰化基督教醫院第二 呼吸照護中心的排班表,如圖 5-1。

圖 5-1:排班表

(32)

5-1 程式執行過程

視窗上輸入年、月、最多換班人數和護理人員總人數 (如圖 5-2)

圖 5-2:設定程式中所有參數

利用 BCB 的讀擋功能(圖 5-2 中的 open file 鍵)將護理人員的名字(A 行)讀到 程式中表格裡的第 0 行,和 excel 檔裡的 D~AH 行的偶數列讀到表格中的對應位 置上,如圖 5-3。

圖 5-3:讀檔後班表

(33)

讀檔完成後,在想換班的人,想換班的日期上點選,如圖 5-4,電腦將會計 算出所可以換班的所有方法如圖 5-5。

圖 5-4:在想換班的人,想換班的日期上做點選

圖 5-5:最後程式跑完所呈現的結果

(34)

5-2 程式執行的結果

依照不同的迴圈總數,執行的時間也會不同,表 5-1 為每個人不同日期,搜 尋長度為 5 以內的迴圈,迴圈長度 2 欄位的迴圈表示兩人互換的換班方法數,迴 圈長度 3 以上的迴圈用來代表三人以上互換的換班方法數,迴圈總數則是所有找 出來的迴圈數,執行時間為每個人搜尋所有迴圈的時間,搜尋長度為 5 以內的迴 圈幾乎沒有太多的差別,但還是可以看出來越多迴圈,所需要的時間越長。

表 5-1:迴圈長度為 5 以內的迴圈總數和程式執行時間

人名 日期 迴圈長度 2 迴圈

長度 3 以上 迴圈總數 執行時間 (毫秒)

王■■ 1 15 8485 8500 16

洪■■ 2 5 1184 1189 16

賴■■ 3 3 476 479 15

黃■■ 4 3 640 643 15

陳■■ 5 15 2474 2489 16

程■■ 6 3 392 395 15

薛■■ 7 1 54 55 趨近 0

張■■ 8 0 0 0 趨近 0

郭■■ 9 4 644 648 16

程■■ 10 5 657 662 15

林■■ 11 3 538 541 15

蕭■■ 12 15 2157 2172 16

游■■ 13 5 487 492 15

張■■ 14 2 23 25 趨近 0

陳■■ 15 0 0 0 趨近 0

葉■■ 16 5 1018 1023 16

林■■ 17 0 113 113 0

詹■■ 18 5 666 671 15

陳■■ 19 5 1036 1041 16

王■■ 20 5 822 827 15

(35)

搜尋不同長度的迴圈,長度越長所需的時間也越長,表 5-2 以王■■1 號的班 表為例,分別是迴圈長度為 5 以內、長度 6 到長度 12 以內,花費的時間多 1 個 點就以倍數成長。

表 5-2:不同迴圈大小執行時間的比較

長度 5 6 7 8 9 10 11 12

總數 8500 63660 431420 2669460 14933820 74978700 335082060 1320410700 時間 16 毫秒 94 毫秒 608 毫秒 3.6 秒 19.3 秒 1 分 33 秒 6 分 18 秒 23 分 15 秒

(36)

第六章 結論

第五章經過執行後所產生的換班方法,如果設定的迴圈長度越長時間也越長,

但是護理人員換班時通常只會去找二到三個人換,比較少會找三個以上,所以在 實際的考量上便不會去考慮迴圈長度過長的情況,所以本論文在做測試時便以長 度為五的迴圈做測試。

在未來可能有更多的方法去做換班,或是考慮其他的因素進去,而將換班的 程式更符合護理人員所使用,也希望可以將此研究運用在不同領域的用途上。

(37)

參考文獻

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

[2] 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.

[3] 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.

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

[5] 郭娓吟,《整數目標規劃應用於護理人力-以中部某醫院附設護理之家為例》, 中國醫藥學院醫務管理研究所碩士論文,民國91年。

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

[7] 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.

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

[9] 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.

(38)

[10] 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.

[11] 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)pp. 44/1-44/18.

[12] 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) pp.743-766.

[13] 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.

[14] 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.

[15] J.H. Holland, “Adaptation in natural and artificial systems”. Ann Arbor, MI:

University of Michigan Press, (1975).

[16] F. Glover, “Tabu Search: A Tutorial”, Interfaces, Vol. 20 (1990) pp. 74-94.

[17] 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.

(39)

[18] 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.

[19] U. Aickelin and J. Li, “The application of Bayesian optimization and classifier systems in nurse scheduling”, in: Proceedings of the 8th International Conference on Parallel Problem Solving from Nature (PPSN VIII) Springer Lecture Notes in Computer Science 3242 Springer, Birmingham, UK (2004) pp. 581–590.

[20] K.A. Dowsland, “Nurse Scheduling with Tabu Search and Strategic Oscillation”, European Journal of Operational Research 106 (2) (1998) pp. 393–407.

[21] E. Horowitz, S. Sahni and S. Rajasekaran, “Computer Algorithms”, Computer Science Press Inc. (1998).

[22] 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.

[23] P. Hansen and N. Mladenovic’, “An introduction to variable neighborhood search”, in: S. Voss et al. (Eds.), Meta-heuristics: Advances and trends in local searchs paradigms for optimization, Kluwer Academic Publishers (1999) pp.

433–458.

[24] 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.

[25] N. Mladenovic’ and P. Hansen, “Variable neighborhood search", Computers and Operations Research 24 (11) (1997) pp. 1097–1100.

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

(40)

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

[28] U. Aickelin and J. Li, “A Bayesian optimization algorithm for the nurse scheduling problem”, in: Proceedings of 2003 Congress on Evolutionary Computation (CEC2003), IEEE Press, Canberra, Australia (2003) pp.

2149–2156.

[29] J.F. Bard and H.W. Purnomo, “Preference scheduling for nurses using column generation”, European Journal of Operational Research 164 (2) (2005) pp.

510–534.

[30] F. Bellanti, G. Carello, F.D. Croce and R. Tadei, “A greedy based neighborhood search approach to a nurse rostering problem”, European Journal of Operational Research 153 (2004) pp. 28–40.

[31] B. Cheang, H. Li and A. Lim, “Nurse Rostering Problems – a Bibliographic Survey”, European Journal of Operational Research 151 (2003) pp. 447-460.

[32] 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.

[33] 林純玉,《護理人員排班程式設計與實作》,中華大學生物資訊學系碩士班碩 士論文,民國 98 年。

[34] 黃翔瑞,《改良爬山演算法於護理排班程式設計》,中華大學生物資訊學系 碩士論文,民國 100 年。

參考文獻

相關文件

This paper formulates the above situation to the Multi-temperature Refrigerated Container Vehicle Routing Problem (MRCVRP), and proposes a two-stage heuristic which consists of

Tadei, A greedy based neighborhood search approach to a nurse rostering problem, European Journal of Operational Research 153 (2004) pp. Michelon, “A Multi-Objective Approach to

Chen, 2008, “Advanced Process Control of Metal Sputter Deposition Using a Time Series Analysis,” International Journal of Advanced Manufacturing Technology, 36(5), pp. Lee, 2007,

Mathematical problem posing: A case of elementary school teachers developing tasks and designing instructions in

Li, The application of Bayesian optimization and classifier systems in nurse scheduling, in: Proceedings of the 8th International Conference on Parallel Problem Solving

(1984), “Attractive quality and must-be quality,” Hinshitsu: The Journal of the Japanese Society for Quality Control,

(3) from 2001 to 2008, total 8 years, the average value of four indexes of operational performance for MediaTek has outperformed industry competitors, and the ranking for

A parallel route building algorithm for the vehicle routing and scheduling problem with time windows, European Journal of Operational Research, vol. A tabu search