强化学习实战(九) Linux下配置星际争霸Ⅱ环境

简介: 强化学习实战(九) Linux下配置星际争霸Ⅱ环境

安装SMAC

  SMAC是基于暴雪公司星际争霸Ⅱ做的一个多智能体环境,官方GitHub链接为:https://github.com/oxwhirl/smac

  安装之前更新一下pip(不更新的话会报一个错误):

ERROR: Command errored out with exit status 128: git clone -q https://github.com/oxwhirl/smac.git /tmp/pip-req-build-tz6uj500 Check the logs for full command output.

  更新命令如下:

pip install --upgrade pip

  更新之后,我的pip版本升到了21.1.2版本:

  安装SAMC的话我们直接采用以下命令即可:

pip install git+https://github.com/oxwhirl/smac.git
• 1

安装StarCraft II

  因为SMAC是基于星际争霸游戏引擎的,所以我们还需要安装StarCraft II,官方指定的版本为SC2.4.6.2.69232,并且不同版本之间的算法性能测试不一样。相关包的下载可以在如下链接找到:https://github.com/Blizzard/s2client-proto#downloads,这里我采用4.6.2这个和官方一样的版本进行安装。直接进上面这个链接去选中下图所示的4.6.2即可:

  下载好了之后我们能够得到如下这样一个压缩包:

  我们需要将这个zip文件解压:

unzip SC2.4.6.2.69232.zip

  解压的过程需要密码,密码为:iagreetotheeula

  解压后文件默认路径为~/StarCraftII/,如果放在别的路径,需要更改环境变量SC2PATH,所以解压之后我把解压的文件拷贝到了~/目录下面。

下载SMAC地图

  我们需要下载地图,也就是游戏的地图并将其放在之前解压的StarCraft II文件下面的Maps目录下面。下载链接为:https://github.com/oxwhirl/smac/releases/download/v0.1-beta1/SMAC_Maps.zip。解压之后得到两个文件夹:

  将文件夹直接放在$SC2PATH/Maps下即可。直接我们就可以进行阶段性的测试了:

  1. 测试Map是否放置成功:
python -m smac.bin.map_list
• 1

  1. 测试smac和它的Map是否配置成功:
python -m smac.examples.random_agents
• 1

  能够得到以下输出结果:

  到此在Linux下配置星际争霸2的环境就差不多了。

Py文件中进行测试

  如果想要Debug初步了解这个环境的话,可以采用如下代码:

from smac.env import StarCraft2Env
import numpy as np
def main():
    env = StarCraft2Env(map_name="8m")
    env_info = env.get_env_info()
    n_actions = env_info["n_actions"] # 获取动作维度
    n_agents = env_info["n_agents"] # 存在多少个智能体
    n_episodes = 10
    for e in range(n_episodes):
        env.reset()
        terminated = False
        episode_reward = 0
        while not terminated:
            obs = env.get_obs()
            state = env.get_state()
            actions = []
            for agent_id in range(n_agents): # 对于每个智能体遍历循环
                avail_actions = env.get_avail_agent_actions(agent_id)
                avail_actions_ind = np.nonzero(avail_actions)[0]
                action = np.random.choice(avail_actions_ind)
                actions.append(action)
            reward, terminated, _ = env.step(actions)
            episode_reward += reward
        print("Total reward in episode {} = {}".format(e, episode_reward))
    env.close()
if __name__ == "__main__":
  main()

对于上述代码,

参考

相关文章
|
3天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
2天前
|
存储 Shell Linux
操作系统实战(一)(linux+C语言)
本篇文章重点在于利用linux系统的完成操作系统的实验,巩固课堂知识
|
4天前
|
关系型数据库 MySQL Linux
在Linux系统上实现高效安装与部署环境的全方位指南
在Linux系统上实现高效安装与部署环境的全方位指南
|
4天前
|
数据挖掘 Linux vr&ar
Linux命令实战:解决日常问题的利器
Linux命令实战:解决日常问题的利器
|
5天前
|
Unix Shell Linux
在 Linux 上把 Vim 配置为默认编辑器
在 Linux 上把 Vim 配置为默认编辑器
|
5天前
|
存储 Web App开发 Ubuntu
整理16款适用于较旧低配置电脑的最佳Linux发行版
在本指南中,趣云笔记(https://www.ecscoupon.com/)介绍了一些最好的Linux发行版,你可以将它们安装在旧PC上并为其注入新的活力。
24 0
|
5天前
|
Linux 数据安全/隐私保护
Linux 读写权限的配置
Linux 读写权限的配置
11 0
|
6天前
|
安全 Linux Shell
Linux常用命令详解与实战应用
【5月更文挑战第7天】本文详述了Linux常用命令,包括文件与目录操作(ls, cd, pwd, cp, mv, rm)、文本处理(cat, grep, sed)及系统管理(top, df, du)命令。通过实例演示了如何使用这些命令,帮助读者理解和掌握Linux操作,提升系统管理效率。学习和熟练运用这些基础命令,是高效使用Linux的关键。
|
6天前
|
运维 NoSQL Linux
linux环境收集core文件步骤
请注意,生成core文件可能会占用磁盘空间,因此应谨慎使用。一旦完成故障排查,建议将相关的core文件删除以释放磁盘空间。
32 5
|
6天前
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)