前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的动态规划思想主题范文,仅供参考,欢迎阅读并收藏。
Abstract: It is very important for the routing optimization of the apparel chain distribution to raise the service level, reduce the product costs and improve the enterprise benefit of the apparel chain enterprise. According to the basic thought of the dynamic programming, and in combination with the problem of the routing selection and the time-varying factor in the apparel chain distribution logistics process, the impact factor of the unexpected events is introduced and the improved routing optimization algorithm suitable for the apparel chain logistics distribution process. In conjunction with the specific example, the effectiveness and the feasibility of the routing optimization algorithm is validated and the method is too extended to the touting selection of another logistics distribution.
Key words: dynamic programming; apparel chain; distribution; routing optimization
0 引 言
近年来,随着市场经济的不断深入以及人们生活水平的不断提高,服装连锁经营在我国有了很大的发展,品牌服装的销售量日益增加,连锁门店市场的竞争越来越激烈[1]。在电子商务出现以后,由于电子商务突破了时空限制、新媒体对服装全方位的展示、低的交易成本与低库存、较少的中间环节所带来的交易费用的优势等,给连锁服装门店的经营带来了新的挑战[2-3]。在人们日益追求服装个性化、高增值服务的时代,在原材料与人力资源成本挖掘的空间越来越小的情况下,服装连锁企业越来越关注作为企业第三利润源泉的物流的作用[3],通过降低物流成本、加快配送速度、优化配送路径等措施来提高企业的竞争力。
在优化配送路径方面,人们做了很多工作。20世纪50年代,美国数学家Bellman等人在研究多阶段决策过程的优化问题时提出了动态规划法。动态规划法解决了线性规划和非线性规划无法处理的多阶段决策问题[4]。后来,试图将图的广度优先搜索算法、蚁群算法与动态规划法结合求解关键路径问题[5-9],或者简单使用动态规划法研究物流配送的最短路径[10-11],但所有这些方法都无法对时变环境下的路径进行随机选择。
本文根据动态规划的基本思想,通过对传统动态规划模型的改进,将服装物流配送过程中因道路、天气、车辆状况等引起的突发事件考虑到模型中,提出了一类高效实用的服装物流配送路径优化方法。通过该模型的应用,服装连锁企业可以得到尽量优化的配送路径,对降低配送成本、提高服务质量、提高企业经济效益具有重要的意义。
1 动态规划法简介
1.1 动态规划法的基本思想[4]
美国数学家Bellman等人在研究多阶段决策过程的优化问题时,通过将多阶段过程转化为一系列单阶段问题,然后逐一求解,创立了解决多阶段过程的动态规划方法,即通常所说的Bellman最优性原理。动态规划算法的基本思想是将待求解问题分解为若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。因此,为了运用动态规划法,所考虑的问题:(1)必须能够分解为相互重叠的子问题;(2)满足最优子结构的特性――子问题的局部最优将导致整个问题的全局最优;(3)无后效性――当前状态是此前历史的总结,此前的历史只能通过当前的状态去影响未来的决策。
1.2 动态规划法的求解过程
各个子问题之间的重叠关系通过状态转移方程(或动态规划函数)来表现。为了避免重复计算,将子问题的解填入表中。
动态规划法利用最优性原理,采用自底向上的方式,先求出子问题的最优解,然后逐步求得整个问题的最优解,其求解思路如图2所示。
因此,使用动态规划法进行决策,需要将原问题分解为若干个相互重叠的子问题,进行分段决策;然后根据最优性原理,分析问题,建立状态转移方程(或动态规划函数);最后采用自底向上的求解方法,求出问题的解,从而实现动态规划过程。
为了构建简单实用的服装运输车辆配送路径选择的数学模型,假设:
(1)配送车辆满足一次配送要求;
(2)配送点是可达的;
(3)完成一次配送所采用的运输方式相同;
(4)单位成本固定;
(5)配送时间在可接受的范围内。
所以,从服装物流配送中心S出发的服装物流配送最短路径长度为27,最优路径为SCBADS。
服装连锁企业一般位于人口稠密、交通拥挤的市中心,另外受天气(如广东、福建等沿海地区的台风,北方的雾霾)和道路维护等的影响,在服装配送过程中,随时都会发生道路拥堵、车辆故障等突发事件,而且这种突发事件一旦发生,毫无疑问会延误对其他连锁店的配送时间。因此,在使用动态规划法设计服装物流最短路径时,必须考虑这些因素的影响。假设突发事件的影响因子为e,其取值为0?刍e≤10,若e=1表明道路通畅、能见度正常,e?刍1表明道路、天气等优于正常情况,e?酆1表明道理拥堵、能见度低,此值越大,说明情况越糟。
假设图3中各边的权重是e=1时的情况,CB段和DS段因道路维护造成拥堵,使得突发事件影响因子e?酆1,令e=5,则图3调整后得到图4所示。
对图4使用上述动态规划法,得到表2。
由表2可知,当CB段与DS段发生突发时间造成拥堵时,有两条最优路径可选,即SCDBAS或SBDCAS,且最优路径长度均为28。遇到这种多路径可选的情况,可根据车辆积载情况、配送的具体情况合理选择,在此不作详细讨论。
论文关键词:背包问题,动态规划法,回溯法
10/1背包问题
0-1背包问题:给定n种物品和一背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。问应如何选择装入背包中物品,使得装入背包中物品的总价值最大?
对于一个实例:物品种类N=4,背包容量C=10,物品重量数组W={3,5,2,1},相应价值数组V={9,10,7,4}。找一个n元0-1向量(x1,x2,x3….xn)xi∈{0,1},1≤i≤n.使得,达到最大。下面分别以动态规划法和回溯法来解决这个实例。
2动态规划法
动态规划法的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。用一个表来保存记录所有已解决的子问题的答案,在需要的时候再找出已求得的答案,避免重复的计算。
动态规划法适用于解最优化问题。通常可按以下4个步骤:
(1)找出最优解的性质并刻画其结构特征。
(2)递归的定义最优解。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时到得的信息,构造最优解。
对于所给0-1背包问题的子问题:
,
的最优值为m(i,j),即m(i,j)是背包容量为j,可悬着物品为i,i+1,….,n时0-1背包问题的最优值。由于0-1背包问题的最优子结构性质,可以建立计算m(i,j)的如下递归式:
(1.1)
(1.2)
从上面算法的执行过程中可以看出假设有Q(n)个子问题,每一个子问题最多需要m次决策,则计算的频率为nm,回溯的频率为n,那么整个过程的算法的时间复杂度为T(n)=nm+n,即为Q(nm)。
3回溯法。
回溯法在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。回溯算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。简单地说就是确定解空间,建立解空间树,用深度优先搜索算法递归搜索解空间树,并同时注意剪枝。
用回溯法解题的步骤:
(1)针对所给问题定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效的搜索。
根据上述0-1背包问题的数学描述解向量可以表示成X={X,X,...X|X=0或=1}若X=0,表示第i个物品不装入背包,X=1,表示将第i个物品装入背包。
可以用树的形式将解空间表达出来。树中从第i层到第i+1层的边上的值表示解向量中X的取值,并假定第i层的左子树描述第i个物品被装入背包的情况,右子树描述第i个物品被拒绝的情况。则该0-1背包问题的状态空间树就表示为一棵高度为n的完全二叉树。若n=3时则此0-1背包问题的解空间的结构如图1-1所示。从根结点到叶子结点的任一路径就对应解空间中的一个解向量
图1-1n=3时,0-1背包问题的解空间树
用回溯法求解0-1背包问题时,可以按照物品的单位价值从大到小排序。计算当前节点的上界,搜索左子树。只有当右子树包含可行解时才搜索右子树。剪去右子树的条件是当前价值加上剩余物品的总价值小于当前的最优总价值时,不需搜索右子树,可将右子树剪去。回溯法用一定的剪枝进行优化,算法的时间复杂度为O(n*2n),n为物品个数。
4总结
动态规划算法:动态规划可以把困难得多阶段决策变换为一系列相互联系比较容易的单阶段问题。对于背包问题可以对子过程用枚举法求解,而且约束条件越多,决策的搜索范围越小,求解也越容易。但是对于规模较大的问题它并不是一个理想的算法。最重要的原因就是它的维数障碍。即计算和存储量的需要对于状态空间和决策空间的维数的增长呈指数增长关系,这样惊人的增长速度是计算机难以承受的。这就使得直接的动态规划方法求解规划较大的背包问题发生了困难,且目前尚没有好的解决办法。
回溯法:回溯法需要为问题定义一个解空间,这个解空间必须至少包含问题的一个解(可能是最优的)。使用递归回溯法解决背包问题的优点在于它算法思想简单,而且它能完全遍历搜索空间,肯定能找到问题的最优解。但是由于此问题解的总组合数有2个,因此,随着物件数n的增大,其解的空间将以2级增长,当n大到一定程度上,用此算法解决背包问题将是不现实的。
用此两种方法都能得到问题的最优解,从其时间复杂度来看,两者的速度都较慢。
参考文献
1 王晓东.算法设计与分析[M] .北京 清华大学出版社 2003.
2 王红梅.算法设计与分析[M] .北京 清华大学出版社 2006.
关键词:树型动态规划;物流配送;配送中心选址
中图分类号:F252.14 文献标识码:A
摘 要:物流配送中心选址问题在物流网络规划中占有十分重要的地位,选址的合理与否直接影响配送企业的效益。文章基于树型动态规划,提出了物流配送中心的最佳选址算法。该算法利用树型结构简化配送网络,降低了选址的复杂性,具有较高的稳定性。实验表明,相较于目前较为普遍的算法,如传统动态规划、层次分析法等,文章所提出的算法在时间上具有明显的优势。
关键词:树型动态规划;物流配送;配送中心选址
中图分类号:F252.14 文献标识码:A
Abstract: The problem of logistics distribution center location plays an important role in the logistics network planning. The benefit of enterprises is affected by location selection directly. In this paper, the best location algorithm of logistics distribution center was proposed based on the tree dynamic programming. This algorithm uses the tree structure to simplify the distribution network, and reduces the complexity of location. Moreover, it has higher stability. Experiments show this algorithm has obvious advantage on time, comparing with the convention algorithm, such as traditional dynamic programming and analytic hierarchy process.
Key words: tree dynamic programming; logistics distribution; distribution center location decision
0 引 言
物流企业普遍需要同时确定多个配送地址。因而在已有的客观条件下,如何选择配送中心,使得整个系统费用最低,客户服务效果最好,显得尤为重要。一个良好的物流配送中心的选址方案,不但能有效节约成本,促进生产和消费的协调、配合,同时能保证物流系统的高效和平衡发展,使企业在激烈的市场竞争中处于有利的地位。
物流配送中心的选址,对其功能的发挥和整个物流系统的经济效益影响甚大。因此,该问题也引起不少学者的关注。文献[1]基于传统动态规划,提出了最优化网络销售运营方案;文献[2]采用过滤法求解整数规划数学模型,确定了物流配送中心的最佳地;文献[3]分析了物流中心选址中涉及的众多因素,运用层次分析法进行了实现;文献[4]利用BP神经网络处理数据,建立选址决策的模糊评价矩阵;文献[5]借助运筹学思想,以距离为考虑因素,提出合理解决配送中心选址问题的方法。文献[6]结合聚类蚁群算法与AHP-模糊综合评价法,得出配送中心选址的最佳方案。
上述提及的问题,均与物流中心选址有着高度的相似性。但配送点较多时,往往要耗费大量时间进行求解。本文基于树型动态规划算法,通过分层方法和树型结构,简化物流配送网络,降低选址的复杂度,在时间上具有明显的优势。
1 问题分析
配送中心的选址直接影响了配送环节中各项活动的成本,同时也关系到配送中心的正常运作与发展。因此,配送中心的选址和布局须在充分调查分析的基础上,结合企业自身的经营模式、商品特点及交通状况等综合考虑。
结合配送的相关流程,主要需考虑费用:供货点到配送中心再到用户的运输费用、流经配送中心的产品的管理费用、配送中心的固定投资费用。
2 模型建立
物流配送中心的选址涉及众多的因素和数量关系,因此,在保证模型基本符合现实情况的基础上,作如下假设,以简化模型:
(1)假设配送中心所提供的各项服务收入关于物流量成线形函数;
(2)假设各点间(供货点、配送中心、用户)运送运费为关于路程的线性函数,且同一运送路线费用相同;
(3)假设各点需求量及所在地区的交通情况在一定时间内不出现较大波动;
(4)假设配送中心的固定费用为已知常数。
基于以上假设,仅考虑物流配送过程中产生的运费,将全国的物流配送网络划分为多个区域,每个区域均可确定一个配送中心,且每两点之间均由双向边连接,各边权值即为两端点间的运输成本。分别确定最优点以及最优路径,使得该点到其他各点的费用为最小。具体目标函数如下:
minValue=min■cost■1≤j≤n (1)
其中,cost■表示i点至j点的费用。
3 树型动态规划算法
3.1 符号与定义
3.2 算法求解
普通动态规划均为线性或是建立在图上的。对于线性情况,有两种方向:向前和向后,或称顺推与逆推。树型动态规划以“树”的数据结构为基础,同样有两个方向:
(1)根—叶:该方法在实际问题中应用不多,因此无典型实例;
(2)叶—根:根的子节点向根传递有用的信息,再由根通过这些信息求得最优解。
本文所选用的树型动态规划即为后者。由于树型动态规划属于动态规划范畴,因此,它同样具有无后效性、子问题重叠性和最优子结构的性质[7]。因此,树型动态规划建立过程中,只需考虑根节点与子节点间如何进行信息交换即可。
模块1 预处理节点信息
已知:u,v边的权值costuv,标记数组mark;
输入:任意一个点root;
输出:以x节点为根节点的子树所具有的节点数和权值和分别为childx, value1:n;
Step 1 用mark数组标记root;
Step 2 当存在与root节点相连且未在mark中标记的点vi时:
(1)以vi作为进行递归;
(2)childroot+=childvi+1;
(3)valueroot=childvi+1*childrootvi+valuevi。
任意选取一个点作为树的根节点root开始进行第一次树型动态规划扫描,并计算树中每个节点的孩子个数,以及以每个子节点到根的权值和,即求出dpi和childi值。相应目标函数如下:
dpi=dpi+childj*cost■ (2)
childi=childi+childj (3)
其中,j∈Son■,初始值dpi=0,childi=1。
模块2 确定中心点
已知:以x节点为根节点的子树所具有的节点数和权值分别为childx,value1:n,清空mark数组,图中点的个数n;
输入:任意节点root;
输出:以x为根节点的树的总权值和rvaluex;
Step1 用mark数组标记root;
Step2 当存在于root节点相连且未在mark中标记的点vi时:
(1)计算rvaluevi=rvalueroot-childvi+1*costrootvi+n-childvi-1*costrootvi;
(2)以vi作为输入进行递归。
从根节点root出发,利用第一次树型动规中所求得的dpi和childi数组,进行第二次树型动规。此时需采用从根到叶的方式,通过根已有的信息来更新子节点的信息,从而达到求出解的目的。相应目标函数如下:
total_valj=■ (4)
3.3 时间复杂度分析
模块1为处理阶段,对每个节点i求dpi和childi时,其子节点仅在i的转移方程中出现,且只出现一次,因此复杂度为ON。
模块2为决策阶段,通过遍历整棵树,求解每个点到其他点的费用和。由于求当前节点时,只需知道其父亲节点的信息(即父亲节点total_val值),因此复杂度亦为ON。
综合上述分析,总的算法复杂度即为ON。
4 实验结果与分析
为了更好地检验树型动规算法的效率,随机产生了8组数据,同时,通过加权取模的方法,对数据范围作了限定,使其更贴近实际。通过对比,检验树型动态规划的正确性和高效性。本文用于对比的传统算法,采用枚举中心点,求其到其他点的距离和。在所有距离和中,取最小值对应的中心点。
最终得到选址中心确定所需的时间分别为:
对比两种算法可发现:当备选点个数超过一定数量后,树型动态规划的时间效率要远胜于传统算法。且树型动态规划的时间及空间复杂度只和待处理的作业的数量有关。在内存受限,计算时间要求较高的物流配送中心选址问题中,是一种相对理想的算法。
5 总 结
本文以ON的时间复杂度确定了每一区域的最优中心点,大幅度优化了选址效率。但由于配送中心的选址问题还涉及到经济、城市规划等因素,因此算法只能为该问题提供相对较优的参考方案。
本文算法建立在区域划分的基础上,后续将进一步研究区域划分和该算法的结合,并加入影响选址中心的其他因素,提高算法的实用性,使之适用于不同情况,为物流配送中心选址提供更为准确的方案。
参考文献:
[1] 谢云. 基于动态规划的最优运输费用问题探析[J]. 财会通讯,2011(1):138-139.
[2] 刘晓惠. 物流配送中心选址规划方法研究[J]. 综合运输,2012(3):30-32.
[3] 李海洋,刘冬敏,张晓磊. 基于AHP层次分析法的物流中心选址研究[J]. 中州大学学报,2012(2):115-118.
[4] 韩庆兰,梅运先. 基于BP人工神经网络的物流配送中心选址决策[J]. 中国软科学,2004(6):140-143.
[5] 田昌奇. 物流配送中心合理选址问题的研究[J]. 物流工程与管理,2009(10):99-100.
中图分类号:C935 文献标识码:A 文章编号:1009-914X(2014)36-0043-01
1、最优控制问题基本介绍
最优控制是使控制系统的性能指标实现最优化的基本条件和综合方法,是现代控制理论的核心之一,是从大量实际问题中提炼出来的。它所研究的问题可以概括为:对一个受控的动力学系统或运动过程,从一类允许的控制方案中找出一个最优的控制方案,使系统的运动在由某个初始状态转移到指定的目标状态的同时,其性能指标最优。最优控制是最优化方法的一个应用。从数学意义上说,最优化方法是一种求极值的方法,即在一组约束为等式或不等式的条件下,使系统的目标函数达到极值,即最大值或最小值。从经济意义上说,是在一定的人力、物力和财力资源条件下,是经济效果达到最大(如产值、利润),或者在完成规定的生产或经济任务下,使投入的人力、物力和财力等资源为最少。
控制理论发展到今天,经历了古典控制理论和现代控制理论两个重要发展阶段,现已进入了以大系统理论和智能控制理论为核心的第三个阶段。对于确定性系统的最优控制理论,实际是从20世纪50年代才开始真正发展起来的,它以1956年原苏联数学家庞特里亚金(Pontryagin)提出的极大值原理和1957年贝尔曼提出的动态规划法为标志。时至今日,随着数字技术和电子计算机的快速发展,最优控制的应用已不仅仅局限于高端的航空航天领域,而更加渗入到生产过程、军事行动、经济活动以及人类的其他有目的的活动中,对于国民经济和国防事业起着非常重要的作用。
对于静态优化的方法,解决的主要是如何求解函数的极值问题;变分法则被用来求解泛函的极值问题;极小值原理的方法,适用于类似最短时间控制、最少燃料控制的问题。另外,还有线性系统二次型指标的最优控制,即线性二次型问题。与解析法相比,用最优控制理论设计系统有如下的特点:
(1)适用于多变量、非线性、时变系统的设计。
(2)初始条件可以任意。
(3)可以满足多个目标函数的要求,并可用于多个约束的情况。
2、最优控制的求解方法
2.1 变分法
变分法是求解泛函极值的一种经典方法,可以确定容许控制为开集的最优控制函数,也是研究最优控制问题的一种重要工具。掌握变分法的基本原理,还有助于理解以最小值原理和动态规划等最优控制理论的思想和内容。
但是,变分法作为一种古典的求解最优控制的方法,只有当控制向量u(t)不受任何约束,其容许控制集合充满整个m维控制空间,用古典变分法来处理等式约束条件下的最优控制问题才是行之有效的。在许多实际控制问题中,控制函数的取值常常受到封闭性的边界限制,如方向舵只能在两个极限值范围内转动,电动机的力矩只能在正负的最大值范围内产生等。因此,古典变分法不适于解决许多重要的实际最优控制问题。
2.2 最小值原理
极小值原理是对经典变分法的扩展,可以解决经典变分法无法解决的最优控制问题。也就是当控制有约束,哈密顿函数H对U不可微时,要用极小值原理。所得出的最优控制必要条件与变分法所得的条件的差别,仅在于用哈密顿函数在最优控制上取值的条件代替,可以看出,后者可以作为前者的特殊情况。其他条件包括正则方程,横截条件,边界条件等都一样。需要注意的是,极小值原理解决最短时间控制问题时,最短时间的控制量只能取约束的边界值+1或-1;而最少燃料控制的控制量可取边界值+1、-1、0。
用极小值原理解非线性系统的最优控制将导致非线性两点边值问题,这类问题求解是很困难的。即使系统是线性的,但当指标函数是最短时间、最少燃料这种形式,要求得到最优控制的解析表达式,并构成反馈控制(即把U(t)表示为X(t)的函数)也是非常困难的。
2.3 动态规划
动态规划又称为多级决策理论,是贝尔曼提出的一种非线性规划方法。它将一个多级决策问题化为一系列单极决策问题,从最后一级状态开始到初始状态为止,逆向递推求解最优决策。动态规划法原理简明,适用于计算机求解,在许多理论问题的研究中,都应用到动态规划的思路。
动态规划是求解最优化问题的重要方法,在应用动态规划时,有一个前提条件是系统的状态变量必须满足“无后效性”。所谓无后效性的概念是:在任一时刻,系统状态为x(),以后的状态仅决定于x()以及x()到达终点时刻的状态x()的控制策略,而与以前的状态和以前的控制策略无关。因此,在应用动态规划方法时,要注意状态变量的选取,使之满足“无后效性”的条件。例如,讨论物体在空间运动时,不仅选用物体的空间位置座位状态变量,而且要将速度变量也包括在状态变量之内,以便满足“无后效性”的条件。动态规划法的局限性还表现在所谓的“维数灾难”问题:当状态变量的维数增加,要求计算机内存成指数倍增长,计算工作量也大大增加。此外,求解连续决策过程采用的动态规划法得到的哈密顿-雅克比方程是偏微分方程,求解x()也是相当困难的。动态规划虽然提供的是充分条件,但是,由于连续型系统的哈密顿-雅克比方程难于求解而不能满足实际需要。
2.4 线性二次型最优控制
线性二次型问题的实用意义在于:把它所得到的最优反馈控制与非线性系统的开环最优控制结合起来,可减少开环控制的误差,达到更精确的控制的目的。
与经典控制问题相比,线性二次型问题有两个显著的特点:第一,它研究的是多输入多输出动态系统的控制问题,其中包括了作为特例的单输入单输出情形;第二,它的性能指标是综合性的,既包含有误差的成分,又包含有控制能量的成分。根据线性的最优反馈控制律,即控制量正比与状态变量,可写成或。把这种线性二次型问题的最优控制与非线性系统的开环控制结合起来,还可减少开环控制的误差。线性二次型问题的最优控制一般可分状态调节器问题和伺服跟踪问题两大类。
对于终端时刻tf有限的连续系统状态调节器问题,要求加权阵P、Q为对称半正定,R为对称正定,但并不要求系统完全可控。
3、三种方法之间的相互关系
动态规划法、极小值原理和变分法,都是求解最优控制问题的重要方法。由动态规划的哈密顿-雅克比方程,可以推得变分法中的欧拉方程和横截条件:也可以推得极小值原理的必要条件。
变分法对解决开集约束的最优控制问题十分有效,但对于处理闭集性约束就无能为力了。变分法与极小值原理都可以解微分方程所描述的变分问题作为目标,结果得出了一组常微分方程所表示的必要条件。这三种方法要求的条件不同,其中属动态规划要求最高。在所要求的条件都满足的情况下,使用这三种方法所得结论相同。
参考文献
[1] 胡寿松-最优控制理论与系统[M].(第二版)北京:科学出版社,2005.
[2] 张莲-现代控制理论.北京:清华大学出版社,2008.1.
[3] 于长官-现代控制理论及应用.哈尔冰工业大学出版社,2005.1.
关键词:背包问题;贪婪法;动态规划法;时间复杂度
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)25-1534-02
Study on Algorithm Design and Analysis of Knapsack Problem
SUN Hong-li
(Computer Science Department, Shangqiu Normal University, Shangqiu 476000, China)
Abstract: The knapsack problem is a classical question in the area of algorithm design and analysis, in this paper greedy method, the dynamic programming method and the recursion method are used separately to solve the knapsack problem, 0-1 knapsack problem and the simple 0-1 knapsack problem, and to design the algorithm, to discuss the time complexity. Algorithm design and realization process is given, and with example algorithm basic thought to describe different solution is introduced, and the conclusion is gotten by summarizing the goods and shortcoming of three methods.
Key words: knapsack problem; greedy method; dynamic programming method; time complexity
1 引言
算法是计算机科学的核心,也是程序设计的关键,对算法的研究是通过程序来实践的,算法+数据结构=程序,此经典公式表明有了算法,加上合适的数据结构,用高级语言进行实现就可以得到程序。那么要解决背包问题,首要的前提就是设计出好的算法,想求得背包问题的解,就要先设计出算法。本文采用三种方法来对背包问题进行算法设计,并分析其时间复杂度,进而得出结论。
2 背包问题描述
背包问题是整数规划中的一类特殊问题,在现实生活中具有广泛应用,如能提出求解此问题的有效算法,则具有很好的经济价值和决策价值,如物流公司的货物发配问题,集装箱的运载问题,如何才能获得最大利润。
问题的一般描述是:旅行者背包登山,背包的最大承重为M,现有n个物品可供选择装入背包,第i个物品重量为wi,价值为pi,假定物品i的一部分xi(0≤xi≤1)放入背包,获得价值为xipi,由于背包最大承重为M,要求装入物品总质量不过超过M,问旅行者应该如何选择物品装入背包,使得装入物品的价值总和达到最大值。
背包问题的数学描述如下:要求找到一个n元向量(x1,x2,…xn),在满足约束条件:■情况下,使得目标函数max∑xipi,其中,1≤i≤n;M>0;wi>0;pi>0。满足约束条件的任何向量都是一个可行解,而使得目标函数达到最大的那个可行解则为最优解。
3 局部优先策略的贪婪法求解背包问题
采用贪婪法求解问题的最优解核心是选择合适的优化测度,下面以一个背包问题的具体实例来说明求解思想。已知:n=3,w=(10,25,30),p=(60,50,90),M=30,求如何装包可得到最大价值。
分析:如果从剩余的物品中每次都选取当前价值最大的来装入的话,利用价值优先测度,不能保证获得最优解,也就是说如果优化侧度的选取只考虑价值是不行的;如果每次都选择背包耗费最小的物品装入的话,利用质量最小作为优化测度,同样也不能保证得到最优解,只考虑质量同样无法得到最优解;最后我们同时考虑价值和质量,以单位质量价值大的物品首先装入,以此作为优化测度,就可以保证背包问题获得最优解。上面的例子求解结果如下:最大价值为120,解向量为(1,0,2/3)。其求解过程可以简单概括如下,首先对所有物品的单位质量价值按非升序排列,然后一个个考虑物品,装入物品后要修正背包的当前承重及已获得价值,如果背包的当前承重不足以装入整个物品时,可以装入物品的一部分保证背包装满而获得最大价值。由此利用局部最优策略求解背包问题得到的局部最优解肯定是全局最优解。
采用贪婪法局部优先策略算法时间复杂度是T(n)=O(n2)。首先我们对物品单位质量的价值非升序排列,采用冒泡法实现,执行时间为T1(n)=(n-1)+(n-2)+…+1=n(n+1)/2;从排好序的物品中选取加入解向量,最大执行n次T2(n)=O(n),故贪婪法总的时间耗费为:T(n)=T1(n)+T2(n)=O(n2)。
如果对背包问题进行扩展,再装入物品时只允许全装或者不装,不允许装入物品的部分,也就是xi=1或者xi=0。此时成为0-1背包问题。那么对0-1背包问题,贪婪法可以求得最优解吗?
答案是否定的,还以上面的实例说明,采用贪婪法求的解向量为(1,0,0),最大价值为60,很明显,(0,0,1)优于前者,最大价值为90。要求0-1背包问题的最优解就需要采用全新的算法思想,下面具体说明。
4 最优化原理的动态规划法求解0-1背包问题
动态规划法的核心基础是最优化原理,它把已知问题分为很多子问题,按顺序求解子问题,在每一种情况下,列出各种情况的局部解,按条件从中选取那些最有可能产生最佳的结果舍弃其余。前一子问题为后面子问题提供信息,而减少计算量,最后一个子问题的解即为问题解。采用此方法求解0-1背包问题的主要步骤如下:
①分析最优解的结构:最有子结构性质;
②建立递归方程;
③计算最优值;
④构造最优解。
下面用动态规划法求解0-1背包问题。首先此问题具有最优子结构性质。简单说明如下:设(y1,y2,…,yn)是最优解,则(y2, …,yn)是对应子问题的一个最优解:max■ pixi,■
采用反证法说明:假设(y2, …,yn)不是对应子问题的最优解,那么必定存在最优解,令 (z2,…,zn)是对应子问题的一个最优解。由上述假设得到, ■zipi> ■yipi,并且w1y1+ ■ziwi≤M在■zipi> ■yipi两边同时加上p1y1,得到 ■zipi+p1y1> ■yipi+p1y1,合并w1y1+ ■ziwi≤M,可得出(y1,z2,…,zn)优于(y1,y2,…,yn),推出矛盾,也即假设不成立。符合最优子结构性质。
根据最优子结构性质可以推出递归方程。引入符号v(i,j)表示i个物品当前背包承重为j时可以获得的最大价值,要求得i个物品可以获得最大价值要考虑第i个物品质量和当前背包承重大小关系,背包可以容纳第i个物品的话,有装入和不装两种情况,表示为v(i-1,j-wi)和v(i-1,j),如果第i个物品质量大于背包当前承重,则只有不装,即v(i-1,j)。由此可以得出关于解的递归方程如下:
■
根据递归方程,可以求得0-1背包问题的最大价值和解向量,还以上面的实例说明求解过程。
■
故得到:v(1,30)=60;v(2,30)=60;v(3,30)=90;X=(0,0,1),从这个求解过程可得动态规划法肯定可以得到0-1背包问题的最优解。
动态规划法算法执行时间为n*a*b次循环,每次循环都要执行比较运算,算法完成所需总是件为cn2,故时间复杂度为
T(n)=O(n3)。
如果对0-1背包问题的求解目标进行限制,求如何装包可以使得装入物品的重量总和恰好是M。那么问题就不再是最优化问题,称为简单的0-1背包问题。显然,用贪婪法或动态规划法都无法求得此问题的解向量,这时需要用到递归法来求解。
5 递归法求解简单0-1背包问题
简单0-1背包问题可以描述为:现有n个物品,第i个物品质量为wi,有一个可容物品最大质量为M的背包,如何从n件物品中选取出若干件装入使得放入背包的质量之和正好为M。
由于0-1背包问题对第i件物品要么装入,要么不装,故问题可能有解,也可能无解。采用布尔函数表示问题。Knap(i,j)其中i表示物品个数,j表示背包当前容量。如果问题有解函数值为true,否则为false。
先取第n个物品装入,如果wn=M,knap(n,M)=true;
如果wn1,knap(n,M)= knap(n-1,M-wn)有解可行,否则转化为knap(n,M)= knap(n-1,M);
如果wn1,knap(n,M)= knap(n-1,M)。
递归算法的执行时间是那n2次调用,每次调用完成一次比较和一次栈运算,算法完成总时间是2n2,时间复杂度为T(n)O(n2)。
6 结论
这三种算法都在c语言环境下得到验证,运行结果证明了算法设计是可行的,正确的。通过对背包问题、0-1背包问题与简单0-1背包问题的算法设计及时间复杂度分析可以看出,无论采用贪婪法还是动态规划法,都是在已知约束条件下求解最大值建立数学模型算法实现的过程;但算法具体实现和数据结构的建立要用到递归和栈操作。比较贪婪法和动态规划法,前者的时间复杂度低于后者,从耗费上而言优于后者,但后者的实现算法可读性要优于前者。
参考文献:
[1] M.H.Alsuwaiyel.算法设计技巧与分析[M].北京:电子工业出版社,2004.
关键词:算法设计与分析 实例驱动教学 背包问题 教学改革
中图分类号:G642 文献标识码:A 文章编号:1673-9795(2013)06(a)-0070-01
1 问题的提出
《算法设计与分析》[1]是实践性较强的一门课程。这门课程的主要目的,通过对计算机算法系统的学习与研究,掌握算法设计算法策略和技巧,培养学生对算法的计算复杂性正确分析的能力,对不同的实际问题设计出清晰高效的算法,为独立设计算法和对算法进行复杂性分析奠定坚实的理论基础。软件的效率和稳定性取决于软件中所采用的算法,学习《算法设计与分析》课程,可以开阔编程思路,有助于编写出高效程序。因此,提高《算法设计与分析》课程教学水平有着极其深远的意义和重要的作用。
《算法设计与分析》内容的比较抽象与复杂,从学生的普遍反映来看,这是一门比较难的课程。《算法设计与分析》课程的教学内容按算法分类组织。在教科书中[2],每一章对应一种算法,主要内容涵盖了动态规划、贪心法、回溯法和分支限界法经典的算法。本文针对该课程,对典型实例驱动教学在《算法设计与分析》教学中的应用做了一些探索。通过典型的实例教学,一个抽象的算法使其更具体化、形象化,学生能快速理解各种算法的原理及算法之间的区别,因此,在《算法设计与分析》教学中合理利用典型实例,激发学生学习兴趣和热情,从而提高教学效果。
2 0-1背包问题实例
0-1背包问题是经典组合优化问题[3],有着广泛的实际应用背景,0-1背包问题比较简单,把抽象的,复杂的算法应用到该问题便于同学理解和掌握。0-1背包问题描述为:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大。
3 动态规划算法
动态规划是解决多阶段决策过程最优化的一种方法,该方法是由美国数学家贝尔曼等人提出的。用于解决生产管理、工程技术等方面的许多问题,并建立了运筹学的一个新的分支,即动态规划。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。动态规划方法能够把复杂问题的算法从指数阶的计算量减少到多项式阶。
4 贪心算法
贪心算法通过一系列的选择来得到问题的最优解,它所做的每一个选择都是当前状态最好的选择,即贪心选择。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。用贪心算法不能求解0-1背包问题,但能解决背包问题,背包问题与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,即xi∈[0,1]。
5 回溯算法
回溯法在问题的解空间树中,按深度优先策略,从根结点出发系统地搜索一个问题的所有解或任一解。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解:如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。
如果采用回溯法解决0-1背包问题,如一个结点的左儿子结点是一个可行结点就搜索其左子树。而对于右子树,需要用贪心算法构造一个上界函数,上界函数是通过讲将0-1背包问题松弛为背包问题利用贪心算法求得的,这个函数表明这个结点的子树所能达到的可能的最优值,只在这个上界函数的值超过当前最优解时才进入搜索。随着搜索进程的推进,最优解不断得到加强,对搜索的限制就越来越严格。如果这个上界小于当前值Bestf,说明该子树不可能包含最优解,即可以被“剪枝”。
6 分支限界法
分支限界法类似于回溯法,也是一种在问题的解空间树上搜索问题解的算法。分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。采用分支限界法解决0-1背包问题,同样需要用到贪心算法构造的上界函数。所不同的是,这个上界函数的作用不在于判断是否进入一个结点的子树继续搜索,因为在搜索到达叶节点之前,大家也无法知道已经得到的最优解是什么。在这里,可用一个最大堆来实现活结点的优先队列,上界函数的值将作为优先级,这样一旦有一个叶结点成为扩展结点,就表明已经找到了最优解。
7 结语
通过典型0-1背包问题实例,学生可以快速理解各种算法的基本思想、特点及算法之间区别,便于理解与掌握。笔者在这门课程的教学过程中深刻地体会到,要上好这门课,教师要注意观察学生的课堂反应及接受能力,采用适当的教学方法。实践证明,《算法设计与分析》实例教学方法是一种将抽象算法理论与实际典型实例相结合,让学生带着感兴趣的问题进入课程的学习,其探究能力和创新意识得到了较好的培养,同时培养学生分析问题及解决问题的能力。
参考文献
[1] 阿霍.计算机算法设计与分析:英文版,[M].北京:机械工业出版社,2006.
关键词:水库;优化调度决策;动态规划模型;新方法
在我国,水库优化调度决策研究相对起步较晚,大多都是通过建立优化模型来求解其优化的目标函数也主要有两类:一是以库群多年电能或供水量最大为目标,二是以系统年费用最小为目标,模型既有确定性的,也有随机型的随着研究的不断深入,研究的目标逐渐由单目标扩展到了多目标,研究对象由单库扩大到了多库乃至整个流域或系统的库群,其模型也由单一模型发展到了组合模型近年来,又把系统辩识思想运用到了水库调度决策研究中,将随机动态规划与常规调度决策方法有机结合,为水库调度决策研究提供了一个新的理论框架。随着社会经济的快速发展,社会用水量也急剧增加,水资源供需矛盾日趋尖锐如何合理调配有限的水资源已成为水资源管理中现实而紧迫的任务水库优化调度决策是水资源系统优化配置的重要手段,因此做好水库优化调度决策方案及管理对解决这一严重的问题无疑具有非常重要的意义。
一、当前水库调度决策存在的问题
目前,国内外水水库优化调度决策研究成果较多,常规调度决策方法以水位或入库流量确定水库的操作方法,虽然简明直观,但在对新技术的应用客观条件变化对调度决策结果的影响分析等诸方面存在明显不足优化调度决策决策方法方案存在的主要问题有:
(1)调度决策方案只是一个合理的方案,而不是最优的方案;
(2)无论哪种模型,应用哪种数学方法,仍不能回避未来入库径流无法确知的问题,从而大大降低实际应用效果;
(3)应用比较多的动态规划模型受到数学维数的限制,即维数灾问题需借助其它方法,如逐步优化法对模型进行降维处理;
(4)在建立模型求解的过程中计算量大如各项指标的分析优选校核
(5)所建立的模型难以反映复杂系统的真实情况;
(6)模型可操作性较低由于优化调度决策所用的方法和理论比较复杂,使用者因缺少相应的知识,实际操作比较困难,从而影响了模型的应用和推广。
二、水库调度决策的优化应用分析
我国对水库优化调度决策优化研究和应用相对起步较晚,基本上都是通过建立有效的优化模型来进行解答,其优化的目标函数也主要分为两个方面,一种目标是在库群用水量最大或发电量最大时,另一种目标是消耗费用最少时。随着对水库优化调度决策研究的不断深入,研究目标变得多元,研究对象也在向多元化发展,研究模型变得更加复杂多变。近些年,系统辩识思想也运用到了水库调度决策研究中,随机态规划与常规调度决策方法互相有机结合,为水库调度决策研究提供了一个新的理论框架。为了发挥水库的最大经济效益,包括防洪、发电、灌溉、供水及航运等效益最佳,我国进行了大量的研究与实践。
1、水库调度决策的优化应用实例
我国大约从20 世纪60 年代开始水库优化调度决策的研究。1960 年吴沧浦最先提出了每年调节水库的最优动用动态规划模型。1963 年谭维信、黄守信等通过学习了解动态规划与Markov 过程理论,顺利完成了一个长期调节水电站水库的优化马尔柯夫过程理论模型,并在狮子滩水电站的优化调度决策中得到成功尝试。1979 年张勇传、熊斯毅等在研究拓溪水电站水库优化调度决策模型时,采用可变方向探索法,虽然优化调度决策图依然用Bellman 最优化原理, 由于引进了惩罚项从而使调度决策图的可靠性提高。同样是在1979 年,在刘家峡水电站水库优化调度决策研究时, 董子敖等人提出了对国民经济有最大效益的目标函数。张玉新、冯尚友在八十年代末研究了多目标动态规划的迭代法求解方法,建立了一个多维决策的多目标动态规划模型。由于模糊里路的不断发展,吴倍益提出应用模糊数学进行水库群优化调度决策;张勇传、邴凤山等把相关的模糊理论引入水库优化调度决策的研究中。陈守煜于1988 年把动态规划和模糊优选有机结合起来提出了优选模糊原理模型,此后又提出了系统层次模糊优选模型,这些理论不断完善了模糊理论。20 世纪末以来,人们开始不断寻求水库优化功能来进行模拟。2000 年李会安建立了可以水量随时自己优化的模型。2000年畅建霞等人为西安市水库群建立了神经网络优化调度决策模型,并在2001年改进遗传算法的水电站基础上再次进行水库优化调度决策。2005年邱林等人把混沌优化理论应用到水库优化调度决策中,徐刚、马光文等人也在同一年研究了蚁群优化在水库优化中的作用,并在在单库、多库优化调度决策中的成功试用。
2、水库调度决策的优化应用方案
比如水库的调度决策来说,将以天堂山水利枢纽工程为例子,全面的分析水库调度决策的优化应用方案。天堂山水利枢纽工程位于龙门县城西北约14 km的增江上游天堂山峡谷处,集雨面积461 km2(占增江全流域面积15%,总库容2.43亿m3,是一宗以防洪为主,兼顾灌溉、发电、养殖、旅游等综合效益的大型水利枢纽工程。
天堂山水利枢纽工程以防洪为主,兼有灌溉、发电、旅游、养殖等综合利用的大(2)型水利工程,电站安装有3台单机容量6500kW的混流立式水轮发电机组。根据原设计标准划分,本工程为Ⅱ等大(2)型工程,大坝与隧洞进水口工程等别为Ⅱ等,建筑物级别为2级,设计洪水标准为100年一遇,校核洪水标准为1000年一遇;引水隧洞(不包括进水口)、高压管道、调压井和电站工程等别为Ⅲ等,建筑物级别为3级,设计洪水标准为50年一遇,校核洪水标准为500年一遇。同时将从水文、气象、径流、设计洪水标准、生态环境等等因素考虑,本文将从径流的调度优化与应用来进行分析。
由于广东省暂未颁布最新的降雨径流等值线图,本阶段按《广东省水文图集》(1991年版)资料进行初步分析。从图集中查得天堂山水电站多年平均降雨量为2200mm(查Cv=0.25),多年平均径流深为1300mm(查算Cv=0.35),计算天堂山水电站降雨径流系数为0.59。与天堂山还原后多年平均径流深1216mm相比,两者误差6%。可以认为设计年径流深符合地区规律,径流设计成果基本合理。
降雨、径流各参数见表3.4-3。
表3.4-3 天堂山水电站多年平均年降雨量、径流深比较表
三、水库调度决策发展优化应用分析的展望
为了解决理论研究方面存在的问题, 应采用系统的调度决策理论, 从全局出发, 不断完善调度决策理论, 注重理论与生产实际相结合, 注重研究成果向生产的转化, 把理论研究与实际应用的差距较好的缩短; 必须结合生产需要和具体问题, 研究探讨适合某一具体河流或区域、简便实用并为生产管理者所接受的水库调度决策模型及应用方法。随着计算机及人工智能技术的发展, 与计算机及人工智能技术相结合, 并引入新的理论, 成为水库优化调度决策研究的一个热点和发展趋势:
1) 充分应用计算机的快速运算及大容量存储能力, 研究快速、准确求解水库优化调度决策模型的方法及算法, 以提高水库优化调度决策模型效率。
2) 充分利用计算机技术, 结合人工智能开发出人机界面友好的具有智能化、敏捷化的决策支持系统是水库调度决策决策技术今后的发展趋势。此外, 全球定位系统、地理信息系统、遥感技术以及虚拟现实技术等高新技术, 在水利行业也具有广阔的应用前景。
四、结束语
总之, 在水库调度决策方面更广泛的、高质量的应用高新技术, 可以使得调度决策决策变得更科学化、更智能化、更敏捷化, 进一步提升调度决策决策的技术水平, 使水库调度决策向着可视化、交互化、智能化、集成化的方向前进。
参考文献:
[1]梅亚东. 水库调度决策研究的若干进展[J]. 湖北水力发电. 2008(01)
[2]罗强,宋朝红,雷声隆. 水库调度决策自优化模拟技术的最优域[J]. 水电能源科学. 2002(03)
单个机器人的路径规划是找出从起始点至终点的一条最短无碰路径。多个机器人的路径规划侧重考虑整个系统的最优路径,如系统的总耗时间最少路径或是系统总路径最短等。从目前国内外的研究来看,在规划多机器人路径时,更多考虑的是多机器人之间的协调和合作式的路径规划。
目前国内外多机器人路径规划研究方法分为传统方法、智能优化方法和其他方法三大类。其中传统方法主要有基于图论的方法(如可视图法、自由空间法、栅格法、Voronoi图法以及人工势场方法等);智能优化方法主要有遗传算法、蚁群算法、免疫算法、神经网络、强化学习等;其他方法主要有动态规划、最优控制算法、模糊控制等。它们中的大部分都是从单个机器人路径规划方法扩展而来的。
1)传统方法多机器人路径规划传统方法的特点主要体现在基于图论的基础上。方法一般都是先将环境构建成一个图,然后再从图中寻找最优的路径。其优点是比较简单,比较容易实现;缺点是得到的路径有可能不是最优路径,而是次优路径。薄喜柱等人[4]提出的一种新路径规划方法的基本思想就是基于栅格类的环境表示和障碍地图的。而人工势场方法的基本思想是将移动机器人在环境中的运动视为一种虚拟人工受力场中的运动。障碍物对移动机器人产生斥力,目标点产生引力,引力和斥力周围由一定的算法产生相应的势,机器人在势场中受到抽象力作用,抽象力使得机器人绕过障碍物。其优点是适合未知环境下的规划,不会出现维数爆炸问题;但是人工势场法也容易陷入局部最小,并且存在丢失解的部分有用信息的可能。顾国昌等人[5]提出了引用总体势减小的动态调度技术的多机器人路径规划,较好地解决了这个问题。
2)智能优化方法多机器人路径规划的智能优化方(算)法是随着近年来智能计算发展而产生的一些新方法。其相对于传统方法更加智能化,且日益成为国内外研究的重点。
遗传算法是近年来计算智能研究的热点,作为一种基于群体进化的概率优化方法,适用于处理传统搜索算法难以解决的复杂和非线性问题,如多机器的路径规划问题。在路径规划中,其基本思想是先用链接图法把环境地图构建成一个路径节点链接网,将路径个体表达为路径中一系列中途节点,并转换为二进制串;然后进行遗传操作(如选择、交叉、复制、变异),经过N次进化,输出当前的最优个体即机器人的最优路径。遗传算法的缺点是运算速度不快,进化众多的规划要占据很大的存储空间和运算时间;优点是有效避免了局部极小值问题,且计算量较小。
孙树栋等人[6,7]在这方面较早地展开了研究,提出的基于集中协调思想的一种混合遗传算法来规划多机器人路径方法较好地解决了避障问题。但不足的是该方法必须建立环境地图,在环境未知情况下的规划没有得到很好的解决;且规划只能保证找到一个比较满意的解,在求解全局最优解时仍有局限。
文献[8]中提出的一种基于定长十进编码方法有效降低了遗传算法的编码难度,克服了已有的变长编码机制及定长二进制编码机制需特殊遗传操作算子和特殊解码的缺陷,使得算法更加简单有效。
智能计算的另一种常见的方法——蚁群算法属于随机搜索的仿生算法。其基本思想是模拟蚂蚁群体的觅食运动过程来实现寻优,通过蚂蚁群体中各个体之间的相互作用,分布、并行地解决组合优化问题。该算法同样比较适合解决多机器人的路径规划问题。
朱庆保[9]提出了在全局未知环境下多机器人运动蚂蚁导航算法。该方法将全局目标点映射到机器人视野域边界附近作为局部导航子目标,再由两组蚂蚁相互协作完成机器人视野域内局部最优路径的搜索,然后在此基础上进行与其他机器人的碰撞预测与避碰规划。因此,机器人的前进路径不断被动态修改,从而在每条局部优化路径引导下,使机器人沿一条全局优化的路径到达目标点。但其不足是在动态不确定的环境中路径规划时间开销剧增,而且机器人缺乏必要的学习,以至于整个机器人系统路径难以是最优路径。
强化学习[10,11](又称再激励学习)是一种重要的机器学习方法。它是一种智能体从环境状态到行为映射的学习,使得行为从环境中获得积累奖赏值最大。其原理如图1所示。
强化学习算法一般包含了两个步骤:a)从当前学习循环的值函数确定新的行为策略;b)在新的行为策略指导下,通过所获得的瞬时奖惩值对该策略进行评估。学习循环过程如下所示,直到值函数和策略收敛:
v0π1v1π2…v*π*v*
目前比较常见的强化学习方法有:MonteCarlo方法、动态规划方法、TD(时间差分)方法。其中TD算法包含Sarsa算法、Q学习算法以及Dyna-Q算法等。其Q值函数迭代公式分别为
TD(0)策略:V(si)V(si)+α[γi+1+γV(si+1)-V(si)]
Sarsa算法:Q(st,at)Q(st,at)+α[γt+1+γQ(st+1,at.+1)-Q(st,at)]Qs′学习算法:Qπ(s,a)=∑Pαss′[Rass′+γVπ(s′)]
近年来,基于强化学习的路径规划日益成为国内外学者研究的热点。M.J.Mataric[12]首次把强化学习引入到多机器人环境中。而基于强化学习的多机器人路径规划的优点主要体现在:无须建立精确的环境模型,简化了智能体的编程;无须构建环境地图;强化学习可以把路径规划、避碰、避障、协作等问题统一解决。
张芳等人[13]提出了基于再激励协调避障路径规划方法,把再励函数设计为基于行为分解的无模型非均匀结构,新的再励函数结构使得学习速度得以提高且有较好的鲁棒性。同时,证明了在路径规划中,机器人的趋向目标和避障行为密切相关,对反映各基本行为的再励函数取加权和来表示总的再励函数要优于取直接和的表示方式,也反映了再励函数设计得合理与否及其确切程度将影响再励学习的收敛速度。王醒策等人[14]在动态编队的强化学习算法方面展开了研究。宋一然[15]则提出了分段再励函数的强化学习方法进行路径规划。其缺点是学习次数较多、效率不高,当机器人数目增加时,它有可能面临维数灾难的困难。所以,基于强化学习的路径规划在多机器人环境下的学习将变得比较困难,需要对传统的强化学习加以优化,如基于人工神经网络的强化学习[16]等。
3)其他方法除了以上国内外几种比较常见且研究较多的方法外,还有唐振民等人[17]提出的基于动态规划思想的多机器人路径规划,把运筹学中的动态规划思想与Dijkstra算法引入到多机器人的路径规划中,用动态规划的基本思想来解决图论中的费用流问题和路径规划中的层级动态联盟问题。其选择距离邻近法作为联盟参考依据。一个机器人的邻居是指在地理位置上分布在这个机器人周围的其他机器人;与该机器人最近邻的机器人为第一层邻居,第一层邻居的邻居为该机器人的第二层邻居,依此类推。那么层级越高(即越近)的邻居,它满足协作要求的可能性越大。动态规划算法实质上是一种以空间换时间的技术,它在实现的过程中,必须存储产生过程中的各种状态,其空间复杂度要大于其他算法,故动态规划方法比较适合多机器人的全局路径规划。
孙茂相等人[18]提出了最优控制与智能决策相结合的多移动机器人路径规划方法。其首先构造一个以各机器人最优运动状态数据库为核心的实时专家系统,在离线状态下完成;然后各机器人在此专家系统的支持下,以最优规划策略为基础,采用速度迁移算法,自主决定其控制。该方法拥有较好的稳定性与复杂度。焦立男等人[19]提出的基于局部传感和通信的多机器人运动规划框架较好地解决了多机器人路径规划在局部在线规划的系统框架问题。沈捷等人[20]提出了保持队形的多移动机器人路径规划。以基于行为的导航算法为基础,把机器人队列的运动过程划分为正常运动、避障和恢复队形三个阶段。在避障阶段,引入虚拟机器人使队形保持部分完整;当队形被严重打乱时,规划机器人的局部目标位姿使队列快速恢复队形。其算法重点为避障机器人进入避障状态,暂时脱离队列,并以虚拟机器人代替避障机器人。
2多机器人避碰和避障
避障和避碰是多机器人路径规划研究中需要考虑的重点问题之一。避障和避碰主要讨论的内容有防止碰撞;冲突消解、避免拥塞;如何避免死锁。在路径规划中常见的多机器人避障方法[21]有主从控制法、动态优先法(建立在机器人之间的通信协商上)、交通规则法、速率调整法,以及障碍物膨胀法、基于人工势场的方法等。
目前国内外对于多机器人避障展开的研究还不是很多,比较典型的有徐潼等人[22]以Th.Fraichard的思想为基础,扩充并完善了路径/速度分解方案来协调多机器人,设立集中管理agent进行整体规划,为每个机器人规划路径;并根据优先级规则对运动特征进行分布式规划以避免机器人间的冲突。周明等人[23]提出分布式智能避撞规划系统,将原来比较复杂的大系统转换为相对简单的子系统问题,由各智能机器人依据任务要求和环境变化,独立调整自身运动状态,完成任务的分布式智能决策体系结构。任炏等人[24]提出了基于过程奖赏和优先扫除的强化学习多机器人系统的冲突消解方法。该算法能够显著减少冲突,避免死锁,提高了系统整体性能。欧锦军等人[25]提出了通过调整机器人的运动速度实现多机器人避碰,将避碰问题转换为高维线性空间的优化问题,并进一步将其转换为线性方程的求解。该方法的缺点是系统的复杂度较高、计算量太大。
人工势场方法的特点是计算简洁、实时性强、便于数学描述,且适合于多自由度机器人环境,但容易产生抖动和陷入局部极小。为了克服其缺点,景兴建等人[26]提出了人工协调场的方法,在传统排斥力场中增加一个协调力,并将吸引力、排斥力和协调力与局部环境下机器人的运动状态和运动要求结合起来,有效地保证机器人的安全性,提高机器人在复杂动态环境下行为决策的准确性和鲁棒性。
3多机器人协作和协调机制
多机器人间的运动协调[27~31]是多机器人路径规划的关键,也是多机器人与单机器人路径规划相区别的根本所在。多机器人系统在复杂动态实时环境下,由于受到时间、资源及任务要求的约束,需要在有限时间、资源的情况下进行资源分配、任务调配、冲突解决等协调合作问题,而机器人间的协调与协作,能够大大地提高整个系统的效率和鲁棒性,成为系统完成控制或解决任务的关键。
目前已有的协调方式分为集中式、分布式和混合式三种。在集中式协调中,集中规划器详细地规划出每个机器人的动作,通常的做法是将多个机器人看做一个多自由度的机器人进行规划;而分布式协调规划中,机器人之间进行合作,将一个任务分成多个子任务,根据各自的特点完成不同的子任务,从而共同完成总任务;混合式协调是集中式和分布式混合在一起的形式。
摘要:在查阅大量文献的基础上对多机器人路径规划的主要研究内容和研究现状进行了分析和总结,讨论了多机器人路径规划方法的评判标准,并阐述了研究遇到的瓶颈问题,展望了多机器人路径规划方法的发展趋势。
关键词:多机器人;路径规划;强化学习;评判准则
Abstract:Thispaperanalyzedandconcludedthemainmethodandcurrentresearchofthepathplanningresearchformultirobot.Thendiscussedthecriterionofpathplanningresearchformultirobotbasedlargeofliterature.Meanwhile,itexpoundedthebottleneckofthepathplanningresearchformultirobot,forecastedthefuturedevelopmentofmultirobotpathplanning.
Keywords:multirobot;pathplanning;reinforcementlearning;evaluatingcriteria
近年来,分布式人工智能(DAI)成为人工智能研究的一个重要分支。DAI研究大致可以分为DPS(distributedproblemsolving)和MAS(multiagentsystem)两个方面。一些从事机器人学的研究人员受多智能体系统研究的启发,将智能体概念应用于多机器人系统的研究中,将单个机器人视做一个能独立执行特定任务的智能体,并把这种多机器人系统称为多智能体机器人系统(MARS)。因此,本文中多机器人系统等同于多智能体机器人系统。目前,多机器人系统已经成为学术界研究的热点,而路径规划研究又是其核心部分。
机器人路径规划问题可以建模为一个带约束的优化问题,其包括地理环境信息建模、路径规划、定位和避障等任务,它是移动机器人导航与控制的基础。单个移动机器人路径规划研究一直是机器人研究的重点,且已经有许多成果[1~3],例如在静态环境中常见的有连接图法、可视图法、切线图法、Voronoi图法、自由空间法、栅格法、拓扑法、链接图法、DempsterShafer证据理论建图等;动态环境中常见的有粒子群算法、免疫算法、遗传算法、神经网络、蚁群算法、模拟退火算法、人工势场法等。然而,多机器人路径规划研究比单个机器人路径规划要复杂得多,必须考虑多机器人系统中机器人之间的避碰机制、机器人之间的相互协作机制、通信机制等问题。
1多机器人路径规划方法
单个机器人的路径规划是找出从起始点至终点的一条最短无碰路径。多个机器人的路径规划侧重考虑整个系统的最优路径,如系统的总耗时间最少路径或是系统总路径最短等。从目前国内外的研究来看,在规划多机器人路径时,更多考虑的是多机器人之间的协调和合作式的路径规划。
目前国内外多机器人路径规划研究方法分为传统方法、智能优化方法和其他方法三大类。其中传统方法主要有基于图论的方法(如可视图法、自由空间法、栅格法、Voronoi图法以及人工势场方法等);智能优化方法主要有遗传算法、蚁群算法、免疫算法、神经网络、强化学习等;其他方法主要有动态规划、最优控制算法、模糊控制等。它们中的大部分都是从单个机器人路径规划方法扩展而来的。
1)传统方法多机器人路径规划传统方法的特点主要体现在基于图论的基础上。方法一般都是先将环境构建成一个图,然后再从图中寻找最优的路径。其优点是比较简单,比较容易实现;缺点是得到的路径有可能不是最优路径,而是次优路径。薄喜柱等人[4]提出的一种新路径规划方法的基本思想就是基于栅格类的环境表示和障碍地图的。而人工势场方法的基本思想是将移动机器人在环境中的运动视为一种虚拟人工受力场中的运动。障碍物对移动机器人产生斥力,目标点产生引力,引力和斥力周围由一定的算法产生相应的势,机器人在势场中受到抽象力作用,抽象力使得机器人绕过障碍物。其优点是适合未知环境下的规划,不会出现维数爆炸问题;但是人工势场法也容易陷入局部最小,并且存在丢失解的部分有用信息的可能。顾国昌等人[5]提出了引用总体势减小的动态调度技术的多机器人路径规划,较好地解决了这个问题。
2)智能优化方法多机器人路径规划的智能优化方(算)法是随着近年来智能计算发展而产生的一些新方法。其相对于传统方法更加智能化,且日益成为国内外研究的重点。
遗传算法是近年来计算智能研究的热点,作为一种基于群体进化的概率优化方法,适用于处理传统搜索算法难以解决的复杂和非线性问题,如多机器的路径规划问题。在路径规划中,其基本思想是先用链接图法把环境地图构建成一个路径节点链接网,将路径个体表达为路径中一系列中途节点,并转换为二进制串;然后进行遗传操作(如选择、交叉、复制、变异),经过N次进化,输出当前的最优个体即机器人的最优路径。遗传算法的缺点是运算速度不快,进化众多的规划要占据很大的存储空间和运算时间;优点是有效避免了局部极小值问题,且计算量较小。
孙树栋等人[6,7]在这方面较早地展开了研究,提出的基于集中协调思想的一种混合遗传算法来规划多机器人路径方法较好地解决了避障问题。但不足的是该方法必须建立环境地图,在环境未知情况下的规划没有得到很好的解决;且规划只能保证找到一个比较满意的解,在求解全局最优解时仍有局限。
文献[8]中提出的一种基于定长十进编码方法有效降低了遗传算法的编码难度,克服了已有的变长编码机制及定长二进制编码机制需特殊遗传操作算子和特殊解码的缺陷,使得算法更加简单有效。
智能计算的另一种常见的方法——蚁群算法属于随机搜索的仿生算法。其基本思想是模拟蚂蚁群体的觅食运动过程来实现寻优,通过蚂蚁群体中各个体之间的相互作用,分布、并行地解决组合优化问题。该算法同样比较适合解决多机器人的路径规划问题。
朱庆保[9]提出了在全局未知环境下多机器人运动蚂蚁导航算法。该方法将全局目标点映射到机器人视野域边界附近作为局部导航子目标,再由两组蚂蚁相互协作完成机器人视野域内局部最优路径的搜索,然后在此基础上进行与其他机器人的碰撞预测与避碰规划。因此,机器人的前进路径不断被动态修改,从而在每条局部优化路径引导下,使机器人沿一条全局优化的路径到达目标点。但其不足是在动态不确定的环境中路径规划时间开销剧增,而且机器人缺乏必要的学习,以至于整个机器人系统路径难以是最优路径。
强化学习[10,11](又称再激励学习)是一种重要的机器学习方法。它是一种智能体从环境状态到行为映射的学习,使得行为从环境中获得积累奖赏值最大。其原理如图1所示。
强化学习算法一般包含了两个步骤:a)从当前学习循环的值函数确定新的行为策略;b)在新的行为策略指导下,通过所获得的瞬时奖惩值对该策略进行评估。学习循环过程如下所示,直到值函数和策略收敛:
v0π1v1π2…v*π*v*
目前比较常见的强化学习方法有:MonteCarlo方法、动态规划方法、TD(时间差分)方法。其中TD算法包含Sarsa算法、Q学习算法以及Dyna-Q算法等。其Q值函数迭代公式分别为
TD(0)策略:V(si)V(si)+α[γi+1+γV(si+1)-V(si)]
Sarsa算法:Q(st,at)Q(st,at)+α[γt+1+γQ(st+1,at.+1)-Q(st,at)]Qs′学习算法:Qπ(s,a)=∑Pαss′[Rass′+γVπ(s′)]
近年来,基于强化学习的路径规划日益成为国内外学者研究的热点。M.J.Mataric[12]首次把强化学习引入到多机器人环境中。而基于强化学习的多机器人路径规划的优点主要体现在:无须建立精确的环境模型,简化了智能体的编程;无须构建环境地图;强化学习可以把路径规划、避碰、避障、协作等问题统一解决。
张芳等人[13]提出了基于再激励协调避障路径规划方法,把再励函数设计为基于行为分解的无模型非均匀结构,新的再励函数结构使得学习速度得以提高且有较好的鲁棒性。同时,证明了在路径规划中,机器人的趋向目标和避障行为密切相关,对反映各基本行为的再励函数取加权和来表示总的再励函数要优于取直接和的表示方式,也反映了再励函数设计得合理与否及其确切程度将影响再励学习的收敛速度。王醒策等人[14]在动态编队的强化学习算法方面展开了研究。宋一然[15]则提出了分段再励函数的强化学习方法进行路径规划。其缺点是学习次数较多、效率不高,当机器人数目增加时,它有可能面临维数灾难的困难。所以,基于强化学习的路径规划在多机器人环境下的学习将变得比较困难,需要对传统的强化学习加以优化,如基于人工神经网络的强化学习[16]等。
3)其他方法除了以上国内外几种比较常见且研究较多的方法外,还有唐振民等人[17]提出的基于动态规划思想的多机器人路径规划,把运筹学中的动态规划思想与Dijkstra算法引入到多机器人的路径规划中,用动态规划的基本思想来解决图论中的费用流问题和路径规划中的层级动态联盟问题。其选择距离邻近法作为联盟参考依据。一个机器人的邻居是指在地理位置上分布在这个机器人周围的其他机器人;与该机器人最近邻的机器人为第一层邻居,第一层邻居的邻居为该机器人的第二层邻居,依此类推。那么层级越高(即越近)的邻居,它满足协作要求的可能性越大。动态规划算法实质上是一种以空间换时间的技术,它在实现的过程中,必须存储产生过程中的各种状态,其空间复杂度要大于其他算法,故动态规划方法比较适合多机器人的全局路径规划。
孙茂相等人[18]提出了最优控制与智能决策相结合的多移动机器人路径规划方法。其首先构造一个以各机器人最优运动状态数据库为核心的实时专家系统,在离线状态下完成;然后各机器人在此专家系统的支持下,以最优规划策略为基础,采用速度迁移算法,自主决定其控制。该方法拥有较好的稳定性与复杂度。焦立男等人[19]提出的基于局部传感和通信的多机器人运动规划框架较好地解决了多机器人路径规划在局部在线规划的系统框架问题。沈捷等人[20]提出了保持队形的多移动机器人路径规划。以基于行为的导航算法为基础,把机器人队列的运动过程划分为正常运动、避障和恢复队形三个阶段。在避障阶段,引入虚拟机器人使队形保持部分完整;当队形被严重打乱时,规划机器人的局部目标位姿使队列快速恢复队形。其算法重点为避障机器人进入避障状态,暂时脱离队列,并以虚拟机器人代替避障机器人。
2多机器人避碰和避障
避障和避碰是多机器人路径规划研究中需要考虑的重点问题之一。避障和避碰主要讨论的内容有防止碰撞;冲突消解、避免拥塞;如何避免死锁。在路径规划中常见的多机器人避障方法[21]有主从控制法、动态优先法(建立在机器人之间的通信协商上)、交通规则法、速率调整法,以及障碍物膨胀法、基于人工势场的方法等。
目前国内外对于多机器人避障展开的研究还不是很多,比较典型的有徐潼等人[22]以Th.Fraichard的思想为基础,扩充并完善了路径/速度分解方案来协调多机器人,设立集中管理agent进行整体规划,为每个机器人规划路径;并根据优先级规则对运动特征进行分布式规划以避免机器人间的冲突。周明等人[23]提出分布式智能避撞规划系统,将原来比较复杂的大系统转换为相对简单的子系统问题,由各智能机器人依据任务要求和环境变化,独立调整自身运动状态,完成任务的分布式智能决策体系结构。任炏等人[24]提出了基于过程奖赏和优先扫除的强化学习多机器人系统的冲突消解方法。该算法能够显著减少冲突,避免死锁,提高了系统整体性能。欧锦军等人[25]提出了通过调整机器人的运动速度实现多机器人避碰,将避碰问题转换为高维线性空间的优化问题,并进一步将其转换为线性方程的求解。该方法的缺点是系统的复杂度较高、计算量太大。
人工势场方法的特点是计算简洁、实时性强、便于数学描述,且适合于多自由度机器人环境,但容易产生抖动和陷入局部极小。为了克服其缺点,景兴建等人[26]提出了人工协调场的方法,在传统排斥力场中增加一个协调力,并将吸引力、排斥力和协调力与局部环境下机器人的运动状态和运动要求结合起来,有效地保证机器人的安全性,提高机器人在复杂动态环境下行为决策的准确性和鲁棒性。
3多机器人协作和协调机制
多机器人间的运动协调[27~31]是多机器人路径规划的关键,也是多机器人与单机器人路径规划相区别的根本所在。多机器人系统在复杂动态实时环境下,由于受到时间、资源及任务要求的约束,需要在有限时间、资源的情况下进行资源分配、任务调配、冲突解决等协调合作问题,而机器人间的协调与协作,能够大大地提高整个系统的效率和鲁棒性,成为系统完成控制或解决任务的关键。
目前已有的协调方式分为集中式、分布式和混合式三种。在集中式协调中,集中规划器详细地规划出每个机器人的动作,通常的做法是将多个机器人看做一个多自由度的机器人进行规划;而分布式协调规划中,机器人之间进行合作,将一个任务分成多个子任务,根据各自的特点完成不同的子任务,从而共同完成总任务;混合式协调是集中式和分布式混合在一起的形式。
多机器人间典型的协调方法[32]有合同网协议[33]、黑板模型、结果共享的协同方法、市场机制。近年来强化学习在多机器人协作方面也得到很好的应用,陈雪江[32]在基于强化学习的多机器人协作方面展开了研究,提出了多智能体协作的两层强化学习方法来求解在多智能体完全协作、有通信情况下的协作问题。其主要通过在单个智能体中构筑两层强化学习单元来实现:第一层强化学习单元负责学习智能体的联合任务协作策略;第二层强化学习单元负责学习在本智能体看来是最有效的行动策略。陈伟等人[34]提出基于多目标决策理论的多机器人协调方法;通过对环境的拓扑建模,从基于行为的机器人学角度出发,对任务进行分解并设计目标行为,以多目标行为决策理论作为决策支持,从而达到多机器人运动协调的目的。
4多机器人路径规划方(算)法的判优准则
通常评价机器人路径规划方(算)法的标准文献[35]有正确性、时间/空间复杂度、并行性、可靠性、扩展性、鲁棒性和学习。而多机器人的路径规划除了以上一些衡量标准之外,还需要考虑整个系统的最优化以及机器人间的协调性。
1)正确性是分析算法的最基本的原则之一。一般来说算法的正确性是指:在给定有效的输入数据后,算法经过有穷时间的计算能给出正确的答案。但在多机器人路径规划算法中,正确性主要指:路径规划算法要生成多个机器人协调运动的无碰安全路径;这条路径是优化的。
2)安全性一般指多机器人所生成的各路径中节点与障碍物有一定的距离。但在实际的应用背景下,有人认为安全性可以从两个方面来理解:a)狭义地讲,它就是机器人在行走过程中所做的功。在一定的条件下,它与路径长度准则是一致的。b)广义地讲,它是各种优化条件加权综合而得到的结果。
3)复杂度一个算法的复杂性高低体现在该算法所需要的计算机资源的多少上面。所需要的资源越多,该算法的复杂性越高;反之,所需要的资源越少,该算法的复杂性就越低。算法的复杂性包括时间复杂度和空间复杂度。
在多机器人的路径规划算法中,算法的复杂度分析显得尤为重要。一般地,单机器人路径规划算法的时空复杂度已经颇高,它们的数量级至少是O(n2);多机器人的路径规划算法不仅是m-O(n2)(即m个机器人路径规划简单地叠加),它们之间还存在着对运动空间竞争的冲突,面对不断变化的冲突的协调需要花费大量的时间和空间。通常多机器人的路径规划算法与机器人的个数呈指数关系O(km×n2)(k为常数)。这对多机器人路径规划算法的时间/空间复杂度控制是一个很严峻的考验。
4)并行性算法的并行性从算法设计、编写程序、编译和运行等多个不同的层次来体现。路径规划过程需要大量的计算,当处理的环境比较复杂,机器人工作的环境过于紧凑,尤其是机器人数量很多时,算法的时间/空间复杂度势必会成为算法效率的关键。因此,在算法设计和运行上的并行性是通常考虑的方法。对多个机器人的路径规划尽量采用分布式多进程的规划机制,以实现每个机器人路径规划的并行性。
5)可靠性把多个机器人及其工作环境看成是一个系统,多机器人处于它们各自的起始点时,称该系统处于初始状态;当它们处于各自的目标点时,称该系统处于目标状态。多机器人的路径规划就是在该系统的这两个状态间建立一串合理的状态变迁。这一状态变迁过程可能会历经许多状态,如果在状态变迁过程中,路径规划算法控制不好各状态间的转移关系,就会导致系统紊乱,出现机器人间的碰撞、找不到路径等恶性后果,使任务失败。所以这就对算法的可靠性和完备性提出了挑战。为了很好地克服这一困难,需要对系统的各种可能状态建模,分析它们相互间的关系,建立有限状态自动机模型或Petri网模型,并以此为指导,按照软件工程的思想,构造恰当的算法输入来对算法的可靠性进行检验。
6)可扩展性在多机器人的路径规划算法中,可扩展性主要是指一种路径规划算法在逻辑上,或者说在实现上能否容易地从2D空间扩展到3D空间,从低自由度扩展到高自由度,从较少的机器人数到更多的机器人数。可扩展性在各种路径规划算法之间没有一种量的比较标准,只能从实际的具体情况出发、从对环境描述的适宜程度出发、从算法解决这一问题的复杂度出发、从算法本身的自适应出发等来考虑。
7)鲁棒性和学习鲁棒性对于多机器人系统非常重要。因为许多应用,如路径规划要求连续的作业、系统中的单个机器人出现故障或被破坏,要求机器人利用剩余的资源仍然能够完成任务。学习是在线适应特定的任务。虽然通用的系统非常有用,但将它用于特定应用上时,通常需要调整一些参数。具有在线调整相关参数的能力是非常吸引人的,这在将体系结构转移到其他应用时可以节省许多工作。尤其是多机器人系统中机器人的自身学习和相互间的学习能够大大提高整个系统的效率和系统的稳定性。
8)最优化对动态环境有优化反应。由于有些应用领域涉及的是动态的环境条件,具有根据条件优化系统的反应能力成为能否成功的关键。
5结束语
综上所述,国内外研究者在多机器人路径规划取得了一些成果,但是在协作、学习、通信机制等方面仍面临很大的困难和不足。如何进一步提高机器人间的协调性,增强机器人自身以及相互间的学习以提高多机器人系统的效率和鲁棒性都有待深入研究。近年来无线通信技术得到长足发展,但在目前的技术条件下,在多机器人系统中实现所有机器人之间的点对点实时通信还有较大困难,这也是大多数多机器人系统仍然采用集中通信方式的主要原因。因此,如何降低多机器人系统对通信速度的依赖程度也是一个非常重要的问题。
总之,多机器人路径规划设计和实现是一项极其复杂的系统工程,展望其能在结合计算智能方法,如差分进化、遗传算法、粒子群算法、免疫算法、模糊逻辑算法、BP网络、人工势场的改进、模拟退火和环境建模方法等方面取得新的突破。
参考文献:
[1]WEISSG.Multiagentsystems:amodernapproachtodistributedmodernapproachtoartificialintelligence[M].Cambridge,Massachusetts:MITPress,1999:121-161.
[2]蔡自兴,徐光祐.人工智能及其应用:研究生用书[M].3版.北京:清华大学出版社,2004:124-198.
[3]谭民,王硕,曹志强.多机器人系统[M].北京:清华大学出版社,2005:6-81.
[4]薄喜柱,洪炳熔.动态环境下多移动机器人路径规划的一种新方法[J].机器人,2001,23(5):407-410.
[5]顾国昌,李亚波.基于总体势减小的动态调度技术解决多机器人的路径规划[J].机器人,2001,23(2):171-174.
[6]孙树栋,林茂.基于遗传算法的多移动机器人协调路径规划[J].自动化学报,2000,26(5):672-676.
[7]周明,孙树栋,彭炎午.基于遗传算法的多机器人系统集中协调式路径规划[J].航空学报,2000,21(2):146-149.
[8]CAIZixing,PENGZhihong.Cooperativecoevolutionaryadaptivegeneticalgorithminpathplanningofcooperativemultimobilerobotsystems[J].JournalofIntelligentandRoboticSystems:TheoryandApplications,2002,33(1):61-71.
[9]朱庆保.全局未知环境下多机器人运动蚂蚁导航算法[J].软件学报,2006,17(9):1890-1898.
[10]SANDHOLMTW,CRITESRH.Multiagentreinforcementlearningintheiteratedprisoner’sdilemma[J].BioSystems,1996,37(1):147-166.
[11]高阳,陈世福,陆鑫.强化学习研究综述[J].自动化学报,2004,30(1):
86-100.
[12]MATARICMJ.Interactionandintelligentbehavior[D].Massachusetls:DepartmentofElectricalEngineeringandComputerScience,MIT,1994.
[13]张芳,颜国正,林良明.基于再励学习的多移动机器人协调避障路径规划方法[J].计算机工程与应用,2003,39(3):80-83.
[14]王醒策,张汝波,顾国昌.多机器人动态编队的强化学习算法研究[J].计算机研究与发展,2003,40(10):1444-1450.
[15]宋一然.基于强化学习的多机器人路径规划方法[J].莆田学院学报,2006,13(2):38-41.
[16]韩学东,洪炳熔.基于人工神经网络的多机器人协作学习研究[J].计算机工程与设计,2002,23(6):1-3.
[17]唐振民,赵春霞,杨静宇,等.基于动态规划思想的多机器人路径规划[J].南京理工大学学报,2003,27(5):610-615.
[18]孙茂相,周明,王艳红,等.多移动机器人实时最优运动规划[J].控制与决策,1998,
13(2):125-130.
[19]焦立男,唐振民.基于局部传感和通讯的多机器人运动规划框架[J].计算机工程与应用,2007,43(17):89-93.
[20]沈捷,费树岷,郑波.多移动机器人保持队形路径规划[J].东南大学学报,2005,35(3):391-395.
[21]MANSORMA,MORRISAS.Pathplanninginunknownenvironmentwithobstaclesusingvirtualwindow[J].JournalofIntelligentandRoboticSystems,1999,24(3):235-251.
[22]徐潼,唐振民.多机器人系统中的动态避碰规划[J].计算机工程,2003,29(17):
79-81,104.
[23]周明,孙茂相,尹朝万,等.多移动机器人分布式智能避撞规划系统[J].机器人,1999,21(2):139-143.
[24]任炏,陈宗海.基于强化学习算法的多机器人系统的冲突消解的方法[J].控制与决策,2006,21(4):430-434,439.
[25]欧锦军,朱枫.一种多移动机器人避碰规划方法[J].机器人,2000,22(6):474-481.
[26]景兴建,王越超,谈大龙.基于人工协调场的多移动机器人实时协调避碰规划[J].控制理论与应用,2004,21(5):757-764.
[27]PANAITL,LUKES.Cooperativemultiagentlearning:thestateoftheart[J].AutonomousAgentsandMultiAgentSystems,2005,11(3):387-434.
[28]TZAFESTASCS,PROKOPIOUPA,TZAFESTASSG.Pathplanningandcontrolofacooperativethreerobotsystemmanipulatinglargeobjects[J].JournalofIntelligentandRoboticSystems,1998,22(2):99-116.
[29]薛宏涛,叶媛媛,沈林成,等.多智能体系统体系结构及协调机制研究综述[J].机器人,2001,23(1):85-90.
[30]周风余,李贻斌,宋锐,等.基于混合式多智能体系统的协作多机器人系统研究[J].山东大学学报:工学版,2005,35(1):82-87.
[31]夏冰,张佐,张毅,等.基于多智能体系统的动态路径选择算法研究[J].公路交通科技,2003,20(1):93-96.
[32]陈雪江.基于强化学习的多机器人协作机制研究[D].杭州:浙江工业大学,2004.
[33]SMITHR.Thecontractnetprotocol:highlevelcommunicationandcontrolinadistributedproblemsolver[J].IEEETransonComputer,1980,C-29(12):1104-1113.
[34]陈伟,张铭钧,孟宪松.基于多目标决策理论的多机器人协调方法[J].哈尔滨工程大学学报,2003,24(3):308-312.
[35]李亚波.多机器人的路径规划与协调[D].哈尔滨:哈尔滨工程大学,2000.
摘要:在查阅大量文献的基础上对多机器人路径规划的主要研究内容和研究现状进行了分析和总结,讨论了多机器人路径规划方法的评判标准,并阐述了研究遇到的瓶颈问题,展望了多机器人路径规划方法的发展趋势。
Abstract: Through the introduction of the interesting questions of programming contest, which can help to stimulate the students' interest in learning and to raise the students' practical ability. This paper solves a classic competition topic named energy necklace problem by using a typical example named matrix multiply problem of the dynamic programming method, analyzes the similarity and difference of this two problems, and obtains the solving method of energy necklace problem.
关键词: 动态规划;矩阵连乘问题;能量项链问题
Key words: dynamic programming;matrix multiply problem;energy necklace problem
中图分类号:G42;TP39 文献标识码:A 文章编号:1006-4311(2012)35-0170-02
0 引言
在软件工程专业的算法分析与设计课程中,笔者进行了相关的教学改革,其中最突出的一点就是在讲每种算法设计方法时,都从ACM竞赛或NOI竞赛中挑选有趣的且适合的竞赛题目来引入要讲的这个例子。例如,在讲动态规划算法时,通过赛题“能量项链问题”来引入矩阵连乘问题,通过赛题“回文词的构造”来引入最长公共子序列问题等。通过这些竞赛题目的引入,极大地激发了学生的学习兴趣。本文要讨论的就是如何利用所学的矩阵连乘问题来解决经典的竞赛题目“能量项链问题”。
1 问题描述
1.1 矩阵连乘问题 几乎在任何一本关于算法分析与设计课程的教材中,在介绍动态规划算法时,都无一例外的会讲授矩阵连乘问题,该问题是能用利用动态规划方法解决的典型问题。该问题是说:给定n个矩阵A1,A2,…,An,其中矩阵Ai(1≤i≤n)的维数为pi×pi+1,于是相邻的两个矩阵就是可以相乘的。考虑这n个矩阵的连乘积A1A2…An,由于矩阵乘法满足结合律,所以求解这个矩阵连乘积时可以有许多不同的计算次序,每种计算次序都对应一个乘法次数。那么矩阵连乘问题就是要确定一个矩阵连乘积的一种最优计算次序,使得计算一个矩阵连乘积时,所需要的乘法次数最少。
假设用二维数组m来保存问题的最优值,数组元素m[i][j]保存的是求解矩阵连乘积AiAi+1…Aj-1Aj时所需的最少乘法次数。则根据最优子结构性质,容易建立m[i][j]所满足的递推关系式如下。
(1)i=j m[i][j]=0
(2)i
根据递推关系式容易给出求解最小乘法次数的动态规划算法,如下所示。
int p[100],m[100][100];
void matrix_min(int n)
{ for(int i=1;i
m[i][i]=0;
for(int r=2;r
for(int i=1;i
{ int j=i+r-1;
m[i][j]=m[i+1][j]+p[i]*p[i+1]*p[j+1];
for(int k=i+1;k
{ int min=m[i][k]+m[k+1][j]+p[i]*p[k+1]*p[j+1];
if (minm[i][j])
m[i][j]=min;
}
}
}
调用该算法可求出n个矩阵相乘时所需的最少乘法次数,若要求n个矩阵相乘时所需的最大乘法次数则只需将matrix_min算法中if语句条件中的“”即可,为了便于描述,将求n个矩阵相乘时所需的最大乘法次数的算法命名为matrix_max算法。
1.2 能量项链问题 在NOIP2006提高组复赛试题中有一道题目,叫做“能量项链问题”,题目的大致含义是:在一串能量项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,这两颗珠子才能聚合成一颗珠子,同时释放出能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则这两颗能量珠聚合后释放的能量为m×r×n,新产生的珠子的头标记为m,尾标记为n。
显然,N颗珠子聚合成一颗珠子时会有许多不同的聚合次序,不同的聚合顺序得到的总能量是不同的,能量项链问题就是要确定N颗珠子聚合时的一种最优聚合次序,使得按照这种次序将N颗珠子聚合成一颗珠子时,释放出的总能量最大。
例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3),(3,5),(5,10),(10,2)。则这4颗珠子的一种最优聚合次序及释放出的最大能量值如下。
((4?茌1)?茌2)?茌3)=10×2×3+10×3×5+10×5×10=710。
符号?茌表示聚合操作。
2 矩阵连乘问题与能量项链问题的相似性与相异性
由以上两个问题的描述可知,它们之间有许多相似之处,其相似性可归纳为以下五点。
①矩阵和珠子非常相似,每个矩阵都有行数和列数,每个珠子都有头标记和尾标记;②对于相邻的两个矩阵来说,前一个矩阵的列等于后一个矩阵的行,对于相邻的两个珠子来说,前一个珠子的尾标记等于后一个珠子的头标记;③相邻的两个矩阵相乘时所需的乘法次数为这两个矩阵的三个维数的乘积,相邻的两个珠子聚合时所产生的能量为这两个珠子的三个标记的乘积;④两个矩阵相乘后得到一个矩阵,这个矩阵的行数为第一个矩阵的行,这个矩阵的列数为第二个矩阵的列,中间相同的维数抵消了。两个珠子聚合后得到一个珠子,这个珠子的头标记为第一个珠子的头标记,这个珠子的尾标记为第二个珠子的尾标记,中间相同的标记抵消了;⑤n个矩阵相乘时,一种计算次序所对应的乘法次数是每一次相乘时所需的乘法次数之和,n个珠子聚合时,一种聚合次序所对应的能量值是每一次聚合时所产生的能量之和。
当然,两个问题之间也有区别,主要有两点。①在矩阵连乘问题中,第n个矩阵和第1个矩阵是不相邻的,而在能量项链问题中,第n个珠子和第1个珠子是相邻的,第n个珠子的尾标记一定要等于第1个珠子的头标记,这两个珠子是可以进行聚合操作的;②在矩阵连乘问题中,是要确定n个矩阵相乘的一种最优计算次序,使得所需要的乘法次数最少。而在能量项链问题中,是要确定n个珠子聚合时的一种最优聚合次序,使得释放的总能量值最大。
3 能量项链问题的解法探讨
鉴于以上分析,能量项链问题其实就是一个特殊的矩阵连乘问题,可将一个珠子看成是一个矩阵,将n个珠子构成的能量项链看成是由n个矩阵构成的环形矩阵连乘积,只不过在这个环形矩阵连乘积中,第n个矩阵的列数一定要等于第1个矩阵的行数。两个珠子聚合后产生的能量值就是它们对应的两个矩阵相乘时所需的乘法次数,n个珠子聚合成一个珠子时产生的总能量值就是这n个矩阵相乘后得到一个矩阵时所需的总的乘法次数,要确定n个珠子聚合时的一种最优聚合次序,使得释放的总能量值最大。也就是要确定这n个矩阵构成的环形矩阵连乘问题的一种最优计算次序,使得所需的乘法次数达到最大。
在n个矩阵直线相乘时,第n个矩阵和第1个矩阵是不相邻的,即这两个矩阵是不能相乘的。而当这n个矩阵环形相乘时,第n个矩阵和第1个矩阵是相邻的,这两个矩阵是可以相乘的,这种相邻性的改变使问题变得复杂了。在n个矩阵直线相乘时,长度为n的矩阵连乘积只有一种,就是A1A2…An,而当n个矩阵环形相乘时,长度为n的矩阵连乘积就有n种,分别是:A1A2…An-1An,A2A3…AnA1,依此类推,最后一种是AnA1…An-2An-1。其实要表示出这n种情况,可将n个矩阵构成的圆环在矩阵An和A1之间断开,拉成一条直线,然后在矩阵An的后面添加上n-1个矩阵,也就是添加上A1A2…An-2An-1,这样就形成了一个长度为2n-1的直线矩阵链,显然在这个长度为2n-1的直线矩阵链中,上述n种情况都可以表示出来。
若用An+i来表示新添加的第i个矩阵,这里1≤i≤n-1,则有An+i=Ai。对于这个长度为2n-1的直线矩阵连乘问题来说,上述n种直线相乘的情况就是这个问题的n个子问题,因此,只需要利用matrix_max算法求长度为2n-1的直线矩阵连乘问题的最大乘法次数即可,在以自底向上方式计算它的最大乘法次数时,所有长度为n的子矩阵连乘积所需的最大乘法次数都已经求完了,共有n个,由matrix_max算法的思想可知,长度为n的子矩阵连乘积所需的最大乘法次数可表示为m[i][i+n-1],这里1≤i≤n,最终这n个m[i][i+n-1]中的最大者就是n个矩阵环形相乘时所需的最大乘法次数。
根据上述方法求解环形矩阵连乘问题最优值的步骤可归纳为三步。
①扩充操作,添加n-1个矩阵,从而将长度为n的环形矩阵连乘问题转化为长度为2n-1的直线矩阵连乘问题;②调用matrix_max算法求长度为2n-1的直线矩阵连乘问题的最优值;③求n个m[i][i+n-1]中的最大者。
根据上述思想,其求解算法如下所示。
int circlematrix(int n)
{ int i, max=0;
for(i=2;i
p[n+i]=p[i];
matrix_max(2*n-1);
for(i=1;i
if(m[i][i+n-1]>max)
max=m[i][i+n-1];
return max;
}
4 结论
本文利用“矩阵连乘问题”解决了一道经典的竞赛题目“能量项链问题”,在授课程过程中,笔者曾以一个学生为例引入了这道竞赛题目,课堂效果非常好。通过竞赛题目的引入和讲解,有利于激发学生的学习兴趣,对算法分析与设计课程不再有畏难心理,提高学生的算法设计能力,并有利于开展素质教育活动,积极指导学生参加学科竞赛。
参考文献:
[1]潘金贵,顾铁成等译.算法导论[M].北京:机械工业出版社,2007:197-202.