• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
69
0
0

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

全文

(1)

中 華 大 學 碩 士 論 文

應用禁忌演算法於護理人員排班程式設計 Applying Tabu Algorithm to

the Nurse Rostering Program Design

系 所 別:生物資訊學系碩士班 學號姓名:M09820002 張鈺生 指導教授:侯玉松 博士

中 華 民 國 100 年 7 月

(2)

中文摘要

在目前研究中,護理人員排班在目前仍是 NP-hard 問題,還未有高效率和滿 足限制的最佳解決方法,對於醫院中護理人員而言,一份高效能的班表會直接影 響到護理服務的士氣與熱忱,是每位護理長需面對的課題。因此,如何設計一份 遵守法規和滿足護理人員需求的班表為本研究目的。

不同國籍的護理排班方式,無法直接導入國內醫護人員來使用,目前仍多以 人工方式進行排班。依循前學者的研究,配合彰化基督教醫院取得的實際資料,

利用爬山法產生的班表會受限於局部最佳解,無法取得全域的最佳解;因此運用 禁忌演算法的有、無渴望條件改進,實測護理人員排班程式,找尋出排班的優良 可行解。

關鍵字:護理人員排班、禁忌演算法、渴望條件。

(3)

ABSTRACT

In the current study, the nurse rostering is still a NP-hard problem, has not been high-efficiency and the best solution to meet the limits for hospital nurses, a high-performance affect the nursing service morale and enthusiasm. Each charge nurses needs to face the issue. Therefore, research purposes that the design of how to produced a compliance and meet the needs of nursing rostering schedule.

Way of care shifts of different nationalities, can not directly import domestic nurse to use. Rostering schedule is still mostly artificial way. Follow the before scholars with the "Chunghua Christian Hospital" to obtain actual data. Applying of hill-climbing algorithm will be limited to local optimal solution table and unable to obtain the global optimal solution. Applying tabu algorithm have aspiration criteria or not have, that to the actual testing nurse rostering program are find of the scheduling of good feasible solution.

Keywords:nurse rostering、tabu Search、aspiration criteria.

(4)

誌 謝

本篇論文能夠如期完成,最主要是家人不斷的在背後支持,並在我低落無助 的時候,在我背後多推一把,使我更有動力的專心於研究上;因大學至研究所外 宿多年,家人並時時電話關心我的生活起居、三餐要定時吃、記得早點睡等等,

太多無法數計,謝謝您們為我付出一切,也了解您們的辛苦,在此祝福您身體健 康,萬事如意。

感謝最重要的恩師侯玉松教授,不厭其煩反覆的教導我,在我遇到研究困惑 時,適當的給予幫助;不時的討論並指點我正確的方向,讓我能順利完成論文,

謝謝您,且萬分感激。

最後我要感謝這幾年來,陪我度過研究所生活的同學與朋友,因為在實驗室 中,有你們的陪伴帶來歡樂,在冰冷的實驗室裡帶來溫暖,希望畢業之後,職場 工作大家都順利。

(5)

目 錄

第一章 簡介... 1

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

1-2 護理人員排班問題之動機與論文綱要 ... 10

第二章 文獻回顧... 11

2-1 禁忌演算法 ... 12

2-2 變動鄰域搜尋法 ... 13

2-3 基因演算法 ... 14

2-4 整數規劃法 ... 15

2-5 爬山法 ... 16

第三章 禁忌演算法... 17

3-1 演算法的元素定義 ... 18

3-2 演算法的策略 ... 20

3-3 演算法的過程 ... 21

3-4 演算法的例子 ... 24

第四章 應用禁忌演算法於護理人員排班程式設計 ... 31

4-1 符合護理人員排班的禁忌演算法元素定義 ... 31

4-2 符合護理人員排班的禁忌演算法策略 ... 33

4-3 符合護理人員排班的禁忌演算法過程 ... 35

4-4 符合護理人員排班的禁忌演算法實際流程 ... 37

第五章 執行效能與評估... 41

5-1 無渴望條件之班表結果 ... 42

5-2 有渴望條件之班表結果 ... 45

(6)

5-3 無渴望條件與有渴望條件的比較 ... 48

5-4 禁忌演算法與爬山法的比較 ... 52

第六章 結論... 55

參考文獻 ... 56

(7)

表目錄

表 3-1:產生三個成員的禁忌名單 ... 25

表 3-2:第二次疊代產生不同移動鄰近解的成本 ... 26

表 3-3:第二次疊代時,禁忌名單情況 ... 26

表 3-4:第三次疊代產生不同移動鄰近解的成本 ... 27

表 3-5:第三次疊代時,禁忌名單情況 ... 28

表 3-6:第四次疊代產生不同移動鄰近解的成本 ... 28

表 3-7:第四次疊代時,禁忌名單情況 ... 29

表 5-1:扣分權重設定 ... 41

表 5-2:2008 年 7 月的班表,經不同參數產生的結果 ... 42

表 5-3:2009 年 5 月的班表,經不同參數產生的結果 ... 42

表 5-4:2008 年 7 月的班表,經不同禁忌名單大小產生的結果 ... 45

表 5-5:2009 年 5 月的班表,經不同禁忌名單大小產生的結果 ... 46

表 5-6:2008 年 7 月的班表,無渴望條件與有渴望條件的比較表 ... 48

表 5-7:2009 年 5 月的班表,無渴望條件與有渴望條件的比較表 ... 48

表 5-8:2009 年 5 月的班表,有、無渴望條件與爬山法的比較表 ... 52

表 5-9:2009 年 5 月的班表,有、無渴望條件與爬山法的比較表 ... 52

表 5-10:有渴望條件下,短時間與長時間的比較表 ... 54

(8)

圖目錄

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

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

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

圖 1-4:2008 年 7 月彰基第二呼吸照護中心護理人員排班表的人數統計圖 ... 5

圖 1-5:強制要求每個班 LEVEL 3 一定要有人上班 ... 6

圖 1-6:連續三天班出現休假、上班、休假 ... 7

圖 1-7:需滿足護理人員的約班需求 ... 8

圖 1-8:雖連續出現 D、E、N 的班別,但不屬於「跳班」的情況 ... 8

圖 1-9:符合夜班天數需求 ... 9

圖 3-1:禁忌演算法之流程圖 ... 22

圖 3-2:成本為未計算,無任何邊線的樹狀圖 ... 24

圖 3-3:計算成本後,最小成本展開樹的連線 ... 24

圖 3-4:經過疊代第二次的結果,把最小成本的樹狀圖建製出來 ... 26

圖 3-5:經過疊代第三次的結果,把最小成本展開樹建製出來 ... 27

圖 3-6:經過疊代第四次的結果,把最小成本展開樹建製出來 ... 29

圖 3-7:最後結果的最小成本展開樹 ... 29

圖 4-1:無渴望條件的禁忌演算法之流程圖 ... 37

圖 4-2:有渴望條件的禁忌演算法之流程圖 ... 39

圖 5-1:無渴望條件下,禁忌名單大小與執行時間的統計圖 ... 43

圖 5-2:無渴望條件下,禁忌名單大小與扣分分數的統計圖 ... 43

(9)

圖 5-3:有渴望條件下,禁忌名單大小與執行時間的統計圖 ... 46

圖 5-4:有渴望條件下,禁忌名單大小與扣分分數的統計圖 ... 47

圖 5-5:2008 年 7 月班表,禁忌名單大小與執行時間的統計圖 ... 49

圖 5-6:2008 年 7 月班表,禁忌名單大小與扣分分數的統計圖 ... 50

圖 5-7:2009 年 5 月班表,禁忌名單大小與執行時間的統計圖 ... 50

圖 5-8:2009 年 5 月班表,禁忌名單大小與扣分分數的統計圖 ... 51

圖 5-9:2008 年 7 月,總分數的統計曲線圖 ... 53

圖 5-10:2009 年 5 月,總分數的統計曲線圖 ... 53

(10)

第一章 簡介

現今的社會中,醫院扮演著重要的體系,不論生病、受傷都需要在此醫治,

在這體系中扮演著負責協助醫療及看護照顧則是護理人員,護理人員必頇 24 小 時都進駐在醫院內,負責看護照顧以及突發狀況的緊急處理,而護理人員並不是 每位都需要 24 小時在醫院待命,只頇固定的護理人員數量駐守在醫院內待命,

一天 24 小時護理人員如何分配且符合護理人員的需求,要做到這樣的排程,必 頇要有一個符合護理人員需求的排班表。

護理人員排班表在每個月時,都需經由護理長一人獨自完成排班,根據文獻 中[3],彰化基督教醫院〈簡稱「彰基」〉曾■卿護理長的觀察,護理長要製作一 個優良的護理人員排班表注重公平性(fairness)、與彈性(flexibility);依據護理長 的排班經驗要完成一份排班表需耗時半日至二日的時間才能完成一份 20 名~30 名的護理人員排班表,因此設計與實作護理人員排班軟體,而排班軟體排出的班 表,是非完全滿足護理人員的需求,就此結合了禁忌演算法來達到優化的排班表 的製作,以幫助護理人員擁有更符合需求和人性化的班表。

(11)

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

護理長安排下一個月份的班表時,護理人員繳交個人需求的約班表,經護理 長收集統整,護理長在根據相關法規限制以及個人需求製作下個月的護理人排班 表。

以彰基第二呼吸照護中心在 2008 年 7 月的 23 名護士的部分約班表,如圖 1-1 中,約班時,會看到一些專有名詞,如下:

一、表內「約 D」為「約白天班」,上班時間為早上八點整~傍晚四點整。

二、表內「約 E」為「約小夜班」,上班時間為傍晚四點整~深夜零時。

三、表內「約 N」為「約大夜班」,上班時間為深夜零時~早上八點整。

四、表內「約 R」為「約休假」。

五、表內「JCI/PMR、ICU」等訓練代號為護理人員參與的專業課程,不能 上班等同於「約 R」。

六、表內一整個月不上的班別正所謂「包班」,如下:

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

(12)

(一)「不上 E」的包班為這個月都不上小夜班。

(二)「不上 N」的包班為這個月都不上大夜班。

(三)「不上夜」的包班為這個月都不上夜班,只上白天班。

從圖 1-1 中,護理人員王■娥的約班表為: 7 月 5 日「約 D」、7 月 6 日~7 月 8 日「約 R」,以這形式持續預約班。在姓名的右欄顯示「包班」的訊息,例 如王■娥希望這個月不上小夜班則以「不上 E」表示。約班表中也會記錄上月的 護理人員月底最後幾天的連續班別,如:在「包班」訊息「不上 E」下方的「3R」

表示王■娥在上個月時,6 月班表的最後三天是休假。

護理長製作排班表時,會根據約班表的約班情況,完成一份排班表。如圖 1-2:2008 年 7 月彰基第二呼吸照護中心護理人員部分排班表所呈現中,表內的 護理人員王■娥在 7 月 5 日~7 月 8 日的約班是DRRR,而排班表給予DRR

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

(13)

R,符合護理人員的預約班別的需求;另外,護理人員洪■縈在 7 月 1 日~7 月 3 日的約班是RRE而排班表給予RRE,也符合護理人員的預約班別的需求。

製作一整個月的排班表時,護理長不只是依據約班情況,還必頇遵守硬限制 和軟限制進行排班,這相關的規定與限制則會因為不同醫院或病房的不同而有差 異,經文獻中,彰基護理長的病房,得出以下的硬、軟限制:

一、硬限制:在護理人員排班時,依據法規必頇遵守的限制。

(一) 每天每人只能上一種班:

當每天每人上超過一種班,則有四種狀況:

1. D、E、N班。

2. D、E班。

3. E、N班。

4. D、N班。

前三種班別都是不間斷的連續上班十六小時以上,而最後一種D、

N班則是休息八小時後繼續上班,所以要為護理人員的身體健康,法規 規定每天每人只能上一種班。

(二) 上班天數不可連續超過 7 天(≦ 7 天),在下一天排班頇給予休假:

如圖 1-3 為例,郭■婷在 7 月 3 日~7 月 9 日排了 7 天大夜班,以上 班天數不可超過七天的限制下,在連續上班後的第八天的 7 月 10 日那 天放假,以遵守不可連續工作超過七點。

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

(14)

(三) 大夜班隔天不可以接白天班:

在班表上,不能出現 N、D 的班別,這樣連續上班的情況,已超時 工作,對護理人員的身體健康有所影響,連帶著疲勞會影響工作品質,

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

(四) 大夜班隔天不可以接小夜班:

在班表上,不能出現 N、E 的班別,因為中間間隔八小時,對護理 人員的身體健康有所影響,疲勞會影響工作品質,所以大夜班隔天不可 以接小夜班。

(五) 小夜班隔天不可以接白天班:

在班表上,不能出現 E、D 的班別,因為中間間隔是八小時,對護 理人員的身體健康有所影響,而疲勞會影響工作品質,所以小夜班隔天 不可以接白天班。

(六) 需滿足每日白天班 ( D )、小夜班 ( E )、大夜班 ( N ) 的護理人員 需求數:

每天都需要固定人數的護理人員去值班,維持照護的品質,如圖 1-4,以 2008 年 7 月彰基第二呼吸照護中心護理人員排班表的人數統計 圖,7 月 1 日~7 月 14 號每天白天班( D )需要五人,7 月 15 號~7 月 31 日平日班一律六人、假日班需安排五人;小夜班 ( E ) 每天需要安排五 人;大夜班 ( N ) 每天需要五人。

圖 1-4:2008 年 7 月彰基第二呼吸照護中心護理人員排班表的人數統計圖

(15)

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

在護理階級[4]有提到,level 的等級是以和護理人力與經驗評核通 過才能提升,level 1 是最基層的護士,level 2 重症病人整體性護理能 力,level 3 認識護理人員法和護理的能力問題,level 3 的護理人員可 稱為培養副護理長的階級,所以強制要求每個班 level 3 一定要有人上 班,如圖 1-5,曾■卿以下的七位 level 3 的護理人員,在排班時,每天 每個班別都要有一人上班。

圖 1-5:強制要求每個班 level 3 一定要有人上班

(16)

二、軟限制:在護理人員排班時,盡可能達到需求的限制。

(一) 連續三天班不能出現休假「R」、上班「D、E、N」、休假「R」的 組合:

在休假、上班、休假的情況,會影響上班的工作品質,且會造成護 理人員未能達到連續放假的心情,讓值班的人會有所反彈,所以盡量有 所避免。

圖 1-6:連續三天班出現休假、上班、休假

(二) 休假天數、周休二日的周六、周日、以及國定假日需分配給每位護 理人員要平均:

每天要有固定的人數上班外,還要考慮每個月的六日、國定假日的 休假天數,平均分配給每個護理人員,除了平均分配外,每天的輪流休 假的人數也要平均,為了顧及到每位護理人員的需求與期望,每天的休 假天數要穩定,避免影響到硬限制中的每天需滿足 D、E、N 班護理人 員需求人數。

(三) 需滿足護理人員的約班需求:

硬限制中,每天需滿足 D、E、N 班護理人員需求人數,在此條件 下每位護理人員的約班需求也因盡量滿足,如圖 1-7 部分的排班表中,

最下面一排的 D、E、N 班護理人員需求人數有達到的情況下,護理人 員在約班的情況需盡量滿足,但在 7 月 3 日,郭■婷約 E 班卻排出 N

(17)

班的情況,因為當日未滿足硬限制的需求 N 班需要五名的情況下,把 約 E 班的情況逼不得已排 N 班,但大致上還需盡量滿足護理人員約班 的需求。

圖 1-7:需滿足護理人員的約班需求

(四) 應避免「跳班」的情況發生,如排班上出現 D、E、N 的連續班別:

在排班上,如果出現 D、E、N 的連續班別,就屬於跳班情況,但 在圖 1-8 中,連續出現DEENNN的班別,此情況以漸進式的方式調 養生理時鐘,才不會影響到護理人員的身體情況不屬於「跳班」;而第 一天白天班、第二天小夜班、第三天大夜班,這樣連續三天的班別排班

圖 1-8:雖連續出現 D、E、N 的班別,但不屬於「跳班」的情況

(18)

情況才稱之為「跳班」。

(五) 符合夜班天數需求:

除了每天的日夜班天數,要固定的人數外,每位護理人員的上班天 數,也要符合天數需求,如圖 1-9 中,王■娥包班情況不上 E,不上小 夜班的天數比率就會分配到日班和大夜班上,;洪■瑩包班情況不上 N,

不上大夜班的比率就會分配到日班和小夜班上;賴■怡包班情況不上夜,

不上小夜班和大夜班的比率就會全分配到日班;以上的清況,相對於沒 包班的護理人員王■融的 D、E、N 班較為平均。

圖 1-9:符合夜班天數需求

所以,排一份護理排班班表是一件很費工又費時的事情,遵守相關法規外,

還需符合護理人員的需求,就此設計「護理人員排班程式」[31、35]來減少護理 長的負擔,達到符合護理人員的需求的排班表。

(19)

1-2 護理人員排班問題之動機與論文綱要

護理長長時間的照顧病患,也忙於教導新進來的護理人員處理相關事務外,

護理長還需要安排護理人員一整個月的班表,而製作一份班表要花費半日至二日 的時間,而製作一護理人員排班程式減輕護理長的負擔,利用禁忌演算法讓班表 更遵守相關法規以及符合護理人員的約班需求。

第一章中,討論了一些護理人員班表的良窳影響護理人員的工作情況,且提 出了護理人員在約班的情況的專有名詞,還有硬、軟限制的需求,這些在護理排 班問題上是不可缺少的。

了解護理人員排班問題概述與其目的後,在第二章文獻回顧中,為了探討至 今為止在護理人員排班問題有哪些應用與研究,且前人是否有提出改進的方法或 嘗試,都值得我們去研究。

第三章則討論禁忌演算法應用在哪些方面,為何禁忌演算法常被用於尋找最 佳解;第四章則是討論禁忌演算法如何套用在本論文的研究中產生一個最佳解的 護理人員排班班表;第五章討論套用禁忌演算法後的執行效能;第六章結論。

(20)

第二章 文獻回顧

在 1976 年,Miller[33]發現了護理人員排班的問題而著手開始研究。在這研 究的相關領域內護理排班問題已被證明[10、39]為 NP-hard 的難題;不同國家醫 療體制的想必都相會遇到相似的問題,護理排班的問題多年來一直都在研究,至 今還未有公認最快速且適合的唯一方法,早期求解護理人員排班問題時,套用了 許多最佳化演算法[5-6、8、32、34-35]來解決此問題,就執行的結果而言,耗時 且效率不佳。

近年來為了加快執行結果的效率,設計了啟發式演算法(heuristic algorithm) 來求解護理人員排班問題,找出可行解或最適解來增加效率[1、7、10、15]。把 以往護理人員排班的相關研究做分類,利用禁忌演算法(tabu saearch) [12、16、

21、24、31]、變動鄰域搜尋法(variable neighbourhood search) [19、22、27、36] 、 基因演算法(genetic algorithm) [10、17、18、20]、整數規劃法(integer programming)[2、

9、11、13-14、23、39]、爬山法(hill climbing)[3]…等等;而研究內容之後再做介 紹。

(21)

2-1 禁忌演算法

禁忌演算法又稱禁忌搜尋法於 1986 年左右由 Glover[25]所提出,此法是一 種輔助啟發法則,利用記錄先前之搜尋結果以避免陷入局部最佳解,而去尋找全 域最佳解的演算法。

禁忌演算法的演算過程,是利用短期記憶的結構,記錄前幾次的移動,以避 免倒退或迴圈的情況,這個短期記憶的結構就稱為禁忌名單(tabu list),禁忌名單 越大,則陷入區域最佳解的機會越低,但是過度的遵守禁忌限制(tabu restrictions),

可能會導致錯失最佳解,因此必頇搭配期望法則(aspiration criteria),以便讓禁忌 解有再度被選擇的機會,持續著以上步驟找尋最佳解,直至結束。

再相關研究的論文中,運用啟發式禁忌搜尋法,探討比利時醫院的護士人員 排班問題[21]、醫療機構的商業系統的工作人員時間表問題[16]、或是歐洲大型 綜合性醫院的護理人員名冊問題[24],這些的相似缺點都在排班的過程中花費太 長時間,若在短時間內完成即會造成護理人員約班需求受到爭議,等此問題都需 要改進。

(22)

2-2 變動鄰域搜尋法

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

陸 續 又 有 相 關 的 演 算 法 被 提 出 如 下 : (1) 變 動 鄰 域 尋 優 法 (variable neighborhood descent);(2)減少變動鄰域搜尋法(reduced VNS);(3)變動鄰域分解 搜尋法[28](variable neighborhood decomposition search);(4)偏鄰域變動搜尋法 (skewed variable neighborhood search);(5)平行變動鄰域搜尋法(parallel variable neighborhood search)。

在不同的發展中,為了減少時間增加執行效率而不斷改進演算法,而主要的 理念是希望尋找區域最佳解,並與目前最好解進行比較,若目前最好解列於區域 最佳解,則此區域最佳解將會取代目前最好解,並繼續搜尋,一直到滿足停止條 件且無法在改善目標值之後,才結束搜尋。

在變動鄰域搜尋法可以針對更多的軟限制、並盡可能縮短搜尋製作一份護理 人員排班的計算時間;將一開始定義鄰近解,就可以超過上千個,若透過尋找鄰 近解的方式把目前鄰近解縮小到幾百個。以這樣方式可以在護理人員排班表中找 尋更多的可行解,來滿足更多護理人員需求;而當一個鄰近解取得之後又要往下 一個鄰近解再繼續搜尋,這樣持續的找尋最佳解會影響到更多搜尋的時間,所以 要面對快速且又能更滿足護理人員需求的方法,這是可以再改良的。

(23)

2-3 基因演算法

「基因演算法」一名詞,首度創用是在1967年Holland的學生Bagley發表的畢 業論文中,而到1975年Holland正式發表著作[30],奠定遺傳演算法的發展基礎與 思考架構。

主要目的在於利用達爾文進化演論「物競天擇,適者生存」的方式將生物演 化機制所發展出來的基因遺傳演算法,近來被廣泛的應用於搜尋各類問題的最佳 解,藉由生物物種的基本運算子,在每代間進行演化,中而尋得適當問題的最佳 解。

其過程一開始是初始(initialization)隨機產生的初始群體(population)K=0代的 個體,接著評估(evaluation) 初始群體的個體的適應度(fitness);在從群體中重新 選擇(selection)高適應度、強競爭力的個體,經由遺傳機制(genetic operation)的複 製(reproduction)、交配(crossover)和突變(mutation)產生新的K+1代的族群,再繼 續評估重新選擇,再經由遺傳機制,再形成一個新的、下一世代的群體,然後再 評估,這樣一直重複運作,一代一代的演化下去,對於無法預知最佳解的狀況,

快速求得某種程度之滿意解,適合非線性等多變數複雜問題之求解。

藉由基因演算法產生的護理人員排班表,提供了一個高效率、靈活的排班系 統,但搜尋解答時不能保證找到真正的最佳解,而是找出近似解,但近似最佳解 要經過廣大解答空間演化到某種程度的可能最適解,此系統只適用於某些狀況或 病房,無法複製到各大的醫院最為參考,仍有需要改進的地方。

(24)

2-4 整數規劃法

早在1976年時,Miller [35]以人員需求最小為目標,並考慮護理人員之階級 與排班偏好具有抵換關係,使用線性整數規劃法製作護理人員班表;1998年,

Millar and Kiragu [34]利用網路規劃法,在週期與非週期排班模式中,對12小時 值勤之護理人員進行排班與比較,並認為數學規劃模型解護理排班問題具有良好 效率與合適解。

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

將護理人員輪值視為限制滿足問題(constraint satisfaction problem),並採用「排休」

與「派班」二階段限制規劃(constraint programming)模式依序求解。以新竹署立 醫院的20名護理人員排班問題中,在護理人員排班的硬、軟限制…等各式問題定 義的相當詳細,從結果分析來看,在二階段分別產生3520、4660個變數個數與5592、

4939個限制式數,並利用ILOG OPL Studio 3.0軟體,解出其整數規劃式的答案。

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

(25)

2-5 爬山法

爬山法是數學優化技術,一種簡潔的啟發式搜尋方法,其局部搜索性能很好,

但它不能保證找到全域最佳解。爬山法也是一種「疊代改進演算法」,其運作過 程是先定義出鄰近解,也就是利用單一解在解空間作搜尋,讓評估函數評估所有 的鄰近解,並在每一次的疊代評估與改進中,在目前解的鄰近解空間選擇出一個 最佳鄰近解,當最佳鄰近解的評估函數值比目前解的評估函數值來的佳時,就以 最佳鄰近解取代目前解,重複此過程,直到無法找到更佳的鄰近解為止。

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

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

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

因此,為了研究護理人員排班問題,在文獻中提到,發現同醫院病房的不一 樣使得護理人員需求與約班方式不同,各護理長排班方式也有差異。在護理人員 排班的程式設計中,任何的變數都會帶來些許的差異。所以,利用文獻中所留下 的數據資料加以探討,設計護理人員排班程式,以更有效率的找出最佳的解方式 產生護理人員排班班表,降低護理長的工作負擔,並達到護理人員的約班需求。

(26)

第三章 禁忌演算法

禁忌搜尋演算法為學者 Glover 於 1986 年所提出[25],具有記憶每次搜尋路 徑之能力,因此可避免陷入區域解、重覆搜尋之前已搜尋過之路徑。然而,不同 於一般的搜尋方式,在禁忌演算法中的目標值,每次搜尋的解不需要比之前獲得 的解來的更好。因近二十年來,禁忌搜尋法已普遍地被應用於工程或管理上如物 流中心選址、產能最佳化、投資組合等領域之問題,在一些研究中利用禁忌演算 法成功求解排程之相關問題。

禁忌演算法的主要理念,在於所設定的搜尋次數之中,建立一可變動、可記 憶的禁忌名單。在禁忌演算法的每次搜尋中,每個解的變更將會 立即記錄於禁 忌名單內,並從目前不重複於禁忌名單的解中選出最好的成為下一次搜尋的起點,

然而這樣的計算方式將會產生禁忌名單大小的 問題。為取得求解速度與求解品 質之平衡,禁忌名單到達設定之長度後,將會循著先進先出的佇列原則,釋放名 單中最早記憶的名單成員。

透過適當地設計禁忌名單長度與成員的篩選機制,禁忌搜尋法將可避免重覆 的搜尋且引導解至尚未探索的解空間以獲得更多好的解。

(27)

3-1 演算法的元素定義

在使用禁忌演算法之前,需要了解構成演算法的基本元素,而這些元素影響 禁忌搜尋法效能[29],如下:

一、起始解(initial solution)

第一次做搜尋時,在整個局面搜尋完後,產生的解答,則稱之起始 解。

二、禁忌移動(tabu moves)

第一次做搜尋後,產生的初始解放入至禁忌名單內,接著再做第二 次搜尋時,為了避免同初始解的情況,在做搜尋前會根據禁忌名單內的 解禁止做相同搜尋動作,而產生第二個不相同的解,以此類推,產生第 三個解、第四個解...,直至禁忌名單的大小滿了之後,在以先進先出法 (First In, First Out; FIFO)的方式覆蓋其第一次進來的解答,來達到禁忌 名單的移動。

三、鄰域大小(size of neighborhood)

鄰域大小是一項數值,它代表著每次求解時搜尋的次數。

四、禁忌名單的大小(size of tabu list)

禁忌名單的大小影響禁忌移動,也影響著整個局面的運送速率與品 質。當禁忌名單越大時,在搜尋受到限制就越多,則會加快到達鄰域大 小的值,速度就比較快;反之,當禁忌名單越小,受到限制就越少,增 加搜尋的結果,則會降低到達鄰域大小的值,速度就比較慢,所以要擁 有快速的搜尋和解答的品質,設計大小也是一門課題。

(28)

五、渴望條件(aspiration criterion)

渴望條件為一判斷是否使用禁忌法則的方式,當在搜尋中找到目前 最佳解,代表擇此移步後可找到比目前最佳解還更好的解時,為了求演 算法的效率,此時可以不受禁忌規則之限制。在禁忌演算法的應用上,

可依據求解的目標值,決定是否要用渴望條件。

六、停止條件(stopping criterion)

停止條件用來終止搜尋流程的依據,當條件一直無法使目標值獲得 改善情況之下的最大運算次數。

當了解構成的元素後,如何讓禁忌演算法執行,我們應要有一些策略,讓演 算法有效的執行。

(29)

3-2 演算法的策略

在執行演算法前,首先要先理解演算法的架構元素外,更重要的是它的執行 策略[38],如下:

一、禁止策略(forbidding strategy)

當要設定一個禁忌名單的結構,要考慮到一點,控制什麼東西進入 這禁忌名單內,要能夠在禁忌搜尋時,可以透過這類的變數,限制搜尋 達到禁忌的效果,設定一個好的禁忌名單的結構,則可以加快搜尋的速 度,反之,因禁忌名單的結構在限制搜尋時而拖累整體的執行效率。

二、解放策略(freeing strategy)

當設計好一個禁忌名單的結構,控制進入禁忌名單的值,接著要可 以做刪除禁忌名單內之值的方法或者修改,不然當禁忌名單滿了,則不 再繼續做禁忌名單的更新動作,最後則無法跳脫局部的最佳解。

三、短期策略(short-term strategy)

當了解禁忌策略和解放策略後,這時要考慮的是在做怎樣的動作下 加入禁忌名單,而什麼情況下刪除禁忌名單的值而取代次優的解。當搜 尋不斷的跑,一直加入禁忌名單的值也越多,則會遇到兩種情況:一是 當禁忌名單滿了,則遵守先進先出法,哪個值優先進來,就先把此值被 後進來的值取代掉;二是當渴望條件存在,當目前搜尋的解比禁忌名單 的解還要好時,把禁忌名單的值被目前搜尋的值給取代掉。

以上策略就可以完成禁忌移動的條件,接著在介紹如何讓演算法持續的做搜 尋,直至停止的過程。

(30)

3-3 演算法的過程

了解基本構成的元素與策略,接著執行演算法的流程[26],步驟如下:

步驟一:在盤面 S 中,選擇一個目前解 i,當作一開始的起始解,並把最好 歷史解 i* =目前解 i,而疊代數 k=0。

步驟二:設定 k=k+1,並且設定一個鄰近解移動的名單 V*,在目前解 i 與 疊代數 k 帶入鄰近解 N(i,k)的評估;評估鄰近解 N(i,k)並且檢查是 否有解的移動在禁忌名單內,接著考量有無滿足渴望條件。

步驟三:而從所有鄰近解的評估中,選擇最好的解移動 j 放入鄰近解 移動 V*中,並且設定目前的解 i=移動 j 的解

步驟四:假如目前解 f(i)的評估 <最好歷史解 f(i*)的評估,則表示目前解 i 比最好歷史解 i*還要好,並把最好歷史解 i* = 目前解 i。

步驟五:並把 j 的移動更新至禁忌名單內,並記錄最好歷史解的為渴望條件 的評估。

步驟六:如果達到停止條件(Stopping Criterion)則停止。

否則轉至步驟二。

以上為步驟流程,當停止條件滿足時則不繼續執行演算法,而如何滿足停止 條件[26],則條件可分為:

一、N(i,k+1) = 0。當鄰近解 i 中無任何可行解的情況。

二、k大於最大數疊代數目。

(31)

三、疊代的數目被上一次改進 i*大於指定的數字。

四、證明一個最佳解已被找到。

當以上四點停止條件其一達成,則演算法終止,最後會跑出最後的結果。而 整個演算法流程圖 3-1,如下:

圖 3-1:禁忌演算法之流程圖

根據圖 3-1 流程圖,首先從一個局面中找出一個起始解,接著在目前解移動 中,是否存在禁忌名單內,如果是,則評估這次移動的解是否滿足渴望條件;如 果否,則評估這次移動的解,接著記錄所有移動後的評估,選取評估中最好的,

(32)

把目前解更新為最好的移動的解,並評估目前解是否比最好歷史解,如果是,目 前解取代最好歷史解;如果否,則不改變最好歷史解。並更改最好歷史解為渴望 條件的評估,然後更新禁忌名單,再去做停止條件的判斷,假設滿足停止條件,

則把最終的最佳解列出來;反之如果未滿足停止條件,系統從新搜尋可移動的解,

並更新為所有解的評估,之後再從目前解當起始解,繼續做演算流程。

了解禁忌演算的過程後,將在下一節,舉例一個演算法的相關例子,讓此更 為理解。

(33)

3-4 演算法的例子

為了清楚明白禁忌演算法的過程這裡將舉例說明利用 Hillier 和 Lieberman 的 Introduction to Operations Research 書[29]中所提應用禁忌演算法來解最小成本 展開樹的例子,如圖 3-2,來做說明。在這例子中目的是將這樹圖狀以最小的成 本下,連接所有節點;在圖 3-2 中 A 和 B 的邊線為 20 則 A-B 的成本為 20、B 和 E 的邊線為 30 則 A-E 成本為 30…等以下以此類推;然而經過演算法跑過後,

得圖 3-3,在未考慮任何限制下,經演算法算出連接所有節點,而總花費成本為 50,此情況為最佳解。

圖 3-2:成本為未計算,無任何邊線的樹狀圖

圖 3-3:計算成本後,最小成本展開樹的連線

(34)

現在,增加兩條約束條件:

約束 1:

當 AD 或 DE 連成線的情況,增加 100 成本。

約束 2:

當 AD、CD 和 AB 兩兩節點連成線,若三種情況下出現兩種 情況,增加成本 100;若三種情況都出現,則增加成本 200。

當多了兩條約束條件後,如圖 3-2 右圖中,帶入禁忌演算法下去,設定禁忌 名單大小為 3 個禁忌成員,如表 3-1;當在第一次疊帶中得知,最小成本為 50 但有了約束條件在,成本被加了 200 上去最後成本為 250;但在第二次疊代中,

從表 3-2 中,得知在所有鄰近解的結點算出的成本中,找到最小值 75,則加入 DE 邊線,刪除 AD 邊線,如圖 3-4,並且 DE 的邊線加入禁忌名單內,如表 3-3,

避免搜尋走回頭路或者達到渴望條件再做更新。

表 3-1:產生三個成員的禁忌名單 禁忌名單

(35)

表 3-2:第二次疊代產生不同移動鄰近解的成本

圖 3-4:經過疊代第二次的結果,把最小成本的樹狀圖建製出來

表 3-3:第二次疊代時,禁忌名單情況 禁忌名單

DE

(36)

表 3-4:第三次疊代產生不同移動鄰近解的成本

在第三次疊代中,因為有禁忌名單中有 DE 邊線,如表 3-3;經搜尋後得表 3-4 的鄰近解成本, DE 為禁忌移動,所以不去更動,而有做*註解的 DE 則是還 存在禁忌名單內,在第三次疊代中算出最小成本 85,比第二次疊代中來的大,

但以目前盤面中,成本 85 是最小的,並刪除 AB 邊線,加入 BE 邊線如圖 3-5,

並把 BE 加入禁忌名單內,如表 3-5。

圖 3-5:經過疊代第三次的結果,把最小成本展開樹建製出來

(37)

表 3-5:第三次疊代時,禁忌名單情況 禁忌名單

BE

DE

在第四次疊代中,因為禁忌名單中多了 BE,如表 3-5;而目前名單內有 DE、

BE,而經過鄰近解搜尋後得表 3-6,DE、BE 都被加上*,表示禁忌名單內存在,

從表中可以看到成本最小值 70 為加入 CD 邊線、刪除 DE 邊線如圖 3-6,因達到 渴望條件設定,將禁忌名單的 DE 做刪除的動作後,得到比歷史最佳解的情況還 要好,則把 CD 覆蓋 DE 禁忌狀態,如表 3-7。

表 3-6:第四次疊代產生不同移動鄰近解的成本

加入 刪除 成本

AB AB AB

BE*

CE AC

禁忌移動 100+0=100

95+0=95 AD

AD AD

DE*

CE AC

60+100=160 95+0=95 90+0=90 CD

CD

DE*

CE

70+0=70

105+0=105

(38)

圖 3-6:經過疊代第四次的結果,把最小成本展開樹建製出來

表 3-7:第四次疊代時,禁忌名單情況 禁忌名單

CD

BE

再繼續疊代的結果,直至滿足停止條件,經約束的兩個條件下,找到的最佳 解為成本 70,如圖 3-7。額外疊代情況為劣解,則不一一列出。

圖 3-7:最後結果的最小成本展開樹

(39)

在疊代第三次的情況中,因歷史最小成本為 75,但在目前盤面中 85 最小,

為了確保全域最佳解,保存歷史最小值外,也要從盤面中找出鄰近解最小值。這 樣才能從局部的最佳解跳脫出來,變成全域的最佳解。

當了解禁忌演算法如何運作後,有了詳細的例子作為輔助,把禁忌演算法加 以應用在護理人員排班問題上,進而找出全域的最佳解。

(40)

第四章 應用禁忌演算法於護理人員排班程式設 計

從文獻中的爬山法[3],不能找到全域的最佳解,因此套用禁忌搜尋法來解 決護理人員排班程式的問題。從第三章節中,了解如何建構一整套的禁忌演算法,

在此章節沿用禁忌演算法的啟發式模式建構出一套符合護理人員排班的架構,從 前者保留下的彰基排班資料與數據,進而可以實測應用禁忌演算法於護理人員排 班程式的效率與品質。

4-1 符合護理人員排班的禁忌演算法元素定義

在設計符合護理人員排班的禁忌演算法前,要重新定義一次禁忌演算法,讓 演算法具有調理和邏輯,定義如下:

一、起始解

將一份護理人員排班的班表,當作起始解的目前解。

二、禁忌移動

一份班表內,20 名護士要安排一整個月的班表,而在做評估時,

每日每個護士做搜尋的動作,以兩兩護士交換產生的鄰近解當做評估,

而每日就有 20*19 的 380 種交換情況,而每個月有 30 天,則有 30*20*19 的 11400 種交換情況中找出最好的解,並把最好的評估移動,日期放入 禁忌名單內,讓下次做搜尋時,在禁忌名單內有相同的日期而不做搜尋 動作。假設有渴望條件情況下,會讓禁忌名單的日期繼續搜尋,如果鄰 近解的情況沒有比禁忌名單的解還要好,就繼續放入名單內,評估分數 不變;否則,更改禁忌名單內當天日期,並更改最好的評估分數。

(41)

三、鄰域大小

每個月 30 天,需要 20 名護士輪值早班、小夜班、大夜班,以及放 假,而做搜尋時,每日的排班兩兩護士都要做交換做評估,所以當每日 交換情況有 380 種情況,而每個月則有 11400 種情況,則鄰域大小為 11400。

四、禁忌名單的大小

在一個月內有 30~31 天,每日做兩兩護士班別交換得況下,在本研 究中設計一個月內的日期做為禁忌移動的依據,而在有、無渴望條件的 兩種情況下,最大的禁忌名單都設為 30 個,最小設為 5 個,做為效率 與品質的考量。

五、渴望條件

當禁忌名單內,有相同日期的禁忌成員,因目前解比最好歷史解還 要好,此時渴望條件達成,並把禁忌名單內相同日期的評估取代為目前 解的評估。

六、停止條件

在本研究中 ,為了設計一個快速有效率的排班表,從局部優良可 行解中跳脫出來去找全域的優良可行解,在此設計符合護理人員排完班 表的時間,兩小時為基準,做為禁忌演算法疊代最大次數的時間,當作 停止條件。

(42)

4-2 符合護理人員排班的禁忌演算法策略

定義完符合禁忌演算法的元素後,接著要定義一個符合應用禁忌演算法的執 行策略,如下:

一、禁止策略

依照佇列(queue)的方式建構出一個禁忌名單,存放的一個月日內兩 兩交換後鄰近解之最好的解之移動日期。在無渴望條件的情況下,把鄰 近解中之最好的解之當日日期放入禁忌名單內而再次搜尋到同日期的 情況則跳過,不做搜尋和評估;在有渴望條件下,當鄰近解中,最好的 解之當日日期放入禁忌名單內而再次搜尋到同日期的情況則繼續做搜 尋和評估的動作,假設比禁忌名單內好,把這日期的最佳解做紀錄並取 代。

二、解放策略

因利用佇列的形式建構出的禁忌名單,當禁忌名單滿了,再依照先 進先出法的法則,把紀錄最後一位的值被目前解的日期作取代;而當渴 望條件下,取代原始日期並把最佳解的值放入禁忌名單內,並更新 禁 忌名單,再依照先進先出法的原理,給予被修改的日期,挪移位置為首 位,其餘名單內的成員順延一位。

三、短期策略

在無渴望條件下,把目前鄰近解之最佳解的日期放入禁忌名單內,

並更新禁忌名單為首位,在第二次搜尋後,更新禁忌名單,把第一次的 日期放入第二位,而第二次搜尋到的日期放入首位,以此類推,當禁忌 名單滿了,依照先進先出法的原則把最後一位的日期刪除,並加入新日 期的禁忌名單為首位,其餘成員則延後一個順位。而在渴望條件下,當

(43)

禁忌名單與目前要做搜尋日期相同,則繼續做搜尋與評估,假設目前解 比較差則不更新禁忌名單;反之,就目前解比禁忌名單內同日期的解來 的好,取代禁忌名單內的評估值,並把日期順位挪移為首位,其餘則遞 補順延一位。

(44)

4-3 符合護理人員排班的禁忌演算法過程

在此設計符合護人員排班的禁忌演算法過程,步驟如下:

步驟一:將一分班表 S 中,依目前局面為可行解 i 當作起始解。並設最好歷 史解 i* =目前解 i 和微調次數 k=0。

步驟二:每次做完搜尋動作 k=k+1,並由禁忌名單檢查可換班日是否有被放 入禁忌名單內,在無渴望條件下,如果可換班日在有禁忌名單內,

則不做兩兩班別互換評估的動作,接著換下一個可換班日;在有渴 望條件下,會繼續做當日的兩兩換班評估。則經由每日兩兩班別互 換選擇最好的,在繼續評估一個月內所有鄰近解。

步驟三:當評估完所有鄰解後,從所有鄰近解中選擇最好的解移動 j;並設 定目前解 i=最好的移動 j 解,把目前解取代為最好的移動 j 解。

步驟四:假如目前解 f(i)的評估 <最好歷史解 f(i*)的評估,則表示目前解 i 比最好歷史解 i*還要好,並把最好歷史解 i* = 目前解 i。

步驟五:並把 j 的移動加入至禁忌名單內,更改禁忌名單的順位,把目前進 來的擺在首位,其餘成員遞補順延一位;當有渴望條件的情況下,

記錄最好歷史解的為渴望條件的評估。

步驟六:如果達到停止條件則停止。

否則轉至步驟二。

以上為步驟流程,當停止條件滿足時則不繼續執行演算法,而本研究中,因

(45)

為給予程式跑的最長容忍時間為兩小時,所以利用最大微調次數的時間為設定兩 小時左右,找尋在這時間內的全域的優良可行解,選擇兩小時的原因,為了要在 短時間找出最好的結果,符合護理人員約班的需求,並達到效率與品質。下一章 節中,分別製作有、無渴望條件情況下的程式流程,完整介紹應用禁忌演算法於 護理人員排班程式設計上。

(46)

4-4 符合護理人員排班的禁忌演算法實際流程

一、無渴望條件:

圖 4-1:無渴望條件的禁忌演算法之流程圖

根據圖 4-1 無渴望條件的流程圖,首先利用一份班表,當作起始解,

把可換班日期檢查是否有在禁忌名單內;如果有在名單內,則不去做搜 尋,直接回到可換班日;如果沒有在名單內,再算這天內兩兩換班的所 有解,選擇最好的評估,再進入評估一個月內所有最好的解。當尋找完

(47)

一個月所有解之後,依一個月的最好的解,使班別做移動,在評估最好 歷史解與目前解,選擇最好的取代最好歷史解,之後在更新禁忌名單,

最後判斷是否滿足停止條件,如果是,則最後的最終解;如果否,則更 新可換班日以及一個月內最好的解。當完成最終解之後,會把全域優良 可行解給列出來,並依照扣分權重,把所有扣分情況列出來。

(48)

二、有渴望條件:

圖 4-2:有渴望條件的禁忌演算法之流程圖

根據圖 4-2 有渴望條件流程圖,首先利用一份班表,當作起始解,

把可換班日期檢查是否有在禁忌名單內;如果有在名單內,則算這天內 兩兩換班的所有解,選擇最好的評估,再去判斷有無滿足渴望條件,如 果有滿足,則進入評估一個月內所有最好的解;如果沒有滿足,則往下 一個可換班日進去搜尋。如果沒有在名單內,則算這天內兩兩換班的所

(49)

有解,選擇最好的評估,再進入評估一個月內所有最好的解。當尋找完 一個月所有解之後,依一個月的最好的解,使班別做移動,在評估最好 歷史解與目前解,選擇最好的取代最好歷史解,之後在更新禁忌名單,

最後判斷是否滿足停止條件,如果是,則最後的最終解;如果否,則更 新可換班日以及一個月內最好的解。當完成最終解之後,會把全域優良 可行解給列出來,並依照扣分權重,把所有扣分情況列出來。

經過寫好的應用禁忌演算法於護理人員排班程式後,接下來利用前者《護理 人員排班程式設計與實作》[3]所留下來的排班資料與約班數據加以實測,分別 測是無渴望條件和有渴望條件,不同的效率與品質,將在下一章效能評估中做討 論。

(50)

第五章 執行效能與評估

應用禁忌演算法於護理排班程式使用Microsoft Visual C++ 6.0 語言撰寫,使 用的作業平台為Windows XP SP3,硬體規格是Pentium(R) 4 CPU 3.00GHz,搭配 DDR 1.0 GB 記憶體。測試資料為2008年5月和7月彰基第二呼吸照護中心的約班 資料並比較《護理人員排班程式設計與實作》[3]中的爬山法使用2008年7月和 2009年5月程式跑出的資料數據互相討論。

本研究的目的希望透過禁忌演算法的應用,幫助護理人員擁有更滿意的約班 需求,透過設計演算法找到此護理排班全域的最佳解的同時,並探討禁忌演算法 中的無渴望條件和有渴望條件所影響排班的效率與品質,在程式中加入扣分權重 的規則,來鑑定排出的班表的好壞程度,當分數越低越接近理想中的班表越好,

那就越能滿足護理人員約班的需求,也能減輕護理長的負擔。

表 5-1:扣分權重設定 扣分權重設定

違反項目 權重

硬限制(程式內定扣分) 10000

符合夜班天數需求 1

休假天數平均分配 1

不出現休假上班休假的組合 2

符合約班需求 10

跳班 2

(51)

5-1 無渴望條件之班表結果

在無渴望條件下,拿不同月份班表下去做評估,產生數多個數據,在此取出 不同類型的設定參數,比較不同的參數資料跑出 2008 年 7 月、2009 年 5 月全域 優良可行解的評估,如表 5-2、表 5-3。

表 5-2:2008 年 7 月的班表,經不同參數產生的結果 2008 年

7 月班表

禁忌名單大小 微調次數 執行時間(分鐘) 扣分分數

5 7000 102 64.63

10 9000 104 30.41

15 10000 88 30.41

20 10000 68.5 30.1

25 10000 33 29.92

30 10000 6 42.63

30 40000 22.4 35.39

30 50000 28 31.16

表 5-3:2009 年 5 月的班表,經不同參數產生的結果 2009 年

5 月的班表

禁忌名單大小 微調次數 執行時間(分鐘) 扣分分數

5 7000 114 251

10 9000 140 217

15 10000 102 216.5

20 10000 68 208.9

25 10000 37 217

30 10000 6 228.84

30 40000 25 215

30 50000 65 211.5

(52)

在表 5-2 中,2008 年 7 月的班表扣分分數最低 29.92;而在表 5-3 中,可以 看到 2009 年 5 月班表中扣分分數最低是當禁忌名單為 20,微調次數為 10000,

在 68 分鐘內扣分分數為 208.9,不同於五月班表的是,此時禁忌名單為 25,時 間為 33 分鐘內的結果;如果把所有微調次數為 10000 的情況下,禁忌名單大小

圖 5-1:無渴望條件下,禁忌名單大小與執行時間的統計圖

圖 5-2:無渴望條件下,禁忌名單大小與扣分分數的統計圖

(53)

與時間的情況如統計圖 5-1;從無渴望條件下的統計圖可以看出當參數設定的禁 忌名單越大,則執行時間越短,則因為不考慮渴望條件下,不走入局部最佳解的 情況,執行速度也比較快。而這樣也因此影響到全域優良可行解的情況,如統計 圖 5-2 中,在 2008 年 7 月班表中,禁忌名單在 25 時全域優良可行解最好;在 2009 年 5 月班表中,禁忌名單在 20 時全域優良可行解最好,就微調次數固定的情況 下,禁忌名單越大,執行時間越快,也就影響盤面的分數,而不同的禁忌名單大 小也會影響到快速找到全域優良可行解的效率。

(54)

5-2 有渴望條件之班表結果

在有渴望條件的情況下,也是一樣用無渴望條件用的不同月分的班表來做評 估,比較不同的參數資料跑出 2008 年 7 月、2009 年 5 月全域優良可行解的評估,

如表 5-4、表 5-5。

表 5-4:2008 年 7 月的班表,經不同禁忌名單大小產生的結果 2008 年

7 月班表

禁忌名單大小 微調次數 執行時間(分鐘) 扣分分數

5 6000 99 50.63

6 6000 102 68.41

7 6000 104 72.63

8 6000 101.5 44.18

9 6000 119 44.18

10 6000 99 42.18

15 6000 101 32.18

20 6000 105 30.41

25 6000 121 22.18

30 6000 108 44.41

在表 5-4 中,可以看到每筆參數的微調次數都是 6000,因為渴望條件在每筆 禁忌名單內的資料都會在做一次評估,所以相對的時間就會拉長,以 6000 的微 調次數跑演算法的時間差不多是 2 小時左右的時間,也是能忍受的時間範圍內;

而 2008 年 7 月班表中扣分分數最低是當禁忌名單為 25,在 121 分鐘內扣分分數 為 22.18;而在表 5-5 中,2009 年 7 月的班表扣分分數最低 206.97,不同於五月 班表的是,此時禁忌名單為 15,時間為 119 分鐘內的結果;在有渴望條件下,

禁忌名單大小與時間的情況如統計圖 5-3,從統計圖中,可以看出不同的禁忌名 單大小卻是相同的差不多時間跑完,其原因是當禁忌名單內擁有的禁忌成員被受

(55)

表 5-5:2009 年 5 月的班表,經不同禁忌名單大小產生的結果 2009 年

5 月的班表

禁忌名單大小 微調次數 執行時間(分鐘) 扣分分數

5 6000 121 247.69

6 6000 123 243.61

7 6000 120 241.07

8 6000 119 227.11

9 6000 118 232.25

10 6000 131 218

15 6000 119 206.97

20 6000 124 212.91

25 6000 116 211.67

30 6000 115 219.23

圖 5-3:有渴望條件下,禁忌名單大小與執行時間的統計圖

限制情況找出是否還有比最好歷史解的可行解,相對的跑的次數跟時間就成正比;

接著如統計圖 5-4,從統計圖中,2008 年 7 月班表中,禁忌名單在 25 時,全域 優良可行解最好;而在 2009 年 5 月班表中,禁忌名單在 15 時,全域優良可行解

121123120119

118 131

119 124

116 115

99 102104 101.5 119

99 101105 121

108

0 20 40 60 80 100 120 140

5 6 7 8 9 10 15 20 25 30 時間 (分鐘)

禁忌名單的大小

禁忌名單大小與執行時間

2009年5月班表 2008年7月班表

(56)

圖 5-4:有渴望條件下,禁忌名單大小與扣分分數的統計圖

最好,就差不多執行時間的情況下,禁忌名單越大,不影響執行時間越快,漸漸 降低盤面的分數,而不同的禁忌名單大小卻影響到快速找到優良可行解的效率。

(57)

5-3 無渴望條件與有渴望條件的比較

在無渴望條件和有渴望條件的結果中 ,看出個別的執行成果與效能後,現 在把兩者互相做比較,把兩兩同月份的統計表互相做比較,得出以下的結果:

表 5-6:2008 年 7 月的班表,無渴望條件與有渴望條件的比較表 2008 年 7 月班表

禁忌名單 大小

無渴望條件 有渴望條件

微調次數 實行時間

(分鐘) 扣分分數 微調次數 實行時間

(分鐘) 扣分分數 5 7000 102 64.63 6000 99 50.63 10 9000 104 30.41 6000 99 42.18 15 10000 88 30.41 6000 101 32.18 20 10000 68.5 30.1 6000 105 30.41 25 10000 33 29.92 6000 121 22.18 30 10000 6 42.63 6000 108 44.41

在表 5-5:2008 年 7 月班表中,當禁忌名單大小 25 時,無渴望條件下的扣 分分數為 29.92,而有渴望條件為 22.18,相對的差在執行時間上,有渴望條件與 無渴望條件則差 4 倍時間。

表 5-7:2009 年 5 月的班表,無渴望條件與有渴望條件的比較表 2009 年 5 月班表

禁忌名單 大小

無渴望條件 有渴望條件

微調次數 實行時間

(分鐘) 扣分分數 微調次數 實行時間

(分鐘) 扣分分數 5 7000 114 251 6000 121 247.69 10 9000 140 217 6000 131 218 15 10000 102 216.5 6000 119 206.97 20 10000 68 208.9 6000 124 212.91 25 10000 37 217 6000 116 211.67 30 10000 6 228.84 6000 115 219.23

(58)

換成表 5-5:2009 年 5 月,當禁忌名單為 20 時,無渴望條件下出現最好的 扣分情況 208.9,而當禁忌名單為 15 時,有渴望條件下,出現最好的扣分 206.97,

相對於無渴望條件下,有渴望條件下的分數,確實有比無渴望條件下來的好,而 時間上,無渴望條件的時間比有渴望條件下來的短。

圖 5-5:2008 年 7 月班表,禁忌名單大小與執行時間的統計圖

從圖 5-5:2008 年 7 月班表,禁忌名單與直行時間的統計情況,在無渴望條 件下,禁忌名單為 5 和 10 情況如果在微調次數為 10000 時,會超出容忍的時間,

就此降低微調次數,以禁忌名單為 5 的情況 7000 的微調次數跟禁忌名單為 10 的 情況 9000 的微調次數從時間上,與有渴望條件下的情況差不多,但 15 至 30 的 四種情況,明顯的以 10000 當作微調次數,名單越大,時間越短。

99 99

101

105 121 108 102 104

88 68.5 33

6 0

20 40 60 80 100 120 140

5 10 15 20 25 30

時間 (分鐘)

禁忌名單大小

禁忌名單大小與執行時間 無渴望條件VS有渴望條件

有渴望條件-2008年7月班表

無可望條件-2008年7月班表

(59)

圖 5-6:2008 年 7 月班表,禁忌名單大小與扣分分數的統計圖

從圖 5-6,同月班表的扣分分數中,看出時間越快並不代表可以跑得到最低 的分數出來,執行微調次數一樣時,無渴望條件下,時間越短,分數不見得比較 好,而渴望條件下,當微調次數一樣,名單大到 25 時,都處於持續的降低分數 情況,而最好分數也出現在名單為 25 的時候,分數為 22.18,從圖中明顯看出無

圖 5-7:2009 年 5 月班表,禁忌名單大小與執行時間的統計圖

50.63 42.18

32.18 30.41

22.18 44.41 64.63

30.41 30.41 30.1

29.92

42.63

0 10 20 30 40 50 60 70

5 10 15 20 25 30

扣分 分數

禁忌名單大小

禁忌名單大小與扣分分數 無渴望條件VS有渴望條件

有渴望條件-2008年7月班表

無可望條件-2008年7月班表

121 131

119 124

116 115

114 140

102 68

37 0 6

20 40 60 80 100 120 140 160

5 10 15 20 25 30

時間 (分鐘)

禁忌名單大小

禁忌名單大小與執行時間 無渴望條件VS有渴望條件

有渴望條件-2009年5月班表

無可望條件-2009年5月班表

(60)

渴望條件的最佳分數並沒有比有渴望條件的最佳分數來的好。

如圖 5-7,再以 2009 年 5 月的班表的禁忌名單大小與執行時間的統計圖再次 評估,禁忌名單大小為 5 和 10 的情況,同前 2008 年 7 月班表的 5 和 10 情況一 樣與渴望條件下的差不多,分數不是最好的,接著無渴望條件下,微調次數為 10000 時,執行時間依照禁忌名單大小而呈現下降的趨勢,意思說時間就越短,

當渴望條件下,則時間比較平均。

圖 5-8:2009 年 5 月班表,禁忌名單大小與扣分分數的統計圖

從圖 5-8:2009 年 5 月班表中,看到曲線的分數卻差不多,但無渴望條件的 分數,最低分出現在禁忌名單大小為 20 時,分數為 208.9,而有渴望條件的分數,

最低分出現在禁忌名單大小為 15 時,分數為 206.97,但此比較起來無渴望條件 下的情況分數卻沒有有渴望條件下的分數來的好。

就效率而言,無渴望條件的情況下,確實可以達到一點效率,而在要求更好 的品質,有渴望條件才能使的品質達到保障。

247.69 218

206.97

212.91

211.67 219.23 251

217

216.5

208.9

217 228.84

0 50 100 150 200 250 300

5 10 15 20 25 30

扣分 分數

禁忌名單大小

禁忌名單大小與扣分分數 無渴望條件VS有渴望條件

有渴望條件-2009年5月班表

無可望條件-2009年5月班表

(61)

5-4 禁忌演算法與爬山法的比較

有了以上的比較,接著再拿著前者的數據資料做比較,用 2008 年 7 月和 2009 年 5 月的班表下去做渴望條件與爬山法的執行結果中,從中選擇,最好的分數做 比較,如表 5-8 和表 5-9:

表 5-8:2009 年 5 月的班表,有、無渴望條件與爬山法的比較表

2008 年 7 月班表

禁忌名單 大小

執行 時間

扣分 分數

微調 次數 無渴望條件 25 33 (分鐘) 29.92 10000 有渴望條件 25 121 (分鐘) 22.18 6000

爬山法 無 29 (秒) 83 32

表 5-9:2009 年 5 月的班表,有、無渴望條件與爬山法的比較表

2009 年 5 月班表

禁忌名單 大小

執行 時間

扣分 分數

微調 次數 無渴望條件 20 68 (分鐘) 208.9 10000 有渴望條件 15 119 (分鐘) 206.97 6000

爬山法 無 51 (秒) 280 48

從以上表中得知,雖然爬山法,能在短短幾分鐘內,快速產生改良過的班表,

但分數從 2008 年 7 月班表比較中,爬山法與渴望條件差了快 60 分;而在 2009 年 5 月的班表比較中,爬山法與渴望條件差了快 75 分,都證明了使用禁忌演算 法,且有、無渴望條件的情況下,都能達到比爬山法還要好的成果。

接著,以 2008 年 7 月班表,在扣分分數做份統計圖,如圖 5-9 中,整個曲 線呈現緩慢的擺盪,花的時間越長則跑出來的結果相對的就比較好;而 2009 年 5 月的班表,整個曲線也是呈現緩慢的擺盪狀態,也是需要以時間的長短來看說 結果是否比較好。

(62)

圖 5-9:2008 年 7 月,總分數的統計曲線圖

圖 5-10:2009 年 5 月,總分數的統計曲線圖

0 25 50 75 100 125 150 175 200 225 250

1 201 401 601 801 1001 1201 1401 1601 1801 2001 2201 2401 2601 2801 3001 3201 3401 3601 3801 4001 4201 4401 4601 4801 5001 5201 5401 5601 5801

扣 分 分 數

微調次數 MAX:6000

有渴望條件

每次微調扣分分數的紀錄

2008年7月班表

0 100 200 300 400 500 600 700

1 201 401 601 801 1001 1201 1401 1601 1801 2001 2201 2401 2601 2801 3001 3201 3401 3601 3801 4001 4201 4401 4601 4801 5001 5201 5401 5601 5801

扣 分 分 數

微調次數 MAX:6000

有渴望條件 每次分數的紀錄

2009年5月班表

微調第 5653 次 最佳 :22.18

微調第 5996 次 最佳:206.967

(63)

最後,在以測試三天三夜跑出來的結果,並比較其短時間兩小時的成果,如 表 5-10:

表 5-10:有渴望條件下,短時間與長時間的比較表 有渴望條件

禁忌名單大小 微調次數 時間 分數

2008 年 7 月班表

25 6000 100 分鐘 22.18 25 260000 4957 分鐘

(超過三天三夜) 18.18

2009 年 5 月班表

15 6000 100 分鐘 206.967 15 260000 4305 分鐘

(超過三天三夜) 200.249

得出此結果,當長時間三天三夜跑出來的結果,確實有達到降低分數的情況,

但分數的差距很微小,如 2008 年 7 月班表,降低了 4 分;2009 年 5 月班表降低 了快 7 分,長時間雖可以達到更好的結果,但兩小時給予電腦跑出相當於一般人 仍容許的時間,所以在兩小時內,跑出的的優良可行解是可以滿足護理人員需求 的班表。

(64)

第六章 結論

1976年就有學者開始研究護理排班的問題[35],在陸續研究中,此問題證明 為NP-hard難題[10、39],至今仍無一致的解決方法用於各大醫院內,使的每位護 理長每個月都需面臨這個問題。

因此,利用護理人員排班程式,若能產生具有效率與品質,達到護理人員的 需求的班表,不只提升護理人員的士氣與熱忱,更能讓護理長減輕負擔,並增加 時間在照護病人上。

本研究與彰基第二呼吸照護中心合作中,取得護理人員實際約班的資料,進 而應用禁忌演算法於護理人員排班程式設計與實作。

綜合第五章內所有的效能評估後,禁忌演算法證明了比爬山法更優越,而從 禁忌演算法內,無渴望條件雖可以降低執行時間得到相似優良的班表,但就扣分 的分數而言,還是由有渴望條件下的分數明顯的最低,再給予更多的時間就可達 到如護理人員需求的最佳品質。

禁忌演算法因微調次數影響著時間的大小、禁忌名單的大小是影響分數的情 況等等;在未來,如果可以給予更多不同的班表,更能測得更精準的名單大小與 微調次數是能優化禁忌演算法的。以及,繼續整合其他文獻的優點,例如基因演 算法,再度強化排班程式效率與排班表的品質;亦希望未來能將此研究的運作模 式用在不同領域的排程調度上,達到更好的效果。

(65)

參考文獻

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

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

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

[4] 凌建玲,《護理『專業能力進階制度』對護理人員之影響》,國立中山大 學 人力資源管理所碩士論文,民國91年。

[5] 郭金青,《整數目標規劃應用於護士排班之個案研究》,國立中正大學企 業管理研究所碩士論文,民國85年。

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

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

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

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

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

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

參考文獻

相關文件

A dual coordinate descent method for large-scale linear SVM. In Proceedings of the Twenty Fifth International Conference on Machine Learning

in Proceedings of the 20th International Conference on Very Large Data

Lange, “An Object-Oriented Design Method for Hypermedia Information Systems”, Proceedings of the Twenty-seventh annual Hawaii International Conference on System Sciences, 1994,

Godsill, “Detection of abrupt spectral changes using support vector machines: an application to audio signal segmentation,” Proceedings of the IEEE International Conference

Shih and W.-C.Wang “A 3D Model Retrieval Approach based on The Principal Plane Descriptor” , Proceedings of The 10 Second International Conference on Innovative

[16] Goto, M., “A Robust Predominant-F0 Estimation Method for Real-time Detection of Melody and Bass Lines in CD Recordings,” Proceedings of the 2000 IEEE International Conference

Harma, “Automatic identification of bird species based on sinusoidal modeling of syllables,” in Proceedings of IEEE International Conference on Acoustics, Speech,

Sun, “The Application of Role-Based Access Control in Workflow Management Systems”, Proceedings of IEEE International Conference on System, Man and Cybemetics, vol.6, pp.