记录第一次RL比赛,正赛第二及第 Jidi

环境介绍

在本次RLChina 智能体挑战赛 - 壬寅年冬赛季中,采用的比赛环境是奥林匹克桌面曲棍球。简而言之双方球员从自己球门出生点出发,将出生在中轴线的曲棍球击入对方球门即可得分。下面具体介绍坏境的细节。


map

  • 本游戏共有两方,对战双方各控制一个有相同质量为1和半径为20的弹性小球智能体。智能体可以互相碰撞,也可以碰撞墙壁,但根据墙面摩擦系数会损失一定的速度;
  • 比赛场地为一个400*480长方形桌面,在桌面的左右两端设置有感应球门线;比赛开始时,在场地中心线随机位置生成一个小球,当该小球触及到任意一方的的球门线时视为进球,进球的一方获胜;
  • 对战双方在该项目中仅能在己方区域内活动,以场地中线为界;
  • 智能体自身有能量,每步消耗的能量与施加的驱动力和位移成正比:
  • 智能体能量同时以固定速率恢复,如果能量衰减到零,智能体出现疲劳,导致不能加力,注意: energy 不会在正式比赛的observation中提供;
  • 当有一方进球或环境达到最大步数500步时环境结束,先进球的一方获得胜利;
  • 奖励:先进球的一方得100分,另一方得0分。

observation

每一个step,环境会提供一个40*40的像素图作为observation。这个observation是环境根据当前我方agent的位置和旋转角度在游戏环境中等比例缩放5倍采样得到的。该observation只能显示我方agent周围的视角,agent的中心大概位于observation的(31.5,19.5)处,每一个像素对应环境中的距离为5。observation中地图的边界6、中轴圆环4、球2、球门7、我方8和敌方10分别用六种非零正整数表示,其余位置均为0。中轴圆环这样无法产生物理碰撞的线条会被智能体遮挡。只有球和边界会与智能体产生物理碰撞。

action

每一个step均采用 [force,degree] 的形式作为当前step的action,,为正则向前输出力,为负则向后输出力。力的输出在旋转之后执行。100的 force 会给agent带来1的加速度。agent的速度上限为10,当速度超过10时,会等比例放缩速度的x,y分量,使之合速度为10。,为正则顺时针旋转,为负则逆时针旋转。旋转只影响该个step力输出的方向,以及之后环境返回observation的角度,不会影响agent的速度。

规则实现

对于这种只包含局部视野信息的智能体博弈环境并不适宜使用强化学习来进行训练。综合考虑,本次我们采用规则的方法进行比赛,具体如下。

(1)第一脚

道德谴责:对于这样的开放智能体环境,总会有一些不道德分子通过环境代码来记录全局视野信息进行比赛。在这里唾弃(因为我之前也是这样)。对于这样不道德的行为加以摒弃。所以本次比赛我们采用局部视野进行决策。通过浏览大量实验发现,大多数提交者并没有很好地实现第一脚的想法,但往往前几名都是很好地实现了第一脚一招致胜的想法,但根据视频回放只有一种可能,他们用了全局视野进行计算。唾弃、唾弃、唾弃。

正文:通过实验发现,整个环境唯一出生点变的是球的位置,通过打表的形式遍历完所有整数点的最佳射球力度以及方向,即可实现根据局部视野通过查表的形式进行第一脚的策略。简而言之,第一,为了简化打表的难度,我们以固定角度进行击球,首先产生向前的速度,然后向球方向旋转90度,在通过打表算出来连续5帧需要多少力施加在垂直方向,进而产生了击打球的合成速度方向。第二,球的出生点范围为[300,500],共201个点,其中上下对称,所以真正需要打表的点是101个点,并且每个点从[0,200]的力中遍历找到能踢进球的力记录下来作为打表的备选方案,所以总共需要实验201*101次,利用多进程可以加快打表的速度(速度提升10-20倍)。至此完成第一脚打表操作。第三,为了防止有对手在球门面前阻挡,我们将所有的入射力进行人工筛选,只击打最刁钻的位置来提高第一球的命中率。最后,由于球的产生位置是浮点数范围均匀采用而来,后期仍需要人工进行部分微调。

(2)防御

踢完第一脚之后,开始记录自身的全局旋转角度,局部视野信息一共分为四种情况:

  • 没球没球门:回防策略为固定360°转圈;
  • 有球没球门:通过全局旋转角度得到球在我与球门之间的位置分为前、后关系,该情况主要通过计算偏向入射角将球往智能体的正方向的内侧踢,阻止球进入自家球门。思想示意图以及代码实现如下所示。

if tmp_x>30:tmp_y = 8
else:tmp_y = 6
theta_run = math.degrees(math.atan2(tmp_y,tmp_x))
if ball_degree0<60:ball_degree0 += theta_run
else:ball_degree0 -= theta_run
my_degree = ball_degree0 - degree
  • 没球有球门:努力往球门附件靠近。
  • 有球有球门:取球和球门与智能体的角度合成作为自己下一个step的旋转degree:,具体比例系数视情况而定。

总结

第一:虽然在白盒环境比赛中使用环境信息在RL领域是不道德行为,但在此并不做出过多评价,本人仍坚持只通过局部视野+特征工程+常用算法思想进行比赛,唾弃加入环境代码。

第二:RLChina比赛奖金还可以,一年4次比赛,在此鼓励更多对RL感兴趣的参与比赛,也希望有更多的大佬加入,别老是那几个人在拿官方当提款机使用。(是的,我嫉妒了,张榜结果第四,就差一点拿到奖金,但我不气馁,更希望公开自己的想法以及代码让RLChina实现更多的可能性,给RL领域带来更多的创新点)。

第三:感谢赵鉴大佬团队提供的环境介绍。本次本人比赛代码在github开源,并在csdn提供付费下载版本,可付费模式,有能力的支持一下原创,白嫖的点个赞。

RLChina 智能体挑战赛 - 壬寅年冬赛季(桌面曲棍球)相关推荐

  1. RL 实践(0)—— 及第平台辛丑年冬赛季【Rule-based policy】

    本学期选了一个数据科学相关的实验课,大作业是复现一个数据挖掘相关竞赛的冠军算法,为了实践一下 RL,我找了半天之后专门选了一个比较简单的 RL 竞赛 但是开始弄了才发现,这个竞赛的冠军方法竟然是一个纯 ...

  2. 15万奖金强化学习赛事!Go-Bigger多智能体决策智能挑战赛来了!

    <球球大作战>是一款风靡全球的休闲电子竞技游戏,以大球吃小球为目标,简单有趣却又斗智斗勇. 你不知道的是,AI世界也拥有了自己的<球球大作战>. 前不久,OpenDILab开源 ...

  3. 全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启

    <球球大作战>是一款风靡全球的休闲电子竞技游戏,以大球吃小球为目标,简单有趣却又斗智斗勇. 你不知道的是,AI世界也拥有了自己的<球球大作战>. 前不久,OpenDILab开源 ...

  4. 奖金15万!全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”开启

    关注公众号,发现CV技术之美 <球球大作战>是一款风靡全球的休闲电子竞技游戏,以大球吃小球为目标,简单有趣却又斗智斗勇. 你不知道的是,AI世界也拥有了自己的<球球大作战>. ...

  5. 论坛报名 | 从捉迷藏、星际争霸到新一代人工智能:多智能体深度强化学习的理论与实践...

    与6位图灵奖得主和100多位专家 共同探讨人工智能的下一个十年 长按图片或点击阅读原文,内行盛会,首次免费注册 2020年6月21-24日,第二届北京智源大会(官网:https://2020.baai ...

  6. 《强化学习周刊》第16期:多智能体强化学习的最新研究与应用

    No.16 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,多智能强化学习的研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领 ...

  7. 北京智源大会 | 启元AI战胜中国星际冠军,智能体激发人类探索未知

    6月21日,北京智源大会特色活动--启元星际AI顶级职业选手挑战赛在北京举行,启元AI"星际指挥官"以两个2:0的成绩击败了<星际争霸I/II>全国冠军黄慧明(TooD ...

  8. 五分钟教你在Go-Bigger中设计自己的游戏AI智能体

    多智能体对抗作为决策AI中重要的部分,也是强化学习领域的难题之一. 为丰富多智能体对抗环境,OpenDILab(开源决策智能平台)开源了一款趣味多智能体对抗竞技游戏环境--Go-Bigger.同时,G ...

  9. “弱肉强食,月半者为王” | OpenDILab推出多智能体博弈环境Go-Bigger

    关注公众号,发现CV技术之美 多智能体对抗作为决策AI中重要的部分,也是强化学习领域的难题之一. 为丰富多智能体对抗环境,OpenDILab(开源决策智能平台)开源了一款趣味多智能体对抗竞技游戏环境- ...

最新文章

  1. lifekeeper for linxu安装步骤
  2. hdu4821 字符串hash
  3. SAP License:赛锐信息访谈启示录(三)
  4. [swift] LeetCode 338. Counting Bits
  5. python写webservice接口_Python开发WebService系列教程之REST,web.py,eurasia,Django
  6. 如何将UTF-8转换为UTF-8n
  7. java中replaceall用法_Java中String的ReplaceAll使用小结
  8. Linux chapter 7
  9. java中chl列表_Java 同步框架 AQS 深入分析
  10. 分享CFA二级优质复习方法!
  11. oracle 父子级,oracle 父子关系
  12. 使用 java.lang.Math 类完成编程
  13. 宝塔面板权限问题导致php上传文件失败
  14. LINUX IIO子系统分析之五IIO BUFFER子模块实现分析
  15. 风口上的小游戏还有怎样的发展空间?7位腾讯技术专家为你解答
  16. Prometheus普罗米修斯调研笔记
  17. android 调出键盘表情_Android 显示输入法中的emoji表情以及String字符
  18. Facebook灰度手势识别论文笔记
  19. linux之bound网络配置
  20. SDUTOJ 3034 ——炸学校

热门文章

  1. 基于Java的超市进销存系统springboot+vue
  2. 数据安全--水印和溯源工具
  3. ubuntu zip和unzip命令
  4. 不是吧,不是吧,这年头还有人不知道算法的重要性?我进字节年薪45w+全靠大佬这份笔记!
  5. H3C S5120端口镜像配置
  6. eclipse2019安装
  7. 简单对接第三方物流接口TestDemo
  8. java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办
  9. ArcGIS Engine怎样快速合并一个图层的所有线面要素
  10. vue3个人博客,从零到一搭建