機器學習演算法完整版見fenghaootong-github
匯入模組
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import time
設定引數
#產生偽隨機數列
np.random.seed(2)
n_states = 6
actions = ['left', 'right']
epsilon = 0.9
alpha = 0.1
lambda = 0.9
max_episodes = 13
fresh_time = 0.3 #走一步的時間
構建乙個table
def
build_q_tabel
(n_states, actions):
table = pd.dataframe(np.zeros((n_states, len(actions))), columns = actions)
return table
build_q_tabel(n_states, actions)
left
right
00.0
0.01
0.00.0
20.0
0.03
0.00.0
40.0
0.05
0.00.0
選擇行動
def
choose_action
(state, q_table):
state_actions = q_table.iloc[state, :]
if (np.random.uniform() > epsilon) or (state_actions.all() == 0):
action_name = np.random.choice(actions)
else:
action_name = state_actions.argmax()
return action_name
環境搭建
def
get_env_feedback
(s, a):
if a == 'right':
if s == n_states - 2:
s_ = 'terminal'
r = 1
else:
s_ = s + 1
r = 0
else:
r = 0
if s == 0:
s_ = s
else:
s_ = s - 1
return s_, r
更新環境
def
update_env
(s, episode, step_counter):
env_list = ['-']*(n_states-1) + ['t']
if s == 'terminal':
interaction = 'episode %s: total_steps = %s' % (episode+1, step_counter)
print('\r{}'.format(interaction), end='')
time.sleep(2)
print('\r ',end='')
else:
env_list[s] = 'o'
interaction = ''.join(env_list)
print('\r{}'.format(interaction), end='')
time.sleep(fresh_time)
rl過程
def
rl():
q_table = build_q_tabel(n_states, actions)
for episode in range(max_episodes):
step_counter = 0
s = 0
is_terminated = false
update_env(s, episode, step_counter)
while
not is_terminated:
a = choose_action(s, q_table)
s_, r = get_env_feedback(s, a)
q_predict = q_table.loc[s, a]
if s_ != 'terminal':
q_target = r + lambda * q_table.iloc[s_, :].max()
else:
q_target = r
is_terminated = true
q_table.loc[s, a] += alpha * (q_target - q_predict)
s = s_
update_env(s, episode, step_counter+1)
step_counter += 1
return q_table
測試
rl()
left
right
00.000002
0.005031
10.000001
0.027061
20.000007
0.111953
30.000204
0.343331
40.000810
0.745813
50.000000
0.000000
**來自莫煩python
強化學習 強化學習基礎
為了應對車載網路中通訊環境快速變化的難題,可以使用強化學習進行解決,這裡對強化學習的基礎進行整理。主要的應用場景為車載網路中資源分配問題。本文源自莫煩python 強化學習章節,有需要請查閱原文 20200413補充了一些內容,來自這篇部落格,是李巨集毅的深度強化學習的筆記。強化學習的主要構成有 a...
強化學習 1 1 0 強化學習介紹
abstract 本文介紹reinforcement learning的具體特點和與其他機器學習演算法不同之處,本文是乙個骨架性的文章,所有專有名詞都保持英文原始單詞,具體內容會在後續中給出詳細解答。keywords reinforcement learning,situation,action,e...
強化學習系列1 強化學習簡介
2015年10月,alphago在和歐洲冠軍進行的圍棋賽上獲得了5 0的完勝,其後的深度強化學習也隨之火了起來。從本期開始開個新坑,一步步把強化學習的內容捋一遍。強化學習 reinforcement learning 是用來解決連續決策問題的一種方法。針對的模型是馬爾科夫決策過程 markov de...