-1
私はtic-tac-toeを再生する強化学習エージェントを実装しようとしています。これを行うには、ゲームの状態、その状態で利用可能な行動、およびその状態を与えられた行動をとる報酬を格納するデータ構造を作成する必要があります。また、状態に応じて利用可能なアクションを取るという最大の報酬を返すことができなければならない。具体的には、ここでのゲームの状態は、値0,1,2(空、プレーヤー1、プレーヤー2)を持つことができる9ベクトルによって与えられる。 (これらの正方形が既に占有されている場合は少ない)状態空間をPythonで保存する最も良い方法
各ステップで取られる9つの可能な行動まであります私はこれを作ってみた:
#Input np.array([0,0,0,0,0,0,0,0]),1
class Tree():
def __init__(self):
self.data=defaultdict(nested_dict)
def set(self,key,key2,value):
self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]][key2]=value
def get(self,key,key2=''):
if(key2==''):
return self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]]
return self.data[key[0]][key[1]][key[2]][key[3]][key[4]][key[5]][key[6]][key[7]][key[8]][key2]
def get_max_child(self,state):
return np.max(list(a.get(state).values()))
#Example of use
a=Tree()
a.set([0,0,0,0,0,0,0,0,0],7,1)
a.set([0,0,0,0,0,0,0,0,0],6,2)
a.get_max_child([0,0,0,0,0,0,0,0,0])
#Returns 2
どのようにこれは良く作ることができますか?私は自分自身を課すていますいくつかの制限事項は次のとおりです。
- は、すべての可能な状態を事前に計算し、それらに私は、ルックアップテーブルではなく、ニューラルネットワークでこれをやりたい 整数
- を割り当てません。それは後で来るでしょう。最後に