【Agent】动态规划法求解最优联盟结构问题(python)

动态规划法求解最优联盟结构问题(python3)

学习我喜欢的Agent的知识,不得不学习的是联盟结构的生成问题。以论文文献:一种快速构建最优联盟结构的方法为学习材料,以下概念均来自该文献。

1.多Agent联盟的概念

联盟的形成是多Agent系统中的一个关键问题。在多Agent系统中,由于单个Agent的资源和能力的限制,为了高效地完成给定的任务,需要多个Agent组成联盟以便进行高效的合作。然而即使是完成相同的任务,多个Agent采用不同的联盟,其得到的总回报(一般用联盟值来表示)是不相同的。当不同联盟的联盟值由特征函数给出后,如何寻求使各个联盟值的总和为最大的联盟,这就是联盟的形成问题。

联盟的数学表示方式,感兴趣的可以查看论文文献:一种快速构建最优联盟结构的方法

2.动态规划法的介绍

学习资料:30分钟弄懂动态规划算法详细讲解(超详细)

五大常用算法——动态规划算法详解及经典例题

动态规划法的有效性依赖于问题本身所具有的两个重要性质:最优子结构性质和子问题重叠性质。从一般意义上讲,问题所具有的这两个性质是该问题可用动态规划法求解的基本要素。

当问题的最优解包含其子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划法求解的重要线索。

可用动态规划法求解问题应具备的另一个基本要素是子问题重叠性质。若用递归算法自顶向下解此问题时,每次产生的子问题并不总是新问题,有些子问题被重复计算多次。动态规划法正是利用了这种子问题的重叠性质,对每个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此问题时,只是简单地用常数时间查看一下结果。通常,不同的子问题个数随输入问题的大小呈多项式或指数级增长。因此,用动态规划法通常只需要多项式时间或指数级时间,从而获得较低的时间复杂度。

3.求解思路

3.1研究最优联盟结构的特征

文章研究最优联盟结构问题不考虑重叠联盟的情况,也就是在得到的最优联盟结构中,每一个Agent只能加入唯一的一个联盟中,不存在两个联盟的交集不为空集的情况。每个联盟的联盟值为该联盟内的所有Agent的回报值。比如,我曾经写过的一篇博文:多配送中心车辆调度问题,整个物流配送系统可以看作是一个求解最优联盟结构的问题,考虑哪几家配送中心组成的联盟(集合)可以使整个物流系统的总成本最小化,而这个总成本的刻画可以看作是每个配送中心自身的配送成本的累加和,这时候就把单个配送中心看成是一个Agent。

文献中论述了多Agent联盟求解最优联盟结构的问题满足动态规划法的两个必要条件,即最优子结构性质和子问题重叠性质,因而可以采用动态规划的思想在多项式时间内求解出最优联盟结构。

3.2找出最优联盟结构的状态转移方程

3.3算法实现

在这里插入图片描述
文献从纯理论角度论述了采用动态规划的思想较穷举法求解最优联盟结构问题的明显优势,从计算时间复杂度角度看,时间复杂度是O(3^n)。

4.小结

现在学习更多的关注是我能用学到的这个算法思想来干什么,这篇文章在我库上存了很久了,最初是想着把这个动态规划求解最优联盟结构问题的算法编出来的,但编出来之后呢,干啥子,我觉得我还是不会动态规划算法,我觉得动态规划更多的是一种思考问题的方法,穷举法应该是万能的,但系统是复杂的不可能枚举出所有的可能并且在有限时间内利用计算机求解得到精确解。关注点应该落在问题本身,我常犯的错误就是这个问题到底是什么,有没有研究的必要都不清楚,就下笔计划着写算法实现部分了,后果当然是被要求回炉再造。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Logintern09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值