用DQN实现Atari game(Matlab代码实现)

news2024/11/22 23:26:30

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

强化学习研究的是Agent和环境交互中如何学习最优策略,以获得最大收益。Agent需要能够观察环境(observe)所处的状态,评判(value)状态下每个动作的价值,并选出最优的动作(act)来和环境交互。因此,observe,value和act是强化学习Agent必不可少的元素。

对于复杂的问题,state维度非常大,我们很难基于tabular method来判断每一个(state, action)的价值。这种情况下,我们利用function approximation方法,构建一个深度神经网络(Deep-Q Network, DQN),来估计(state, action)的价值。value()中Deep-Q Network模块就是一个神经网络,输入是atari game中的一帧图像,输出是每个action的价值。

强化学习,指的就是Agent与环境交互,不断强化,不断学习,最终找到解决问题的最优策略,那么学习(learn)就是强化学习必不可少的元素。在深度强化学习中,主要关注的就是DQN权重的学习,与深度神经网络的学习很相近,都是算一个loss,然后通过back-prop更新权重。

📚2 运行结果

主函数部分代码:

% RunDQN.m

clear; clc; close all;

tic;

% First specify if you use Octave (true) or Matlab (false)

Octave = false;

% Set State for Random Generator

if Octave

 rand('state', 895647); % 895647

else

 rng(895647);

end

global fieldHeight

global fieldWidth

global Memory

% Fix size of the Pong Field

fieldHeight = 64;

fieldWidth = 32;

% ---------------------- Step 1: Initializazion ------------------------ %

% ---------------------- 1. Setup Learning Parameters ------------------ %

if Octave

 StartLearning = 1600 ;   % # of Random Episodes before Learning starts

 NEpisodes   = 20000;   % Octave is much slower but this works as well (at least on Windows?)

 LearningRate  = 6e-1 ;

 MaxMemory   = 1e4  ;   % Size of the Memory (Again smaller for Octave)

 UpdateTarget  = 4001 ;   % Periode with which Target is updated

else

 StartLearning = 5000 ;   % # of Random Episodes before Learning starts

 NEpisodes   = 46000; 

 LearningRate  = 4e-1 ;

 MaxMemory   = 1e5 ;   % Size of the Memory

 UpdateTarget  = 10001;   % Periode with which Target is updated

end

🎉3 参考文献

​[1]董永峰,杨琛,董瑶等.基于改进的DQN机器人路径规划[J].计算机工程与设计,2021,42(02):552-558.DOI:10.16208/j.issn1000-7024.2021.02.037.

👨‍💻4 Matlab代码

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

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

相关文章

组播IP 映射 组播MAC

组播IP地址与组播MAC地址之间的换算方法与例子 1、在IP分类中,D类IP地址用于组播MAC。 2、在TCP/IP中,最常用的v4组播MAC地址的前24位固定为01005e,第25位固定为0,后23位由IP地址的后23位复制得出。 3、在D类组播IP中有5位未用&a…

Spark-行动算子

1、reduce(聚合) 2、collect(采集) 3、count (统计) 4、first 5、take 6、takeOrdered 7、aggregate 8、fold 9、countByKey 10、countByValue 11、save 算子 12、foreach 算子总结 所谓行…

java编程----继承

文章目录内存管理继承super向上造型内存管理 编写的xxx.java源码,编译为xxx.class字节码,由JVM(java解释器)来执行,JVM来对接不同的操作系统,实现一次编写,到处执行;JVM向操作系统申…

王朝游戏源码服务端与客户端搭建(基于nodejs与cocoscreator)

成功效果:搭建步骤:安装centos7 64 2009版本操作系统下载并解压mongodb,redis,nodejs3.复制游戏服务与网站服务程序到服务器4.编译nodejsnodejs编译并安装成功后验证5.配置并启动mongodb数据库mongodb.conf配置文件内容:dbpath/home/dev/mongodb/db logpath/home/dev/mongodb/l…

八、发布确认高级

在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复 如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,Rabb…

20230311给Ubuntu18.04下的GTX1080M安装驱动

20230311给Ubuntu18.04下的GTX1080M安装驱动 2023/3/11 12:50 2. 安装GTX1080驱动 安装 Nvidia 驱动 367.27 sudo add-apt-repository ppa:graphics-drivers/ppa 第一次运行出现如下的警告: Fresh drivers from upstream, currently shipping Nvidia. ## Curren…

C++语法规则4(C++面向对象)

接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现。C 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚…

在Win 11下使用Visual Studio 2019和cygwin编译JBR(Java SDK 17)源码

很多文章介绍了JDK 8和JDK11源码在Linux编译,很少有人介绍了JDK 17在windows的编译过程,所以写了这篇文章,为什么选用JBR 17版本,因为JBR17 版本集成了HotSwapAgent功能,具体HotSwapAgent有什么用,请看我前…

[N1CTF 2018]eating_cms1

一个cms,先打开环境试了一下弱口令,无效,再试一下万能密码,告诉我有waf,先不想怎么绕过,直接开扫(信息收集)访问register.php注册一个账号进行登录上面的链接尝试用php读文件http://…

学习笔记:基于SpringBoot的牛客网社区项目实现(三)之MyBatis入门

一、数据库建表 二、entity目录下创建user实体类 三、dao目录下创建userMapper映射接口 Mapper public interface UserMapper {User selectById(int id);User selectByName(String username);User selectByEmail(String email);int insertUser(User user);int updateStatus(i…

tun驱动之read

从tun驱动读取的数据,最终来源于用户空间通过write写入的数据,如下所示: inti fd socket(); int f open("/dev/net/tun", O_RDWR) write(fd, buf, len); --> 协议栈 --> t…

3-MATLAB APP Design-切换按钮组和单选按钮组

一、APP 界面设计展示 1.新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、切换按钮、单选按钮,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:切换按钮和单选按钮的使用,调整背景颜色,字体的颜色为黑色,字体的大小调为26. 2.在左侧组件…

Linux各种发行版介绍

Linux已经被广泛应用在人们的日常生活工作用品中,比如手机,智能家居,汽车电子,可穿戴设备等等,只不过很多人并不知道自己使用的电子设备里面运行的是linux系统。看一组数据:1.90%的公有云应用在使用Linux系…

利用Dockerfile开发定制镜像实战.

Dockerfile的原理 dockerfile是一种文本格式的文件,用于描述如何构建Docker镜像。在Dockerfile中,我们可以定义基础镜像、安装依赖、添加文件等操作,最终生成一个可以直接运行的容器镜像。 Dockerfile的原理可以分为以下几个步骤&#xff1a…

如何快速为子公司创建SAP财务账套的操作步骤

相对来说在SAP上配置一家子公司比从0开始创建创建一家公司可以节省很多步骤,因为子公司的很多配置(如科目表,科目,折旧表,折旧代码等)可以沿用母公司的。本文就简单介绍一下创建子公司财务账套的配置步骤.只…

中国省市选择插件

快速使用 1.引用 ChineseCities.min.js 2.拷贝以下布局结构 <select id"province"><option value"请选择城市">请选择省份</option> </select> <select id"city"><option value"请选择城市">请…

无监督对比学习(CL)最新必读经典论文整理分享

对比自监督学习技术是一种很有前途的方法&#xff0c;它通过学习对使两种事物相似或不同的东西进行编码来构建表示。Contrastive learning有很多文章介绍&#xff0c;区别于生成式的自监督方法&#xff0c;如AutoEncoder通过重建输入信号获取中间表示&#xff0c;Contrastive M…

设备树下的LED灯

一、什么是设备树设备树&#xff0c;将这个词分开就是设备和树&#xff0c;描述设备树的文件叫DTS(Device Tree Source)&#xff0c;这个DTS文件采用树形结构描述板级设备&#xff0c;也就是开发板上的设备信息&#xff0c;比如CPU数量、内存基地址、IIC接口上接了哪些设备、SP…

进度计划:什么是关键路径管理 1/2

目录 引言 什么是关键路径法&#xff1f; 为什么 CPM 调度对项目管理很重要&#xff1f; CPM 计划元素 关键路径方如何工作&#xff1f; 引言 关键路径&#xff0c;也称为最长路径&#xff0c;是直接影响项目完成日期的一系列任务。关键路径上的每项任务都称为关键活动。…

蓝桥杯C/C++VIP试题每日一练之芯片测试

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…