Cartpole с Q-обучением ничего не изучатьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Cartpole с Q-обучением ничего не изучать

Сообщение Anonymous »

Итак, я пытался решить проблему с картерами. Это общая проблема при работе с обучением подкрепления. По сути, у вас есть тележка, которая уравновешивает шест. Тележка может двигаться влево или вправо. Эпизод заканчивается, когда полюс падает. Весь смысл состоит в том, чтобы сохранить сбалансированный полюс как можно дольше. Среда спортзала. Но я хотел сделать это без использования этого ярлыка, так как я хочу в конечном итоге сделать свои сложные условия. Я получил его, чтобы бежать, но, похоже, это ничего не изучает. Он собирает максимум 14 очков, каждый раз. Что я делаю не так? < /P>

Код: Выделить всё

import numpy as np
import math
import statistics

# Environment dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Cart properties
CART_WIDTH = 100
CART_HEIGHT = 20
cart_x = SCREEN_WIDTH // 2 - CART_WIDTH
cart_y = SCREEN_HEIGHT - 50
cart_speed = 5

# Pole properties
POLE_LENGTH = 100
POLE_ANGLE = math.pi / 4
POLE_ANGULAR_VELOCITY = 0.0
POLE_ANGULAR_ACCELERATION = 0.0
GRAVITY = 0.01

# Game loop flag
running = True

EPISODES = 20000
LEFT = 0
RIGHT = 1
ACTIONS = [LEFT, RIGHT]
EPSILON = 0.9
EPSILON_DECAY = 0.01
MIN_EPSILON = 0.01
LEARNING_RATE = 0.5
DISCOUNT = 0.9

q_table = np.zeros((800, len(ACTIONS)))

def check_game_over(pole_angle):
if abs(pole_angle) > math.pi / 2:
return True
return False

def update_pos(state, action, pole_angular_acceleration, pole_angle, pole_angular_velocity):
if action == 0:
state -= cart_speed
if action == 1:
state += cart_speed

# Constrain cart within screen boundaries
state = max(0, min(state, SCREEN_WIDTH - CART_WIDTH))

# update pole physics
pole_angular_acceleration = GRAVITY * math.sin(pole_angle)
pole_angular_velocity += pole_angular_acceleration
pole_angle += pole_angular_velocity

# apply damping to stabilize the pole
pole_angular_velocity *= 0.99
return state, pole_angle, pole_angular_velocity, pole_angular_acceleration

def choose_action(state, epsilon):
if np.random.uniform() < epsilon:
action = np.argmax(q_table[state])
else:
action = np.random.choice(ACTIONS)
return action

def train():
for e in range(EPISODES):
pole_angular_velocity = POLE_ANGULAR_VELOCITY
pole_angle = POLE_ANGLE
pole_angular_acceleration = POLE_ANGULAR_ACCELERATION
reward = 0
rewards = []
avg_rewards = []
epsilon = EPSILON
state = SCREEN_WIDTH // 2 - CART_WIDTH
while not check_game_over(pole_angle):
# choose action
action = choose_action(state, epsilon)

# update positions
old_pos = q_table[state][action]
next_s, pole_angle, pole_angular_velocity, pole_angular_acceleration = update_pos(state, action, pole_angular_acceleration, pole_angle, pole_angular_velocity)
next_max = max(q_table[int(old_pos)])
new_value = (1 - LEARNING_RATE) * old_pos + LEARNING_RATE * (reward + DISCOUNT * next_max)

q_table[int(old_pos)][action] = new_value

state = next_s

# reward stuff
reward += 1
print(reward)
rewards.append(reward)
epsilon = max(MIN_EPSILON, epsilon * EPSILON_DECAY)

if e % 100 == 0:
avg_rewards.append(statistics.mean(rewards))
print(avg_rewards)

train()
`
Я думал, что проблема не уменьшила epsilon, но это вообще не изменило производительность.

Подробнее здесь: https://stackoverflow.com/questions/794 ... g-anything
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • График вознаграждений Cartpole для обучения DQN
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Точка появления спортзала Cartpole
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Точка появления спортзала Cartpole
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Реализация PyTorch PPO для Cartpole-v0 застревает в локальной оптиме
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • DQN Learning Cartpole Grape
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»