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

ray.rllib-入门实践-14:自定义多智能体强化学习-模型加载与评估 博客中, 没有对预训练的模型加载进行介绍, 这里进行补充。 阅读详情
AI摘要

本文介绍自定义多智能体强化学习环境及使用方法,与单智能体有差异且更复杂。步骤包括定义环境、注册环境、配置并使用环境执行训练与评估,还给出环境配置信息,最后介绍训练保存、评估模型的方式及汇总代码。

        我在博客 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:
            terminated["__all__"] = True
            truncated["__all__"] = True

        return obs,reward,terminated,truncated,info
    
    def render(self):
        # 简单打印环境状态
        print(f"rensering..........")

    def close(self):
        pass 

多智能体环境的测试:

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

class My_Multi_Agent_Env(MultiAgentEnv):
    def __init__(self,num_agents = 3):
        ## 初始化智能体数量
        self.num_agents = num_agents
        ## 初始化智能体ID列表
        self.agents = [f"agent_{i}" for i in range(self.num_agents)]
        ## 定义每个智能体的动作空间, 这里默认多个智能体的动作空间一样
        action_dim = 3
        self.action_space = spaces.Box(low=-1,high=1,shape=(action_dim,))
        ## 定义每个智能体的观测空间, 这里默认多个智能体的观测空间一样
        obs_dim = 5
        self.observation_space = spaces.Box(low=-1,high=1,shape=(obs_dim,))
        ## 定义整个环境的state
        self.state = np.random.rand(self.num_agents, obs_dim)
        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:
            terminated["__all__"] = True
            truncated["__all__"] = True

        return obs,reward,terminated,truncated,info
    
    def render(self):
        # 简单打印环境状态
        print(f"Current state: {self.state}")

    def close(self):
        pass 

## 使用示例
env = My_Multi_Agent_Env(num_agents=3)
for i in range(3):
    ## 重置环境
    obs,info = env.reset()
    print(f"reset, episode_{i}")
    while True:
        ## 动作采样,后面改为神经网络生成
        actions = {}
        for agent_name in env.agents:
            actions[agent_name] = env.action_space.sample()

        ## 动作执行
        obs,rewards,dones,truncates,infos = env.step(actions)
        print(f"\t step = {env.step_count}")

        if dones["__all__"]:
            break

二、注册多智能体环境

与单智能体环境方法一致。

from ray.tune.registry import register_env

def env_creator(env_config):
    return My_Multi_Agent_Env(env_config)
register_env("My_Multi_Agent_Env",env_creator)

三、 配置并使用多智能体环境

        在config中配置多智能体强化学习训练, 主要需要配置两个模块:

1. 配置使用多智能体环境

通过以下代码实现:

agents = ["red","blue"]
config = PPOConfig()
config = config.environment(env="My_Multi_Agent_Env",env_config = {"agents":agents})

2. 给每个智能体配置一个policy 

主要包含三个元素:

(1)policies: policy字典, 里面存储了多个policy, 每个policy有有一个名字。

(2)policy_mapping_fn 函数, 根据agent的名字或ID, 从policy中选择智能体。 

(3)policies_to_train列表, 记录哪个智能体的policy需要进行训练。

这三个元素共同组成一个model子模块 config.multi_agent。

具体配置方式如下:

## 4. 配置多智能体策略
agents = ["red","blue"]
env_config = {"agents":agents}
env = My_Multi_Agent_Env(env_config)
obs_space = env.observation_space
action_space = env.action_space

## case-1: 同构的智能体设置
# policies = {}
# policies["default_policy"] = (None, obs_space, action_space,{})  ## None 表示默认的智能体策略, 比如PPOConfig对应的就是PPOTorchPolicy
# def policy_mapping_fn(agent_name):
#     return "default_policy" 

## case-2: 异构的智能体设置, 异构效果更好。
policies = {}
for agent_name in agents:
    policies[agent_name] = (None, obs_space, action_space,{})  ## None 表示默认的智能体策略, 比如PPOConfig对应的就是PPOTorchPolicy

def policy_mapping_fn(agent_name,*args, **kwargs):
    return agent_name 

multi_agent_config = {
    "policies":policies,
    "policy_mapping_fn":policy_mapping_fn
}

policies_to_train = ["red","blue"]
## 5. 配置算法: 
agents = ["red","blue"]
config = PPOConfig()
config = config.environment(env="My_Multi_Agent_Env",env_config = {"agents":agents})

"""在下面这行命令,对多智能体的模型进行配置"""
config.multi_agent(policies=policies,policy_mapping_fn = policy_mapping_fn,policies_to_train = ["red","blue"])
# config.multi_agent = multi_agent_config ## 这种方式不能使用, 虽然能跑通训练,但是无法加载保存的模型。
## 因为新版本的PPOConfig把config.multi_agent定义为一个函数, 加载模型时也是把 config.multi_agent 作为一个函数使用,
## 这种赋值操作,会改变 config.multi_agent 的属性, 导致配置失败。 虽然运行能跑通,但是不是预期的结果。 
config.evaluation(evaluation_num_workers=1,) ## 必须要有。evaluation的配置,后面才能使用algo.evaluation()操作。
algo = config.build()

四、训练并保存多智能体

## 6. 执行训练
for i in range(2):
    iter_result = algo.train()
    print(f"iter_{i}")

## 7. 保存模型
import os 
checkpoint_dir = "F:/codes/RLlib_study/outputs"
os.makedirs(checkpoint_dir, exist_ok=True)
algo.save(checkpoint_dir)
print(f"save checkpoints to {checkpoint_dir}")

五、评估模型

评估方式1:

## 8. 评估模型
evaluation_result = algo.evaluate()
print("evaluated")
print(pretty_print(evaluation_result["evaluation"]))

评估方式2:可以实现与其他算法的智能体pk评估。

env_config = {"agents":["red","blue"]}
env = My_Multi_Agent_Env(env_config)
obs,info = env.reset()
step,done = 0,False
print("evaluate")
while not done:
    actions = {}
    for agent_id in agents:
        actions[agent_id] = algo.compute_single_action(obs[agent_id],policy_id=agent_id)
        ## 如果想与其他来源的智能体对抗,可以在这里添加其他智能体的计算action的函数。
        ## 这里可以添加任意智能体的模型。 
    obs, reward, terminated, truncated, info = env.step(actions)
    done = terminated["__all__"]
    step += 1
    print(f"step = {step}, \n\treward = {reward}, \n\taction = {actions}, \n\tobs = {obs}")

六、 汇总代码

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:
            terminated["__all__"] = True
            truncated["__all__"] = True

        return obs,reward,terminated,truncated,info
    
    def render(self):
        # 简单打印环境状态
        print(f"rensering..........")

    def close(self):
        pass 

## 2. 注册多智能体环境
def env_creator(env_config):
    return My_Multi_Agent_Env(env_config)
register_env("My_Multi_Agent_Env",env_creator)

## 3. 初始化 ray 
ray.init()

## 4. 配置多智能体策略
agents = ["red","blue"]
env_config = {"agents":agents}
env = My_Multi_Agent_Env(env_config)
obs_space = env.observation_space
action_space = env.action_space

## case-1: 同构的智能体设置
# policies = {}
# policies["default_policy"] = (None, obs_space, action_space,{})  ## None 表示默认的智能体策略, 比如PPOConfig对应的就是PPOTorchPolicy
# def policy_mapping_fn(agent_name):
#     return "default_policy" 

## case-2: 异构的智能体设置, 异构效果更好。
policies = {}
for agent_name in agents:
    policies[agent_name] = (None, obs_space, action_space,{})  ## None 表示默认的智能体策略, 比如PPOConfig对应的就是PPOTorchPolicy

def policy_mapping_fn(agent_name,*args, **kwargs):
    return agent_name 

multi_agent_config = {
    "policies":policies,
    "policy_mapping_fn":policy_mapping_fn
}

policies_to_train = ["red","blue"]
## 5. 配置算法: 
agents = ["red","blue"]
config = PPOConfig()
config = config.environment(env="My_Multi_Agent_Env",env_config = {"agents":agents})
# config.multi_agent = multi_agent_config ## 这种方式不能使用, 虽然能跑通训练,但是无法加载保存的模型。
## 因为新版本的PPOConfig把config.multi_agent定义为一个函数, 加载模型时也是把 config.multi_agent 作为一个函数使用,
## 这种赋值操作,会改变 config.multi_agent 的属性, 导致配置失败。 虽然运行能跑通,但是不是预期的结果。 
config.multi_agent(policies=policies,policy_mapping_fn = policy_mapping_fn,policies_to_train = ["red","blue"])
config.evaluation(evaluation_num_workers=1,) ## 必须要有。evaluation的配置,后面才能使用algo.evaluation()操作。
algo = config.build()

## 6. 执行训练
for i in range(2):
    iter_result = algo.train()
    print(f"iter_{i}")

## 7. 保存模型
import os 
checkpoint_dir = "F:/codes/RLlib_study/outputs"
os.makedirs(checkpoint_dir, exist_ok=True)
algo.save(checkpoint_dir)
print(f"save checkpoints to {checkpoint_dir}")

## 8. 评估模型
## 方法1:
evaluation_result = algo.evaluate()
print("evaluated")
print(evaluation_result["evaluation"])

## 方法2
env_config = {"agents":["red","blue"]}
env = My_Multi_Agent_Env(env_config)
obs,info = env.reset()
step,done = 0,False
print("evaluate")
while not done:
    actions = {}
    for agent_id in agents:
        actions[agent_id] = algo.compute_single_action(obs[agent_id],policy_id=agent_id)
        ## 如果想与其他来源的智能体对抗,可以在这里添加其他智能体的计算action的函数。
        ## 这里可以添加任意智能体的模型。 
    obs, reward, terminated, truncated, info = env.step(actions)
    done = terminated["__all__"]
    step += 1
    print(f"step = {step}, \n\treward = {reward}, \n\taction = {actions}, \n\tobs = {obs}")


【ray】【Rllib】关键概念 在特定的环境和政策条件下,政策评估会产生一批批的经验。动作->奖励->下一个状态->训练->重复的模拟迭代,直到结束状态,被称为一个插曲,或在RLlib中,一个展示。RL仿真反馈循环重复收集一个(单代理情况)或多个(多代理情况)策略的数据,在这些收集的数据上训练策略,并确保策略的权重保持同步。因此,收集的环境数据包含观察结果、采取的行动、收到的奖励和所谓的完成标志,指示代理在模拟中播放的不同情节的边界。策略是一个将环境的观察映射到要采取的动作的函数,通常写为π(s(t))-> a(t)。 阅读详情

相关推荐

【ray】【RLlib】【Algorithms 算法】

0.0对应于均匀概率。training(*,vtrace:bool| None =,use_critic:bool| None =,use_gae:bool| None =,lambda_:float| None =,clip_param:float| None =,use_kl_loss:bool|无=,kl_coeff:浮点|无=,kl_target:float|无=,τ:浮点|None =,target_update_frequency:int|无=,**kwargs)→ APPOConfig。

wq6qeg88的博客 1196

机器学习框架Ray -- 1.4 Ray RLlib的基本使用

RLlib是一种建立在Ray之上的行业级别的强化学习(RL)库。RLlib提供了高度可扩展性和统一的API,适用于各种行业和研究应用。定义了一个名为SimpleCorridor的gym环境,使用PPO算法进行并行强化学习。

wenquantongxin的博客 3873

智能体在车联网中的应用:第31天 基于RLlib的多智能体PPO实战:MAPPO算法解决simple_spread合作任务

本文介绍了如何利用RLlib框架实现多智能体强化学习算法MAPPO,解决simple_spread任务。首先分析了RLlib的架构设计理念和多智能体支持特性,包括策略映射、环境包装等核心组件。然后详细解析了simple_spread环境的任务定义、观察空间和奖励函数设计。最后回顾了MAPPO算法原理,说明其如何在RLlib中实现集中式训练与分布式执行的CTDE范式。文章提供了完整的安装指南和环境配置方法,帮助读者快速搭建多智能体强化学习实验环境。

IT深耕十余载,大道之简 1332

深度强化学习框架Ray|RLLib|Tune学习笔记

文章目录0 Ray深度强化学习框架概述1 Ray使用场景—多进程2 Ray使用场景—进程间通信3 Tune使用场景—调参4 RLLib使用场景—RL算法5 Ray、Tune和RLLib关系6 Ray系统架构(实现多进程和跨节点通信)6.1 Ray系统架构—概述6.2 Ray系统架构—内存管理7 Tune系统架构(实验资源分配+调参)8 RLLib系统架构(Trainer、Policy和Agent)8.1 Policy实现功能8.2 Trainer实现功能参考文献 0 Ray深度强化学习框架概述 Ray—

SL_World的博客 9323

RLlib+CARLA自动驾驶仿真训练实战:中文生产级配置指南

强化学习(RL)在自动驾驶仿真中的核心挑战在于高效、稳定、可扩展的训练工程实现。其原理依赖于环境交互采样、策略梯度更新与分布式经验回放的协同;技术价值体现在突破单机性能瓶颈、支撑多智能体联合训练、保障工业级checkpoint兼容性与跨平台复现能力;典型应用场景包括端到端驾驶策略研发、智驾算法闭环验证及车队级仿真训练平台搭建。本文聚焦 RLlib 与 CARLA 的深度集成,覆盖同步模式配置、多智能体环境封装、传感器数据压缩传输、自定义预处理器设计等关键实践环节,特别针对中文开发者提供开箱即用的配置模板与6

davy57345的博客 453

Ray 分布式简单教程(1)

1.概览 Ray为构建分布式应用程序提供了一个简单、通用的API。 Ray主要作用就是提供一个调度平台,能够将各个分布式集群以及远程云端的服务器资源调度管理,只需稍加改动,就能将单机运行的代码部署到大规模集群上。 在Ray Core上有几个库,用于解决机器学习中的问题: Tune:可伸缩的超参数调优 RLlib:工业级强化学习 Ray Train:分布式深度学习 Datasets:分布式数据加载和计算(beta) 以及用于将 ML 和分布式应用程序投入生产的库: Serve:可扩展和可编程的服务 Work

weixin_43229348的博客 4524

RLlib简介:一个可组合和可扩展的强化学习计算库

编者注:更多使用强化学习构建人工智能应用的内容请关注2018年4月10-13日人工智能北京大会。在之前的文章中,我概述了强化学习(RL)在工业中的新兴应用。我首先列举了任何想要应用RL的人面临的挑战,包括对大量数据的需求,以及复制研究结果的难度以及派生出关键任务应用所需的错误估计。就算如此,RL在某些领域的成功一直是媒体广泛报道的主题。这引起了人们的兴趣,公司正在开始探讨我在之前的文章中描述的一些

OReillyData 3932

RLlib集成CARLA自动驾驶仿真训练快速启动指南

强化学习(RL)在自动驾驶仿真中的应用,核心在于将算法框架与高保真环境可靠对接。CARLA作为主流开源仿真器,提供丰富传感器模型与交通场景,但其重量级架构与RLlib等分布式训练框架存在天然兼容鸿沟——从gym.Env接口不匹配、多进程通信崩溃,到跨平台构建(Linux/Windows)、云端GPU资源调度失配。本方案聚焦工程落地,通过分层解耦设计(Server/Client/Env)、配置驱动的YAML统一管理、预验证的CARLA+RLlib版本组合(如0.9.11+2.6),解决稳定性、可扩展性与复现性

congmi8078的博客 418

【人工智能】主要的强化学习框架

强化学习框架是用于设计、实现和测试强化学习算法的软件库或平台。以下是一些流行的强化学习框架

大雨淅淅的博客 1790

RLlib+CARLA自动驾驶仿真训练实战:高鲁棒分布式强化学习流水线

强化学习(RL)在自动驾驶决策中的落地,核心挑战在于仿真环境与训练框架的深度协同。CARLA作为高保真城市驾驶仿真平台,提供语义分割、LiDAR、多相机及物理引擎等关键能力;而RLlib依托Ray构建的分布式Actor-Critic架构,天然支持异步rollout、多智能体协同与弹性容错——二者结合,解决了PyTorch或Stable-Baselines3原生实现中常见的训练不稳定、reward稀疏、worker频繁崩溃等工程痛点。该技术路径已广泛应用于高校算法验证、车企闭环测试与机器人创业公司的低成本路测

davy57345的博客 442

Ray实战指南:AI工程规模化落地的分布式基础设施

Ray是一种面向AI工作负载的分布式计算框架,其核心原理是通过轻量级任务(task)、有状态Actor和共享内存对象(object)实现无感扩展。相比传统大数据工具如Spark,Ray专为高显存占用、长时运行、低延迟交互的AI场景设计,在LLM微调、强化学习训练和在线推理中展现出显著技术价值:支持QLoRA量化微调、百万级并行仿真环境、GPU资源感知弹性扩缩容。典型应用场景包括大模型训练加速、机器人仿真训练、AIGC服务部署等。本文基于真实生产案例,详解Ray Core架构、AIR运行时集成与Serve服务

weixin_30899023的博客 362

如何在 RHEL 8 上通过强化学习和多智能体系统优化供应链管理中的库存调度与运输路径?

维度含义类型库存水平各仓库当前库存数量Continous需求预测各区域未来 24h 需求预测Continous车辆位置当前车辆所在节点Discrete道路拥堵等级某路段实时拥堵评级(0‑5)Discretestate = [库存1, 库存2, ..., 预测1, 预测2, ..., 车1位置, 车2位置, 拥堵等级]动作编号含义0保持当前库存1提高库存补货量2减少库存补货量3路径选择 A4路径选择 B5路径选择 C动作总数与智能体角色有关。

A5数据 1111

Ray:面向AI工程的分布式原语操作系统

分布式计算是AI规模化落地的核心瓶颈,传统框架如Spark、Dask难以应对AI特有的状态强依赖、异构资源调度与毫秒级通信需求。Ray以Task、Actor和Object Store三大原语重构分布式抽象,提供零侵入的Python原生体验与统一内存层,显著提升GPU利用率与数据流转效率。其核心价值在于将复杂调度语义封装为开发者熟悉的函数式与面向对象范式,支撑强化学习训练、LLM微调与推理服务等典型AI Engineering场景。本文深入解析Ray如何成为现代AI基础设施的操作系统级底座。

weixin_30765505的博客 453

在Windows 10上用TensorFlow 1.13复现OpenAI的MADDPG多智能体实验(含MPE环境配置避坑指南)

本文详细介绍了在Windows 10系统上使用TensorFlow 1.13复现OpenAI的MADDPG多智能体强化学习实验的全流程,包括环境配置、MPE环境设置、核心代码解析及常见问题解决方案。特别针对TensorFlow 1.x版本兼容性问题提供了避坑指南,帮助开发者高效实现多智能体深度强化学习算法的复现与优化。

weixin_30367873的博客 240

RayRLlib:可扩展的分布式强化学习

RayRLlib:可扩展的分布式强化学习 1.背景介绍 随着人工智能技术的不断发展,强化学习(Reinforcement Learning,RL)作为一种重要的机器学习范式,在诸多领域得到了广泛应用。强化学习旨在训练一个智能体(Agent)通过与环境(Environment)的交互来

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 593

【推荐算法】召回模型总结

【推荐算法】召回模型总结

m0_48086806的博客 6239

Ray Docker 镜像构建体系:CPU/GPU 分层架构与标签规则详解

本文以 [docker/README.md](https://link.gitcode.com/i/9f666f60eadda0e8f545594572d30336) 为骨架,系统梳理 Ray 官方容器镜像的构建方式与发布形态:从 `ubuntu:22.04` 与 `nvidia/cuda` 两条基础链出发,逐层拆解 `base-deps → ray → ray-llm/ray-ml` 的分层依赖

gitblog_00521的博客 969

几何修复_ANSYS流体分析:几何前处理

建模及几何处理工具非常多,选择起来让人眼花缭乱。对于仿真而言,高效的对几何进行清理及生成符合仿真要求的几何至关重要。ANSYS SpaceClaim Direct Modeler是基于直接建模思想的新一代3D高效率建模和几何编辑修补软件。SCDM提供了当今最快速、最富有创意的直接建模解决方案。由于它的直接建模能力即使对于导入的其它3D模型(如catia、proe、solid works创建的几何)...

weixin_35778830的博客 2416

13周掌握强化学习:从基础到实战的完整指南

强化学习是机器学习三大范式之一,通过智能体与环境的交互学习最优决策策略。其核心原理基于马尔可夫决策过程(MDP),涉及价值函数、策略优化等关键概念。在工程实践中,强化学习已成功应用于游戏AI、机器人控制、金融交易等多个领域。掌握强化学习需要扎实的概率论、线性代数和优化理论基础,同时熟悉Python编程和主流框架如PyTorch、OpenAI Gym。本指南提供的13周学习路径,从数学基础到经典算法实现,再到项目实战,帮助学习者系统掌握Q-Learning、策略梯度等核心算法,并解决训练不收敛等常见问题。通过

dgqvhtlwq472235338的博客 496

项目篇 | 图书管理系统 | 管理员模块 | 概述

图书管理系统管理员模块概述

百栗.的博客 404

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

Systemcall名屋 1685

Ray 安装完全指南:从 pip、conda、Docker 到 Java/C++ 的多场景部署

Ray 是一个面向 AI 计算的分布式运行时,由核心分布式运行时与一组加速机器学习负载的 AI 库(Ray Data、Ray Train、Ray Tune、Ray Serve、RLlib)组成。本文以仓库内 [安装文档](https://link.gitcode.com/i/a470f057a29120a0624d0179def636af) 为主体,结合 [python/setup.py](htt

gitblog_01045的博客 450

SOME/IP协议详解「1.0·概述」

主要讲解什么是someip,

雪云飞星的博客 5367
上一篇: ray.rllib-入门实践-12:自定义policy
下一篇: ray.rllib-入门实践-14:自定义多智能体强化学习-模型加载与评估
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值