日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

planning algorithms chapter 2

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 planning algorithms chapter 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

planning algorithms chapter 2 :Discrete Planning

離散可行規劃導論

問題定義

在離散規劃中,狀態是“可數”的,有限的。
離散可行規劃:

  • 非空狀態空間 X
  • 對于每個狀態 x,存在一個有限的動作空間 U(x)
  • 對于每個狀態和動作空間,存在狀態轉移方程,產生一個新的狀態
  • 一個初始狀態 xi
  • 一個目標集 Xg
  • 為了方便表達離散可行規劃的定義,通常采用有向狀態轉移圖來表示,圖上的頂點集合表示狀態空間 X,只有當兩頂點之間可狀態轉移時,圖上兩頂點之間的有向邊才存在。初始狀態和目標集可以表示為圖上特別指定的頂點。

    離散規劃的例子

    • 2D 網格上移動(“迷宮”)

    • 魔方拼圖

    圖搜索算法

    前向搜索算法

    上圖顯示了通用圖搜索算法模板,其中有幾點需要注意:Q 內部如何排序,如何判斷狀態屬于目標狀態,如何得到計劃(動作序列),如何判斷該狀態是否已經訪問過,是否需要更新狀態代價值(如在Dijkstra 和 A* 算法)

    幾種前向搜索算法,區別在于定義了Q 這個優先級隊列內部不同的排序方式

    • 廣度優先:FIFO
    • 深度優先:LIFO
    • Dijkstra :一種圖單源最短路徑搜索算法,一種特殊的動態規劃形式
      在Dijkstra中,圖上每條邊附帶一個代價(l(x, u) >= 0),Q 內部是按照從初始狀態到達該狀態的累計代價(C(x),cost-to-come)排序。cost-to-come 在搜索過程中通過DP方式來增量計算(C(x‘) = C(x) + l(x, u), 代表最優)。
      Dijkstra 可以保證一旦某個狀態被訪問,則該狀態的 cost-to-come一定是最優的。Dijkstra 內部 Q 實現采用的 Fibonacci heap 這種數據結構,可以實現在常數時間內判斷某個狀態是否被訪問過。
    • A-star :基于Dijkstra進行擴展,引入啟發項值(G(x),cost-to-go),當G(x) = 0 時, A-star 退化成Dijkstra,Q 內部是按照從初始狀態到達目標狀態的預估最優代價( C(x’) + G(x‘)) 進行排序。
    • 最佳優先搜索:Q 內部是按照 cost-to-go 排序,一種貪心搜索,不保證最優,但搜索速度快。
    • 迭代加深搜索:通過不斷增加深度優先搜索深度的一種搜索,將深度優先搜索轉換為一種系統性搜索方式(能夠訪問可到達的所有狀態)。
      迭代加深搜索相比 BFS 使用更少的內存,迭代加深搜索結合 A-star 的思想,形成了 IDA* 算法,在每次迭代過程中,最大深度步長為C(x’) + G(x‘)。

    其他搜索算法

    • 反向搜索算法

    • 雙向搜索算法


    當兩棵搜索樹相遇時,搜索結束,返回成功。如果其中任一搜索樹的優先級隊列為空, 且兩顆樹未相遇,則搜索結束,返回失敗。

    搜索算法的統一視角

    上述所有的搜索算法遵循以下一些共同的模式:

  • 初始
    搜索開始時,搜索圖 G(V,E)中 E為空集,V只包含初始狀態
  • 選擇頂點
    從V中選擇一個頂點,這通常是通過維護一個優先級隊列實現
  • 應用動作
    基于V中選擇的某個頂點,應用動作后,生成一個新的狀態 x = f(x0, u)
  • 向搜索圖中插入有向邊
    新狀態 x 如果不在 V 中,則將 x 插入到 V 中
  • 檢查解決方案
    如果只有一顆搜索樹,根據搜索圖 G 得到從初始狀態到目標狀態的路徑會比較簡單。如果搜索樹數量大于 1 顆,復雜度會增加。
  • 返回到步驟 2
    迭代直到找到一個解決方案。
  • 離散最優規劃

    最優定長規劃


    \(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)

    通過引入代價項Lf(xf)這一技巧,將離散可行規劃中的約束轉換為優化問題代價函數中的一項。

    基本思想: 最優規劃解決方案的子組成方案也是最優的,于是可以通過動態規劃方法解決。在最優定長規劃中,采用一種迭代算法,稱為 值迭代,它的主要思想是在狀態空間中迭代計算最優的 cost-to-go(或 cost-to-come)。Dijkstra’s algorithm 也是 值迭代的一種方式。

    反向值迭代

    基本思想: 在狀態空間中迭代計算最優的 cost-to-go 代價值。在特殊場景下,該方法退化為 Dijkstra 方法。

    符號: $ G_{k}^{ \ast} $ :F 表示最后一步,$ G_{k}^{ \ast} $ 表示從第 k 步到 最后一步(F 步)最佳計劃下的累計代價

    初始條件: $ G_{F}^{ \ast}\left ( x_{F} \right ) = l_{F}\left ( x_{F} \right ) $
    結論:


    推導過程:

    值迭代過程:
    $ G_{F}^{ \ast}\rightarrow G_{K}^{ \ast}\rightarrow G_{K-1}^{ \ast}\cdots G_{k}^{ \ast}\rightarrow G_{k-1}^{ \ast}\rightarrow\cdots G_{2}^{ \ast}\rightarrow G_{1}^{ \ast} $

    時間復雜度: $ O\left ( K\left | X \right |\left | U \right | \right ) $

    離散最優規劃標準定義\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\),該時間復雜度為 $ O\left | U \right |^K $,通過引入動態規劃,極大降低了復雜度。

    舉例:


    如上圖,a 列 $ G_{1}^{ \ast} $ 的值 $G_{1}^{ \ast}\left ( a \right ) $ 代表了 5 步定步長最優規劃的累計代價為 6 。那么如何體現動態規劃思想降低時間復雜度呢?
    當計算 $ G_{4}^{ \ast} $ 的值時,只有 b 和 c 可以只經過 1 步到達 d,再經過1 步到達目標 e,因此只有\(G_{4}^{ \ast}\left ( b \right )\)、\(G_{4}^{ \ast}\left ( c \right )\)為有限值。再計算 \(G_{3}^{ \ast}\) 的值時,只有經過 b 和 c 的路徑才可能經過 5 步到達 目標 e,因此縮小了考慮的范圍,具體程序表現為選擇到達下一頂點的最小累計代價的行為。

    那么,得到了最佳cost-to-go的表,如何提取最佳計劃(或路徑)?
    一種解決方案是為每個頂點存儲最優 \(G_{n}^{ \ast}\)所對應的行為,因此這樣需要的內存復雜度為 \(O(K\left | X \right |)\) 。

    正向值迭代

    • 為什么需要正向值迭代?正向值和反向值迭代的區別是什么?
      反向:
      反向值迭代可以同時找到各頂點到目標頂點的最優計劃;
      反向值迭代需要目標頂點是確定不變的;
      正向:
      正向值迭代可以用來找到從初始頂點出發到其他各頂點的最優計劃;
      正向值迭代需要初始頂點是確定不變的;

    基本思想: 在狀態空間中迭代計算最優的 cost-to-come 代價值。
    下圖為上例,根據正向值迭代得到的最優 cost-to-come 代價值表。

    最優不定步長規劃

    \(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)

    通過引入代價項Lf(xf)這一技巧,將離散可行規劃中的約束轉換為優化問題代價函數中的一項。

    對比最優定長規劃問題和最優不定步長規劃的區別,主要在于終止條件的設置。
    定長問題:

    不定步長:允許不同長度的計劃

    在最優不定步長問題中,從\(x_{I}\)\(X_{G}\)的兩步計劃\(\left ( u_{1}, u_{2}\right )\)等效于從\(x_{I}\)\(X_{G}\)的五步計劃\(\left ( u_{1}, u_{2},u_{T},u_{T},u_{T}\right )\),因此最優定長規劃中的正(反)向值迭代優化方法都可以擴展用于最優不定步長問題中。

    使用邏輯定義離散規劃

    當狀態空間巨大時,對于計算機去解決這樣的規劃問題會比較困難,基于邏輯的表示形式在定義離散規劃問題時比較流行,因為輸出的結果是邏輯可解釋的,但是由于基于邏輯的表示形式難以泛化,因此在連續空間、感知不確定、多決策的規劃問題中,狀態空間的表示形式仍然適用。

    STRIPS-Like 表示法

    舉例: 放電池到手電筒內

    轉載于:https://www.cnblogs.com/zwk-coder/p/11097876.html

    總結

    以上是生活随笔為你收集整理的planning algorithms chapter 2的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。