本文為筆者自行設計圖論演算法解離散不確定決策過程,含動態規劃(Dynamic Programming) 與 Bellman principle of optimality(Bellman Equation) 相關概念,分享其 Idea 框架!!
給定有向圖 G(N,A) ,其中 N = D \cup R \cup T ,D,R,T為互斥的集合,
其中 i,j \in N 代表 State 實作上可以想成 string representation
定義 Forward Set of i : F_i
(i,j) \in A \Longleftrightarrow j \in F_i
其中: d \in D 稱為 Decision Nodes (決策點集) ,代表該情境決策當下
r \in R 稱為 Random Nodes (隨機點集) ,代表不確定性的開端
t \in T 稱為 Terminate Nodes (停止點集) ,代表得到報酬或離開
註: \forall i \in T \quad F_{i} = \emptyset
定義機率函數(ArcCost) p : R\times F_r \longrightarrow \mathbb{[0,1]} \quad p_{ij} \text{ are given } 並滿足機率公設
定義累計報酬函數: g : N \longrightarrow \mathbb{R}
g(i):= \left\{\begin{array}{lll} \displaystyle{\underset{j\in F_i}{\text{max }}g(j)}&,& \text{if } i \in D \\ \displaystyle{\sum_{j\in F_i}p_{ij}g(j)} &,& \text{if } i \in R \\ \text{Initial Value }&,& \text{if } i \in T \\ \end{array} \right.
定義選擇函數: s : D \longrightarrow F_d
s(d):= \underset{j\in F_d}{\text{argmax }}g(j)
實作上關鍵與難題:
N的空間複雜度通常很大,如何在不生成N的情況下,快速一直找到 i \notin Q,而且F_i \subseteq Q
給定有向圖 G(N,A) ,其中 N = D \cup R \cup T ,D,R,T為互斥的集合,
其中 i,j \in N 代表 State 實作上可以想成 string representation
定義 Forward Set of i : F_i
(i,j) \in A \Longleftrightarrow j \in F_i
其中: d \in D 稱為 Decision Nodes (決策點集) ,代表該情境決策當下
r \in R 稱為 Random Nodes (隨機點集) ,代表不確定性的開端
t \in T 稱為 Terminate Nodes (停止點集) ,代表得到報酬或離開
註: \forall i \in T \quad F_{i} = \emptyset
定義機率函數(ArcCost) p : R\times F_r \longrightarrow \mathbb{[0,1]} \quad p_{ij} \text{ are given } 並滿足機率公設
g(i):= \left\{\begin{array}{lll} \displaystyle{\underset{j\in F_i}{\text{max }}g(j)}&,& \text{if } i \in D \\ \displaystyle{\sum_{j\in F_i}p_{ij}g(j)} &,& \text{if } i \in R \\ \text{Initial Value }&,& \text{if } i \in T \\ \end{array} \right.
定義選擇函數: s : D \longrightarrow F_d
s(d):= \underset{j\in F_d}{\text{argmax }}g(j)
給定 o \in D 為當下狀態(Current State),則g(o) 的值為最大期望報酬,s 為最佳決策!!
演算法虛擬碼 :
+++++++++++++++++++++++++++++++++++++++++++++++++++
Given g(T)
Let Q := T
For (i\in N\setminus Q \ \text{ and } \ F_i \subseteq Q)
\qquad If (i \in R) \quad Compute p(i,F_i)
\qquad If (i \in D) \quad Compute s(i)
\qquad Compute g(i)
\qquad Q \leftarrow Q \cup \{i\}
\qquadIf (i == o) output g(o) + s and break ;
EndFor
++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法概念:
不斷的搜尋可以計算的點 i (當F_i都被算過了已放進Q裡)!!
如果遇到隨機點 i \in R 則利用 F_i 把期望值算出來並存起來
如果遇到決策點 i \in D 則選擇 F_i 裡面最好的值當當下決策
計算完 o 點演算法即可停止 !!
實作上關鍵與難題:
N的空間複雜度通常很大,如何在不生成N的情況下,快速一直找到 i \notin Q,而且F_i \subseteq Q
[以上純為學術經驗交流知識分享,如有錯誤或建議可留言~~]
by Plus & Minus 2017.08
留言
張貼留言