飞机大战ai通过dqn实现

news2024/12/25 12:51:30

借鉴

飞机大战源码 github
王者荣耀ai训练(试了一下,发现电脑带不动,就改了一点,训练其他游戏)

源码

通过网盘分享的文件:PlaneWar (2).zip
[链接](https://pan.baidu.com/s/1N4OorR7b36Zml8MadGmI6g?pwd=1234) 提取码: 1234

dqn的介绍(ai回复)

深度Q网络(DQN):
DQN是一种结合了深度学习和Q学习的强化学习算法。它使用深度神经网络来估计状态-动作值函数(Q值)。
在代码中,self.policy_net和self.target_net分别是策略网络和目标网络,它们都是深度神经网络。
经验回放(Experience Replay):
经验回放是一种常用的技术,用于打破数据之间的相关性,提高训练的稳定性和泛化能力。
在代码中,transitions是从经验池中随机抽取的一批经验,这些经验被用来训练网络。
目标网络(Target Network):

目标网络用于稳定训练过程,通过定期将策略网络的参数复制到目标网络,减少训练过程中的不稳定性和噪声。
在代码中,self.target_net是目标网络,每隔self.target_update步,将self.policy_net的参数复制到self.target_net。
策略梯度(Policy Gradient):

策略梯度是一种强化学习算法,通过最大化期望回报来更新策略。
在代码中,通过计算当前状态-动作值和期望状态-动作值之间的差异(即损失),然后使用反向传播和优化器来更新策略网络。
梯度下降(Gradient Descent):

梯度下降是一种优化算法,用于最小化损失函数。
在代码中,使用PyTorch的优化器(如self.optimizer)来执行梯度下降,更新策略网络的参数。
Epsilon-Greedy 策略:

Epsilon-Greedy策略是一种探索与利用的平衡策略,通过以一定概率随机选择动作,以探索未知状态,同时以一定概率选择当前最优动作,以利用已知信息。
在代码中,self.epsilon控制了探索的概率,如果self.epsilon大于self.epsilon_min,则将其乘以self.epsilon_decay,以逐渐减少探索的概率。
损失函数(Loss Function):

损失函数用于衡量预测值和真实值之间的差异,常见的损失函数包括均方误差(MSE)和交叉熵损失(Cross-Entropy Loss)。
在代码中,使用均方误差损失函数(self.criterion)来计算当前状态-动作值和期望状态-动作值之间的差异。

实现过程

1.决定目标 飞机大战

画风好看 下载即用

2.缝缝补补

“小”问题

内存泄漏
在这里插入图片描述

存储大量信息的部分代码几乎没动,就缩小了动作空间。依然是截图并作为状态传给网络。结果爆了
1.用了多种办法检测,还是找不到原因。
2.第二天突然灵机一动,觉得很可能是太多全局变量了。大刀阔斧的改了一早上,无效…
3.怀疑到了新加的游戏上面,添加了对象池(出了各种bug!!!)
在这里插入图片描述

最后实在没办法了,只能将该着训练下去。因此,不能一直训练,会报错,没有内存放模型

效果

个人觉得有点玄学,一个模型上一局得了60分,下一局直接成不死战神了

可惜,由于不死,最后内存不足,报错,只能关机重启。没有保持到战神!真是成也不死,败也不死了。

吸取了这个惨痛教训,我特意设计成不仅每局自动保存最高分的模型,还会在训练一定步数后对比当前分数与最高分的,如果更高,则保存当前模型,再也不怕“不死战神”的惨剧上演了!可以根据电脑情况决定保存步数的大小。
在这里插入图片描述

训练挺快的,因为游戏难度不算太高。可是就出了一个厉害的战神,后面的最高才166分!
如果有什么建议,欢迎提出

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

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

相关文章

6.将扩散模型与其他生成模型的关联(2)

1.归一化流与扩散模型 自一化流(Normalizing Flow)是生成模型,通过将易于处理的分布进行变换以队对高维数据进行建模。归一化流可以将简单的概率分布转化为极其复杂的分布,并用于强化学习、变分推理等领域。 现有的归一化流是基于变量替换公式构…

GS-LRM: Large Reconstruction Modelfor 3D Gaussian Splatting 论文解读

目录 一、概述 二、相关工作 1、多视图的三维重建 2、前馈重建 三、LRM 1、编码器 2、解码器 3、NeRF渲染 四、GS-LRM 1、输入处理 2、Transformer 3、损失函数 五、实验 六、局限 一、概述 该论文提出了一种利用稀疏输入图像高效预测3D高斯原语的方法&#xff…

数据结构-5.6.二叉树的先,中,后序遍历

一.遍历: 二.二叉树的遍历:利用了递归操作 1.简介: 二叉树的先序遍历,中序遍历,后序遍历都是以根结点遍历顺序为准的,如先序遍历就先遍历根结点 2.实例: 例一: 例二: …

【LeetCode】动态规划—188. 买卖股票的最佳时机 IV(附完整Python/C++代码)

动态规划—188. 买卖股票的最佳时机 IV 题目描述前言基本思路1. 问题定义交易规则: 2. 理解问题和递推关系两种情况:状态定义:状态转移方程:初始条件: 3. 解决方法动态规划方法特殊情况:当 k 大于等于 pric…

【最新华为OD机试E卷-支持在线评测】构成正方形的数量(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

(全网独家)面试要懂运维真实案例:HDFS重新平衡(HDFS Balancer)没触发问题排查

在面试时,面试官为了考察面试者是否真的有经验,经常会问运维集群时遇到什么问题,解决具体流程。下面是自己遇到HDFS Balancer没执行,花了半天时间进行排查,全网独家的案例和解决方案。 目录 使用CDH自带重新平衡操作…

数据结构 ——— 顺序表oj题:最长公共前缀

目录 题目要求 代码实现 题目要求 编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 "" 代码实现 代码演示: void CommonPrefix(char** strs, int strsSize, char* returnStr) {char* first_r…

利用session机制造测试账号,无需前端也可以测试后端接口

适用场景:我们在测试的时候经常会遇到前端还没有开发完毕,后端已经结束开发了,但是后端的有些接口是需要特定的账号身份调用才会生效,此时因为前端未开发完毕,所以我们不能通过web页面进行登录,那么如何解决…

【Python Django + Vue】酒店在线预订系统:用技术说话!

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

Parallels Desktop意外退出,Parallels Desktop安装软件很卡闪退怎么办?

Parallels Desktop是目前很优秀的虚拟机软件,操作简单,兼容性强而且安装也非常方便,备受苹果用户的喜爱和满意。然而,部分用户在使用Parallels Desktop的时候,会遇到意外退出或终端关机的情况,这不仅会影响…

VS2017 编译 SQLite3 动态库

首先官方下载源码: Tags sqlite/sqlite (github.com) 1.安装 VS2017 community edition 2.打开VS2017命令行工具 3.安装TCL 开发库,推荐 TCL 9.0 先下载源码: Tcl/Tk 9.0 使用vs2017编译tcl&

CRC码计算原理:按位讲解计算过程

CRC8 这里先以CRC8来说明CRC的计算过程 1、CRC8在线计算器 通过CRC在线计算器可以看见CRC8的特征多项式:x8x2x1,初始值为0000’0000。 CRC计算的核心是:反转异或移位(此处的CRC8没有涉及反转,见后面CRC16&#xff0…

基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用

大家好,我是微学AI,今天给大家介绍一下基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用。本文深入探讨了Langchain框架下的Prompt工程在调教LLM(大语言模型)方面的应用&#xff0c…

C++入门基础知识110—【关于C++嵌套 if 语句】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 嵌套 if 语句的相关内容! …

全院级、流程化的医院安全不良事件管理系统源码——等级医院评审工作的辅助工具

前言: 冰山理论”指出“每件严重不良事件背后可能隐藏着10件轻微的不良事件”“存在30件未造成伤害的差错可能存在600件引发意外的异常事件”没有一件不良事件应该被忽视! 一项研究也指出95%医生曾目睹错误的发生,61%的医务人员认为医疗错误…

WebGL 小白入门学习

1. WebGL是什么? WebGL(Web Graphics Library)是一种JavaScript API,它允许你在不需要安装任何额外插件的情况下,直接在浏览器中渲染高性能的2D和3D图形。WebGL利用了用户的图形处理单元(GPU)来…

Unity 3d 鼠标设置的问题——隐藏/显示鼠标、锁定/解锁/限制鼠标、自定义鼠标形状

在unity开发的过程中,我们常常会遇到一些问题,有时会发现鼠标不见了,有时发现鼠标在屏幕中心不能动,有时又想有图片自己定义一个鼠标形状。本文将对这些问题逐一进行探讨。 一、设置鼠标的可见性 使用语句: Cursor.vis…

网络初识基本概念总结

网络发展背景 经历了 单机阶段 -> 局域网阶段 -> 广域网阶段 -> 移动互联网阶段 (简单介绍一下) 其他一些小概念 局域网LAN: 是把一些设备通过交换机 / 路由器连接, 形成的私有网络广域网WAN: 是把更多的局域网相互连接起来,当规模足够大时形成广域网交换机和路由器…

Rhymes AI发布首款开源多模态AI模型Aria 性能超越GPT-4o mini等多家知名AI模型

最近,日本东京的初创公司 Rhymes AI 推出了他们的首款人工智能模型 ——Aria。该公司自称,Aria 是全球首个开源的多模态混合专家(MoE)模型。这个模型不仅具有处理多种输入模态的能力,还声称在能力上与一些知名的商业模…

大一高等数学速成指南

大一高等数学速成指南 高等数学作为大学理工科学生的基础课程,对于许多新生来说,既是挑战也是机遇。本文将为你提供一个高效的学习指南,帮助你快速掌握高等数学的核心内容。 1. 理解课程大纲 首先,你需要了解高等数学的课程大纲…