第四章 模式求解
4.2 TVLS 最佳解搜尋法
本研究之 TVLS 最佳解搜尋演算法從結構可以分為三部分,第一部分為 BP-based 模式求解,以獲得基本週期乘數ki及基本週期 B 。針對此部分本研 究使用共同週期法、基因演算法、接合點搜尋法三種方法進行求解,詳細內 容將在 4.3、4.4 及 4.5 節進行敘述。
第二部份是將ki及 B 輸入最長操作時間派工法,建構出排程 q 及週期 T。
最後一部分求解 TVLS 模式,以下分兩小節進行介紹。
4.2.1 建立排程
本研究使用最長操作時間派工法(Longest-Process-Time Dispatching, LPT) 來建立排程,方法如下:
輸入資料:基本週期乘數ki、基本週期 B
步驟一:找出ki之最大值,建構出max( )ki 個的基期,每期的剩餘時間即 為基本週期長度 B。
步驟二:對每個產品計算出總生產時間(Total Process Time, TPT),本研究 之實際總生產時間計算公式如下:
( )
i i i i i
RTPT s k B
步驟三:將產品以ki由小到大排序,其中相同ki之產品則按RTPTi由大到 小排序,成為派工清單。
步驟四:按照派工清單之順序將產品放入基期,放入之頻率為ki,若為 1 則每期皆要放入,若為 2 則每間隔一期放入一次,放入時選擇 剩餘時間多者進行放入,而放入之後將剩餘時間減去該產品的
RTPTi,並把該產品從派工清單中移除。
步驟五:持續放入直到派工清單為空。
但由於本方法會透過 TVLS 模式進行求解,且 TVLS 之解皆為可行解,
故在此若產生剩餘時間為負的不可行解,仍能採用之。最後再將每個基期的 生產順序按照期數順序接合成一條數列,即為輸入 TVLS 模式的排程 q,而 週期T max( )ki B即可得到。
4.2.2 求解 TVLS 模式
對於給定之排程順序下,未必在週期T max( )ki B可以找出最佳解,故 週期 T 也需要進行搜尋,並且本研究透過設定搜尋之上下界來提升求解速率。
然後使用 LPT 派工法建構出之排程 q 未必為最佳的排程順序,故需要透過演 算法進行排程的改善,本研究使用之演算法為鄰域搜尋法。
4.2.2.1 排程固定下對 T 進行搜尋
已知在給定排程下,TVLS 模式為一個凹性函數,存在一個最大值,如圖 4.2 所示,雖然如圖中大約T 40之後接近目標值持平,但仍然存在最大值的 部分,再改動座標刻度後可以看出最佳解出現之位置,如下頁圖 4.3。
搜尋下界之設定為
1 l
LB k
k
T s
,其中1 l
k k
s
是給定排程下的整備時間加總,因為週期至少要大於該值,才會開始進行生產。
因為無法推導出合理且具管理意義之上界,故本研究僅使用數理方式求 出上界,由於現有資訊僅有共同週期法週期TCC,故每次取TCC的整數倍 (x T CC, xN)作為測試週期 T 代入 TVLS 公式,運算後計算與前一次數值的 變異量,若變異量為負,表示目標式曲線在該區間出現最大值後開始遞減,
故可以作為二分搜尋法之上界。
圖 4.2-固定排程下對 T 搜尋 TVLS 目標值(1)
圖 4.3-固定排程下對 T 搜尋 TVLS 目標值(2)
但因為上下界的搜尋範圍還是過大,若使用微步搜尋法(Small-Step Search Procedure)會造成過久的搜尋時間,故本研究採用二分搜尋法(Bisection Search Algorithm)增加求解速率,步驟如下:
二分搜尋法(Bisection Search Algorithm)
步驟一:在最初的上下界中選擇兩者的中點 T ,計算該點目標值Obj T( )。 步驟二:取 'T T T, ( T 0),計算該點目標值Obj T( '),並令
( ') ( )
Obj Obj T Obj T
,若Obj為負,表示最佳解在TLB與T 之間,則令TUB T;若Obj為負,表示最佳解在TUB與T 之間,
則令TLB T。
步驟三:重複步驟一至二,若每期之目標值改進率小於誤差值,則停止。
該方法之求解時間會依據誤差值而有顯著的影響,考慮足夠的精確度與 求解速率之間的權衡,本研究設定為102至103。
4.2.2.2 排程改善
在傳統 BP 模式裡,由於只定義將欲生產的產品放入基期後,剩餘時間大 於 0 即為可行解,因此沒有生產順序上的疑慮。但 TVLS 模式已經無基期之 概念,故即使是排程中的一個順序改變,也可能會造成整體生產時間與閒置
時間的重新調整,如圖 4.4 中產品 2 的ki最小,所以每次都排在最前面,但其 時還有其它的排序如[4,1,2,9]、[1,2,9,4]或其他可能,故對於 LPT 派工法生產 出之排程,仍有最佳化之必要性。
本研究使用之排程改善方法為鄰域搜尋法(Neighborhood Search Algorithm, NS),以下進行說明。
鄰域搜尋法
本研究提出的鄰域搜尋法(Neighborhood Search Algorithm, NS)之鄰域定義 為每次隨機選定排程中的兩個位置,將先選的位置差入到後選位置之前,而 後選位置及其後的排程將往後順延。但要注意若排程中有任一相鄰的兩個生 產品項相同時,為不可行解。群體數設定為 20 個鄰域。
輸入資料:LPT 派工法產生之排程 q ,作為初始母體
步驟一:對母體建立鄰域群體,並計算各自之目標值(使用 TVLS-Search-T)。
步驟二:取鄰域群體中目標值最大者,與母體之目標值進行比較,若鄰 域群體較母體為優,則取代成為新母體。
步驟三:重複步驟一至二,若每期之目標值改進率小於誤差值,則停止。
誤差值:設定與二分搜尋法相同。
排程 q:2 4 1 9 2 7 3 5 6 2 4 8 10 2 7 3 2 4 1 2 7 3 5 2 4 2 7 3 4 2 1 9
1 2 9 4
圖 4.4-使用 LPT 派工法產生的排程失誤 其它可能排序
按照以上之方法及可以對排程 q 與週期 T 兩者皆進行最佳化,找出 TVLS
基因演算法(Genetic Algorithm, GA) 由 John Holland 於 1975 年所提出,其 過程是模擬大自然物競天擇的演化基製,來進行解的交配、汰換,從中淬煉出