【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
需要源码请点赞关注收藏后评论区留言私信~~~
直接优化策略
直接优化策略强化学习算法中,根据采用的是确定性策略还是随机性策略,又分为确定性策略搜索和随机性策略搜索两类。随机性策略搜索算法有策略梯度法和TRPO等,确定性策略搜索算法有DDPG等。
策略可以看作是从状态空间S到动作空间A的映射:S→A
直接优化策略的方法可采用与值函数逼近相似的思路,即先确定逼近策略的结构,再优化结构的参数。
下面分别用神经元和神经网络作为逼近策略的结构,来控制倒立摆实验中小车的运动,分别通过爬山法和梯度下降法来优化他们的系数
启发式算法直接优化策略控制倒立摆
用随机的连接系数和阈值的神经元来参数化策略
结果如下
爬山法优化神经元的连接系数和阈值
爬山法的思路是在当前位置试探周边,并一直向最好的方向前进,但是容易陷入局部最优点
用神经网络来参数化策略
该神经网络只有一个隐层,该隐层的神经元个数为10,采用ReLU激活函数,输出层采用Sigmoid激活函数
训练结果如下
虽然效果较好,实际上这种从大量尝试得到的轨迹中筛选出少量优质样本的做法,在现实应用中并不容易实现
部分代码如下
delta = 0.01 # 爬山法中试探的步长
top_rewards = 0
top_paras = None
for _ in range(100): # 多次爬山,选取最好的结果score = 0paras = np.random.rand(5) # 随机产生神经元的连接系数和阈值most_rewards = rewards_by_paras(env, paras)for i in range(200):best_paras = parascur_rewards = most_rewardsrewards = rewards_by_paras(env, paras + [ delta, 0, 0, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ delta, 0, 0, 0, 0 ]rewards = rewards_by_paras(env, paras + [ -delta, 0, 0, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ -delta, 0, 0, 0, 0 ]rewards = rewards_by_paras(env, paras + [ 0, delta, 0, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, delta, 0, 0, 0 ]rewards = rewards_by_paras(env, paras + [ 0, -delta, 0, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, -delta, 0, 0, 0 ]rewards = rewards_by_paras(env, paras + [ 0, 0, delta, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, delta, 0, 0 ]rewards = rewards_by_paras(env, paras + [ 0, 0, -delta, 0, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, -delta, 0, 0 ]rewards = rewards_by_paras(env, paras + [ 0, 0, 0, delta, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, 0, delta, 0 ]rewards = rewards_by_paras(env, paras + [ 0, 0, 0, -delta, 0 ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, 0, -delta, 0 ]rewards = rewards_by_paras(env, paras + [ 0, 0, 0, 0, delta ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, 0, 0, delta ]rewards = rewards_by_paras(env, paras + [ 0, 0, 0, 0, -delta ])if rewards > most_rewards:most_rewards = rewardsbest_paras = paras + [ 0, 0, 0, 0, -delta ]if (cur_rewards == most_rewards) or (most_rewards >= 200): # 到了山顶,或者已经达到要求breakelse:paras = best_paras#print(most_rewards, paras)if most_rewards > top_rewards:top_rewards = most_rewardstop_paras = parasprint(top_rewards, top_paras)
创作不易 觉得有帮助请点赞关注收藏~~~
【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)相关推荐
- 基于深度强化学习的组合优化方法在工业应用中的实践
<统筹方法平话>中有一个例子曾被收录到语文课本中,讲"烧水泡茶"有五道工序:1.烧开水,2.洗茶壶,3.洗茶杯,4.拿茶叶,5.泡茶,其中前四道工序是泡茶的前提,且各道 ...
- 【ML4CO论文精读】基于深度强化学习的组合优化问题研究进展(李凯文, 2020)
基于深度强化学习的组合优化研究进展 本人研究方向(博士期间):多目标组合优化与决策研究--致力于多约束多目标多任务组合优化算法和多目标决策系统的研究与开发,以及多目标优化技术在一些工程实践中的应用. ...
- 深度学习机器臂控制_基于深度强化学习的机器人手臂控制
基于深度强化学习的机器人手臂控制 杨淑珍 ; 韩建宇 ; 梁盼 ; 古彭 ; 杨发展 ; 吕萍丽 [期刊名称] <福建电脑> [年 ( 卷 ), 期] 2019(035)001 [摘要] ...
- 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 最近,DeepMind 开发出了世界上第一个深度强化学习 AI ,可以在模拟环境和真正的核聚变装置中实现对等离子体的自主控制. ...
- 【论文解读】解读TRPO论文,深度强化学习结合传统优化方法
导读:本论文由Berkeley 的几位大神于2015年发表于 JMLR(Journal of Machine Learning Research).深度强化学习算法例如DQN或者PG(Policy G ...
- 最新 | 用深度强化学习打造不亏钱的交易机器人(附代码)
今天,你AI了没? 关注:决策智能与机器学习,每天学点AI干货 --本文由<量化投资与机器学习>授权转载 在本文中,我们将创建深度强化学习agents,学习如何通过比特币交易赚钱.在本文中 ...
- 强化学习初探 DQN+PyTorch+gym倒立摆登山车
文章目录 1.随便说几句 2.为什么选择DQN作为第一个入手的模型 2.工具准备 3.实现思路 3.1.环境采样 3.2 Reward设计 3.3 Q值近似计算 3.4 主循环 4.代码 5.参考文献 ...
- 【强化学习】PPO算法求解倒立摆问题 + Pytorch代码实战
文章目录 一.倒立摆问题介绍 二.PPO算法简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 Ag ...
- 被囊群优化算法(TSA)详解,附源码,直接可以
被囊群优化算法(Tunicate Swarm Algorithm,TSA)是Satnam Kaur等2020年提出的一种新的优化算法,它的灵感来自以在深海中成功生存被膜的成群行为,该算法模拟了被囊动物 ...
最新文章
- c语言未结束的引用标识符,2015年9月计算机二级《C语言》高分突破模拟卷(4)
- 将功能绑定到Twitter Bootstrap Modal关闭
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- MyBatis中的@Mapper注解及配套注解使用详解
- python画一颗心_利用python画一颗心的方法示例
- SpringCloud学习成长之路 五 路由器网关
- 倒计时 时间校准android,android倒计时器时间
- python-while循环-完成一个简单三角形
- Java Design Pattern(Factory,Singleton,Prototype,Proxy)
- ID3DXMesh接口 创建自己的立方体网格
- 用CAJViewer识别图片文字
- java FTP获取文件夹中所有文件
- 初探开源分布式WPA破解程序moscrack
- 解决Nokia PC SUITE无法识别DELL E6400 WIDCOMM bluetooth的问题
- Robot Framework Selenium UI自动化测试 --- 进阶篇
- c++primer学习笔记
- 性能测试测试方案总结
- 百度地图、高德地图等商用5w/年怎么搞
- 各位,我来自数位红公司,我们是做手机游戏的。
- ORACLE 角色授权
热门文章
- Python + OpenCV + DeepLearning 解数独问题【一、数独的提取】
- vue3+heightchart实现3D饼图,echarts3D饼图,3D饼图引导线实现
- 视频编码:H.264编码
- Verilog always和assign知识点
- python查找第k大的数_寻找数组中第K大的数
- Macbook ssh免密登录
- vue 拖拽【单个div实现拖拽】
- IOException parsing XML document from class path resource [applicationContent.xml]; nested exception
- Java中 关键字abstract(抽像)的定义
- 职业与生活规划是否必要?回答因人而异。但规划至少会给人带来以下好处。