番禺网站建设怎样,pageadmin自助建站系统,有限责任公司欠债找谁,佛山网站外包一、目标
一种启发式的搜索算法#xff0c;在搜索空间巨大的场景下比较有效
算法完成后得到一棵树#xff0c;这棵树可以实现#xff1a;给定一个游戏状态#xff0c;直接选择最佳的下一步
二、算法四阶段
1、选择#xff08;Selection#xff09;
父节点选择UCB值最…一、目标
一种启发式的搜索算法在搜索空间巨大的场景下比较有效
算法完成后得到一棵树这棵树可以实现给定一个游戏状态直接选择最佳的下一步
二、算法四阶段
1、选择Selection
父节点选择UCB值最大的子节点作为当前节点 UCBVi‾c2lnNniUCB\overline{V_{i}} c\sqrt{\frac{2lnN}{n_{i}}} UCBVicni2lnN 其中c通常取2。
nin_{i}ni代表 iii 节点被选择的次数NNN代表其父节点被选择的次数。
Vi‾\overline{V_{i}}Vi 代表 iii 节点的平均价值大小例如 iii 节点 Viv,ni3V_{i}v,n_{i}3Viv,ni3则Vi‾v/3\overline{V_{i}}v/3Viv/3。
2、扩展Expansion
为当前节点创建一个或多个子节点子节点代表当前节点下可采取的动作
3、仿真Simulation/Rollout
在某一节点用随机策略进行模拟rollout
def Rollout(S_i): # S_i 当前状态While True: # S_i达到终止条件/状态(下棋中某方获胜或平局)if S_i a terimal state: # 返回结果valuereturn value(S_i) # 还未终止则# 随机选择一个当前状态下的可用动作A_i random(available_action(S_i)) # 在当前状态下采取动作得到新的状态S_i simulate(A_i, S_i)4、反向传播Backpropagation
得到模拟结果后不断反向更新父节点
三、运行过程 n代表当前节点被探索的次数。
则运行过程如下
1、选择节点
当前节点是叶节点则选择该节点当前节点有孩子孩子中UCB值最大的作为选择的节点
2、节点扩展 模拟
若选择的节点未模拟过n0则进行模拟得到结果后更新该节点 n1 , value结果数值。若选择的节点模拟过n≠0则扩展节点。添加在该节点下所有可采取的动作作为孩子 选择第一个孩子作为当前节点进行模拟
def Rollout(S_i): # S_i 当前状态While True: # S_i达到终止条件/状态(下棋中某方获胜或平局)if S_i a terimal state: # 返回结果valuereturn value(S_i) # 还未终止则# 随机选择一个当前状态下的可用动作A_i random(available_action(S_i)) # 在当前状态下采取动作得到新的状态S_i simulate(A_i, S_i)3、反向传播
当孩子得到 Vcv,nc1V_{c}v,n_{c}1Vcv,nc1反向传播到父节点父节点 Vpv,np1V_{p}v,n_{p}1Vpv,np1直至传播到根节点。
三、实例
具体样例可参考博客蒙特卡洛树搜索MCTS详解、蒙特卡洛树搜索 MCTS 入门或b站视频AI如何下棋直观了解蒙特卡洛树搜索MCTS