《多智能体学习:强化学习方法》——代码实现

本文探讨了强化学习在多智能体系统中的应用,包括Nash Q-Learning、WoLF-PHC策略爬山算法和Minimax Q-Learning。通过详细阐述智能体、环境创建及训练过程,为读者提供了这些算法的实现指南。
摘要由CSDN通过智能技术生成

Nash-QLearning

论文:Nash Q-learning for general-sum stochastic games
链接:http://www.jmlr.org/papers/volume4/hu03a/hu03a.pdf

智能体

import numpy as np
import nashpy

class NashQLearner():
    def __init__(self,
                 alpha=0.1,
                 policy=None,
                 gamma=0.99,
                 ini_state="nonstate",
                 actions=None):

        self.alpha = alpha
        self.gamma = gamma
        self.policy = policy
        self.actions = actions
        self.state = ini_state

        # q values (my and opponent)
        self.q, self.q_o = {
   }, {
   }
        self.q[ini_state] = {
   }
        self.q_o[ini_state] = {
   }

        # nash q value
        self.nashq = {
   }
        self.nashq[ini_state] = 0

        # pi (my and opponent)
        self.pi, self.pi_o = {
   }, {
   }
        self.pi[ini_state] = np.repeat(1.0/len(self.actions), len(self.actions))
        self.pi_o[ini_state] = np.repeat(1.0/len(self.actions), len(self.actions))

        self.previous_action = None
        self.reward_history = []
        self.pi_history = []

    def act(self, training=True):
        if training:
            action_id = self.policy.select_action(self.pi[self.state])
            action = self.actions[action_id]
            self.previous_action = action
        else:
            action_id = self.policy.select_greedy_action(self.pi)
            action = self.actions[action_id]

        return action

    def observe(self, state="nonstate", reward=None, reward_o=None, opponent_action=None, is_learn=True):
        """
            observe next state and learn 
        """
        if is_learn:
            self.check_new_state(state) # if the state is new state, extend q table
            self.learn(state, reward, reward_o, opponent_action)

    def learn(self, state, reward, reward_o, opponent_action):
        self.reward_history.append(reward)
        self.q[state][(self.previous_action, opponent_action)] = self.compute_q(state, reward, opponent_action, self.q)
        self.q_o[state][(self.previous_action, opponent_action)] = self.compute_q(state, reward_o, opponent_action, self.q_o)

        self.pi[state], self.pi_o[state] = self.compute_pi(state)
        self.nashq[state] = self.compute_nashq(state)

        self.pi_history.append(self.pi[state][0])

    def compute_q(self, state, reward, opponent_action, q):
        if
【资源说明】 基于生物启发式算法多智能体强化学习算法python实现源码+项目说明+模型及注释.zip ## 项目介绍: 多智能体系统(MAS)由于具有解决复杂任务的灵活性、可靠性和智能性,已被广泛地应用于不同的应用领域,如计算机网络、机器人和智能电网等。通信是多代理世界保持组织和生产的重要因素。然而,以往的多代理通信研究大多试图预先定义通信协议或采用额外的决策模块进行通信调度,这将造成巨大的通信开销,并且不能直接推广到一个大型代理集合。本文提出了一个轻量级的通信框架:**基于信息素协同机制的分布式深度Q网络算法(Pheromone Collaborative Deep Q-Network, PCDQN)**,它结合了深度Q网络和stigmergy机制。它利用stigmergy机制作为部分可观察环境下独立强化学习代理之间的间接沟通桥梁。我们证明了PCDQN框架的优越性,同时也将我们的模型转移到解决多代理路径搜索问题上。利用PCDQN框架,多代理编队能够学习适当的策略,成功地在雷区导航环境中获得最优路径。 *** ## 实验环境 ```sh Windows10操作系统,8GB内存,2核Intel Core i7-6500U pytorch-1.4.0+cpu python 3.8 ``` 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值