当前位置: 首页> 健康> 知识 > 网站设置访问密码_看空间_seo培训教程_今日国内新闻摘抄十条

网站设置访问密码_看空间_seo培训教程_今日国内新闻摘抄十条

时间:2025/7/19 19:23:03来源:https://blog.csdn.net/C7211BA/article/details/142287349 浏览次数:0次
网站设置访问密码_看空间_seo培训教程_今日国内新闻摘抄十条

程序功能

这段代码实现了一个多智能体强化学习环境,其中两个智能体在5x5的网格上移动:
智能体目标:
Agent 1 从 (0, 0) 出发,目标是 (4, 4)。
Agent 2 从 (4, 4) 出发,目标是 (0, 0)。
动作空间:每个智能体有4个动作(上、下、左、右)。
奖励:到达目标位置获得 10 分,否则每步 -1 分。
终止条件:两个智能体都到达目标。
主程序中,两个智能体在随机动作下执行5个回合,并打印每一步的状态和奖励。
在这里插入图片描述

代码

import numpy as np
import gym
from gym import spaces# 定义多智能体环境
class MultiAgentEnv(gym.Env):def __init__(self):super(MultiAgentEnv, self).__init__()# 定义网格世界大小self.grid_size = 5# 智能体的初始位置self.agent1_pos = np.array([0, 0])  # Agent 1 起始点self.agent2_pos = np.array([4, 4])  # Agent 2 起始点# 智能体的目标位置self.goal1 = np.array([4, 4])  # Agent 1 的目标self.goal2 = np.array([0, 0])  # Agent 2 的目标# 定义动作空间和状态空间self.action_space = spaces.Discrete(4)  # 上、下、左、右 4 个动作self.observation_space = spaces.Box(low=0, high=self.grid_size - 1, shape=(2,), dtype=np.int32)def reset(self):# 重置智能体的位置self.agent1_pos = np.array([0, 0])self.agent2_pos = np.array([4, 4])return self._get_obs()def step(self, actions):# 传入两个智能体的动作action1, action2 = actions# 更新智能体1的位置self.agent1_pos = self._move(self.agent1_pos, action1)# 更新智能体2的位置self.agent2_pos = self._move(self.agent2_pos, action2)# 检查是否到达目标reward1 = 10 if np.array_equal(self.agent1_pos, self.goal1) else -1reward2 = 10 if np.array_equal(self.agent2_pos, self.goal2) else -1done1 = np.array_equal(self.agent1_pos, self.goal1)done2 = np.array_equal(self.agent2_pos, self.goal2)done = done1 and done2return self._get_obs(), [reward1, reward2], done, {}def _move(self, position, action):# 根据动作移动智能体if action == 0 and position[0] > 0:  # 向上position[0] -= 1elif action == 1 and position[0] < self.grid_size - 1:  # 向下position[0] += 1elif action == 2 and position[1] > 0:  # 向左position[1] -= 1elif action == 3 and position[1] < self.grid_size - 1:  # 向右position[1] += 1return positiondef _get_obs(self):# 返回两个智能体的当前状态return np.array([self.agent1_pos, self.agent2_pos])# 运行多智能体环境
if __name__ == '__main__':env = MultiAgentEnv()for episode in range(5):print(f"Episode {episode + 1}:")obs = env.reset()done = Falsestep = 0while not done:actions = [env.action_space.sample(), env.action_space.sample()]  # 随机动作obs, rewards, done, info = env.step(actions)step += 1print(f" Step {step}:")print(f"  Agent 1 Position: {obs[0]}, Reward: {rewards[0]}")print(f"  Agent 2 Position: {obs[1]}, Reward: {rewards[1]}")print("Episode finished!\n")
关键字:网站设置访问密码_看空间_seo培训教程_今日国内新闻摘抄十条

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: