滁州学院本科毕业设计
的补充,异构智能体的选择建立在角色的基础上,并为规划决策模块中的策略服务。比如防守为主的球队要加强后卫的素质,进攻为主的球队则要加快前锋的速度等。
异构智能体的选择和辨识都由在线教练完成,本章首先讨论了在线教练的设计,然后介绍了异构智能体类型,接下去是异构智能体的评价标准和分配算法,最后说明如何对对方的异构智能体进行在线辨识。
4.1在线教练设计
在仿真比赛时,比赛不能被场外的因素打断,所以除了场上比赛的队员和裁判以外,没有其他人(在RoboCup中表现为应用程序)能控制/影响整个比赛的进行,但是教练程序除外。RoboCup仿真比赛中的教练程序分成两类:离线教练(Trainer)和在线教练(Online Coach)。
离线教练在正式比赛中被禁止使用,其主要目的是在平时帮助球员得到更好的训练。例如,为了训练在特定场景中的某一特定动作,需要不断再现该场景,通过多次自动反复的样本采集才能应用机器学习的方法来训练队员。在线教练的引入是为了模拟现实足球中的教练,经常可以在人类足球比赛中看到一个在球场旁边大喊大叫的教练,虽然他不能控制队员的每一步行动,但是至少能给队员一些战略上的信息。由于在线教练并不能具体指导队员的行动,并且在线教练发出的信息在play_on模式下有50个周期的延迟,避免了由于过度使用在线教练而造成的实际上的集中式控制,所以允许在线教练的存在并不违反智能体个体自治的原则。
在线教练作为和仿真平台连接的又一个智能体,同样可以获取来自仿真平台的感知消息,也可以向仿真平台发送指令请求执行。但是,在线教练和普通队员之间存在着明显的差异,表4-1比较了两者的不同[13]。
从中可以看出在线教练的优势在于能够得到比赛的全部的准确信息,并且可以经由仿真平台与普通队员通信。这样,在线教练就可以通过统计和对手建模等方法对本方球队进行全局性的重新规划,也可以调整队员的个体动作技术。本章描述的在线教练主要完成对异构智能体的选择和辨识。
在比赛开始前,在线教练可以无限次的为每个角色选择异构智能体,比赛过程中只可以在定位球模式下最多三次更换角色的异构类型。同时,仿真平台规定守门员必须是默认类型。因此,在比赛开始前,在线教练根据球队的整体策略,赋予不同的角色不同的异构类型。在比赛过程中,如果敌我势均力敌,则将前锋调整为奔跑速度更快的异构智能体,增强冲击力;如果我方较大落后,已难以取胜,则将后卫调整为奔跑速度更快的异构智能体,增加防守力量;如果我方领先优势明显,则暂不进行换人操作。
表4-1在线教练与普通队员的比较
在线教练 不在场上显示 每个周期都能获取视觉消息 准确全局的视觉消息 能够收到所有球员的说话 普通队员 直接对比赛产生影响 视觉参数决定获取频率,可能整个周期内都没有收到视觉消息 带有干扰、局部的视觉消息 只能关注单个球员的说话;可以经由仿真平台收到来自在线教练的建议 16
滁州学院本科毕业设计
次数有限的给球员发128字节的消息 每个周期都能发送10个字节的消息 在线教练除了为角色选择异构类型外,还需要对对方所使用的异构类型进行辨识,并将辨识结果广播给本方队员。目前,普通队员需要首先向仿真平台注册“(clang(ver 8 8))”,才能收到本方在线教练的广播消息,而对方在线教练的广播消息是无法完整获知的。
基于第三章介绍的普通球员的智能体结构,在线教练的体系结构以此为基础,感知口稍作变动,建模模块维持不变,得到完备的世界模型,包括赛场上足球和所有队员的准确位置和速度;根据在线教练的功能调整规划决策模块、动作模块;取消反应模块。在线教练的程序设计也基于3.3节所述的普通球员的控制流程,采用两线程技术,由于在线教练每个周期能会接收到视觉消息,因此取消了其中的定时器设置。这样的方法实现了设计结果、代码文档的重用,提高了效率。
4.2异构智能体简介
仿真平台启动后,随机生成18种类型的异构智能体,从类型0到类型17,并将参数广播至所有的队员和教练。其中类型0是默认类型,对应的参数是固定而且广为人知的。其余17种类型即1-17是异构类型,对应的参数是随机的,在仿真平台刚刚启动时在指定范围内随机生成,因此赛前无法预知哪一种类型适合球队的整体打法。根据异构参数的不同,异构智能体都有不同的能力,但都是不完美的,参数取值如下表4-2所示。
表4-2异构智能体的参数参考值
参数名 参考值 注视 player_speed_max 1.05 球员最大速度参考(常数) player_decay 0.4 球员速度衰减 inertia_moment 5 球员速度大小对转身角度的影响 player_size 0.3 球员身体大小(半径)(常数) dash_power_rate 0.006 dash的力量利用率 stamina_inc_max 45 每周体力增加最大值 kickable_margin 0.7 可踢球范围(不含球员、足球的半径) kick_rand 0.1 kick的随机量 kick_power_rate 0.027 kick的力量利用率 extra_stamina 50 额外体力值 effort_max 1 体力利用率最大值 effort_min 0.6 体力利用率最小值 foul_detect_probability 0.5 球员强制铲球被判犯规概率 catchable_area_l_stretch 1 守门员catch范围 以上为异构球员各个异构的参考值,也就是说,这些以后参数的具体设置不会与这些值相差太大,其中参数player_speed_max=1.05、player_size=0.3为常数。此表来自对于仿真平台源代码的分析,随机参数服从均匀分布。除去player_speed_max和player_size这两个暂时被仿真平台固定的参数外,选择异构智能体的任务就是评价剩下的12个参数并进行分配(目前有的参数对于比赛影响甚微的暂时没有被考虑)。
4.3异构智能体的选择
异构智能体的能力通过其参数体现,因此,需要总结12个参数得出每种异构类型的特性。在整体策略的指导下为不同的角色选择不同的异构类型,称为异构智能体的选择。本节首先将异构参数
17
滁州学院本科毕业设计
提炼出三个指标:奔跑启动时间、全速时的体力消耗量、踢球能力;为了能够对这三个指标进行综合评价,进行了指标归一化操作;最后给出了分配算法。
4.3.1指标提炼
球队整体策略是433阵型,强调前锋的快速推进,抓住破门良机,精准射门而赢球。因此,考虑了奔跑启动时间、全速时的体力消耗量、踢球能力这三个指标。 ●奔跑启动时间player_start_cyc
奔跑启动时间是球员达到最大速度需要的周期数,表征了球员的速度能力,player_start_cyc越小,表示奔跑能力越好。异构智能体的参数表中表明球员的最大速度player_speed_max是固定数值为1.05,实际上,并不是所有异构类型都能达到1.05,player_speed_max只是一个速度的上限。而且,能够达到速度最大值的异构智能体还有启动速度的差别。球员的奔跑效果取决于每个周期能获得的最大加速度和本身的速度固有衰减。
最大加速度是指球员全力奔跑时能够达到的加速度:
acc_max=dash_power×effort_max×dash_power_rate (4-1) 结合球员的运动模型,推知球员能够达到的最大速度为:
speed_max_ab=acc_max/(1.0-player_decay) (4-2) speed_max_ab=奔跑启动时间计算如下
tmp=1.0-player_speed_max×(1.0-player_decay)/acc_max if tmp > 0.0001
player_start_cyc=ceil(log10(tmp)/log10(player_decay))
(4-5)
(4-4)
(4-3)
else
(4-6)
end if
其中,如果tmp>0.0001,表示该异构类型能够达到player_speed_max;否则,表示该异构类型能达到的最大速度speed_max_ab ●全速时的体力消耗量player_sta_lost 球员的体力决定其在后继比赛中的表现,充沛的体力可以保证球员在必要时以最大速度奔跑。 player_sta_lost是指球员在全速奔跑时每个周期消耗的体力值,因此是越小越好,越节约体力。 每个周期球员因为dash而消耗体力,也会自动补充体力stamina_inc_max,结合球员的体力模型,球员全速时每个周期的体力消耗量如下所示: 18 滁州学院本科毕业设计 ●踢球能力player_kick_abil (4-7) 踢球能力包含两个方面:kickable_margin,即可踢范围,越大越好;kick_rand,即踢球噪声, 越小越好。这两个参数共同构成了踢球能力指标,在我们的实现中这个指标仅对前两个指标起辅助选择作用。kickable_margin和kick_rand综合为踢球能力,以及将在下面要谈及的player_start_cyc和player_sta_lost的综合考虑,两种综合方法是相同的,都是先进行归一化处理,然后根据收益函数进行综合排序。 4.3.2 指标归一化 经过对参数的指标提炼后,已经极大的降低了维数,接下去要对这些指标进行归一化处理,然后根据收益函数综合考虑。 假设存在某指标m,该指标在所有异构类型中的最大值是m_max,最小值是m_min,且m的数值越大越符合期望要求(如果m是越小越好,可先进行逆序调整,统一为越大越好)。则m被归一化为: (4-8) 对所有的指标先进行逆序调整,然后归一化作为分配算法的预处理。 4.3.3 分配算法 在仿真比赛中,守门员只能是默认类型,因此,需要对后卫、中场、前锋这10个不同的角色分配恰当的异构类型。假设指标集M已按照上述方法归一化,则某个角色j选择第s类异构类型的综合收益记为: (4-9) 其中N是指标集中的指标个数, 是第s类异构的第i个指标的归一化数值,则是角色j对 该指标的收益函数。综合收益为各指标收益的累加,也有采用Π累乘的,或者累加、累乘混合计算各指标的综合收益。最大收益对应的异构类型 即为角色i的选择结果。 但是,仿真平台又规定同一异构类型不能被同时赋给三个以上的角色(默认类型不作限制),假如有多于三个的角色要选择同一种异构类型,矛盾就出现了。为此,可以先对所有角色进行优先级排序,排在前面的角色拥有优先选择权,当出现矛盾时,排在后面的角色只能选择对自己而言是次优的异构类型,将所有角色的收益相加记为整体收益。遍历所有的角色排序可能,选择整体收益最大的异构分配算法。 在我们的具体实现中,所有角色选用相同的收益函数。对角色实行固定优先级分配,每三个角色为一个档次,前锋(中)、前锋(右)、中场(中)是最高优先级,边后卫(右)、中后卫(右)、中场(右)属于第二优先级,前锋(左)、中场(左)、后卫(左)是第三优先级,最后的中后卫(左) 19 滁州学院本科毕业设计 属于第四优先级。使用公式4-10计算第s类异构对角色的综合收益,根据综合收益对七种类型排序,第一档次的三个角色选择最佳异构类型,第二档次的三个角色选择次佳异构类型,更次的异构类型被分配给第三档次的三个角色,而排在第四的异构类型分配给中后卫(左),当然,如果前四种异构类型中存在默认类型,那更低优先级的角色都应该赋予默认类型。 (4-10) 其中P取9,Q取11,是经验数值。 4.4 异构智能体识别 异构智能体的使用是公开的,但其具体的异构类型是对外屏蔽的。所以无法直接获知对方所选用的异构类型,只能够通过赛场情况进行分析推断。如果可以获取对方队员的异构类型,将有利于作出更合理的决策。由于普通球员的视觉消息是局部有噪声的,而在线教练的视觉消息是全局且不带任何干扰,因此选择在线教练来完成对对方异构智能体的辨识,并由在线教练将辨识结果广播至本方的所有球员。 回顾存在随机的9个异构参数,我们需要找到一个始终影响智能体的关键参数。参数 inertia_moment、dash_power_rate、kickable_margin、kick_rand影响智能体turn、dash、kick指令的执行,由于无法得知其他智能体的动作参数,因此这四个参数难以起到决定性作用。而stamina_inc_max、extra_stamina、effort_max、effort_min是智能体的体力模型参数,但是体力不是外在表现,难以被其他智能体所知。最后一个参数是player_decay,只要智能体在运动,就存在固有的速度衰减,因此,player_decay参数被用来对异构智能体进行辨识是非常合适的。 假设智能体当前位置是 ,当前速度是 ,上一个周期的位置是 ,根据仿真平台的 运动模型可知: (4-11) 其中 、 、 都可被在线教练精确获知,所以可以很便捷的计算得到介于[0.4 0.6] 的player_decay。仿真平台规定player_decay服从均匀分布,且数值精度达到0.0002,因此,player_decay共存在1001种可能数值,而异构类型共有6种,所以两个或者两个以上异构类型的player_decay参数相同的概率为: (4-12) 也就是说利用player_decay进行辨识的准确率达到98.51%,而且,即使存在相同的player_decay数值,还有机会猜对,实际比赛表明这种方法已经基本达到辨识要求。如果要提高辨识准确率,就需要分析其他参数,而其他参数都只是一个范围,需要长期的辨识过程,才有可能得出正确结果。 4.5小结 自从UvA在2001年成功的把异构智能体应用到仿真比赛,造就了该球队强悍的攻击力后, 20