1. 星际争霸2游戏安装与配置在Windows10系统下搭建SMAC平台第一步需要安装星际争霸2游戏本体。虽然暴雪官方已经停止更新但游戏客户端仍然可以正常下载使用。我建议选择完整版安装因为后续需要的地图文件和数据都需要完整客户端支持。下载时要注意选择正确的版本建议下载4.10版本这是目前SMAC平台兼容性最好的版本。安装路径最好不要包含中文或特殊字符我习惯安装在E盘的Games文件夹下比如E:\Games\StarCraft II。安装完成后需要设置一个关键的系统环境变量SC2PATH这个变量指向你的星际争霸2安装目录。具体操作步骤是右键此电脑→属性→高级系统设置→环境变量在系统变量中新建一个名为SC2PATH的变量值为你的安装路径。比如我的设置就是E:\Games\StarCraft II。这一步非常重要后续SMAC平台会通过这个环境变量来定位游戏资源。安装完成后建议先运行一次游戏确保能够正常启动。首次运行会要求登录战网账号如果没有可以注册一个免费账号。登录成功后进入游戏主界面就可以退出了这样能确保所有必要的游戏文件都已经正确初始化。2. Python虚拟环境配置为了避免与系统Python环境产生冲突强烈建议使用Anaconda创建一个独立的虚拟环境。我实测过Python 3.7和3.8版本都能很好地兼容SMAC平台这里以Python 3.7为例。首先打开Anaconda Prompt执行以下命令创建环境conda create -n sc2 python3.7 conda activate sc2创建环境后建议先升级pip到最新版本python -m pip install --upgrade pip虚拟环境配置时容易遇到的一个坑是环境变量问题。如果你之前安装过其他版本的Python可能会出现环境混乱的情况。我建议在创建新环境后执行conda list检查已安装的包确保是一个干净的环境。如果发现有不必要的包可以用conda remove package_name来清理。3. PyTorch及其扩展库安装PyTorch是SMAC平台的核心依赖之一版本选择非常关键。根据我的经验PyTorch 1.4.0到1.8.0之间的版本兼容性都还不错但考虑到torch-geometric等扩展库的依赖关系建议选择PyTorch 1.4.0。对于有NVIDIA显卡的用户安装GPU版本可以显著提升训练速度。安装前先用nvidia-smi命令检查CUDA驱动版本我机器上装的是CUDA 10.1所以安装命令如下conda install pytorch1.4.0 torchvision0.5.0 cudatoolkit10.1 -c pytorch安装完成后用以下命令验证是否安装成功python -c import torch; print(torch.cuda.is_available())如果输出True说明GPU版本的PyTorch已经正确安装。接下来安装torch-geometric及其依赖库。这是一个比较麻烦的过程我遇到过多次安装失败的情况。正确的安装顺序应该是先安装依赖库最后安装torch-geometric本身。首先需要下载四个预编译的wheel文件torch-scattertorch-sparsetorch-clustertorch-spline-conv这些文件可以从PyTorch Geometric的官方仓库下载注意选择与PyTorch 1.4.0和CUDA 10.1兼容的版本。下载后依次安装pip install torch_scatter-2.0.3cu101-cp37-cp37m-win_amd64.whl pip install torch_sparse-0.5.1cu101-cp37-cp37m-win_amd64.whl pip install torch_cluster-1.5.2cu101-cp37-cp37m-win_amd64.whl pip install torch_spline_conv-1.2.0cu101-cp37-cp37m-win_amd64.whl最后安装torch-geometricpip install torch-geometric4. SMAC平台安装与配置SMAC平台的安装相对简单可以直接从GitHub仓库安装。我推荐使用开发模式安装这样方便后续更新和调试git clone https://github.com/oxwhirl/smac.git pip install -e smac/安装完成后需要下载SMAC专用的地图文件。这些地图文件可以从SMAC的GitHub仓库或者相关资源网站获取。下载后解压你会得到一个名为SMAC_Maps的文件夹。这个文件夹需要放置在星际争霸2安装目录下的Maps文件夹中。如果安装目录下没有Maps文件夹常见于非默认安装路径的情况需要手动创建。完整路径应该是你的星际2安装路径\Maps\SMAC_Maps。放置好地图文件后可以用以下命令验证地图是否加载成功python -m smac.bin.map_list5. 常见问题排查在实际安装过程中我遇到过几个典型问题这里分享一下解决方案。第一个问题是星际争霸2路径错误。即使设置了SC2PATH环境变量某些情况下SMAC还是会尝试从默认路径查找游戏文件。解决方法是在代码中显式指定游戏路径或者在C盘创建符号链接mklink /D C:\Program Files (x86)\StarCraft II E:\Games\StarCraft II第二个问题是PyTorch和CUDA版本不匹配。如果遇到CUDA runtime error之类的提示建议彻底卸载PyTorch后重新安装指定版本。可以用以下命令彻底卸载pip uninstall torch conda uninstall pytorch第三个问题是地图加载失败。如果运行示例代码时提示找不到地图检查以下几点地图文件是否放在正确的路径下地图文件夹名称是否正确必须是SMAC_Maps文件权限是否正常特别是如果安装在系统盘6. 测试运行与验证完成所有安装后可以用SMAC提供的示例代码进行测试。最简单的测试是运行随机智能体python -m smac.examples.random_agents如果一切正常你应该能看到星际争霸2游戏窗口弹出并观察到随机行动的智能体。第一次运行可能会比较慢因为需要加载游戏资源。如果长时间没有响应可以检查任务管理器中的SC2进程是否正常运行。对于更复杂的测试可以尝试修改示例代码比如调整观察空间或奖励函数。我建议先从简单的3m地图3个海军陆战队对战开始测试这是调试时最常用的场景。7. 性能优化建议在Windows平台上运行SMAC有几个优化技巧可以提升性能关闭游戏渲染可以大幅提高运行速度。在代码中设置renderFalse可以节省大量资源。调整帧率限制。星际争霸2默认的帧率较高可以通过设置fps参数来降低。使用parallel_envs参数可以并行运行多个环境实例充分利用多核CPU的优势。如果使用GPU训练注意监控显存使用情况。SMAC的环境会占用不少显存可能需要调整批量大小。我在实际使用中发现即使是配置不高的机器通过合理调整这些参数也能获得不错的学习效率。GTX 1060级别的显卡就能支持基础的实验需求。
Windows10系统下,从零搭建多智能体强化学习实战环境(SMAC平台)
1. 星际争霸2游戏安装与配置在Windows10系统下搭建SMAC平台第一步需要安装星际争霸2游戏本体。虽然暴雪官方已经停止更新但游戏客户端仍然可以正常下载使用。我建议选择完整版安装因为后续需要的地图文件和数据都需要完整客户端支持。下载时要注意选择正确的版本建议下载4.10版本这是目前SMAC平台兼容性最好的版本。安装路径最好不要包含中文或特殊字符我习惯安装在E盘的Games文件夹下比如E:\Games\StarCraft II。安装完成后需要设置一个关键的系统环境变量SC2PATH这个变量指向你的星际争霸2安装目录。具体操作步骤是右键此电脑→属性→高级系统设置→环境变量在系统变量中新建一个名为SC2PATH的变量值为你的安装路径。比如我的设置就是E:\Games\StarCraft II。这一步非常重要后续SMAC平台会通过这个环境变量来定位游戏资源。安装完成后建议先运行一次游戏确保能够正常启动。首次运行会要求登录战网账号如果没有可以注册一个免费账号。登录成功后进入游戏主界面就可以退出了这样能确保所有必要的游戏文件都已经正确初始化。2. Python虚拟环境配置为了避免与系统Python环境产生冲突强烈建议使用Anaconda创建一个独立的虚拟环境。我实测过Python 3.7和3.8版本都能很好地兼容SMAC平台这里以Python 3.7为例。首先打开Anaconda Prompt执行以下命令创建环境conda create -n sc2 python3.7 conda activate sc2创建环境后建议先升级pip到最新版本python -m pip install --upgrade pip虚拟环境配置时容易遇到的一个坑是环境变量问题。如果你之前安装过其他版本的Python可能会出现环境混乱的情况。我建议在创建新环境后执行conda list检查已安装的包确保是一个干净的环境。如果发现有不必要的包可以用conda remove package_name来清理。3. PyTorch及其扩展库安装PyTorch是SMAC平台的核心依赖之一版本选择非常关键。根据我的经验PyTorch 1.4.0到1.8.0之间的版本兼容性都还不错但考虑到torch-geometric等扩展库的依赖关系建议选择PyTorch 1.4.0。对于有NVIDIA显卡的用户安装GPU版本可以显著提升训练速度。安装前先用nvidia-smi命令检查CUDA驱动版本我机器上装的是CUDA 10.1所以安装命令如下conda install pytorch1.4.0 torchvision0.5.0 cudatoolkit10.1 -c pytorch安装完成后用以下命令验证是否安装成功python -c import torch; print(torch.cuda.is_available())如果输出True说明GPU版本的PyTorch已经正确安装。接下来安装torch-geometric及其依赖库。这是一个比较麻烦的过程我遇到过多次安装失败的情况。正确的安装顺序应该是先安装依赖库最后安装torch-geometric本身。首先需要下载四个预编译的wheel文件torch-scattertorch-sparsetorch-clustertorch-spline-conv这些文件可以从PyTorch Geometric的官方仓库下载注意选择与PyTorch 1.4.0和CUDA 10.1兼容的版本。下载后依次安装pip install torch_scatter-2.0.3cu101-cp37-cp37m-win_amd64.whl pip install torch_sparse-0.5.1cu101-cp37-cp37m-win_amd64.whl pip install torch_cluster-1.5.2cu101-cp37-cp37m-win_amd64.whl pip install torch_spline_conv-1.2.0cu101-cp37-cp37m-win_amd64.whl最后安装torch-geometricpip install torch-geometric4. SMAC平台安装与配置SMAC平台的安装相对简单可以直接从GitHub仓库安装。我推荐使用开发模式安装这样方便后续更新和调试git clone https://github.com/oxwhirl/smac.git pip install -e smac/安装完成后需要下载SMAC专用的地图文件。这些地图文件可以从SMAC的GitHub仓库或者相关资源网站获取。下载后解压你会得到一个名为SMAC_Maps的文件夹。这个文件夹需要放置在星际争霸2安装目录下的Maps文件夹中。如果安装目录下没有Maps文件夹常见于非默认安装路径的情况需要手动创建。完整路径应该是你的星际2安装路径\Maps\SMAC_Maps。放置好地图文件后可以用以下命令验证地图是否加载成功python -m smac.bin.map_list5. 常见问题排查在实际安装过程中我遇到过几个典型问题这里分享一下解决方案。第一个问题是星际争霸2路径错误。即使设置了SC2PATH环境变量某些情况下SMAC还是会尝试从默认路径查找游戏文件。解决方法是在代码中显式指定游戏路径或者在C盘创建符号链接mklink /D C:\Program Files (x86)\StarCraft II E:\Games\StarCraft II第二个问题是PyTorch和CUDA版本不匹配。如果遇到CUDA runtime error之类的提示建议彻底卸载PyTorch后重新安装指定版本。可以用以下命令彻底卸载pip uninstall torch conda uninstall pytorch第三个问题是地图加载失败。如果运行示例代码时提示找不到地图检查以下几点地图文件是否放在正确的路径下地图文件夹名称是否正确必须是SMAC_Maps文件权限是否正常特别是如果安装在系统盘6. 测试运行与验证完成所有安装后可以用SMAC提供的示例代码进行测试。最简单的测试是运行随机智能体python -m smac.examples.random_agents如果一切正常你应该能看到星际争霸2游戏窗口弹出并观察到随机行动的智能体。第一次运行可能会比较慢因为需要加载游戏资源。如果长时间没有响应可以检查任务管理器中的SC2进程是否正常运行。对于更复杂的测试可以尝试修改示例代码比如调整观察空间或奖励函数。我建议先从简单的3m地图3个海军陆战队对战开始测试这是调试时最常用的场景。7. 性能优化建议在Windows平台上运行SMAC有几个优化技巧可以提升性能关闭游戏渲染可以大幅提高运行速度。在代码中设置renderFalse可以节省大量资源。调整帧率限制。星际争霸2默认的帧率较高可以通过设置fps参数来降低。使用parallel_envs参数可以并行运行多个环境实例充分利用多核CPU的优势。如果使用GPU训练注意监控显存使用情况。SMAC的环境会占用不少显存可能需要调整批量大小。我在实际使用中发现即使是配置不高的机器通过合理调整这些参数也能获得不错的学习效率。GTX 1060级别的显卡就能支持基础的实验需求。