英语答题卡RoboCup中基于动作序列模型的动作决策
丁晨阳
【摘 要】RoboCup机器人足球比赛是当前人工智能领域的一个研究热点,其目的在于为多智能体系统提供一个标准的研究平台.为了让RoboCup仿真比赛中球员智能体实时地作出合理的动作决策,提出一种基于动作序列模型的决策机制,通过对球员智能体的动作空间分解、建立动作序列并对动作序列进行评价,而让智能体选择出当前最优的动作执行.仿真结果表明应用这种决策机制提高了智能体对环境的适应性.
【期刊名称】《微型机与应用》
【年(卷),期】2013(032)007
【总页数】4页(P89-91,94)
颈部瑜伽【关键词】动作决策;RoboCup;动作序列模型;评价
【作 者】丁晨阳
【作者单位】扬州职业大学,江苏扬州225009
【正文语种】中 文
【中图分类】TP242.6
RoboCup机器人足球世界杯赛是多智能体系统MAS(Multi-Agent System)和分布式人工智能的一个重要研究平台。它提供了一个标准的多智能体环境,在这样一个动态的、连续的、不可预知的环境中,进行多智能体决策是一个难题。
RoboCup仿真比赛中球员智能体快速地采取合理的行动选择对于球队的表现有着决定性的影响。作为整队策略的设计者,要做的工作就是决定智能体在比赛的每一个仿真周期选择什么动作发送给服务器。传统的方法是使用决策树[1],其动作选择过程分为两个步骤:首先确定当前的状态模式,然后根据相应的状态模式产生一个恰当的动作命令。这个方法的优点是实现简单,而且计算量小,反应比较快。然而要确定当前的状态模式,就必须在设计时将场上状态离散化成一个有限的集合,而在RoboCup中,由于智能体处于一个动态、连续的环境中,场上状态的变化是微妙的,这使得状态的离散化变得很难,而且由于状态
的数量是趋于无穷的,在程序中无法将所有的状态都考虑到,所以这种方法的效果是有限的。虽然场上状态是连续、无限的,但球员可选择的动作却是有限且易于区分的。
本文提出动作序列模型将球员智能体的动作空间离散化,并对动作进行评价得到一个评价值,智能体根据评价值挑选出最优的动作执行。动作序列模型的设计主要在于动作空间的划分和动作序列的评价。合理的动作划分使得智能体具有更多、更合理的动作序列,在当前形势下能够进行更加周全的分析和决策。对动作序列的评价是动作序列模型设计中的关键环节,通过将智能体当前情况下执行某一动作能得到的收益进行量化来使得动作是可选的。通过对动作序列的离散化并进行评价,可以实现一个适应性强、易于扩展的整队策略。
1 动作序列模型的设计
动作序列模型中所有动作都具有三个相同的操作:判断动作是否能被执行、评价函数和取得执行动作所需的服务器命令。为了提供一个统一的接口,可以抽取这些公有操作,设计一个抽象类Action,定义如下:
其中IsPreconditionReady( )判断动作的前提条件是否满足,这是在评价动作前必须要做的,若前提条件不满足,比如无人可以传球,那评价动作也就没有意义了;getEstimateAfterAction( )对执行动作的结果进行评价,返回评价值;getCurrentCommand( )取得当前执行此动作所对应的命令。这三个操作应该按顺序调用。什么是au
你问我答2由Action可派生出各个具体动作,如图1所示有传球 passBall、带球 dribble、射门 shoot等,在这些具体动作中实现其父类的纯虚函数。
图1 动作的类层次
1.1 动作空间的划分
本节描述的动作属于高层决策问题的一部分,是利用仿真比赛服务器提供的底层基本技能 (dash、kick、turn等) 组合而成的 高 层 复 杂 动 作 (passBall、dribble、shoot等)。图2给出了个人基本技能以及动作序列在智能体结构中所处的层次。
airport是什么意思
图2 动作序列在智能体结构中所处的层次
动作序列模型中主要包括以下动作:(1)传球passBall:在传球者和各个可能的队友之间计算出一条合适的路线传球。(2)带球dribble:选择合适的带球角度以及速度移动球,并将球控制在一定距离内。(3)射门shoot:将球踢向对方球门线上的最佳射门点。(4)过人outplayOpponent:将球传到对方防守队员背面的位置。(5)截球 intercept:当智能体是离球最快的队员时,依据截球周期、截球点等参数执行此动作。(6)清球clearBall:大力将球踢尽量远。 (7)跑位 moveToPos:根据协作需要搜索一个空闲位置移动过去。(8)盯人mark:选择盯人对象以及盯人位置,阻止对方截球或者接近球门。(9)找球archBall:当球不在视觉范围内时,转身找球。
动作序列模型里的动作序列可以被逐渐扩充,在初期的设计时可以足够简单,易于测试和实现,而在后期可以通过添加动作将动作序列逐渐完善。
如果让智能体遍历所有动作挑选出最优,有可能会无法满足比赛实时性的要求,因此不同角色的球员对应的动作序列是不同的,决策时,球员智能体只需要考虑与自己相关的动作序列,例如一个充当守门员角色的智能体永远也不会进入对方的禁区,就不需要把这个状态所对应的动作考虑在内。这样按球员角色分配动作序列,可以缩小每个智能体动作序列的求解空间,智能体的行为选择越少,将越容易进行动作决策。
1.2 动作序列的评价
动作序列模型还要求对动作进行评价,依据评价值可给出各动作的优先级。序列中的某些动作被排除在评价的范围之外,这是由于它们具有比较明确的前提条件,一旦前提条件满足,则动作必须执行。比如截球动作,只要队员是最快到达球的位置就去截球。
对动作进行评价的最终结果是得到一个评价值,评价值的计算方法由式(1)给出,其中 estimate_value是评价值,benefit是执行动作所得到的效益,chance是执行此次动作的成功率。
1.2.1 效益值
效益值benefit是度量执行动作对实现多智能体系统的最终目标能产生多大效果的标准。在RoboCup中全队的最终目标是进球,所以执行动作后球越靠近对方球门、越靠近边路效益越大。为了同时体现x和y坐标在效益中的作用,同时减少效益值计算时产生的振荡,本文参考了UvA Trilearn曾提出过的分区的思想[2],对球场进行了分区来辅助效益值的计算。球场被分为7个区,如图3所示。
图3 球场分区情况
area_0,area_1,area_2,area_3,area_4,area_5,area_6分 别表示这7个区,对每个区都规定了效益的最小值和最大值。分区效益的最大值定义如表1所示,当且仅当在分区的最大x坐标处取得最大值,0区的最小值为0.0,其余分区的效益最小值为其相邻上一个分区的最大值(area_6除外)。
表1 球场7个分区分别对应的效益最大值区域类型area_0 area_1 area_2 area_3 area_4 area_5 area_6效益最大值0.1 0.2 0.4 0.7 0.9 1.0 1.8
给定一个位置 pos(x,y),计算其效益值如式(2)和式(3)。
若 pos处于 area_N,N∈{0,1,2,3,4,5}:
若pos处于 area_6:
其中 getX( ),getY( )分别为取得 pos的 x,y坐标值的方法,由于area_6比较特殊,处于敌方球门的正前方,对我方十分有利,所以对它进行了特殊的处理。
培训班名称
1.2.2 成功率
愚人节英文成功率chance代表执行此动作成功的概率,对于不同的动作,成功率的计算是不一样的,下面以传球为例说明成功率的计算过程。
stand by me什么意思为计算传球成功率,使用了一个分布函数:s(x)=1/(1+e-x)。 它是一个 S 形的函数,且 s(x)∈[0,1];s(0)=0.5;当 x<<0 时,s(x)~0;当 x>>1 时,s(x)~1。所以,s(x)提供了一个在(0,1)上的分布。
如图4所示,球的当前位置posBall和传球点posPassTo的连线为传球路,对于此传球路线只考虑一个最危险的敌人,计算得到它的截球点posInter,DistBall为posBall到posInter的距离,DistOpp为最危险的敌人到posInter的距离,则传球成功率的计算如式(4):
图4 传球成功率的计算
按照 s(x)函数的分布,当 1.5×DistOpp=DistBall时,chance=0;当 1.5×DistOpp<<DistBall时,chance→0,即球通过posInter的几率很小;当 1.5×DistOpp>>DistBall时,chance→1,即球通过posInter的几率很大。在速度一定的情况下,距离越远,需要的时间
越长,由于球的速度通常都比球员的速度大,所以将DistOpp放大了1.5倍作为修正。
>上海出国