24/8/15算法笔记 dp策略迭代 价值迭代
-
策略迭代:
- 策略迭代从某个策略开始,计算该策略下的状态价值函数。
- 它交替进行两个步骤:策略评估(Policy Evaluation)和策略改进(Policy Improvement)。
- 在策略评估阶段,计算给定策略下每个状态的期望回报。
- 在策略改进阶段,尝试找到一个更好的策略,该策略对于每个状态选择最优动作。
- 这个过程一直进行,直到策略收敛,即不再有改进的空间。
-
价值迭代:
- 价值迭代直接迭代状态价值函数,而不是策略。
- 它从任意状态价值函数开始,然后迭代更新每个状态的价值,直到收敛。
- 在每次迭代中,对所有状态使用贝尔曼最优性方程(Bellman Optimality Equation)来更新其价值。
- 价值迭代通常比策略迭代更快收敛到最优价值函数。
-
收敛性:
- 策略迭代保证在有限次迭代后收敛到最优策略和最优价值函数。
- 价值迭代也保证收敛,但收敛速度可能因问题而异。
-
计算复杂度:
- 策略迭代可能需要多次策略评估,每次评估都涉及对所有状态的操作,因此在某些情况下可能比较慢。
- 价值迭代每次迭代只更新一次所有状态的价值,但可能需要更多次迭代才能收敛。
-
适用性:
- 策略迭代在策略空间较大或状态转移概率较复杂时可能更有效。
- 价值迭代适用于状态空间较大且容易计算贝尔曼最优性方程的情况。
-
实现方式:
- 策略迭代通常使用循环,外部循环负责策略评估,内部循环负责策略改进。
- 价值迭代使用单一循环,每次迭代更新所有状态的价值。
策略迭代:
#获取一个格子的状态
def get_state(row,col):if row !=3:return'ground'if row ==3 and col ==0:return 'ground'if row==3 and col==11:return 'terminal'return 'trap'
get_state(0,0)
地图上有平地,陷阱,终点
#在一个格子里做动作
def move(row,col,action):#如果当前已经在陷阱或者终点,则不能执行任何动作,反馈都是0if get_state(row,col)in['trap','terminal']:return row,col,0#向上if action==0:row-=1#向下if action ==1:row+=1#向左if action==2:col-=1#向右if action==3:col+=1#不允许走到地图外面去row = max(0,row)row = min(3,row)col =max(0,col)col =min(11,col)#是陷阱的话,奖励是-100,否则都是-1#这样强迫了机器尽快结束游戏,因为每走一步都要扣一分#结束最好是以走到终点的形式,避免被扣100分reward = -1if get_state(row,col)=='trap':reward -=100return row,col,reward
import numpy as np#初始化每个格子的价值
values = np.zeros([4,12])#初始化每个格子下采用动作的概率
pi = np.ones([4,12,4])*0.25values,pi[0]

#Q函数,求state,action的分数
#计算在一个状态下执行动作的分数
def get_qsa(row,col,action):#当前状态下执行动作,得到下一个状态和rewardnext_row,next_col,reward = move(row,col,action)#计算下一个状态分数,取values当中记录的分数即可,0.9是折扣因子value = values[next_row,next_col]*0.9#如果下个状态是终点或者陷阱,则下一个状态分数为0if get_state(next_row,next_col)in ['trap','terminal']:value = 0#动作的分数本身就是reward,加上下一个状态的分数return value + reward
get_qsa(0,0,0)
-1.0
#策略评估
def get_values():#初始化一个新的values,重新评估所有格子的分数new_values = np.zeros([4,12])#遍历所有格子for row in range(4):for col in range(12):#计算当前格子4个动作分别的分数action_value = np.zeros(4)#遍历所有动作for action in range(4):action_value[action] = get_qsa(row,col,action)#每个动作的分数和它的概率相乘action_value *=pi[row,col]#最后这个格子的分数,等于该格子下所有动作的分数求和new_values[row,col] = action_value.sum()return new_values
get_values()

#策略提升函数
def get_pi():#重新初始化每个格子下采用动作的概率,重新评估new_pi = np.zeros([4,12,4])#遍历所有格子for row in range(4):for col in range(12):#计算当前格子4个动作分别的分数action_value = np.zeros(4)#遍历所有动作for action in range(4):action_value[action] = get_qsa(row,col,action)#计算当前状态下,达到最大分数的动作有几个count = (action_value == action_value.max()).sum()#让这些动作均分概率for action in range(4):if action_value[action]==action_value.max():new_pi[row,col,action] = 1/countelse:new_pi[row,col,action]=0return new_pi
get_pi()

#循环迭代策略评估和策略提升,寻找最优解
for _ in range(10):for _ in range(100):values = get_values()pi = get_pi()
values,pi

#打印游戏,方便测试
def show(row,col,action):graph=['','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','2','2','2','2','2', '2','2','2','2','2','1']action = {0:'上',1:'下',2:'左',3:'右'}[action]graph[row*12+col] = actiongraph=' '.join(graph)for i in range(0,4*12,12):print(graph[i:i+12])show(1,1,0)
#测试函数
from IPython import display
import timedef test():#起点在0,0row = 0col = 0#最多玩N步for _ in range(200):#选择一个动作action = np.random.choice(np.arange(4),size = 1,p=pi[row,col])[0]#打印这个动作display.clear_output(wait = True)time.sleep(1)show(row,col,action)#执行动作row,col,reward = move(row,col,action)#获取当前状态,如果状态是终点或者掉到陷阱则终止if get_state(row,col) in ['trap','terminal']:break
test()
价值迭代算法:
def get_values():#初始化一个新的values,重新评估所有格子的分数new_values = np.zeros([4,12])#遍历所有格子for row in range(4):for col in range(12):#计算当前格子4个动作分别的分数action_value = np.zeros(4)#遍历所有动作for action in range(4):action_value[action] = get_qsa(row,col,action)"""和策略迭代算法唯一的不同点"""#求每一个格子的分数,等于该格子下所有动作的最大分数new_values[row,col] = action_value.max()return new_values
get_values()

相关文章:
24/8/15算法笔记 dp策略迭代 价值迭代
策略迭代: 策略迭代从某个策略开始,计算该策略下的状态价值函数。它交替进行两个步骤:策略评估(Policy Evaluation)和策略改进(Policy Improvement)。在策略评估阶段,计算给定策略下…...
【MMdetection改进】换遍MMDET主干网络之SwinTransformer-Tiny(基于MMdetection)
OpenMMLab 2.0 体系中 MMYOLO、MMDetection、MMClassification、MMSelfsup 中的模型注册表都继承自 MMEngine 中的根注册表,允许这些 OpenMMLab 开源库直接使用彼此已经实现的模块。 因此用户可以在MMYOLO 中使用来自 MMDetection、MMClassification、MMSelfsup 的主…...
FL Studio21.2.4最新中文版免费下载汉化包破解补丁
🎉 FL Studio 21中文版新功能全解析!让你的音乐制作更加高效! 嘿,各位音乐制作的小伙伴儿们,今天我要安利一款你们绝对会爱上的神器——FL Studio 21中文版!这款软件不仅功能强大,而且操作简便…...
私域场景中的数字化营销秘诀
在当今的商业世界,私域场景的营销变得愈发重要。今天咱们就来深入探讨一下私域场景中的几个关键营销手段。 一、会员管理与营销 企业一旦拥有完善的会员体系,数字化手段就能大放异彩。它可以助力企业对会员进行精细划分,深度了解会员的消费…...
一键换肤(Echarts 自定义主题)
一键换肤(Echarts 自定义主题) 一、使用官方主题配置工具 官方主题配置工具:https://echarts.apache.org/zh/theme-builder.html 如果以上主题不满足使用,可以自己自定义主题 例如:修改背景、标题等,可…...
Unity 6 预览版正式发布
Unity 6 预览版发布啦,正式版本将于今年晚些时候正式发布! 下载链接: https://unity.com/releases/editor/whats-new/6000.0.0 Unity 6 预览版是 Unity 6 开发周期的最后一个版本,在去年 11 月 Unite 大会上,我们宣…...
如何跳过极狐GitLab 密钥推送保护功能?
极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…...
Android高版本抓包总结
方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接:https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接:https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…...
《AI视频类工具之五—— 开拍》
一.简介 官网:开拍 - 用AI制作口播视频用AI制作口播视频https://www.kaipai.com/home?ref=ai-bot.cn 开拍是一款由美图公司在2023年推出,利用AI技术制作的短视频分享应用。这款工具通过AI赋能,为用户提供了从文案创作、视频拍摄到视频剪辑、包装的一站式解决方案,极大地…...
面试经典算法150题系列-最后一个单词的长度
最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World&qu…...
RTT学习
电源管理组件 嵌入式系统低功耗管理的目的在于满足用户对性能需求的前提下,尽可能降低系统功耗以延长设备待机时间。 高性能与有限的电池能量在嵌入式系统中矛盾最为突出,硬件低功耗设计与软件低功耗管理的联合应用成为了解决矛盾的有效手段。 现在的各…...
前端面试题(二十五)|附赠完整面试流程
📝📝今日分享:前端面试题系列继续更新啦! 🤔🤔面试题是什么呢?这份前端面试题主要是上海某银行的中级前端面试题,面试时长属实没想到,挺短的!但从整个面试流程…...
【分布式系统】关于主流的几款分布式链路追踪工具
Jaeger 标准化与兼容性: Jaeger 支持 OpenTracing 和 OpenTelemetry 标准,这意味着它可以与各种微服务架构和应用框架无缝集成,提供了广泛的兼容性和灵活性。 数据存储选项: Jaeger 支持多种数据存储后端,如 Cassandra…...
【吸引力法则】探究人生欲:追求深度体验与宇宙链接
文章目录 什么是人生欲?唤醒人生欲:克服配得感的三大障碍1 第一大障碍:法执的压制2 第二大障碍:家庭的继承2.1 家庭创伤的代际传递2.2 家庭文化基因的传递2.2.1 “成年人最大的美德是让自己的生活过得更加精彩。”2.2.2 荷欧波诺波…...
REST framework-通用视图[Generic views]
Django’s generic views… were developed as a shortcut for common usage patterns… They take certain common idioms and patterns found in view development and abstract them so that you can quickly write common views of data without having to repeat yourself…...
行驶证OCR识别接口如何用Java调用
一、什么是行驶证OCR识别接口? 传入行驶证照片,行驶证图片上的文字信息,返回包括所有人、品牌型号、住址、车牌号、发动机号码、车辆识别代号、注册日期、发证日期等信息。 行驶证 OCR 接口的主要作用是代替手动输入,提高信息录…...
8月15日笔记
masscan安装使用 首先需要有c编译器环境。查看是否有c编译器环境: gcc -v如果系统中已经安装了 GCC,这个命令将输出 GCC 的版本信息。如果未安装,你会看到类似于 “command not found” 的错误消息。 如果没有下载,使用如下命令…...
CSS3 圆角
CSS3 圆角 引言 在网页设计中,圆角矩形是一种常见的设计元素,它们为页面带来了柔和的视觉体验。随着CSS3的推出,实现圆角矩形变得异常简单,无需依赖图片或复杂的JavaScript代码。本文将详细介绍CSS3中用于创建圆角矩形的border-…...
VUE项目中main.js中不能使用 @引入路径吗
VUE项目中main.js中不能使用 引入路径吗 vite.config已经配置了别名 但是在main.js中直接引入报错 修改成 相对路径后,保存消失 找到原因:vite.config 漏了引入 import { defineConfig } from ‘vite’ import vue from ‘vitejs/plugin-vue’ 导致…...
Spring日志
1.日志的作用 定位和发现问题(主要)系统监控数据采集日志审计...... 2.日志的使用 2.1 ⽇志格式的说明 2.2 打印日志 Spring集成了日志框架,直接使用即可 步骤: 1.定义日志对象 2.使⽤⽇志对象打印⽇志 RestController public class LoggerController {private static Logger…...
深入解析Spring AI与MilvusVectorStore的集成实践
1. Spring AI与MilvusVectorStore集成概述 当我们需要处理海量非结构化数据时,传统数据库往往力不从心。想象一下你有一个装满各种文档的仓库,每次查找相关内容都需要人工翻阅——这正是向量数据库要解决的问题。Spring AI与Milvus的集成就像给这个仓库配…...
VLP-16数据包解析实战:从原始字节到三维点云
1. VLP-16数据包解析入门指南 第一次拿到VLP-16激光雷达的原始UDP数据流时,我完全被那一串串十六进制数字搞懵了。这就像收到一封用密码写成的信,明明知道里面藏着宝贵的三维环境信息,却不知道如何破译。经过几个项目的实战积累,我…...
【AI黑话日日新】什么是大语言模型驱动的代码生成技术?
摘要 生成式人工智能的快速普及,重塑了传统软件开发的全链路流程。大语言模型(LLM)凭借海量语料预训练与深度语义理解能力,成为智能代码生成的核心底座。这项技术打通了自然语言与编程语言的语义壁垒,能够实现代码续写、需求转源码、自动化测试、系统重构等多元化能力,帮…...
CentOS 7 无线网卡“失踪”排查指南:从驱动到NetworkManager的全面诊断
1. 无线网卡消失的常见症状与初步检查 当你打开CentOS 7准备连接Wi-Fi时,突然发现系统提示"No Wi-Fi Adapter found",这种突如其来的网络"失踪"问题确实让人头疼。作为系统管理员,我遇到过太多次类似情况,有时…...
聊聊永磁同步电机里的那点“扰动“破事
两种负载扰动观测器设计思路,pmsm仿真 仿真基于离散模型,观测器设计基于m文件,方便移植到c验证 包含:(1)1.5延时补偿(2)扩张龙伯格扰动观测器(ESO)设计&#…...
Hunyuan-MT-7B真实效果:法院判决书专业术语(如‘举证责任倒置’)精准对应翻译
Hunyuan-MT-7B真实效果:法院判决书专业术语(如‘举证责任倒置’)精准对应翻译 1. 引言:当法律翻译遇上AI 想象一下这样的场景:一份涉及跨国纠纷的法院判决书需要翻译,里面充满了"举证责任倒置"…...
几何完备扩散模型GCDM:从理论突破到SBDD实战评测与部署指南
1. 几何完备扩散模型GCDM的核心突破 第一次看到GCDM论文时,我被它解决3D分子生成痛点的思路惊艳到了。传统方法就像用2D积木搭3D建筑——EDM等模型依赖的EGNN网络只能处理距离信息,而GCDM引入的GCPNET架构彻底改变了游戏规则。这个改进相当于给模型装上了…...
3个关键步骤解决INAV VTOL模式切换抖动问题
3个关键步骤解决INAV VTOL模式切换抖动问题 【免费下载链接】inav INAV: Navigation-enabled flight control software 项目地址: https://gitcode.com/gh_mirrors/in/inav 垂直起降(VTOL)无人机融合了固定翼的续航优势与多旋翼的起降灵活性&…...
新中大SE系统反月结避坑指南:从月结修复到重新记账的完整操作解析
新中大SE系统月结异常处理实战手册:从错误回溯到数据修正的全流程精解 财务系统的月结操作如同会计周期的"收官之战",一旦发现历史凭证存在错误,往往让使用者陷入两难境地——既要确保数据准确性,又担心操作不当引发连锁…...
告别窗口混乱:Loop如何让macOS窗口管理效率提升300%
告别窗口混乱:Loop如何让macOS窗口管理效率提升300% 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 痛点场景:被窗口吞噬的工作效率 产品经理陈默的桌面上永远摊着至少7个窗口:左侧是S…...
