ray.rllib-入门实践-13:自定义多智能体强化学习

        我在博客 ray.rllib-入门实践-10:自定义环境 中介绍了自定义 rllib 强化学习环境的方法与使用示例,但是那个示例是针对单智能体强化学习环境的。自定义多智能体强化学习环境及使用, 与单智能体方法步骤类似,单细节上有许多不同, 相对更复杂一些 。

        大概的三个步骤是: 

        1. 定义多智能体强化学习环境

        2. 向ray注册环境

        3. 配置并使用环境执行训练与评估。

环境配置:

        torch==2.5.1

        ray==2.10.0

        ray[rllib]==2.10.0

        ray[tune]==2.10.0

        ray[serve]==2.10.0

        numpy==1.23.0

        python==3.9.18

一、 自定义多智能体强化学习环境 

需要继承自 “ray.rllib.env.multi_agent_env.MultiAgentEnv”. reset 函数和step函数接口需要与下面保持严格一致。每一个输出都变成了 key:value 字典。

import ray 
from ray import tune 
from ray.rllib.algorithms.ppo import PPO, PPOConfig 
from ray.tune.registry import register_env
from ray.rllib.env.multi_agent_env import MultiAgentEnv 
from gymnasium import spaces
import numpy as np
from sympy import pretty_print 

## 1. 定义多智能体环境
class My_Multi_Agent_Env(MultiAgentEnv):
    def __init__(self,env_config):
        ## 初始化智能体ID列表
        self.agents = env_config["agents"]
        ## 定义每个智能体的动作空间, 这里默认多个智能体的动作空间一样
        self.action_space = spaces.Box(low=-1,high=1,shape=(3,))
        ## 定义每个智能体的观测空间, 这里默认多个智能体的观测空间一样
        self.observation_space = spaces.Box(low=-1,high=1,shape=(5,))
        self.step_count = 0

    def reset(self, *, seed=None, options=None):
        self.step_count = 0
        obs,info = {}, {}
        for agent_name in self.agents:
            obs[agent_name] = self.observation_space.sample()
            info[agent_name] = {}
        return obs,info
    
    def step(self,action):
        self.step_count += 1

        obs,reward,terminated,truncated, info = {},{},{},{},{}
        for agent_name in self.agents:
            obs[agent_name] = self.observation_space.sample()
            reward[agent_name] = 0
            terminated[agent_name] = False
            truncated[agent_name] = False
            info[agent_name] = {}

        terminated["__all__"] = False
        truncated["__all__"] = False
        if self.step_count > 10:
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值