当前位置: 首页 > news >正文

untiy mlagents 飞机大战 ai训练

前言

之前那个python源码的飞机大战bug过多,还卡顿,难以继续训练。可直接放弃的话又不甘心,所以找了个unity版本的飞机大战继续(终于不卡了),这次直接使用现成的mlagents库。

过程

前前后后花了两周时间,甚至因此拖了好几个课的实验报告没写(大三好多报告啊!!!选修课都要写),然而训练出来的模型,甚至都没有python版本的好…

问题

第一次用untiy 代码与界面对应不及时 在代码里初始化了 却因为在界面改了而失效 有时就因为这个找了好久bug 后面发现在start函数里初始化靠谱点
mlagents 教程较少 只找到了关于官方教程项目的博客
需要考虑的因素过多 飞机 子弹 buff的个数加起来最多可达30(没有进行限制) 一开始直接使用camera sensor 这个组件将图像传进去 那时还想着同样都是输入图像,mlagents库可以同时训练多个并加速,效果肯定比python版本的好的多,结果证明想多了。

目前

状态空间
图像 灰度
敌人 子弹 buff 距离飞机最近的部分
血量 buff数。。。
原本还想加上消灭所有敌人可获得的分数的,但感觉与已有的重叠了
(已去除) 检测敌机和子弹的射线组件 不知道如何查看是否检测到了 只能删掉
在这里插入图片描述

在这里插入图片描述

动作空间
移动 上下左右 离散 (旧版本 连续 可变速 可转向)
使用buff

奖励
无事发生 0 试过惩罚,因为官方项目里为了快速完成任务会这样做。但是飞机大战里为了躲避子弹,无事发生是免不了的,盲目逼迫可能会起到负面效果,让ai无法理解。
击杀 根据增加分数奖励
获得buff 奖励
受伤 扣分
死亡 扣分
(想过) 敌人越过防线 惩罚 避免ai贪生怕死 尽可能的优雅而又高效率杀敌
(已注释掉)高度惩罚 静止惩罚

训练
1.先模拟学习 游戏苦手 为了演示的好一点 特意把游戏难度降低了 因为将全部敌人的数据输入给网络并不显示(输入的图像感觉毛用没有!!!),所以ai只能“看”到最近的x个对象。为了真实,我改成了真人玩时也只能看到ai能“看”的。例如3颗子弹(突然冒出的子弹有点吓人,因此暴毙过),9个敌机。
2.不进行模拟学习
效果都不理想。不明白为啥python那里只有图像就表现得那么好(相对而言)。

辅助
第一周时每次开机都要进行

打开项目文件夹
conda命令行
转换环境
打开记录命令的文本文件
复制粘贴
这个繁琐的步骤

第二周实在忍不了了,写了个bat脚本来提高启动效率
在这里插入图片描述

放弃

两周了效果还是不好,为了考试和等着我的一堆实验报告,只能放弃了。代码太乱了就不放出来了,已经成shishan了,一堆不敢删掉只能注释的代码(尝试修改奖励函数的产物)。改着改着硬是堆到了1000多行代码。这炼丹师实在不好当啊。
在这里插入图片描述

参考

(参数调整)[https://www.cnblogs.com/gentlesunshine/p/12790103.html]
(unity飞机大战github)[https://github.com/Like-Hero/Air-War]

http://www.lryc.cn/news/475323.html

相关文章:

  • 从0开始学统计-什么是中心极限定理
  • 工具方法 - 个人活动的分类
  • 11.1组会汇报-基于区块链的安全多方计算研究现状与展望
  • ubuntu【桌面】 配置NAT模式固定IP
  • 评估 机器学习 回归模型 的性能和准确度
  • 如何下载安装TestLink?
  • 基于SSM+微信小程序的订餐管理系统(点餐2)
  • 【C++排序 双指针】1996. 游戏中弱角色的数量|1996
  • GESP4级考试语法知识(捕捉异常)
  • HTML 基础标签——元数据标签 <meta>
  • 栈虚拟机和寄存器虚拟机,有什么不同?
  • Windows下基于fping进行批量IP测试
  • 一款实用的Word文档图片转换与水印保护工具
  • 优化用于传感应用的衬底集成波导技术
  • Java多态特性的向上转型
  • C++ 判断语句的深入解析
  • 15分钟学 Go 第 33 天:项目结构
  • conda迁移虚拟环境路径
  • (八)JavaWeb后端开发——Tomcat
  • yocto中通常不直接修改提供的recipes的bb文件
  • 智能座舱相关术语全解及多模态交互在智能座舱中的应用
  • 【Fastjson反序列化漏洞:深入了解与防范】
  • 【OJ题解】C++实现反转字符串中的每个单词
  • 万字长文详解Hive聚合函数 grouping sets、cube、rollup原理、语法、案例和优化
  • 数列分块入门
  • SPRD Android 14 Launcher 3 中添加长按桌面图标启动自由窗口模式功能
  • WebSocket详解:从前端到后端的全栈理解
  • SOLIDWORKS 2025加快装配体设计 确保可制造性
  • 简单题:计算从位置 x 到 y 的最少步数| 豆包MarsCode AI刷题
  • HTML 基础标签——表单标签<form>