• 沒有找到結果。

第五章 案例分析

5.2 資料輸入

Duty_nb

1 i

X[i].duration

工作班成本 1 單位成本/小時 pairCst ∑

= Pair_nb

1 i

X[i].duration

5.2 資料輸入

本研究設計的工作排程與人員排班模式,是以國內四家航空公司的年度航務 查核任務作為模式輸入資料,模式求解主要分為三部份執行:(1) 查核任務排 程;(2) 產生可行工作班集合;(3) 選擇最佳工作班組合。各部份模式之參數設 定與輸入資料分別說明如下。

5.2.1 工作排程模式資料輸入

(一)參數設定

首先針對年度904 項查核任務進行工作排程,工作排程模式之輸入參數設定 如表5.8 所示,其中對於各項任務 a[i]之相關參數值必須依據任務資料進行設定,

如:a[i].place 參數需依據任務作業地點進行設定,a[i].predecessor 參數需依據作 業順序進行值設定,a[i].duration 參數需依據作業時間進行設定,a[i].startafter 與 a[i].endbefore 參數則需依據排程月份時間進行參數值設定,以 1 月份的排程任務 a[i]為例,a[i].startafter 為 1 月份的排程起始時間,a[i].endbefore 為 1 月份的排程 結束時間;此外,關於排程時間參數、檢查員人數參數,及任務接續旅行時間參 數之參數設定值可由使用者自行定義,研究中以民航局實務資料進行設定。

表5.8 工作排程模式參數設定

排程時間參數

參數 參數設定值 參數說明

Time_Origin 0 工作排程起始時間

Time_Horizen 3600 工作排程結束時間

檢查員參數

參數 參數設定值 參數說明

Resource R1/R2 檢查員資格類別

R1 3 主任檢查員人數

R2 14 ㄧ般檢查員人數 任務接續參數

參數 參數設定值 參數說明

Travel_Time Travel_Time1/Travel_Time2 任務接續旅行時間

Travel_Time1 1(小時) 相同地點任務接續旅行時間

Travel_Time2 2(小時) 不同地點任務接續旅行時間

任務資料參數

參數 參數設定值 參數說明

Aline_Index A/B/C/D 航空公司代碼

Job_Index a[i] 任務代碼

i 1~N 任務編號

a[i].place 0/1 任務工作地點

a[i].predecessor Job_Index 任務關連性設定

a[i].duration 自然數 任務工作時間

a[i].startafter 自然數 任務允許開始時間

a[i].endbefore 自然數 任務最後完成期限

resource[i,1] 視任務而定 任務對主任檢查員需求人數

resource[i,2] 視任務而定 任務對ㄧ般檢查員需求人數

(二)資料輸入

依據 5.1 節查核任務相關資料說明,工作排程模式之任務基本輸入資料包

括:(1) 航空公司代碼、(2) 任務編號、(3) 任務工作地點、(4) 任務關連性設定、

(5) 任務允許開始時間、(6) 任務工作時間、(7) 任務最後完成期限、(8) 作業人 力需求(主任檢查員人數、一般檢查員人數)等項目,使用者必須依據各家航空公 司實際查核任務資料進行任務參數值輸入;任務相關資料如以下方式進行輸入。

(附錄 A 中說明以該年度一月份四家航空公司實際查核任務資料模式輸入方式)

Job_Data = [<Airline_Index, Job_Index>,<a[i].place, a[i].precedessor, a[i].start_time, a[i].end_time, resource[i,1], resource[i,2]>]

5.2.2 工作班產生模式參數設定及資料輸入

工作班產生模式求解需使用工作排程的輸出結果,來獲得各項任務的工作開 始時間與工作結束時間,在輸入任務執行時間之前,需將排程模式輸出的連續工 作時間轉換為每日工作時數,以進行工作班產生模式之任務基本資料輸入,再依 據相關排班法規資料,建立工作班產生模式之限制式,及藉由限制規劃 CSP 方 式求解,最後得出符合排班法規的可行工作班。模式的參數設定及資料輸入方式 如下。

(一)參數設定

工作班產生模式之參數資料,主要是針對勤務產生規則及工作班產生規則進 行參數設計;在參數值輸入部分,ㄧ勤務中任務接續的旅行時間與排程模式中設 定之參數值相同,而其他參數值則必須依據排班規則進行設定,參數值設定如表 5.9 所示。為達到公平性排班之目的,使用者可調整每月工作時數上限值與下限 值參數,使CSP 模式產生工作時數相近的可行工作班集合。

表5.9 工作班產生模式參數值設定

參數 參數設定值 參數說明

Duty _nb 22 一個工作班中,最多能包含之勤務個數

Job_nb 3 一個勤務中,最多能包含之任務個數 Max_DayTime 10 每日最長工作時數

Max_MonTime 視 每 月 任 務

數而定 每月工作時數上限值

Min_MonTime 視 每 月 任 務

數而定 每月工作時數下限值

Max_RestTime 16 一個工作班中,連續勤務間之最長休息時間 Min_RestTime 12 一個工作班中,連續勤務間之最短休息時間

Travel_Time1 1 一個勤務中,相同地點連續任務間之間隔時間

Travel_Time2 2 一個勤務中,不同地點連續任務間之旅行時間

(二)資料輸入

在工作班產生之限制規劃模式中,所需之輸入資料為任務排程資料,以及檢 查員排班法規資料。任務排程資料包括任務工期、任務工作地點,此部分資料與 工作排程模式的輸入資料相同,而各項任務的工作開始時間與結束時間資料,則 由工作排程模式之求解結果獲得;在排班法規資料方面,主要包括:勤務的工作 時間、休息時間、勤務內任務接續的旅行時間等資料,其輸入方式係依據上述排 班法規進行參數值設定;任務排程資料則以下列方式對個別任務進行輸入。

Job_Data=[<a[i].start_time, a[i].duration, a[i].end_time, a[i].place >]

5.2.3 集合涵蓋模式參數設定及資料輸入

此部份為工作班選擇階段,其主要以上ㄧ階段產生的可行工作班集合作為集合 涵蓋模式的輸入資料,在滿足各項任務的人員需求限制下,藉由數學規劃方式求 解,得出一組成本最小的工作班解集合,工作班的成本資料是根據檢查員的時薪成 本進行設定,模式的參數設定及資料輸入說明如下。

(一)參數設定

集合涵蓋模式之參數資料包括:可行工作班個數、各工作班成本、任務之作 業人力需求、工時成本等資料。工時成本之參數設定值是以每小時1 單位成本計 算,任務之作業人數需求是根據任務資料進行參數值設定;其中工作班個數與工 作班成本資料是由工作班產生模式所獲得,由於工時成本之參數設定值為1 單位 成本,因此各工作班之成本參數與該工作班之工作時數相同,以一月份 A 航空 公司之排程任務為例,藉由限制列舉法所產生符合排班規則的可行工作班個數為 550 個,並以此作為可行工作班個數之參數值設定。

表5.10 集合含蓋模式參數值設定

參數 參數設定值 參數說明

Pair_nb 550 可行工作班個數

Cst 1 單位成本/小時 工時成本

PairCst 視產生的工作班而定 工作班成本

a[i].demand 視任務而定 任務i 對檢查員之需求人數

(二)資料輸入

由於本研究使用 OPL Script 語法建構結合工作班產生模式及集合涵蓋模式 之人員排班求解演算法,因此在集合涵蓋模式之資料輸入部分,是將工作班產生

模式之輸出資料暫存於動態隨機存取記憶體中,並以此作為集合涵蓋模式之輸入 資料,再進行集合涵蓋模式求解運算,此部分資料包括所有符合法規限制之可行 工作班集合資料與各工作班的成本資料。求解模式使用動態隨機記憶體暫存陣列 的程式碼如下,其中 [1..0]表示起始值為 0 的動態陣列宣告方式。

Open set jobsPerPairing[1..0]; //工作班陣列資料 Open int pairCst[1..0]; //工作班成本資料

// Loop over all solutions, which will become columns for the math program while cp.nextSolution() do {

jobsPerPairing.addh();

pairCst.addh();

}