飞机大战ai通过dqn实现

借鉴

飞机大战源码 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.rhkb.cn/news/445714.html

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

相关文章

经纬恒润荣获2024中国汽车供应链大会创新成果奖

2024年9月24日-26日,2024中国汽车供应链大会暨第三届中国新能源智能网联汽车生态大会在武汉隆重举办。本届大会以“新挑战、新对策、新机遇——推动中国汽车供应链可持续发展”为主题,集聚政府主管领导、行业专家、汽车及零部件企业精英和主流媒体&#…

Journey Training:o1的一次复现尝试,极长思维链的合成

知乎:啦啦啦啦(已授权)链接:https://zhuanlan.zhihu.com/p/902522340 论文:O1 Replication Journey: A Strategic Progress Report链接:https://github.com/GAIR-NLP/O1-Journey 这篇论文记录了一次o1复现尝…

《Java基础》变量和数据类型

综述 在开始学习变量之前,我们思考一下为什么需要使用变量。 首先我们从小开始学习加法减法的时候,后来我们再学更难的东西就是代数,其中的x和y是我们要求解的内容,这些内容就是变量。 变量是人的思维的提升,没有变量…

armv7-a mmu 配置

L1 page table ​ L1 page table 将 32位内核的整个 4GB 地址空间划分为 4096 个大小相等的部分(entry),每个部分映射 1 MB 范围内的虚拟内存空间。 ​ 每个条目 (entry) 可以保存指向二级转换的地址,也可以保存用于表示这 1MB …

胤娲科技:AI绘梦师——一键复刻梵高《星空》

想象一下,你手中握有一张梵高的《星空》原图,只需轻轻一点,AI便能化身绘画大师,一步步在画布上重现那璀璨星河。 这不是科幻电影中的桥段,而是华盛顿大学科研团队带来的“Inverse Painting”项目,正悄然改变…

uniapp__微信小程序使用秋云ucharts折线图双轴

1、子组件 <template><view class"charts-box"><qiun-data-charts type"line":opts"computedOpts":chartData"chartData"/></view> </template><script> export default {props: {chartData: {t…

后端——eclipse实现前端后端的交互(2)

1.新建前后端文件 新建HTML文件和后端交互Servlet文件。新建文件的地址也有所要求&#xff0c;Servlet文件要在JavaResources下的src中。HTML文件在WebContent下 2. 引入jqury文件 后端与前端的互传需要通过jQuery的ajax,所以要传入jQuery的包到eclipse中&#xff0c;传入位置…

Apache HTTP Server 配置SSL证书(Windows)

Apache2.4.39 HTTP Server 配置SSL证书 1. 申请证书 申请证书步骤(略) 证书名称如下: ca-bundle.crt xxx_com.crt xxx_com.key2. 配置 证书位置:Apache2.4.39\conf\ssl Apache2.4.39\conf\ssl修改两个配置文件: 0localhost_80.conf <VirtualHost *:80>Rewrite…

QGroundControl最新版本MacOS平台编译(使用CMakeLists.txt)

1.下载源码: git clone https://github.com/mavlink/qgroundcontrol.git --recursive 2.安装依赖: brew install GStreamer 设置环境变量:GST_PLUGIN_PATH 安装SDL2: brew install SDL2

【记录】PPT|PPT 箭头相交怎么跨过

众所周知&#xff0c;在PPT中实现“跨线”效果并非直接可行&#xff0c;这一功能仅存在于Visio中。然而&#xff0c;通过一些巧妙的方法&#xff0c;我们可以在PPT中模拟出类似的效果。怎么在PPT中画交叉但不重叠的线-百度经验中介绍了一种方法&#xff0c;而本文将介绍一种改进…

浅谈虚拟电厂在分布式光伏发电应用示范区中的应用及前景

0引言 随着电力体制改革的持续推进&#xff0c;电力市场将逐步建立和完善&#xff0c;未来的售电主体也将随着配售电业务的逐步放开而日益多元化&#xff0c;新的政策不断鼓励分布式电源和微电网作为独立的配售电市场主体推动运营模式的创新。与微电网所采取的就地应用为控制目…

springboot001基于SpringBoot的在线拍卖系统(论文+源码)_kaic

医护人员排班系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员排班系统的方案。文章介绍了医…

InfluxDB持久层封装

InfluxDB持久层封装 了解如何使用spring-boot来操作InfluxDB数据库&#xff0c;首先我们来看下整个的系统结构图例&#xff1a; 对比下mybatis中的执行流程&#xff1a; 1_自动装配 首先&#xff0c;我们来看下第一步自动装配&#xff1a;依赖spring-boot自动装配出InfluxDB对…

ubuntu22.04 ROS2 - 安装

参考链接:Ubuntu 22.04 LTS安装ROS2 (ros-humble-desktop)-CSDN博客 1、安装测试 ros2 run demo_nodes_cpp listener再开一个终端ros2 run demo_nodes_cpp listener2、小海龟模拟器 ros2 run turtlesim turtlesim_noderos2 run turtlesim turtle_teleop_key两个终端分别执行…

Linux内核与基础命令学习总结

Linux操作系统 Linux操作系统博大精深&#xff0c;其中对线程&#xff0c;IO&#xff0c;文件系统等概念的实现都很有借鉴意义。 ​ 文件系统和VFS 文件系统的inode上面讲过了。VFS主要用于屏蔽底层的不同文件系统&#xff0c;比如接入网络中的nfs文件系统&#xff0c;亦或…

用SpringBoot给Servlet容器Tomcat打war包步骤

首先写一个类来代替启动类 先在SpringBoot项目里打开pom.xml导入依赖,原本SpringBoot里面spring-boot-starter-web依赖里面有Tomcat,所以我们要先在spring-boot-starter-web里面导入依赖,把Tomcat给排除掉,并且加上你要打的war类型依赖 然后先刷新,再清除,最后再打包 成功之后,…

2024最新版安装教程!Python安装+PyCharm安装使用教程!!(非常简单)

Python下载安装 一、进入Python官网首页&#xff0c;下载最新版的Python 官方网址&#xff1a;Download Python | Python.org 鼠标悬浮在Downloads&#xff0c;选择最新版本 注意&#xff1a;由于Python官网服务器设立在国外&#xff0c;所以下载速度非常慢&#xff0c;我这…

管家婆-本地化-无法打开处理,链接失败

一、首先检测sql是否正常 二、检测管家婆svr是否正常 三、检测管家婆服务正常 阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;畅享人类幸福时光&#xff01; 让我们积极投身于技术共享的浪潮中&#xff0c;不仅仅是作为受益者&#xff0c;更要成为贡献…

数据库(1)

目录 1. 内存和外存的区别&#xff1f; 2. 常见的关系型数据库&#xff1a; 3. 常见的非关系型数据库&#xff1a; 4. 数据库与数据结构有什么关系&#xff1f; 5. SQL分类 6. 数据库的基本操作 7. 创建数据库 8. 删除数据库 9. 数值类型&#xff1a; 10. 字符串类型…

游戏如何应对薅羊毛问题

在大众眼里&#xff0c;“薅羊毛”是指在电商领域&#xff0c;“羊毛党”利用平台、商家的促销规则&#xff0c;低价获取商品和服务的行为。如前不久“小天鹅被一夜薅走7000万”的案例震惊全网。 然而实际上&#xff0c;“薅羊毛”现象不仅存在于电商场景&#xff0c;在游戏中…