美文网首页
星际争霸II的强化学习环境(3)

星际争霸II的强化学习环境(3)

作者: Nino_Lau | 来源:发表于2019-04-16 10:18 被阅读0次

    本篇是我在CASIA实习结业报告,另可参阅实习感受

    项目地址

    目录

    简介

    pysc2_maddpg 这个项目是我在中科院自动化所的实习代码,主要是利用深度强化学习的MADDPG算法,应用到暴雪开源的SC2LE强化学习开发环境,来训练星际争霸2中一个简单的对抗环境。

    功能

    利用Open AIMADDPG多智体联合算法,训练了星际争霸2——sc2le环境中最基本5v5对抗中的收割者。

    • 当动作空间为3,初始态为攻击态时,胜率达到90%。
    • 通过训练,收割者能够实现索敌靠近。
    • 能够基本协同作战,以获得更高胜率。
    • 考虑血量和己方的攻击力,选择作战攻略(目前还未实现)。

    项目

    Papers

    papers是项目的理论支撑,包括项目的参考的论文。

    Document

    Document是前人文档。

    maddpg

    maddpg是代码的核心部分,包含maddpg算法和pysc2环境两个部分。

    • sc2_env是项目对于pysc2环境的接口,包含combined_action.pyrunner.py两个文件。其中combined_action.py是动作空间文件,规定了动作个数,在在3动作空间会有更好的表现。runner.py将我们的agent接入了pysc2环境。
    • maddpg是项目调用的maddpg算法的部分,包含trainercommonagent.py文件。其中trainercommon是MADDPG自带的部分,用于规定算法;agent.py文件是我们自己实现的agent类,具体可以实现一些特殊的动作,如选择单元、选择控制组、获得当前状态等等。

    csv文件

    项目的csv文件是数据记录文件,记录了实验的相关数据。

    load文件

    项目的load文件将会显示试验的结果。

    train_maddpg.py

    train_maddpg.py训练总文件,配置好环境之后运行的文件。

    设计思路

    游戏采用最简单的5v5场景,为了让收割者们通过学习学到好的策略,设计采用condition-strategy-rewards的基本构架。

    condition

    为了让收割者们有更好的表现,我们需要让收割者们上场杀敌。杀敌的时候就需要考虑血量和攻击力两个方面。condition暂时还未实现,是未来工作的一部分。

    假设我方还有m个幸存的收割者,血量分别是Hp_1, Hp_2,..., Hp_m,收割者的攻击力大体上相同,所以我方此时的攻击力为D=µm,µ是常数。同理,对方还剩下n个幸存者,血量分别是Hp'_1, Hp_2',..., Hp_m',攻击力为D'=µn。那么敌我双方团灭时间大致为t_1=\frac{\sum{}Hp}{D'}t_2=\frac{\sum{}Hp'}{D}。当我方团灭时间大于对方时候,m\sum{}Hp>n\sum{}Hp'时,攻击。

    考虑pysc2内置的reward是当前帧减去前一帧的score,为了获得更大score,我们应该让reaper_i=\arg\min_{reaper_i}(Hp_{reaper_i})号收割者远离,并派遣其他收割者攻击。

    其余情况均远离。

    Github上可能无法加载condition,condition图片版点击此处

    strategy

    采取攻击策略有助于提升胜率,但是盲目攻击又将带来损失,因此我们制定了一套该场景下的策略。

    • 主动参兵有奖:设置distance,当我方收割者与离之最近的敌方收割者拉近距离时候会有奖励;若已经进入战场,不再通过distance增加reward。
    • 支援队友有奖:当拉近距离之后,孤军奋战是不好的策略,因此当我们所有的收割者都执行攻击动作的时候,有一个相应的奖励。
    • 战场杀敌有奖:此项由于涉及到score,是pysc2内设的,因此不予考虑。

    rewards

    rewards在agent.pyrunner.pytrain_maddpg.py中都有涉及,范围较广,暂时考虑了两种rewards,分别是pysc2内置的score带来的reward
    和距离拉近带来的rew_d。

    项目结果

    代码截图

    image image image image

    对战截图

    image image image image image image image

    结果截图

    • 在初始化为攻击状态,动作空间为3个动作时,胜率可以达到90%多。
    • 在初始化为任意状态,动作空间为3个动作时,胜率可以达到50%多。
    • 在初始化为任意状态,动作空间为7个动作时,胜率只有20%左右。
    image image image

    参考

    前人工作

    【1】星际争霸2人工智能研究环境SC2LE初体验

    【2】迈向通用人工智能:星际争霸2人工智能研究环境SC2LE完全入门指南

    【3】星际争霸2之环境配置

    【4】星际争霸2之MADDPG算法

    参考网页

    【1】强化学习基本介绍

    【2】DNQ介绍

    【3】Intel——DNQ

    【4】MADDPG论文翻译

    【5】MADDPG官方文档

    【6】MADDPG简介

    【7】DDPG详解

    【8】深度学习A3C

    参考代码

    【1】openai/MADDPG

    【2】Blizzard/s2client-proto

    【3】deepmind/pysc2

    【4】fangbrodie/pysc2_maddpg

    相关文章

      网友评论

          本文标题:星际争霸II的强化学习环境(3)

          本文链接:https://www.haomeiwen.com/subject/pxuvwqtx.html