▶ 実 行
▶ 実行
クリア
OpenAI-GymのCertpoleのGYM環境本体
by てぃふと@うぇいく
# OpenAI Gym Certpole GYMENVとは変数 GYMENVはNULL ●GYM作成とは ENVとは変数 ENVは{ 終了超過ターン:NULL, STEP:0, 打切STEP:500, X閾値:2.4, 角度閾値:DEG2RAD(12), 重力:9.8, 台車重量:1.0, 棒重量:0.1, 棒長:0.5, 強:10.0, 台車位置:0, 台車速度:0, 棒角度:0, 棒角速度:0, FPS:50, 画面幅:描画中キャンバス["width"], 画面高:描画中キャンバス["height"], 棒表示太:10.0, 台車表示幅:50.0, 台車表示高:30.0 } ENV["TAU"]は1.0/ENV["FPS"] ENV["総重量"]はENV["台車重量"]+ENV["棒重量"] ENV["棒重心"]はENV["棒重量"]*ENV["棒長"] ENV["X最大値"]はENV["X閾値"]*2 ENV["表示倍率"]はENV["画面幅"]/ENV["X最大値"] ENV["棒表示長"]はENV["表示倍率"]*(2*ENV["棒長"]) ENV["連結高"]はENV["台車高"]/4 ENV["Y位置"]はENV["画面高"]/2 GYMENVはENV ENVで戻る ここまで ●GYMリセットとは ENVとは変数 ENVはGYMENV ENV["台車位置"]は(RND*0.1)-0.05 ENV["台車速度"]は(RND*0.1)-0.05 ENV["棒角度"]は(RND*0.1)-0.05 ENV["棒角速度"]は(RND*0.1)-0.05 ENV["終了超過ターン"]はNULL ENV["STEP"]は0 [ENV["台車位置"], ENV["台車速度"], ENV["棒角度"], ENV["棒角速度"]]で戻る ここまで ●(ACTIONで)GYMステップとは ENVとは変数 ENVはGYMENV Xとは変数 XDとは変数 Aとは変数 ADとは変数 XはENV["台車位置"] XDはENV["台車速度"] AはENV["棒角度"] ADはENV["棒角速度"] 力強さとは変数 もし、ACTIONが1ならば、 力強さはENV["強"] 違えば、 力強さは-ENV["強"] ここまで TEMPとは変数 AACCとは変数 XACCとは変数 TEMPは(力強さ+ENV["棒重心"]*AD*AD*SIN(A))/ENV["総重量"] AACCは(ENV["重力"]*SIN(A)-COS(A)*TEMP)/(ENV["棒長"]*(4/3-ENV["棒重量"]*COS(A)*COS(A)/ENV["総重量"])) XACCはTEMP-ENV["棒重心"]*AACC*COS(A)/ENV["総重量"] XはX+ENV["TAU"]*XD XDはXD+ENV["TAU"]*XACC AはA+ENV["TAU"]*AD ADはAD+ENV["TAU"]*AACC ENV["台車位置"]はX ENV["台車速度"]はXD ENV["棒角度"]はA ENV["棒角速度"]はAD ENV["STEP"]はENV["STEP"]+1 終了フラグとは変数 打切りフラグとは変数 終了フラグはオフ 打切りフラグはオフ もし、(ENV["台車位置"]<0-ENV["X閾値"])||(ENV["台車位置"]>ENV["X閾値"])ならば 終了フラグはオン 違えばもし、(ENV["棒角度"]<0-ENV["角度閾値"])||(ENV["棒角度"]>ENV["角度閾値"])ならば 終了フラグはオン 違えばもし、ENV["STEP"]>ENV["打切STEP"]ならば、 終了フラグはオン 打切りフラグはオン ここまで もし、終了フラグがオフならば、 報酬は1.0 違えばもし、ENV["終了超過ターン"]=NULLならば、 ENV["終了超過ターン"]は0 報酬は1.0 違えば もし、ENV["終了超過ターン"]が0ならば、 ここまで ENV["終了超過ターン"]はENV["終了超過ターン"]+1 報酬は0 ここまで STATEとは変数 STATEは[ X,XD,A,AD ] [STATE, 報酬, 終了フラグ, 打切りフラグ, {}]で戻る ここまで ●GYM描画とは ENVとは変数 ENVはGYMENV 全描画クリア Xとは変数 Yとは変数 XはENV["台車位置"]*ENV["表示倍率"]+ENV["画面幅"]/2 YはENV["Y位置"] 1.0に線太さ設定 黒色に線色設定 黒色に塗り色設定 キャンバス状態保存 [X, Y]に描画起点設定 [-ENV["台車表示幅"]/2,-ENV["台車表示高"]/2,ENV["台車表示幅"],ENV["台車表示高"]]の四角描画 [0, ENV["連結高"]]に描画起点設定 (RAD2DEG(ENV["棒角度"]))に描画回転 「#CA9865」に線色設定 「#CA9865」に塗り色設定 [-ENV["棒表示太"]/2,0,ENV["棒表示太"],-ENV["棒表示長"]]の四角描画 「#8184CB」に線色設定 「#8184CB」に塗り色設定 [0,0]へENV["棒表示太"]/2の円描画 キャンバス状態復元 [0,Y]から[ENV["画面幅"],Y]まで線描画 ここまで ●RNDとは 『Math.random』を[]でJS関数実行で戻る ここまで
2efac7f9bc7e4e5b34fc22581fa33c20
1927