• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

51

個可用的 CCN,如果聯合各家公司的基地台,順利建成 CCN 的機會大幅增加,但 是跨網路 CCN 的技術挑戰更艱鉅,尤其是控制信令將需要大修改,更是加倍的困 難。

3.7、排程問題之相關演算法

3.7.1、概述

排程問題常見於傳統製造業或是高科技產業,用於對生產排程的規劃,期望可以使總加 權生產完工時間最小,由於排程問題過於複雜,在現實環境下要求得最佳解須花費大量 的時間,因此目前相關研究排程逐漸傾向使用啟發式演算法(Heuristic Algorithm),以期 望能快速求出與最佳解相差不遠的次佳解。

排程問題有多種不同的分類方式,若以工件處理為特質來分類,可分單操作 (Single-Operation)排程以及多重操作(Multiple-Operation)排程問題,單操作排程指的是每 一工件僅需經一個工作站操作便可完成,多重操作排程則是每一工件必須經數個工作站 操作才可完成,而以機器的數量以及工件的路徑型態來做為依據,每種操作又可以分別 再做分類:

 單操作排程問題依工作站中處理機器的數量不同分為:

 單一機器排程(Single-Machine Scheduling):僅一個工作站,而工作站中只有一 部機器。

 平行機器排程(Parallel-Machine Scheduling):僅一個工作站,但工作站中有超 過一部以上的機器。這些機器可以同時處理且不互相影響,且每一個工件可以 在任何一部機器上處理。

 多重操作排程問題依工件處理的路徑型態不同分為:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

52

 流線型排程問題(Flow-Shop Scheduling Problem):所有工件的操作順序都是相 同的,即每一個工件所需的操作機器順序是一樣的。

 零工式排程問題(Job-Shop Scheduling Problem):零工式排程中,每一個工件的 操作順序都是不同的。

 開放式排程問題(Open-Shop Scheduling Problem):開放式排程問題與零工式排 程問題的相異點在於開放式排程中的所有工件經過機器的順序是任意的。

3.7.2、精確解法 (Exact Algorithm)

又稱為最佳解法,透過嚴謹的數學模型或電腦數據結構規劃,利用數學法則或數據結構 搜尋的方式求得問題的解。使用此演算法時,須要先將問題中的資料數據化,並透過相 關轉換將其轉換成符合數學表達式子的因子來供運算式使用,當條件都滿足時,即可經 由反覆的計算來獲得最佳解。其最大的缺點是反覆的運算過程中,所需要的運算時間會 因為數值的累積而越來越多,因此,在運算因子基數龐大的問題之中並不適用。此種解 法通常用來解決非 NP 難度的問題。常見的精確解法類型如下:

 分枝界限法 (Branch and Bound)

分枝界限法把問題的可行解展開成類似樹分枝的樣子,將原來的大問題分解為小問題 (子集),每次分支都相當於一次限制,限制解的範圍,再經由此些分枝尋找最佳解,這 種方法不是盲目的窮舉搜索,而是在搜索過程中通過限制,停止對某些不可能得到最優 解的子空間進一步搜索,一但確定得到的子集中所有的可能解都不是所求問題的解,則 停止對這個子集的可能解作進一步的限制,即不必產生這個節點的子節點了,這一過程 一直進行到找出可行解為止,故它比窮舉法效率更高。其演算法可以分成三部份,一、

子集合生成規則:如何分割所有可行解,讓其子集合會有相同界限。二、限界或剪枝規 則:凡是界限超出已知可行解值那些子集不再做進一步分支。三、界限計算:對每個節

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

53

點要用統一方法計算出解集合約束函數值的界限作為控制搜索方向和是否進一步生成 和搜索該節點子節點的判斷根據。此種方法常用來找組合問題中的解,不同的地方是在 於對整個問題可能解空間(solution space)搜索,所設計出來的演算法其時間複雜度比貪 婪算法高,但能保證求出問題的最佳解。步驟:

1. 先設定問題解為目標解的相反極值。

2. 根據分枝法則(Branching rule),從尚未被限制的節點中選擇一個節點,並在此節點 的下一階層中分為幾個新的節點。

3. 計算每一個新分枝出來的節點的上/下限值。

4. 對每一節點進行限制條件測試,判斷此解是否有可能優於目前最佳解,如果沒有則 停止此枝幹的生成。

5. 判斷是否仍有尚未被限制的節點,如果有,則進行步驟二,如果已無尚未被限制的 節點,則演算停止,並得到最優解。

 動態規劃法 (Dynamic Programming)

動態規劃法要是將一個大問題分解成多個小問題來求解,以反向工作的方式,求解路徑 中連接兩點的值,動態規劃法缺乏效率,比較適合小問題和批次問題,此類方法雖然可 以求得最佳解,但其求解範圍小,與分支界限法不一樣的地方在於是從小到大,而不是 從大到小。

求解關於 n 個元素的某個最佳解,將 i 個要素組成子集的最佳解求出來放在一張表 裡。當元素個數增加一個的時候,可以根據此表來計算最佳解是否發生變化,並建立一 張新的表。重覆這一過程,直到由 n 個元素組成的全集為止,最終將求出關於 n 個元素 的最佳解。亦即以空集合的最佳解為初值開始,每次增加一個元素,求得一個最佳解,

直到全集為止。適用動態規劃的問題必須滿足最優化原理和無後效性。

 最優化原理:不論過去狀態和決策如何,對前面的決策所形成的狀態而言,餘下的

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

54

決策必須構成最優策略的性質,也就是一個最優化策略的子策略總是最優的。

 無後向性:將各階段按照一定的次序排列好之後,對於某個給定的階段狀態,它以 前各階段的狀態無法直接影響它未來的決策,而只能通過當前的這個狀態。換句話 說,每個狀態都是過去歷史的一個完整總結。這就是無後向性,又稱為無後效性。

3.7.3、後啟發式演算法 (Meta-heuristics)

新興的最佳化演算法,這類演算法的概念經常是由觀察自然界所獲得的靈感,常能發現 接近最佳解的次佳解,但沒辦法證明不會得到較壞的解。可以應用在非常廣泛的問題上,

但由於通常使用亂數搜尋技巧所以並不能保證效率,一般可在合理的時間內解出答案 (每次求解時間可能會不一樣)。目前常見的隨機型演算法可分為兩類,一是單粒子演算 法,由一個初始解進行優化,優化完的解將成為新解再以此解進行改良,Hill-Climbing Algorithm、Taboo Search、Simulated Annealing…等,都是屬於這一類。另一類是多粒子 型的演算法,由多個初始解開始進行優化,解與解之間會有一定的連繫,透過這些解的 連繫,使各個新解朝某一優化方向偏移(指引),藉此得到較優解,Genetic Algorithm、

Particle Swarm Optimization 與 Ant Colony Optimization…等是屬於這一類。單粒子演算 有速度快、簡單…等優點,但是對於較佳解分布廣散的情況下,很容易陷入局部最佳解,

無法找到全域最佳解,而多粒子演算法,由於粒子隨機分散,相對而言容易全域最佳解,

但其計算時間長,實作也較為複雜。

 單粒子型的隨機演算法:

 Hill-Climbing Algorithm:只對鄰近點進行比較,且不允許向結果較差的方向移 動,使得爬山演算法會落入山谷區(在最小化問題上)或山峰區(在最大化問題上) 而無法跳出。

 Taboo Search Algorithm:選擇所有鄰近點解其中最好的一個進行進一步的搜索,

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

55

為避免搜索返回剛剛離開的局部最優點而形成循環,通過建立一個禁忌列表來 限制某些移動,並透過解禁規則使其有機會跳出局部最佳。

 Simulated Annealing:模擬退火法改進爬山演算法的缺點,採用溫度調控特性,

讓退火演算法有機會跳脫較差的區域找到更好的解。但當較好的區域距離目前 所在地區較遠時,模擬退火演算法通常難以逆向爬升脫離較大的山谷。

 多粒子的隨機演算法:

 Genetic Algorithm:在初始群體的基礎上,透過交叉和變異操作來獲得新解,

淘汰其餘的解,進而使解的質量不斷得到改善。

 Particle Swarm Optimization Algorithm:利用模擬鳥群覓食的社會行為所衍生的,

鳥群覓食時除了根據自己本身的認知,也藉由群體間的合作溝通,知道其他更 佳的覓食地點,最後漸漸所有的鳥群都會飛往最佳的覓食地點。

 Ant Colony Optimization Algorithm:模仿螞蟻覓食行為的演算法,螞蟻發現食 物時會在移動中會分泌一種特殊的費洛蒙,借此通知其他螞蟻循該路徑去搬運 食物,而其他螞蟻會依循著費洛蒙的多寡來決定要走的路徑為何,並遵循費洛 蒙強度較高的路徑去走,此些費洛蒙會隨時間而消失,此時若有其他螞蟻也循 該路徑回來則會繼續分泌費洛蒙補強,最後即會找到一最佳路徑。