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

您所在的位置:网站首页 暴雪积分能干什么 强化学习实战(九) Linux下配置星际争霸Ⅱ环境

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

2023-12-28 04:44| 来源: 网络整理| 查看: 265

文章目录 安装SMAC安装StarCraft II下载SMAC地图Py文件中进行测试参考

安装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

安装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下即可。直接我们就可以进行阶段性的测试了:

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

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

  能够得到以下输出结果:

  到此在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()

对于上述代码,

参考 SMAC - StarCraft Multi-Agent Challenge使用Pytorch在StarCraft II 星际争霸2上实现多智能体强化学习算法


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3