文章

CS188-Search with Other Agents

Types of Games

Axes

  • 确定的还是随机的?
  • 游戏玩家的数量是多少?
  • 是否是零和游戏
  • 当决定策略的时候是否了解游戏的全部信息

Deterministic Games

  • States: S(start at s0)
  • Players: 一组经常轮流的玩家
  • Actions:取决于玩家/状态
  • Transition Function:很像常规搜索的后继函数(state and action to the next state)
  • Terminal Test:游戏是否结束
  • Terminal Utilities:获胜的结果(会被记录)
  • Solution:也就是策略,每种可能的情况应该采取的策略

Zero-Sum Games

简单概括来说就是争夺有限的资源。(要么赢要么输)

General Games 则有可能出现双赢情况

Single-Agent Trees

通俗来讲就是选择方向分支然后不断循环,树的每一个节点都可以有值来衡量状态。(也可以通过子节点的最大值来 back 到父节点,直到 root)

Minimax value 则是相对于不同 agent 最好策略的值。

不同 agent 可以轮流,从下到上计算 Minimax value

感觉有点像回合制游戏。

Game Tree Pruning

有选择性的跳过一些节点(通过一些过滤的条件),这样就是 AB Pruning

Alpha-Beta Pruning

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# a是MAX版本最好的通向root的选择,b则相反
def max-value(state,a,b):
    initialize v=-
    for each successor in date:
        v=max(v,value(successor,a,b))
        if v>= b:return v
    	a=max(a,v)
    return v

def min-value(state,a,b):
    initialize v=+
    for each successor in date:
        v=min(v,value(successor,a,b))
        if v<= a:return v
    	b=min(a,v)
    return v

Evaluation Function

通常来讲,这个函数越好,agent 表现得也就越高效。

有点类似在一些搜索问题中的 heuristics。

most common design for this function is a linear combination of features

  • Eval(s) = w1 f1(s) + w2 f2(s) + … + wn fn(s)

Each fi(s) corresponds to a feature extracted from the input state s, and each feature is assigned a corresponding weight wi.

Features are simply some element of a game state that we can extract and assign a numerical value.

当然,Evaluation Function 也可以十分自由,没必要非得 linear。

基于 networks 的 nonlinear 的 evaluation function 在强化学习的应用中也十分广泛。

The most important thing to keep in mind is that the evaluation function yields higher scores for better positions as frequently as possible.

本文由作者按照 CC BY 4.0 进行授权