我们定义了一个评价函数为了每种类型的动作。这些变量被用来每个评价函数的输入:剧烈,测量时间间隔从队员的当前位置到防守位置,背离,测量距离从防守的点到队员的基本的编队位置,威胁,也就是这个防守位置灵活性对手当前的位置。这个函数输出增加随着威胁和减小随着距离和背离。为了点防守,只有威胁作为输入。为了获得每个函数的实际的值,我们设置一些典型的情景,从他们之间摘录输入值,然后赋予输出值到这个函数。这个值被小心的装入来保持轻微的变化。在这个方式下,一个输入和输出的列表数据就生成了。
在清华设计中,他们使用BP神经去编码评价函数。这个列表产生被使用作为训练网络神经的设置。在训练之后,网络被测试去确保他们适合在先前的段中要求的,因此评价函数就确定了,但我们队伍还在改进中。剩下的计划到一个标准的程序现在上面和没有需要更进一步的讨论。还留下一个补救计划的产生。有时候这个队维持一致失败了。例如,当一个对手和两个防守队员的位置的距离相同,而且在相同的时间里面。编队的点。这两个安排将有相似的评价,这两个防守队员可能冲突。我们的设计利用这个绝对的反馈存在这个系统中。因为球将保持移动在这个比赛中,和对手必须向前移动去进攻,另外这个基本的信息位置或者防守的点将改变在下个周期。那里有一个小小的改变使得这两个安排仍然保持相同的评价。一旦这两个安排不同的时候足够明显为两个防守队员去分辨出来。这个预先防守队员将执行这个防守动作,更接近的移动到对手。然后另外一个将移动到另外一个方向。因此,这个对照增加,这个系统提取一个状态分离来自先前的进退两难的局面。因此又可以完成一致了。
防守算法的实现
1、防守算法的初始想法
第一步:找球的位置,即时更新
第二步:判断球是否在可踢范围:
如果可踢,则根据自己所在的位置作出相应的动作,具体是:
如果再罚球去内,马上把球踢出去,且尽量传给队友;如果再罚球区外,可以适当的带球,把球送往中场;
如果不可踢,则进入第三步;
第三步:判断自己是不是有责任去断球:
有,则毫不犹豫的去断球,断球也要分区域,在罚球区,则要以全力跑过去断球,如果身后有自己的队友,则可以考虑铲球,如果自己在进攻球员的后面(他已经过了我),则要马上从后面铲球;
没有,则要进行协防,进入第四步;
第四步:是协防,这步我觉得是最难的,因为这种情况太多了,现在只有大概的一点思想:还是要把后半场分区,针对各区采取各种mark策略
第五步:根据队形调整自己的位置
2、防守算法的实现流程:
|-->如果没有开球:
| |-->如果是本方开球且球员自己是9号:
| | |->如果球在可踢范围:则以最大力把球kick出去;
| | |->如果球不可踢: 则抢断;
| |-->如果当前队形不是初始化队形或者球员自己的实际位置偏离队形规定位置(以下称为策略位置)1m以上:则导入初始队形,球员直接移到自己的策略位置;
| |-->如果是7号或者8号:则准备移动到9号kickto的点,并把头转向球;
| |-->其他情况:则把身体对向(0,0),并把头转向球;
|-->如果已开球:则先导入防守的433队形,
| |-->如果球的信息不是最新的:则搜索球,并转动头以助以寻找;
| |-->如果球在可踢范围:
| | |-->如果在球员自己的罚球区:则以最大力把球以相对安全的角度kick出罚球区;
| | |-->如果在自己前方5m,角度为(-80,80)的扇形区域内有对方球员:则以最大力把球转移,即ClearBall;
| | |-->如果在自己前方5m,角度为(-80,80)的扇形区域内没有对方球员 :则以不大的力把球kick出去;
| | |-->其他:则带球前进;
| |-->如果球员自己是队友中最快可以到达球的位置的球员,即球员自己最有责任断球:
