第一章 緒論
1.1 研究動機與目的
傳統上,設計超前落後補償器需要豐富的經驗和敏銳的洞察力 [1-4]。為了 幫助在超前落後補償器欠缺經驗的使用者,在 [5-6] 中作者提出了基於整個控制 系統之步階響應的上升時間、最大過衝量、穩態誤差及安定時間為代價函數之指 標,建立一種超前落後補償器的設計方法。但此方法需要花費大量的時間尋找最 佳的超前落後補償器參數,但此研究並未考慮到整個控制系統的穩定強健性。
在本論文之研究中使用向量餘裕及步階響應之穩態誤差來設計超前落後補 償器。在補償器設計中包含向量餘裕主要是為了考慮整個控制系統的穩定強健 性。本研究將以 Python 程式語言編寫程式,並使用 Python 中的 Tkinter 套件 設計補償器之工具箱介面,以提供使用者簡單的操作介面來進行補償器設計。本 論文使用粒子群聚最佳化 (Particle Swarm Optimization, PSO) 演算法及布穀鳥 搜尋 (Cuckoo Search, CS) 演算法尋找補償器最佳參數 [7-12]。
1.2 論文架構
本論文總共分為六章,簡述如下:
第一章 緒論
描述本論文的研究動機與目的並說明研究架構。
第二章 以向量餘裕及穩態誤差為根據之超前落後補償器
說明向量餘裕及穩態誤差之超前落後補償器理論與所使用的粒子群聚 最佳化演算法及布穀鳥搜尋演算法。
第三章 工具箱設計
說明工具箱的介面功能。
第四章 範例示範
說明如何使用本文工具箱,並解釋相關數據。
第五章 結論與討論 第六章 參考文獻
2
第二章 以向量餘裕及穩態誤差為根據之超前落後補償器
標準回授控制系統如圖 2.1 所示,其中 u
( )
s 為輸入,y( )
s 為輸出,h( )
s 為受控系統的轉移函數,且 g
( )
s 為補償器的轉移函數。在本論文中,當 g( )
s =1 時,該系統稱為單位回授系統;反之則稱為補償回授系統。圖 2.1:標準回授控制系統
在本論文中,我們使用超前落後補償器 (lead-lag compensator)。接下來介紹 相關之理論。
2.1 向量餘裕及穩態誤差
傳統控制理論中最常用於閉迴路系統中穩定強健性 (stability robustness) 之 指標是增益餘裕 (gain margin, GM) 及相位餘裕 (phase margin, PM)。對一個穩定 的閉迴路系統,增益餘裕是在系統相位(或時間延遲)為 0 的情況下,系統能夠容 忍多少額外的增益量變化而不會造成閉迴路系統的不穩定 [2];相位餘裕是在閉 迴路系統增益固定的情況下,系統能夠容忍多少額外的的相位量(或時間延遲)變 化而不會造成閉迴路系統的不穩定 [2]。當增益及相位同時變化時,增益餘裕及 相位餘裕並不是好的指標,而向量餘裕 (vector margin, VM) 是一個好的選擇。
向量餘裕是在迴圈增益 (loop gain) 之奈奎斯特圖 (Nyquist plot) 與 (−1,0j) 的 最小距離 [13],如圖 2.2 所示。
u e y
−
+ g(s) h(s)
3
4
5
首先我們先介紹超前補償器 (lead compensator),其轉移函數為
( )
s a a K ss
glead lead α +
= + , a>0, α >1,
其中 Klead 為大於 0 的常數。此補償器也可以表示成
6
最後我們介紹超前落後補償器 (lead-lag compensator),其轉移函數為
( ) ( )( )
glead lag lead lag
β
7
glead lead lead lead
β
glead lead α
8
1
0<β < 。在本研究中設計超前落後補償器的參數包括有 K, α, β , z , 1 z 。在2 設計之初,我們必須設定這些參數的搜尋範圍。
2.4 粒子群聚最佳化演算法
粒子群聚最佳化演算法 (Particle Swarm Optimization, PSO) 是一種最佳化 的方法。本論文使用此方法找出 K, α , β , z , 1 z 這一些參數的最佳解。也就2 是說我們在粒子群聚最佳化演算法中,每一個粒子都由上述五個參數所構成。
粒子群聚最佳化演算法是以粒子群為問題的候選解 [7-9]。經過不斷的計算 與更新,最終我們能得到最佳解。首先,我們必須預先定義適應函數或目標函數。
每個粒子的速度會依據慣性、個體因素及群體因素作更新。個體因素的部分是每 個粒子根據記錄從過去到現在的最佳位置。群體因素的部分是所有粒子根據記錄 從過去到現在的群體最佳位置。當粒子之速度根據上述三個部分更新後會將粒子 之位置更新到新的位置。在每一代的更新過程後會將粒子群導向全域最佳的位 置。在每一次粒子更新到新的位置時,必須重新計算粒子的適應值或目標函數 值,直到滿足收斂條件為止。PSO 最佳化演算法流程圖如圖 2.3 所示。
9
圖 2.3:PSO 最佳化演算法流程圖
假設 xij 為第 i 個粒子的第 j 個位置分量;vij 為第 i 個粒子的第 j 個速 度分量。第 i 個粒子的速度及位置更新公式分別為
( )
{
ij ij}
ij( ){
champion j ij}
ij ij
ij w v c r bestx x c r bestx x v ← ⋅ + 1⋅ 1 ⋅ − + 2⋅ 2 ⋅ , − ,
ij ij
ij x v
x ← + .
參數說明如下:
w: 慣性權重值
( )1
r , ij rij( )2 : [0, 1] 間的浮點亂數 c : 1 個體係數,為常數值 c : 2 社會係數,為常數值
初始化粒子群
更新速度
更新位置
計算目標函數的適應值
判斷是否達 結束 收斂準則?
否
是
10
bestxij: 個體最佳位置
j champion
bestx , : 全體最佳位置
2.5 布穀鳥搜尋演算法
布穀鳥搜尋演算法 (Cuckoo Search, CS) 是一種模仿布穀鳥演化行為的演算 法。本論文使用此方法找出 K, α , β , z , 1 z 這一些參數的最佳解。也就是說2 我們在布穀鳥搜尋演算法中,每一個巢都由上述五個參數所構成。
布穀鳥搜尋演算法是由楊新社 (Xin-She Yang) 和 Suash Deb 兩位學者提出 的一種最佳化演算法 [10-12]。此方法是模仿某一些種類布穀鳥寄生育雛來孕育 下一代的行為模式。布穀鳥搜尋演算法是以巢為最佳化問題的候選解。首先我們 必須預先定義適應函數或目標函數。每個巢是根據 Levy flight 方法作更新。當巢 被更新之後,我們將重新計算適應值或目標函數值,再隨機比較新巢與舊巢的適 應值,並保留適應值比較好的巢;接下來以一定比例更新最不好的巢或更新隨機 的巢,並重新計算出適應值或目標函數值。在不斷迭代與更新直到滿足收斂條件 為止。CS 演算法流程圖如圖 2.4 所示
11
圖 2.4:CS 演算法流程圖
在文獻上有許多實現 Levy flight 的方法。在本工具箱中我們提供 7 種 Levy flight 的方法,簡述如下:
(1) flight = “Cauchy”: 使用 Cauchy 分佈 更新公式為 x←x+step⋅r⋅v, 其中
巢的初始化
計算目標函數的適應值
以一定比例更新最不好的巢或更新隨機的巢 計算目標函數的適應值
判斷是否達 結束 收斂準則?
Levy flight 更新
否 是
計算適應值或目標函數值,並找出最佳的巢
隨機比較新巢與舊巢的適應值,並保留適應值比較好的巢
12
13
14
(7) flight = “McCulloch”: 使用 McCulloch's algorithm
更新公式為 x←x+step⋅r⋅z,
其中
step: 飛行距離
r: [0, 1] 間的均勻分佈或常態分佈產生之亂數
15
16
第三章 工具箱設計
若開迴路系統不穩定或性能不好時,我們可以加入補償器 (compensator) 改 善系統之暫態響應及穩態響應。本論文將以 Python 程式語言編寫超前落後補償 器設計之程式,並使用粒子群聚最佳化演算法 (particle swarm optimization) 及布 穀鳥搜尋 (cuckoo search) 演算法尋找補償器最佳參數。同時我們使用 Python 中的 Tkinter 套件設計補償器之工具箱介面 [14-18],以提供使用者來進行補償 器設計。
3.1 Python 簡介
Python 最初設計者是荷蘭的電腦程式設計師師吉多·范羅蘇姆 (Guido van Rossum) [19] 。Python 是一種完全 物件導向、直譯式的 程式語 言。它具有 Windows, MacOS, unix, linux 及其它平台的版本。除了內建基本的函式庫之外,
第三方程式開發者也提供各種功能強大的套件供使用者使用。本論文使用到的主 要套件有處理陣列與矩陣運算的 Numpy 程式套件、繪圖程式套件的 Matplotlib 以及 Tkinter 套件。本論文所使用的 Python 版本為 3.4.2,以及 Python 的整 合發展環境 (IDE) 為 Idlex 1.12。
3.2 以粒子群聚最佳化演算法設計之工具箱
在本節中,我們將介紹以粒子群聚最佳化演算法設計補償器之工具箱所有的 功能。工具箱介面如圖 3.1 所示,包含有功能表列 File 以及 plant, unit-step response, lead-lag compensator, PSO parameter settings, Nyquist plot 和 display 等 區塊,還有顯示視窗 trace, save, clear 和 Link 按鍵等幾個部分。接下來依序說 明這些功能。
17
圖 3.1:以粒子群聚最佳化演算法設計之工具箱介面
File (如圖3.2所示)
圖 3.2:工具箱 File 的功能
18
unit-step response
initial time: 響應開始時間;預設為 0。
final time: 響應最終時間
time step: 時間間隔大小;預設為 0.01。
settling time duration: 判斷是否有穩態之時間區間;預設為 1。
lead-lag compensator
weight: 最小化代價函數中兩項之權重值;預設為 [1, 1]。 PSO parameter settings
size: 粒子個數
inertia: 慣性權重值;預設為 0.6。
c1: 個體係數;預設為 1.7。
c2: 社會係數;預設為 1.7。
vlim: 粒子速度的範圍;預設為 [-1, 1]。
19
Nyquist plot
transfer: 包括 loop gain 及 return difference;預設為 loop gain。
iteration max: 最大疊代次數;若程式之疊代次數已達到設定次數,則 程式中止;預設為 10000。
display
open-loop plant
unit-step response: 在所有參數設定完成後,按此鍵可執行開迴路系 統分析,並繪出其單位步階響應圖。
simple closed-loop system
unit-step response: 在所有參數設定完成後,按此鍵可執行單位回 授系統分析,並繪出其單位步階響應圖。
Nyquist plot: 按此鍵可繪製單位回授系統的奈奎斯特圖,並 列出相關頻率響應之數據。注意,當單位回授 系統不穩定時,無法繪製此圖。
20
compensated system
run: 在所有參數設定完成後,按此鍵可執行超前落 後補償器設計,並分析其結果。
unit-step response: 按此鍵可執行補償回授系統的單位回授系統分 析,並繪製單位步階響應圖。
Nyquist plot: 按此鍵可繪製補償回授系統的奈奎斯特圖,並 列出相關頻率響應之數據。
pole-zero patterns: 按此鍵可繪製補償回授系統的極點及零點圖 顯示視窗
trace: 勾選 trace 選項,在訓練過程中會列出每一個 epoch 最佳的適應值,如圖 3.3 所示。
save: 儲存目前顯示視窗的所有執行結果
clear: 清除所有顯示視窗的資料,不包括參數欄。
Link
點選 Link 按鍵,超連結到 http://m-learning.isu.edu.tw/ 網頁。
圖 3.3:trace 操作畫面
3.3 以布穀鳥搜尋演算法設計之工具箱
21
本節與前一節所介紹的工具箱功能大同小異,兩種工具箱差別在所使用的演 算法不相同。我們將僅介紹以布穀鳥搜尋演算法設計補償器之工具箱特有的功 能,有關重覆功能的部分不再贅述。工具箱介面如圖 3.4 所示,包含有功能表 列 File 以及 plant, unit-step response, lead-lag compensator, cuckoo parameter settings, flight, abandon, Nyquist plot 和 display 等區塊,還有顯示視窗 trace, save, clear 和 Link 按鍵等幾個部分。接下來主要針對 cuckoo parameter settings, flight 和 abandon 做介紹。
圖3.4:以布穀鳥搜尋演算法設計之工具箱介面 cuckoo search parameter settings
size: 巢的個數
epoch: 使用 CS 演算法次數 tolerance: 容忍值;預設為 1.0e-5。
max count: 滿足演算法是否終止條件之連續次數。當目前世代與前一個
22
世代的目標函數值相差之絕對值小於容忍值連續發生之次 數到達設定次數,則終止演算法;預設為 20。
世代的目標函數值相差之絕對值小於容忍值連續發生之次 數到達設定次數,則終止演算法;預設為 20。