考虑了随机误差影响的分析并没有完成,这里仅记录已经得出的结论和思路。

物理模型和参数

  有关的模型:USTC_Tutorial第52页,object.cpp第508行;随机数生成器在random.h第111行。
  守门员有关的参数有:player_rand=0.1。

思路

  给定\vec{r}\vec{v},设不考虑随机影响时用g个周期可以跑进目标圆内,用蒙特卡洛方法得出第g-1个周期跑进目标圆和第g个周期跑进目标圆的概率,目前没有发现在g±2个周期时跑进的情况。每次生成一组随机数,作为每个周期的随机因子,搜索策略不考虑随机影响,因为正常的agent在决策时是不考虑随机影响的。
  将\vec{r}\vec{v}离散化后算出大量数据,训练一个神经网络以应对所有情况。

改进

  随机误差包括两种——转身引起的误差和速度引起的误差。在加入速度引起的误差之前,可以得到一个只加入了转身引起的误差的位置,称为“半理想位置”。实际位置应该是以半理想位置为圆心的概率分布。
  搜索到当概率圆与目标圆有相交部分时,说明此时实际位置已有可能在目标圆内,这时不再加入随机影响,而是得出半理想位置。设这个概率圆的圆心为O,半径为ρ,目标圆圆心为T,半径为R。以O为原点,\vec{OT}方向为极轴建立极坐标系,|d|<ρ时,如下图所示。
示意图
  其中d=|OT|-R,有d>0和d<0两种情况。又因为R>>ρ,实际情形类似下图,为简化计算,将⊙T视为直线。
情形1情形2
  概率密度函数为f(r,\theta)=\frac1{2\pi\rho}。设p表示实际位置在⊙T内的概率。(以下感谢王静静的辛勤劳动)
  d>0时,p(d)=\int_{-arccos\frac d\rho}^{arccos\frac d\rho}\int_\frac d{cos\theta}^\rho f(r,\theta) dr d\theta = \frac1{\pi\rho}\cdot(\rho\cdot arccos\frac d\rho+d\cdot ln\frac{\rho-\sqrt{\rho^2-d^2}}d)
  d=0时,p(0)=0.5;
  d<0时,p(d)=1-p(-d)。

改进之二

  由少量数据例子猜出当\vec{r}|\vec{v}|一定时,第g个周期跑进圆的概率是一个关于arg(\vec{v})的8次多项式,故生成数据时,这一维应该仅需8个点即可。类似的猜测还有,当\vec{r}arg(\vec{v})一定时,第g个周期跑进圆的概率是一个关于|\vec{v}|的5次多项式。上述猜测是用很久之前的数据得出的,《新加速模型下守门员扑球决策分析》做了修改之后得出的数据不满足上面的猜测。
  设第g个周期跑进圆的概率是p(\vec{r},\vec{v},g),猜测p|_{g=g_0}连续(或者可以近似看作连续),则p|_{g=g_0}可以看作一张“光滑”的超曲面。用\vec{r}=\vec{r_0}, |\vec{v}|=|\vec{v_0}|(这是一个三维空间)截这张超曲面,可得一条关于arg(\vec{v})的曲线,类似也可得关于|\vec{v}|arg(\vec{r})|\vec{r}|的曲线。若这些曲线都比较简单,即能被低次多项式或者是其它系数较少的函数形式拟合,那么就可以用少量数据经由多次插值得到p|_{g=g_0}在任意点的值。

存在问题

  关于|\vec{r}|的曲线未找到合适的拟合函数,用ZunZun.com 2D Function Finder找到的最佳拟合为y=\frac1{a+bx+cx^2+dx^3+ex^4+fx^5},对g=4, \vec{r}=-(x, 0.2618), \vec{v}=(0.12, 0)\vec{r}, \vec{v}均是用极坐标表示)的拟合结果如下图所示:
fitting_result_x_15_012_0
  关于arg(\vec{v})的曲线未找到合适的拟合函数,用ZunZun.com 2D Function Finder找到的最佳拟合为y=a+bx+cx^2+dx^3+ex^4+fx^5+gx^6+hx^7,对g=6, \vec{r}=-(7.35, 1.2741), \vec{v}=(0.37, x)\vec{r}, \vec{v}均是用极坐标表示)的拟合结果如下图所示(图中x轴单位为角度):
fitting_result_535_73_037_x