自整定

在控制理論中，自整定（self-tuning）可以在滿足目標函數最大化或是最小化的情形下，將其內部運行參數進行最佳化，一般會是進行效率的最大化，或是錯誤的最小化。

自整定及自動整定（auto-tuning）有時會指同一個概念，許多軟體研究群體認為auto-tuning是較正確的名詞。不過在變頻器領域中，自動整定（auto-tuning）有時只是馬達參數自學習，利用測試信號及演演算法量測馬達參數（如定子電阻），不一定包括內部運行參數的最佳化。

自整定系統一般會包括非線性自適應控制。數十年以來，自整定系統已經是航太產業中的標誌，這類的反饋在非線性過程的多目標最佳控制非常重要。在電信產業中，常使用自適應通信，其中會動態的調整系統參數，讓效率及強健性都可以最大化。

## 架構

自整定系統一般包括四個元素：預期、量測、分析及動作。預期會描述系統在給定exogenous條件下應有的行為。

量測會搜集有關條件及系統行為的資料。分析會判斷系統行為是否符合預期，後續應該進行哪些行動。常見的動作是搜集資料，並且動態調整系統的組態。

自整定（自適應）的自動控制系統是可以適應隨機變化條件的系統，其作法是自動調整其參數，或是自動決定其最佳組態。在不是自整定的自動控制系統中，有許多參數會影響系統穩定性及控制品質，可以手動進行調整。若在運作條件大幅變化時（例如輸入訊號或是受控體特性改變時），參數仍維持相同的值，其控制性能可能會退化，甚至不穩定。手動的參數調整很麻煩，而且有時是不可行的。這種情形下使用自整定的自動控制系統，不但有在經濟上或使用方便性的考量，這也是唯一可以實現強健控制的方法。自整定系統可以包括參數測定（parameter determination），也可以不包括參數測定。

在有參數測定的控制系統中，控制水準是靠自動尋找一組最適的參數值來實現的。控制水準是一個概略性的特徵，多半不太能表示成基本參數的函數，就算有，也可能是一個複雜函數，甚至沒有已知的函數可以表示。此特徵可能會用直接量測的方法來取得，也可能根據基本參數再作計算而得。之後會暫時變化這些參數，利用參數變化後產生的控制水準震盪來找出有關參數最適值（也就是讓控制水準出現極值）的資訊。若控制水準的值已不在理想的極值上，需要再調整參數使控制水準回到極值，或是可以到不同條件下的極值。有有參數測定的控制系統就算外部環境變化很大，也可以可靠的運行。

在實際系統中，若控制系統有參數測定機能，需要一段時間才能找到最佳的調整值，因此其需要的時間會比較長，可能會比實際應用可接受的時間要長。若是系統沒有參數測定機能，就沒有這個缺點。這類系統會使用一些量測控制水準的方式（例如某控制參數的一階時間微分）。利用自動整定讓控制水準維持在一定範圍內。有一些方式可以在不測定參數的情形下進行自整定，主要是以控制暫態過程，頻域特性等為主。這些都是閉迴路自整定系統的例子，若控制水準偏離允許範圍，系統會自動修正參數來調整控制水準。相反的，開迴路自整定系統是有些參數補償的機能，其輸入訊號是受控的，依照一定程序來調整系統參數，這類的自整定可以接近即時動作。不過為了要實現自整定，仍需要去瞭解系統運作的環境，並要對環境對控制系統的影響有足夠的瞭解。

實務上，自整定會有用特殊的硬體或是適應性軟體演演算法來實現。以下是一些自整定（適應性）軟體的特點：

- 幫助控制系統的關鍵流程
- 達到最佳運行的條件
- 促進控制系統的設計一致性
- 縮短系統測試及調適的時間
- 在讓系統更加強健的過程中，讓技術協助支援的比例可以下降
- 節省系統調適需要的人員及時間

## 自整定的應用領域

### 軟體與系統應用

在運算上的自整定範例包括：

- 傳輸控制協議 （Transmission Control Protocol，TCP）
- Microsoft SQL Server（較新的版本才支援）
- FFTW（西方最快速的傅立葉變換）
- ATLAS（自動整定的線性代數軟體）
- libtune（Linux的可整定函式庫）
- PhiPAC（精簡指令集的自整定線性代數軟體）
- MILEPOST GCC（以機器學習為基礎的自整定編譯器）

自整定的性能優勢非常的大。美國電腦科學家Jack Dorr認為自整定提昇性能的數量級大約會是三倍左右。

數位自整定控制器是硬體層次自整定系統的例子之一。

### 工業控制應用：數位訊號處理於馬達自整定

現代馬達控制系統多採用數位訊號處理器（DSP）作為核心，其具備高速計算與即時控制能力，尤其在進行馬達參數的自動辨識（自整定）時，DSP 所提供的高解析數據處理能力尤為關鍵。在無須人為調整的情況下，系統能自動估測馬達電氣參數並進行控制器調整，以維持穩定性與性能。以永磁馬達為例，透過數位訊號處理器進行電壓與電流取樣後，可進一步實現 $R_s$ 與 $L_s$ 等參數的即時估測與更新。

#### 馬達參數估測簡介

馬達參數估測是指利用特定的測試訊號和演演算法，自動測量並計算馬達的關鍵電氣參數（如定子電阻 R_s、q 軸與 d 軸電感 L_qs、L_ds）及機械參數（如扭矩常數 K_t、慣性矩 J 和阻尼係數 B）。這些參數是控制馬達性能的根本基礎，能有效反映馬達與負載的動態特性。

估測出馬達參數後便可自動計算並調整控制器（包括電流控制器、速度控制器及位置控制器）的增益（如比例與積分增益），以達到所設計的頻寬與動態響應目標，而無需人工手動調整。

自整定的流程包括參數識別、參數計算、控制器增益計算與控制器調整驗證：控制器首先發送特定測試訊號至馬達，例如脈波電壓用於電氣參數測試，速度加減速階段用於機械參數測試，並即時量測電流、速度與位置資料。接著透過數學模型與曲線擬合，快速估算包括電阻、電感、扭矩常數、慣性與阻尼等參數。然後根據估測參數及預設的系統頻寬，自動計算控制迴路內各控制器的比例（K_p）與積分（K_i）增益。完成增益設定後，系統即進入閉環控制，並透過實驗驗證動態響應是否符合設計目標，若必要可進行微調。

#### 馬達參數估測流程與方法

馬達參數的估測通常可依不同物理模型設計估測流程：

##### 電阻估測法

方法：於 d 軸施加電壓脈波，測量其對應的穩態 d 軸電流，避免因轉子移動造成誤差。

公式：

```
   <math>\R_s = \frac{V_r}{I_r}</math>
```

其中 V_r 為施加的 d 軸電壓，I_r 為穩態 d 軸電流。

誤差補償：

若考慮電力開關與二極體壓降影響，可施加兩次同極性不同電壓脈波，利用差分方式計算：

```
   <math>\hat{R}s = \frac{V{r2} - V_{r1}}{I_{r2} - I_{r1}}</math>
```

##### 電感估測法

方法：施加短脈波電壓（q 軸用寬度為 h，d 軸為 2h），測量其峰值電流，以忽略電阻與轉子動作影響。

公式：

```
   <math>\hat{L}{qs} = \frac{V_{Lq}}{I_{Lq}} h</math>

   <math>\hat{L}{ds} = \frac{V_{Ld}}{I_{Ld}} 2h</math>
```

誤差補償：

若需進一步減少誤差，可對相同極性但不同幅值脈波進行兩次測試，差分計算如下：

```
   <math>\hat{L}{qs} = \frac{V_{Lq2} - V_{Lq1}}{I_{Lq2} - I_{Lq1}} h</math>

   <math>\hat{L}{ds} = \frac{V_{Ld2} - V_{Ld1}}{I_{Ld2} - I_{Ld1}} 2h</math>
```

估測出電阻和電感後即可設置電流還增益並進入力矩控制控制馬達。

##### 轉動慣量與摩擦係數估測方法

初始轉動慣量估算$\hat{J}^o$：

於加速階段，根據扭矩常數 $\hat{K}_t$、加速度 a與電流 $i_1$初步估算轉動慣量：

```
<math>\hat{J}^o = \frac{a}{\hat{K}_t i_1} </math>
```

摩擦係數估測 $\hat{B}$：

於穩態速度階段，測量平均 q 軸電流 i_3，並利用穩態速度 $\omega_2$ 計算摩擦係數：

$$\hat{B} = \frac{\omega_2}{\hat{K}_t i_3}$$

精確轉動慣量估測 $\hat{J}$：

關閉所有控制器，馬達自由減速，其速度波形呈一指數下降曲線：

```
<math>\omega_m = \omega_2 e^{-\frac{\hat{B}}{\hat{J}}t} </math>
```

透過此波形進行曲線擬合可求出更精確的轉動慣量 $\hat{J}$。

最後，以估得的 $\hat{J}$ 與 $\hat{B}$作為依據，進行速度控制器增益的設計與調整，即可完成系統識別。

##### 實作考量

估測程序中常須搭配濾波器來處理高頻雜訊與 ADC 偏移，以避免微分運算放大雜訊。具體濾波方法可參考 FIR 或 IIR 結構，如下所示：

```
   <math>y[n] = a \cdot x[n] + (1 - a) \cdot y[n-1]</math>
```

其中 $a = \frac{T_s}{T_s + \tau}$

#### 數位訊號處理於參數估測中的角色

在參數辨識過程中，數位訊號處理扮演以下幾項角色：

- 高精度數據擷取：DSP 控制 ADC 以固定取樣時間讀取電壓與電流。
- 數學運算核心：進行實時微分、積分、濾波與矩陣運算。
- 參數辨識流程控制：調變注入電壓、分析響應、並調整控制參數。
- 記憶體與資料儲存：保留歷史資料進行多次估測與平均處理。

## 文獻

- Big Soviet Encyclopedia, Self-Tuning Systems

## 外部連結

- Using Probabilistic Reasoning to Automate Software Tuning
- Frigo, M. and Johnson, S. G., "The design and implementation of FFTW3", Proceedings of the IEEE, 93(2), February 2005, 216 - 231. 10.1109/JPROC.2004.840301.
- A Collaborative guide to ATLAS Development
- Optimizing Matrix Multiply using PHiPAC: a Portable, High-Performance, ANSI C Coding Methodology
- Faster than a Speeding Algorithm
- Rethinking Database System Architecture: Towards a Self-tuning RISC-style Database System
- Self-Tuning Systems Software
- Microsoft Research Adds Data Mining and Self-tuning Technology to SQL Server 2000
- A Comparison of TCP Automatic Tuning Techniques for Distributed Computing
- Tunables library for Linux
- Digital Self-tuning Controllers