質問: Q学習によるcartpoleの問題の勉強を始めました。 以下のコードはqiitaサイトより引用させていただいております。 https://qiita.com/sugulu/items/bc7c70e6658f204f85f9 最初の部分で躓いているのですが、コードというよりコードの意味について理解できずにおります。 ``` #Q関数を離散化し定義する関数 #観測した状態をデジタル変換する def bins(clip_min,clip_max,num): return np.linspace(clip_min,clip_max,num+1)[1:-1] #各値を離散化に変換する def digitize_state(observation): cart_pos,cart_v,pole_angle,pole_v=observation digitized=[np.digitize(cart_pos,bins=bins(-2.4,2.4,num_digitized)), np.digitize(cart_v,bins=bins(-3.0,3.0,num_digitized)), np,digitize(pole_angle,bins=bins(-0.5,0.5,num_digitized)), np.digitize(pole_v,bins=bins(-2.0,2.0,num_digitized))] return sum([x*(num_dizitized**i) for i,x in enumerate(digitized)]) num_dizitized=6 # カート、棒の状態をstate=digitize_state(observation) で取得していくこととなる。 コード ``` 最初の部分のコードの理解しようとしているのですが、なかなか理解が進まず困っています。 このdigitize_stateの方法で出力するものをstateとして定義していくとすると、np.digitizeで離散化したデータがcart_v
回答: tiitoi 様、ありがとうございます。 分かりづらくてコードの意味について悩んでいました。 重み付きで総和を取っているという理解であっていて安心しました。 少し分かりやすくしてコードを分かりやすくしてみます。