动态规划算法实验报告_强化学习之动态规划算法

f73c14f29aa61f661e307df60b3efbc5.png

如今的强化学习研究大体分为了两个研究学派:一个是以Sutton,Sliver等人为代表的value-based学派,他们主要从值函数近似角度入手去研究强化学习,这也是强化学习早期最初发展起来时沿用的路线;第二个是以伯克利Sergey Levine为代表的policy-based学派,主要从策略近似角度出发研究强化学习。

今天我介绍的动态规划算法思想在value-based乃至整个强化学习领域都起到了至关重要的作用,有非常多的算法都从其中衍生而来。话不多说,请坐稳扶好,老司机要发车了,嘟嘟~

动态规划是一种优化算法,起源于最优控制领域,可以用来解决多阶段序列决策问题,或者离散时间动态自适应控制问题。一个问题可以用动态规划求解,需要满足一下几条基本性质:

  • 子问题最优性/最优子结构

原问题可以被分解为子问题,原问题的最优性可以通过子问题的最优性推导出

  • 子问题重叠性/重叠子问题

一个问题满足子问题重叠性,意味着当我们去求解一个较大问题的最优解时,会多次调用子问题的最优解,即子问题的解会被多次递归调用。实际编程中我们会把子问题的解存储起来,后续会多次访问。例如OI中的记忆化搜索等等。

—————————————————————————————————————

马尔可夫决策过程满足上述两条基本性质:

  • 贝尔曼期望方程给出了递归分解式,将原问题的求解分解为子问题的求解
  • 价值函数可以被存储和多次调用

MDPs产生的序列是有先后顺序的,对于这种序列决策问题,前驱状态可以看做子问题,后继状态可以看做原问题,通过backup即可利用

可达状态的价值函数推导出
的价值函数。

动态规划方法用于解决model-based reinforcement learning问题,假设可知环境的所有动态信息,例如状态之间的转移规律等等。这个要求实际是非常苛刻的,因此后续会有很多的变体,不要求已知一个环境的模型。

接下来先介绍一下prediction和control的区别:

prediction:

prediction过程主要在做policy evaluation,即输入

和policy
,输出是follow policy
得到的状态价值函数

control

control主要在solve一个optimal policy and optimal value function。输入是MDP

,输出:
  • optimal policy
  • optimal value function

接下来我们介绍利用动态规划解决Policy Evaluation的方法:

目标:评估一个Policy的好坏;

解决方法:不断迭代贝尔曼期望方程;

——————————————————————————————稍后继续更新

策略改进:

策略评估:

'''
动态规划之策略迭代实现
算法:Policy Iteration
策略评估 + 策略改进:Bellman Expectation Equation + Greedy Policy Improvement
'''
import gym
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inlineenv = gym.make('CliffWalking-v0') # 导入gym环境-悬崖寻路def play_once(env,q_table):total_reward = 0state = env.reset()action = np.argmax(q_table[state,:]) # greedy policy improvement 公式(1)while True:next_state, reward, done, _ = env.step(action)next_action = np.argmax(q_table[next_state,:])# 贝尔曼期望方程策略改进,公式(2)q_table[state,action] = reward + 0.9*q_table[next_state,next_action] total_reward += rewardif done:breakstate = next_stateaction = next_actionreturn total_rewardq_table = np.zeros((env.nS,env.nA))
ans = []
for i in range(30):total_reward = play_once(env,q_table)print("总奖励 = {}".format(total_reward))ans.append(total_reward)    
plt.figure()
plt.plot(ans,'b-')
plt.show()

——————————————稍后继续更——————————————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的字节对齐以及其相关处理

首先,我们来了解下一些基本原理: 一、什么是字节对齐一个基本类型的变量在内存中占用n个字节,则该变量的起始地址必须能够被n整除,即: 存放起始地址 % n 0,那么,就成该变量是字节对齐的;对于结构体、联合体而言,这个n取其所有基本类型的成员中占用空间字…

python3.7.1使用_在不影响使用python3.7.1的功能的情况下,是否可以从python代码中删除所有的ufuture_uu语句?...

您可以在不影响功能的情况下删除那些__future__导入,但是删除它们不是必需的,并且会停止与早期python版本的兼容性。在此外,正如deceze在评论中所暗示的那样,其他进口商品可能有所不同。例如,from __future__ import a…

hadoop 多机全分布式安装步骤(虚拟机1master+2slave)

文章目录1. 虚拟机安装Centos72. 配置静态IP3. 更改主机名4. 编辑域名映射5. 安装配置Java6. 配置SSH免密登录7 .安装Hadoop8. 关闭防火墙9. 格式化文件系统10. 启动验证11. 第一个MapReduce程序: WordCount12. 关闭Hadoop参考书:《Hadoop大数据原理与应用》1. 虚拟…

ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载

3D建模射击,真实的飞行世界,在航空飞机模拟器游戏中玩家将化身为飞行员,这里的飞机类型非常齐全,每一辆都要熟练操作,最大程度还原了飞行员最真实的驾驶场景,完成任务获得奖励还能提高它的性能哦&#xff0…

npm安装vue_vue搭建脚手架的方式

基于window系统整理的vue脚手架npm、yarn安装方法,记得网络一定要好先说npm的安装方法先在需要创建项目的文件夹下打开终端,如果没有node可以先去官网下载,然后一路next,就OK,记得看清楚电脑操作系统是64还是32&#x…

Java中用JS那些_java web中javascript主要用哪些?

java web中javascript主要用途是在页面上完成特定按钮的事件功能并且实现前后台交互。JavaScript 是一种跨平台,面向对象的脚本语言。作为一种小巧且轻量级的语言,JavaScript 无意于独立运行,而是被设计为可以轻易嵌入到其它的产品和应用中&a…

《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话...

数据分析基础概念:标准计分: 1、无论作为变量的满分为几分,其标准计分的平均数势必为0,而其标准差势必为1。2、无论作为变量的单位是什么,其标准计分的平均数势必为0,而其标准差势必为1。公式为&#xff1a…

天池 在线编程 最佳利用率(二分查找 + 哈希)

文章目录1. 题目2. 解题1. 题目 给两个排序的数组。 从两个数组中各取取一个数,这两个数之和需要小于或等于k, 需要找到两数之和最大的索引组合。 返回一对包含两个列表的索引。 如果有多个两数之和相等的索引答案,你应该选择第一个数组索引…

python re 匹配多行_Python正则表达式,看这一篇就够了

作者 | 猪哥来源 | 裸睡的猪(ID: IT--Pig)大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中关于 正则表达式的函数。re模块主要定义了9个常量、12个函数、1个…

nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优

随着互联网技术的高速发展,云计算已经成为各行各业的“水电煤”,成为“互联网”的基础设施,而数据中心则是云服务背后的刚性保障。无论是传统的数据中心,还是云形态的数据中心,虚拟化技术都是提升其资源利用率、降低管…

php预处理_如何用预处理让 PHP 更先进

原标题:如何用预处理让 PHP 更先进先来点趣事。不久以前, 来添加 Python 的 range 语法。然后, 大虾 ,并且 建议为 PHP 添加 C# 风格的 getter 和 setter。我意识到对于一个局外人来说,建议和实现新的语言特性是件缓慢…

天池 在线编程 两句话中的不常见单词(哈希计数)

文章目录1. 题目2. 解题1. 题目 给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。 返回所有…

iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到各种有关娱乐的文章了。每天都有分享,完全是免费订阅,请放心关注。 …

C语言库函数大全及应用实例六

C语言库函数大全及应用实例六 原文:C语言库函数大全及应用实例六[编程资料]C语言库函数大全及应用实例六函数名: getlinesettings 功 能: 取当前线型、模式和宽度 用 法: void far getlinesettings(struct linesettingstype far *lininfo): 程序例: <?xml:namespace prefix…

python开发自己的工具包_爬虫开发python工具包介绍 (4)

本文来自网易云社区作者&#xff1a;王涛此处我们给出几个常用的代码例子&#xff0c;包括get,post(json,表单),带证书访问&#xff1a;Get 请求gen.coroutinedef fetch_url():try:c CurlAsyncHTTPClient() # 定义一个httpclientmyheaders {"Host": "weixin.…

天池 在线编程 最小的行程(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个二维矩阵&#xff0c;找到从上到下的最小路径。只能向左下&#xff0c;下&#xff0c;右下移动 所有的元素都是正整数 矩阵大小 < 200x200 样例 1: 输入: 1 2 3 4 5 6 7 8 9 输出: 12 解释: 最短的路径为:1->4->7, 返回12.样…

messagebox

private void button1_Click(object sender, EventArgs e){/*//弹出消息对话框&#xff0c;包含确定按钮MessageBox.Show("消息","标题");//弹出消息对话框&#xff0c;包含确定按钮MessageBox.Show("消息", "标题",MessageBoxButtons…

centos 升级php5.5_CentOS 5.x 系统yum 升级php到5.2.x的方法(测试可用)

在用的centos 5.4系统中&#xff0c;目前提供php版本为5.1.6&#xff0c;通过以下方法升级PHP到5.2比较方便。先将以下地址导入&#xff1a;复制代码 代码示例:# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka# vi /etc/yum.repos.d/CentOS-Base.repo 增加…

fluent瞬态计算终止条件在哪里设置_Fluent案例7【圆柱绕流】

一个瞬态的圆柱绕流案例知识点&#xff1a;瞬态圆柱绕流的模拟一个后处理的方法&#xff1a;将瞬态模型中一个点的速度变化绘成图表并将数值导出excel文件模型如下图所示&#xff0c;左边界为速度边界进口速度0.5m/s&#xff0c;试模拟出计算域中的速度变化打开workbench&#…

qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...

对于很多刚进入测试行业的新手来说&#xff0c;由于自身的工作经验不足&#xff0c;虽有测试基础知识傍身&#xff0c;但仍然很难将测试用例写的尽善尽美。因此&#xff0c;学习别人的测试经验&#xff0c;将是你成为测试达人的必经之路。今天&#xff0c;我们就以QQ邮箱为例&a…