Loading [MathJax]/jax/output/CommonHTML/jax.js

5/05/2010

[動態規劃] 淺談 離散時間動態規劃 (2) -Minimax Dynamic programming

考慮系統狀態方程:
x(k+1)=f(x(k),u(k))現在引入一個 監測函數 (monitor function): g(x(k)) 此函數用來擷取我們所關心的系統狀態。

現在我們定義 cost function
J(u):=mink=1,2,...,Ng(x(k))
我們的目標:
藉由選取最佳的 u(k)Ωk 使得 maxJ(u),亦即
maxmink=1,2,...,Ng(x(k))

此時我們的 Bellman equation 需要進行修正:
I(x(l),Nl)=maxu(l)Ωl{min{g(x(l+1),I(x(l+1),N(l+1)))}}

Example
考慮如下狀態方程:
x(k+1)=[12141214]x(k)+[11]u(k) 其中 x(k):=[x1(k) x2(k)]T
現在,僅考慮 N=2 (只有兩步)的情況,另外控制力 u(0),u(1)0 且需滿足如下拘束: u(0)+u(1)1,定義監測函數
g(x(k))=x1(k)
試求一組 u(0),u(1) maximize the Floor of g((k))

Solution
首先考慮 Optimal cost of one-step-to-go:  (l=N1=1)
I(x(1),1)=maxu(1)Ω1{g(x(2))}=maxu(1)[0,1u(0)]{x1(2)}=maxu(1)[0,1u(0)]{12x1(1)+14x2(1)+u(1)}觀察上式可知欲得到 Maximum,我們需選
u(1)=1u(0)故將上述 u(1) 代回,我們可得對應的 Optimal cost to go :
I(x(1),1)=12x1(1)+14x2(1)+1u(0)現在我們計算 Two-steps-to-go: (l=N2=0)
I(x(l),Nl)=maxu(l)Ωl{min{g(x(l+1)),I(x(l+1),Nl1)}}I(x(0),2)=maxu(0)Ω0{min{x1(0),I(x(1),1)}}I(x(0),2)=maxu(0)[0,1]{min{x1(0),12x1(1)+14x2(1)+1u(0)}}  () 由系統狀態方程可知
{x1(1)=12x1(0)+14x2(0)+u(0)x2(1)=12x1(0)+14x2(0)+u(0)故將上述結果代回 () 可得
I(x(0),2)=maxu(0)[0,1]{min{A+u(0),B14u(0)}} 其中
{A=12x1(0)+14x2(0)B=1+18x1(0)+316x2(0) 為了找出 Maximum,我們定義 F(u(0)):=min{A+u(0),B14u(0)} 那麼考慮以下兩種情況:
CASE 1: AB:則 u(0)=0,u(1)=1
CASE 2: A<B :則
u(0)={45(BA),if45(BA)[0,1]1,otherwiseu(1)=1u(0)

沒有留言:

張貼留言

[人工智慧] 本地端 DeepSeek R1 快速安裝:以 Macbook Pro M4 Chip為例

最近火熱的 DeepSeek R1 模型由於採用了 distill 技術,可以大幅降低計算成本,使得一般人有機會在自家筆電上跑性能逼近 Open AI ChatGPT o1的大語言模型。本文簡單介紹一步安裝在 Macbook Pro 的方法以及使用方法,以下測試採用 Macboo...