本文章通过keras实现DQN算法来解决倒立摆的平衡问题
一.环境
cartpole是一个经典的环境,可以验证许多的算法。这次我用的是cartpole-v0,一个离散动作空间的倒立摆环境,该环境有两个动作,即左和右,并且包含环境的四个状态观测值。
然后就瞅瞅这个环境:

黑色的载体可以左右移动,来保持平衡杆直立
然后看一下gym官方的描述:

这里面尤其要注意的一点就是关于“Reward”的描述,每一步都给“1”分的回报,而且最关键的是,即使这一步导致一轮交互结束了,也给予“1”分的回报。这样显然是不可取的,因此要在交互过程结束后,给这一步的Reward赋予“坏”的回报,这里我设置了-10。
reward = reward if not done else -10
二.DQN代码
代码部分我直接用了我上一篇文章解决“MountainCar”的主体代码部分,该文章链接在末尾会附上。
%%time
from tensorflow.keras import Sequential,layers
from tensorflow.keras.models import load_model
from tensorflow.keras.optimizers import Adam
from collections import deque
import numpy as np
import random
import gym
class Agent(object):
def __init__(self,):
'''
初始化类的变

本文介绍如何使用DQN算法通过Keras实现解决倒立摆(CartPole)环境的平衡问题。采用两层全连接层的神经网络模型,通过与环境交互收集经验并不断调整策略,最终使倒立摆保持长时间平衡。
最低0.47元/天 解锁文章
1241

被折叠的 条评论
为什么被折叠?



