【RL】快速强化学习实战案例
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【RL】快速强化学习实战案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                文章目錄
- 案例【不倒翁】
- 案例【小車自適應翻越小溝】
- Ref:
案例【不倒翁】
import gym import time'''基于強化學習實現不倒翁特性:自動平衡恢復 ''' if __name__ == "__main__":env = gym.make('CartPole-v0')for i_episode in range(20):observation = env.reset()for t in range(100):env.render()# print(observation)action = env.action_space.sample()observation, reward, done, info = env.step(action)if done:# print("Episode finished after {} timesteps".format(t + 1))print(observation)time.sleep(1) # 暫停以下,便于觀察breaktime.sleep(10) # 停頓10senv.close() # 關閉圖形化界面案例【小車自適應翻越小溝】
# -*- coding: utf-8 -*- import gym import time'''基于強化學習實現小車自適應翻越小溝 ''' class BespokeAgent:def __init__(self, env):passdef decide(self, observation):position, velocity = observationlb = min(-0.09 * (position + 0.25) ** 2 + 0.03, 0.3 * (position + 0.9) ** 4 - 0.008)ub = -0.07 * (position + 0.38) ** 2 + 0.06if lb < velocity < ub:action = 2else:action = 0return action # 返回動作def learn(self, *args): # 學習passdef play_ones(self, env, agent, render=False, train=False):episode_reward = 0 # 記錄回合總獎勵,初始值為0observation = env.reset() # 重置游戲環境,開始新回合while True: # 不斷循環,直到回合結束if render: # 判斷是否顯示env.render() # 顯示圖形界面,可以用env.close()關閉action = agent.decide(observation)next_observation, reward, done, _ = env.step(action) # 執行動作episode_reward += reward # 搜集回合獎勵if train: # 判斷是否訓練智能體breakobservation = next_observationreturn episode_reward # 返回回合總獎勵if __name__ == '__main__':env = gym.make('MountainCar-v0')env.seed(0) # 設置隨機數種子,只是為了讓結果可以精確復現,一般情況下可以刪除agent = BespokeAgent(env)for _ in range(100):episode_reward = agent.play_ones(env, agent, render=True)print('回合獎勵={}'.format(episode_reward))time.sleep(10) # 停頓10senv.close() # 關閉圖形化界面Ref:
總結
以上是生活随笔為你收集整理的【RL】快速强化学习实战案例的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【Matlab】绘制热力图和三维热力图
- 下一篇: 【控制】粒子群优化(PSO,Partic
