My internship project in 𝖢𝖠𝖲𝖨𝖠. 🤗
pysc2_maddpg 这个项目是我在中科院自动化所的实习代码,主要是利用深度强化学习的MADDPG算法,应用到暴雪开源的SC2LE强化学习开发环境,来训练星际争霸2中一个简单的对抗环境。
利用Open AI的MADDPG多智体联合算法,训练了星际争霸2——sc2le环境中最基本5v5对抗中的收割者。
papers是项目的理论支撑,包括项目的参考的论文。
Document是前人文档。
maddpg是代码的核心部分,包含maddpg算法和pysc2环境两个部分。
项目的csv文件是数据记录文件,记录了实验的相关数据。
项目的load文件将会显示试验的结果。
train_maddpg.py训练总文件,配置好环境之后运行的文件。
游戏采用最简单的5v5场景,为了让收割者们通过学习学到好的策略,设计采用condition-strategy-rewards的基本构架。
为了让收割者们有更好的表现,我们需要让收割者们上场杀敌。杀敌的时候就需要考虑血量和攻击力两个方面。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图片版点击此处。
采取攻击策略有助于提升胜率,但是盲目攻击又将带来损失,因此我们制定了一套该场景下的策略。
rewards在agent.py,runner.py和train_maddpg.py中都有涉及,范围较广,暂时考虑了两种rewards,分别是pysc2内置的score带来的reward 和距离拉近带来的rew_d。
【2】迈向通用人工智能:星际争霸2人工智能研究环境SC2LE完全入门指南
【3】星际争霸2之环境配置
【1】强化学习基本介绍
【2】DNQ介绍
【3】Intel——DNQ
【4】MADDPG论文翻译
【5】MADDPG官方文档
【6】MADDPG简介
【7】DDPG详解
【8】深度学习A3C