參考資料
import gym //匯入模組
from policynet import policygradient
import matplotlib.pyplot as plt
import time
display_reward_threshold = 1000
render = false
#建立乙個環境
env = gym.make('cartpole-v0') //建立乙個小車倒立擺模型
env.seed(1)
print(env.action_space)
print(env.observation_space)
print(env.observation_space.high)
print(env.observation_space.low)
rl = policygradient(
n_actions=env.action_space.n,
n_features=env.observation_space.shape[0],
learning_rate=0.02,
reward_decay=0.99,
)#學習過程
for i_episode in range(85):
observation = env.reset()
while true:
if render: env.render()
#取樣動作,探索環境
# action = rl.choose_action(observation)
# observation_, reward, done, info = env.step(action)
action = rl.choose_action(observation)
observation_, reward, done, info = env.step(action)
#將觀測,動作和回報儲存起來
rl.store_transition(observation, action, reward)
if done:
ep_rs_sum = sum(rl.ep_rs)
if 'running_reward' not in globals():
running_reward = ep_rs_sum
else:
running_reward = running_reward * 0.99+ep_rs_sum * 0.01
if running_reward > display_reward_threshold: render = true
print("episode:", i_episode, "rewards:", int(running_reward))
#每個episode學習一次
vt = rl.learn()
if i_episode == 0:
plt.plot(vt)
plt.xlabel('episode steps')
plt.ylabel('normalized state-action value')
plt.show()
break
#智慧型體探索一步
observation = observation_
# #測試過程
for i in range(10):
observation = env.reset()
count = 0
while true:
# 取樣動作,探索環境
env.render()
action = rl.greedy(observation)
#action = rl.choose_action(observation)
#action = rl.sample_action(observation)
# print (action)
# print(action1)
observation_, reward, done, info = env.step(action)
if done:
print(count)
break
observation = observation_
count+=1
#time.sleep(0.001)
print (count)
一階倒立擺系統
一階倒立擺系統的控制問題就是通過計算給定直流電機電流大小,即小車運動所需力的大小 控制作用 使擺桿偏角和小車位置 系統輸出 能夠盡快達到乙個平衡點 注意這裡有多個控制目標 並使之沒有大的振盪和超調。進一步,當系統達到穩定後能克服各種隨機擾動 例如人為撥動擺桿使之突然偏離平衡點 而仍能保持穩定執行。倒...
現控倒立擺系統分析
變數賦值 m 0.1 m 1 g 10 len 0.5 a 0100 00 m g m 0 0 001 00 m m g m len 0 b 0 1 m 0 1 m len c 10 00 d 0 能控性分析 m ctrb a,b p rank m n size a,1 能觀性分析 mm ctrb ...
直線型一階倒立擺7 總結
直線型一階倒立擺系統在控制學術語描述下是乙個高階 不穩定 非線性的強耦合系統。倒立擺的實用意義明顯,在生活周圍中,關於受控穩定問題隨處可見。人類直立行走在工程上是乙個困難的問題,目前就我所知能夠做到很好的直立行走和運動,唯屬波斯頓動力。當然行走不限於兩肢,任何個數的行走方式都可以研究。隨處可見的平衡...