基于matlab的强化学习QLearning路径规划性能仿真

news2025/1/17 6:17:27

目录

1.算法概述

2.仿真效果预览

3.核心MATLAB代码预览

4.完整MATLAB程序


1.算法概述

       假设我们的行为准则已经学习好了, 现在我们处于状态s1, 我在写作业, 我有两个行为 a1, a2, 分别是看电视和写作业, 根据我的经验, 在这种 s1 状态下, a2 写作业 带来的潜在奖励要比 a1 看电视高, 这里的潜在奖励我们可以用一个有关于 s 和 a 的 Q 表格代替, 在我的记忆Q表格中, Q(s1, a1)=-2 要小于 Q(s1, a2)=1, 所以我们判断要选择 a2 作为下一个行为. 现在我们的状态更新成 s2 , 我们还是有两个同样的选择, 重复上面的过程, 在行为准则Q 表中寻找 Q(s2, a1) Q(s2, a2) 的值, 并比较他们的大小, 选取较大的一个. 接着根据 a2 我们到达 s3 并在此重复上面的决策过程. Q learning 的方法也就是这样决策的. 看完决策, 我看在来研究一下这张行为准则 Q 表是通过什么样的方式更改, 提升的.

       Q-Learning​它是强化学习中的一种 values-based 算法,​是以QTable表格形式体现​,在学习中遇到的任何操作存入QTable中,根据之前的学习选择当前最优操作,也可以根据设置的e_greedy机率随机选择。​

       ​Q-Learning的QTable标签更新公式:
  

Q-Learning的计算步骤:​

​1.判断在当前位置可以有几种操作;​

​2.根据当前位置允许的操作选择一个操作;​

​3.根据选择的操作进行奖赏;​

​4.修改当前行为的本次操作权重;

2.仿真效果预览

matlab2022a仿真测试如下:

 

3.核心MATLAB代码预览

NNPolicy=zeros(prod([driver_actions Xscale Yscale]),1); 
for i=1:pathtimes
    i
    Positions = stpt;   
    drivers   = 0;   %开车
    E         = zeros(prod([driver_actions Xscale Yscale]),1);
 
    for j=1:maxiter
        %计算训练驾驶策略
        if j>=2   
           Choice      = ndi2lin([1 Positions(1) Positions(2)],[driver_actions Xscale Yscale]);
           Choice2     = ndi2lin([drivers Prestate(1) Prestate(2)],[driver_actions Xscale Yscale]);
           delta       = feedback + cb*max(NNPolicy(Choice:Choice+driver_actions-1))-NNPolicy(Choice2);
            E(Choice2) = 1;
            NNPolicy   = NNPolicy + ca*delta*E;
            E          = cb*lambda*E*~exploring;
        end
        %选择动作
        Choice  = ndi2lin([1 Positions(1) Positions(2)],[driver_actions Xscale Yscale]); 
        Choice  = [Choice:Choice+driver_actions-1];                              
        tmps    = find(NNPolicy(Choice) == max(NNPolicy(Choice)));   
        %是否转向        
        drivers = tmps(ceil(rand * length(tmps)));   
        %探索策略
        if rand<LR
           drivers=floor(rand*driver_actions)+1;    
           exploring = 1;
        else 
           exploring = 0;
        end
        LR=LR/pathtimes;
        
        Prestate=Positions;
        [Positions,feedback] = nomancar(Positions,drivers,driver_direction,map_route,Xscale,Yscale);
        if edpt(1)==Positions(1) & edpt(2)==Positions(2)
           break
        end  
    end
 
    Itertion_times(k)=j;
    if k>32
       Error(k)=mean(Itertion_times(length(Itertion_times)-32+1:length(Itertion_times))); 
    else
       Error(k)=mean(Itertion_times(1:length(Itertion_times))); 
    end
    k=k+1;
end
A_005

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

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

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

相关文章

LeetCode | 一探环形链表的奥秘【快慢双指针妙解BAT等大厂经典算法题】

前言 本文总结了力扣141.环形链表|以及142.环形链表||这两道有关环形链表的求解方案&#xff0c;去求证链表是否带环已经如何找出入环口的结点。 有关环形链表&#xff0c;在BAT等大厂面试中均有出现&#xff0c;一般是属于中等难度的题&#xff0c;需掌握 环形链表| &&…

教你vue-router命令视图应该怎么玩

引言 在VUE实战项目开发中&#xff0c;为了减少代码冗余&#xff0c;便于后期维护&#xff0c;我们经常会把相同布局的代码封装为公共组件&#xff0c;例如移动开发中NavBar导航栏、Tabbar标签栏等公共组件&#xff0c;需要使用时导入、注册、调用即可&#xff0c;但是相对NavB…

JSRPC的三种实现方式

RPC 为远程过程调用&#xff0c;本文通过在浏览器端&#xff08;服务端&#xff09;开启一个WebSocket服务&#xff0c;接收命令&#xff0c;执行浏览器网页的加密代码&#xff0c;得到密文。 CMD端&#xff08;客户端&#xff09;也开启一个WebSocket服务与浏览器端交互&#…

【Spring Boot】Day03

文章目录一、Value和ConfigurationProperties的区别二、PropertySource一、Value和ConfigurationProperties的区别 区别&#xff1a; 数据校验&#xff1a;判断数据是否合法 Value: 不支持数据校验ConfigurationProperties&#xff1a;支持数据校验 开启数据校验功能&#xf…

软考证书可积分落户、评职称、抵扣个税等,快来考一个吧!

很多人想要在工作的城市落户、买房、生活、小孩上学&#xff0c;但由于对于城市落户政策不了解&#xff0c;担心自己条件不够!今天给大家介绍一本软考证书帮你解决落户等问题。 软考&#xff0c;是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试&#xff1b;既…

[附源码]java毕业设计价格公示系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C. Bouncing Ball(从后往前的前缀和)

Problem - 1415C - Codeforces 你正在为某个手机游戏创建一个游戏关卡。这个关卡应该包含一些从左到右排列的单元格&#xff0c;并以从1开始的连续整数编号&#xff0c;在每个单元格中&#xff0c;你可以放一个平台&#xff0c;也可以让它空着。 为了通过一个关卡&#xff0c;…

牛客网-《刷C语言百题》第四期

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;《C语言入门必刷百题》 &#x…

QStyleFactor和QPalette

Qt中的分格都继承自QStyle&#xff0c;QStyle类是一个抽象基类&#xff0c;封装了一个GUI的外观。 QStyle常见的子类有&#xff1a; QStyleFactory类QPalette类QStyleFactor类 函数为&#xff1a; create()创建并返回与给定键匹配的QStyle对象keys()返回有效键的列表 获取有…

面试灵活拷问:对于数据库的索引,你是怎么理解的?

文章目录一、索引的概念及作用概念作用二、索引的应用场景三、索引的相关语法1.查询索引2.创建索引3.删除索引注意四、索引背后的数据结构什么是B树B树有什么特点采用B树结构能为索引带来什么好处五、索引的分类1.唯一索引&#xff08;unique键对应的字段&#xff09;2.主键索引…

Selenium基础 — 拓展:使用浏览器加载项配置实现用户免登陆

1、什么是加载项配置 在很多情况下&#xff0c;我们在登录网站的时候&#xff0c;浏览器都会弹出一个是否保存登录账号的信息。如果我们选择保存&#xff0c;那么我们在下次登录时就不用再次输入账号&#xff0c;直接免登录了。 在我们实际的测试过程中&#xff0c;测试注册登…

系统运维利器,百万服务器运维实战总结!一文了解最新版SysAK|龙蜥技术

在刚刚结束的龙蜥峰会 eBPF & Linux 稳定性专场上&#xff0c;龙蜥系统运维 SIG Maintainer 张毅做了《SysAK 系统运维工具集》的主题演讲&#xff0c;以下为演讲实录。 大家好&#xff0c;在去年的云栖大会&#xff0c;我们在龙蜥社区开源了系统运维工具集 SysAK&#xff…

new Vue的时候到底做了什么

Vue加载流程 1.初始化的第一阶段是Vue实例也就是vm对象创建前后&#xff1a;首先Vue进行生命周期&#xff0c;事件初始化发生在beforeCreate生命周期函数前&#xff0c;然后进行数据监测和数据代理的初始化&#xff0c;也就是创建vm对象的过程&#xff0c;当vm对象创建完成就可…

【Linux】gcc的使用

文章目录一、前言二、gcc的基本使用1. 预处理2. 编译3. 汇编4. 链接三、函数库四、gcc常用选项总结一、前言 在学习本文前&#xff0c;我们先简单回顾一下源代码被转换为可执行的机器指令的每个过程&#xff1a; 预处理&#xff08;进行宏替换)编译&#xff08;生成汇编)汇编…

windows什么录屏软件好用,windows屏幕录制软件

大部分人的电脑都是windows电脑&#xff0c;所以很多人都在找适合windows系统的录屏工具&#xff0c;windows什么录屏软件好用&#xff1f;我们到底该选择哪个录屏工具呢&#xff1f;今天我们就来给大家介绍windows版本的录屏工具。 一、易我录屏助手 这个工具很多人都比较熟悉…

艾美捷人重组MEGACD40L蛋白(可溶性)实例展示

艾美捷人重组MEGACD40L蛋白&#xff08;可溶性&#xff09;是一种高活性蛋白质&#xff0c;其中两个三聚体CD40配体分子通过脂联素/ACRP30/AdipoQ的胶原结构域人工连接。这种蛋白质非常有效地模拟体内CD40L的自然膜辅助聚集。 艾美捷人重组MEGACD40L蛋白&#xff08;可溶性&…

openEuler快速入门(二)-openEuler命令行基础操作

系列文章目录 第一章 openEuler快速入门(一)-openEuler操作系统介绍 文章目录系列文章目录前言一、shell是什么二、Linux命令行操作技巧三、基础命令3.1、Linux命令分类3.2、目录和文件3.2.1 相对路径和绝对路径3.2.2 处理目录的常用命令ls&#xff1a;cd&#xff1a;pwd&…

供应N3-PEG-COOH,Azide-PEG-acid,叠氮-聚乙二醇-羧基可增加溶解度

一&#xff1a;产品描述 1、名称 英文&#xff1a;Azide-PEG-acid&#xff0c;N3-PEG-COOH 中文&#xff1a;叠氮-聚乙二醇-羧基 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Azide PEG Carboxylic acid PEG 4、分子量&#xff1a;可定制&#xff0c;1000、2000、…

搭建Redis -Sentinel架构

准备服务器 master节点&#xff1a;192.168.1.121 从节点1&#xff1a;192.168.1.122 从节点2&#xff1a;192.168.1.123 安装详细步骤 1、下载安装包 https://redis.io/download/ 2、进入工作目录 $cd /home 3、解压安装包 $tar -zxvf redis-6.2.6.tar.gz 4、建立软连接 $l…

OpenCV_06 图像平滑:图像噪声+图像平滑+滤波

文章目录1 图像噪声1.1 椒盐噪声1.2 高斯噪声1.3 瑞利噪声1.4 伽马噪声1.5 指数噪声1.6 均匀噪声2 滤波器2.1 均值滤波器2.1.1 算数平均值滤波器2.1.2 几何均值滤波器2.1.3 谐波平均滤波器2.1.4 反谐波平均滤波器2.2 统计排序滤波器2.2.1 中值滤波器2.2.2 最大值滤波器2.2.3 最…