【制御】信頼性制御に必要だったのは「速くする」ことではなく「止める判断」だった
はじめに(前回の続き)
前回の記事では、
摩擦劣化下で「タイミング(Δt)だけを守る制御」は破綻する
という事実を、PID と AITL(FSM による再調整)の比較を通して示しました。
結論は明確でした。
- AITL は遅れを検出し、補償できる
- しかしその代償として、振幅(可制御性)を失う
- これはバグではなく、設計上の必然
今回は一歩進めて、
では「信頼性制御」は何が足りなかったのか?
を掘り下げます。
問題は「調整すること」ではなかった
まず誤解を避けるために整理します。
今回の AITL は:
- 劣化検出:できている
- 再調整:できている
- 応答改善:一部できている
それでも 信頼性制御にはならなかった。
なぜか。
欠けていたのは「止める判断」
AITL の FSM は次のようなロジックでした。
- 劣化を検出したら
- ゲインを強化する
- 応答が速くなる方向に寄せる
ここには 重大な欠落があります。
「その再調整は、本当に信頼性を改善したのか?」
を判断していない
実際に起きていたこと(数値で見る)
摩擦劣化 1000 日相当の結果を、数値で振り返ります。
Controller | Δt mean [s] | |Δt| [s] | Amp ratio
----------------------------------------------
PID_only | -0.4730 | 0.4730 | 0.902
AITL | -1.3807 | 1.3807 | 0.888
- AITL は「遅れ」を消した
- しかし |Δt| は悪化
- 振幅比は 安全域(0.9)を下回った
つまり、
良かれと思ってやった再調整が、
信頼性を壊していた
Reliability FSM という考え方
ここで導入したのが、
「再調整してよいか」を判断する FSM
です。
ポイントは単純です。
状態は3つで足りる
- OK:許容範囲内
- LAG:遅れすぎ
- LEAD:進みすぎ
重要なのは、
LEAD(前に出すぎ)も劣化と定義する
ことです。
「進みすぎ」も異常である
制御屋の感覚では、
- 遅れる → 問題
- 速い → 良い
となりがちです。
しかし信頼性の観点では違います。
- 進みすぎる応答は
- 飽和を招き
- 振幅を削り
- 将来の劣化耐性を失う
つまり、
LEAD は「隠れた信頼性劣化」
です。
ガード条件という設計判断
FSM に次の条件を加えました。
- 振幅比 A/A₀ < 0.9
→ ゲイン強化 禁止
この結果、
AITL | State = LEAD
| Amp ratio = 0.888
| Action = BLOCK
となり、
「これ以上いじると壊れる」
という判断が可能になった
重要な気づき
ここで得られた最大の教訓はこれです。
信頼性制御とは、
良くし続けることではなく、
悪くなる前に止めること
AITL は失敗したのか?
いいえ。
今回の AITL(A-Type)は、
- Adaptive Control を実証した
- しかし Reliability Control までは到達しなかった
という 設計上の到達点を示しました。
これは失敗ではなく、
「どこから先が別設計か」を明確にした
という意味で、非常に価値があります。
次にやるべきこと
ここまでで見えたのは、
- Δt 単独最適化は危険
- 振幅・飽和を含む評価が必要
- 再調整には 拒否・ロールバックが必要
つまり次は、
Reliability を目的関数にした
新しい AITL(B-Type)の設計
です。
まとめ
- タイミングを守るだけでは信頼性制御にならない
- Adaptive Control と Reliability Control は別物
- 信頼性制御に必要なのは「止める判断」
- FSM は「賢く動く」ためではなく
「賢く動かない」ためにも使う
参考リンク
-
再現コード・環境
https://github.com/Samizo-AITL/aitl-controller-a-type -
詳細解析(GitHub Pages)
https://samizo-aitl.github.io/aitl-controller-a-type/docs/reliability/
👉 次回予告
「Reliability Cost で見る PID vs AITL ― なぜ“普通の PID”が勝つのか」
Discussion