OpenAI Gym 关于CartPole的模拟退火解法
前言
今天测试OpenAI Gym,然后发现CartPole的最快实现快到离谱,使用Simulated Annealing,也就是SA模拟退火法。效果如下图:
代码地址:模拟退火解CartPole
于是好好研究了一下。
关于模拟退火法
一种最优控制算法,基本思想就是每次找一个邻近的点(解法),如果邻近的点比较优,就接受这个点,但是下一次使用随机有一定概率继续选择新的邻近的点,从而避免局部最优,从而通过多次测试达到全局最优。
比较清楚的介绍详见:大白话解析模拟退火算法
如何将模拟退火法SA应用到CartPole中?
对于CartPole倒立摆,其控制输出AA很简单,就是向左或者向右。输入OO就是车的位置,速度,杆的角度,角速度。
为了应用SA,首先需要构造一个从输入到输出的映射:
A= f(O)
那么这里显然我们可以使用最简单的映射,就是线性映射:
A = wO
w<script type="math/tex" id="MathJax-Element-276">w</script> 即为参数向量。模拟退火就来改这些参数,从而得到一个新的“点”。
再下来的问题就是如何判断w好坏了,想法也很简单,每次运行一次episode即一次实验,累加计算得到的reward值,用Score得分表示,代表这个参数效果更好。
所以接下来是思路就简单了:
初始化w
初始化最优w
初始化动作选择w每次给动作选择w增加一点随机性,(随机性不断减少),计算得到的回报Score
如果Score 最大,就将当前的w赋给最优w,并将最优w赋给动作选择w
如果Score 小,那么可以增大随机性。反复运算,值得一定时间w不再波动(即不再退火)
更具体的大家可以参考代码。这里只分析一下思路。
思考
模拟退火法是一种类贪婪算法,通过纯随机的方式来寻找更优的结果。对于低维空间可以,但对于高维控制,这种方向性不强的做法(比起随机梯度下降恐怕就不好了)
OpenAI Gym 关于CartPole的模拟退火解法相关推荐
- OpenAI Gym 经典控制环境介绍——CartPole(倒立摆)
摘要:OpenAI Gym是一款用于研发和比较强化学习算法的工具包,本文主要介绍Gym仿真环境的功能和工具包的使用方法,并详细介绍其中的经典控制问题中的倒立摆(CartPole-v0/1)问题.最后针 ...
- Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...
- OpenAI Gym介绍
上篇博客介绍了OpenAI Gym.OpenAI Gym与强化学习以及OpenAI Gym的安装,接下来运行一个demo体验一下OpenAI Gym这个平台,以CartPole(倒立摆)为例,在工作目 ...
- 独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)
作者:ANKIT CHOUDHARY 翻译:张睿毅 校对:吴金笛 本文4300字,建议阅读10+分钟. 本文作者通过实战介绍了Deep Q-Learning的概念. 导言 我一直对游戏着迷.在紧凑的时 ...
- [环境] OpenAI gym经典控制环境CartPole-v0 介绍
[环境]CartPole-v0 聊一聊我对强化学习的理解 对应的代码请访问我的GitHub:fxyang-bupt(可能你进去之后发现什么都没有,那是因为我注册了新的账号还在整理,这并不影响你先fol ...
- dqn在训练过程中loss越来越大_强化学习笔记:OpenAI Gym+DQN+Tensorflow2实现
参考了一些文章,针对OpenAI gym环境,使用tf2.x实现了DQN算法:加上了一些没有太大必要(?)的小功能,比如:自动保存视频,保存训练日志从而利用TensorBoard实现数据可视化,保存和 ...
- 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) 标签: 强化学习OpenAI GymMuJoCoStarCra ...
- 强化学习(一)——专业术语及OpenAI Gym介绍
强化学习(一)--专业术语及OpenAI Gym介绍 1. 专业术语 1.1 Agent(智能体) 1.2 Environment(环境) 1.3 State *s*(状态) 1.4 Action * ...
- 第22天:如何使用OpenAI Gym和Universe构建AI游戏机器人
by Harini Janakiraman 通过哈里尼·贾纳基拉曼 第22天:如何使用OpenAI Gym和Universe构建AI游戏机器人 (Day 22: How to build an AI ...
- qlearning算法_通过OpenAI Gym编写第一个强化学习算法
腾讯互娱Turing Lab从创建开始,每周在内部进行分享读书会,对业界的技术研究和应用进行讨论.在此通过公众号形式把相关有趣内容也推送给对新技术和业界趋势感兴趣的朋友. 和大量的所谓技术公众号不同, ...
最新文章
- mysql 5.7编译安装重启_mysql5.7源码编译安装
- hdfs mv命令_如何HDFS mv命令工作
- 如何自行找出 SAP Spartacus 查询用户信息的 API Service 类
- 在工作或学习中要留出喝茶的时间
- 矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现
- 解决Ubantu系统下sublime无法输入中文的问题
- 群晖7.1添加NVME固态硬盘
- Warning: Stopping rpcbind.service, but it can still be activated by:rpcbind.socket
- 面试题 | ISP 图像处理算法工程师
- 神经网络前向传播和反向传播算法(作业4)
- 计算机设备选型的基本原则,设备选型的概念和选型依据
- Unity游戏结构与引擎视图
- wordpress友联_WordPress制作独立的友情链接(Links)页面
- uniapp 手机端时禁止输入框弹出键盘,使用自定义键盘
- 基于RSA算法实现软件注册码原理初讨
- CMake Error at D:/opencv/opencv-3.4.6/sources/cmake/OpenCVModule.cmake:36,,,OpenCV has already loade
- 小米手机android评价,小米10优缺点简评
- word复制到另一个文档,endnotes出现乱码处理
- 4.3每日一题|混合牛奶(c++)
- mybatis入门基础----高级映射(一对一,一对多,多对多)
热门文章
- 微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用
- owncloud虚拟机扩容及apt修复
- C51语言编程闹钟代码,C51定时闹钟程序
- 无法加入域--隶属于域、工作组选项为灰色
- 元气骑士 自建服务器,元气骑士远程联机步骤教程一览
- phpmail通过qq发邮箱失败_PHPMailer使用QQ邮箱实现邮件发送功能
- 数据库上机实验八(视图)
- html语言span标签,html中span标签的作用是什么?
- linux 终端tty的含义,终端、控制台、tty、shell等区别与概念初辨析
- vmware服务器虚拟化 pdf,VMware数据中心服务器虚拟化解决方案模板_V0.pdf