第一章 初始強化學習

2021-10-01 04:06:08 字數 2019 閱讀 8021

例項——「小車上山」

步驟1,獲取環境物件

env = gym.make('mountaincar-v0')

print('觀測空間 = {}'.format(env.observation_space))

print('動作空間 = {}'.format(env.action_space))

print('觀測範圍 = {} ~ {}'.format(env.observation_space.low,

env.observation_space.high))

print('動作數 = {}'.format(env.action_space.n))

觀測空間 = box(2,)         ——觀測空間為形狀為(2,)的浮點型np.array,第一維為位置x,第二維為速度

動作空間 = discrete(3)   ——動作空間

觀測範圍 = [-1.2 -0.07] ~ [0.6 0.07]

動作數 = 3

步驟2,建立智慧型體——上山/下山 原理沒看懂

class bespokeagent:

def __init__(self, env):

pass

def decide(self, observation): # 決策

print('observation',observation)

position, velocity = observation

lb = 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.07

if lb < velocity < ub:

action = 2

else:

action = 0

return action # 返回動作

def learn(self, *args): # 學習

pass

agent = bespokeagent(env)

步驟3.智慧型體與環境進行互動

def play_montecarlo(env, agent, render=false, train=false):

episode_reward = 0. # 記錄回合總獎勵,初始化為0

observation = env.reset() # 重置遊戲環境,開始新回合

print('start_observation',observation)

while true: # 不斷迴圈,直到回合結束

if render: # 判斷是否顯示

env.render() # 顯示圖形介面,圖形介面可以用 env.close() 語句關閉

action = agent.decide(observation)

next_observation, reward, done, _ = env.step(action) # 執行動作

episode_reward += reward # 收集回合獎勵

if train: # 判斷是否訓練智慧型體

agent.learn(observation, action, reward, done) # 學習

if done: # 回合結束,跳出迴圈

break

observation = next_observation

return episode_reward # 返回回合總獎勵

env.seed(0) # 設定隨機數種子,只是為了讓結果可以精確復現,一般情況下可刪去

episode_reward = play_montecarlo(env, agent, render=true)

print('回合獎勵 = {}'.format(episode_reward))

env.close() # 此語句可關閉圖形介面

第一章 強化學習概述

強化學習討論的問題是乙個 智慧型體 agent 怎麼在乙個複雜不確定的環境 environment 裡面去極大化它能獲得的獎勵。示意圖由兩部分組成 agent 和 environment。在強化學習過程中,agent 跟 environment 一直在互動。agent 在環境裡面獲取到狀態,agen...

Oracle強化 第一章 PL SQL概述

1.員工表中員工的人數輸出到螢幕 2.建立臨時表temp,字段 char store varchar2 35 date store date建立匿名塊,1 把兩個變數 this is my first pl sql program current date插入到表中 2 10號部門員工姓名,參加工作...

第一章 初始C語言

目錄3.c語言的應用範圍 4.計算機能做什麼 5.c語言標準 7.使用c語言的7個步驟 8.程式設計機制 1969年至1973年間,為了移植與開發unix作業系統,由丹尼斯 里奇與肯 湯普遜,以b語言為基礎,在貝爾實驗室設計 開發出來。c語言具有高效 靈活 功能豐富 表達力強和較高的可移植性等特點,...