赞
踩
今年美赛A题就是2021年东京奥运会奥地利女博士后Anna Kiesenhofer单枪匹马勇夺女子公路自行车比赛金牌故事的翻版,主题问题就是求解自行车运动员在近40km的赛程中应该如何分配功率以获得更好的成绩。
首先思考运动员的功率模型。运动员不可能长时间维持高功率输出,那么运动员的功率输出到底受什么限制呢?题目给出了一种“功率曲线”理论,这种理论指出运动员的功率(Power)与能维持该功率的最长时间(Duration)呈函数关系D=D(P)。
假设运动员以常功率P运行时间t,则约束方程
那么问题是,如果运动员是以变功率P=P(t)运行呢?
当时我们为了简单起见,就将常功率P换成平均功率,建立功率模型
即
这个公式就决定了运动过程中运动员功率输出P(t)满足的约束,不同选手的功率曲线不同,就决定了他们的冲刺能力、耐力。
有了运动员的功率P=P(t),我们就可以求解自行车速度V=V(t),进而求解比赛成绩T。
由功率P(t)得到速度V(t)的过程就是建立自行车动力学模型,最简单地,
功率完全作用给动能,即
但实际上环境的阻力会分走很大一部分功率,首先考虑风阻
以及滚阻
其中坡度
H为海拔,s为路程。
还要考虑重力势能
最终得到动力学方程
题目要求对东京奥运会和比利时世锦赛两个赛道进行模型求解,就需要考虑赛道特征,其实主要就考虑两个特征:
赛道海拔变化
很简单。
根据比赛地图算出各个点的曲率半径
假设地面摩擦系数,需要运动员速度满足
否则会被离心力甩出弯道,推导很简单,就不展开了。
最终,我们需要得到运动员在赛道不同位置的功率策略,即P=P(s),所以还要把动力学方程中的P写成路程s的函数,得到完整的赛道模型:
赛道模型求解就是求功率策略P=P(s)使得完赛时间T最短,即优化函数T=T{P(s)}的优化问题,由于赛道模型的方程组显然无法求解析解,我们不妨先将其离散化:
只要有功率策略P(s)和初值V(0)=0,我们就可以递推地计算速度V(t),最后得到T。
于是,我们可以在多项式时间内求得优化函数T{P(s)},却无法在多项式时间内求出最优的P(s),NP-hard理论限制我们只能用启发式的思维进行解的搜索,如模拟退火、蚁群算法、遗传算法等,当时我们用的是模拟退火。
模拟退火原理就不说了,主要就三步:
初始解的产生很自由,我们当时是直接令功率曲线满载
得到了一个解析式P(t),将P(t)带入赛道方程得到时间-路程关系t=t(s),再反向线性插值P(s)=P(t(s))作为初始解。
利用当前解产生随机解的办法很多,我们当时是令
是一个[-0.01,0.01]区间的随机幅度
是[0,S]区间的随机位置
是[0,L]区间的随机长度(L是个参数,决定了随机化的尺度)
hanning(x,y)是[x,y]区间的汉宁窗
假设一个虚拟骑手使用 作为功率策略参加比赛,用之前提到的方法,将代入赛道模型就可以求出完赛时间T{},比较 T{}和T{P(s)}以决定是否接受 作为一个新解,然后降低退火温度Tem,重复(2)(3)步骤。
退火过程中使用一个小技巧,就是令随机化尺度L随着退火温度Tem的降低而降低,即L=L(Tem),这样虚拟骑手就会先尝试大范围的策略调整,再逐渐缩小调整范围,最终适应赛道,可以节省不少程序运行时间。
用灰色曲线表示赛道海拔,红色曲线表示功率策略,首先虚拟骑手以初始解为策略完成比赛,用时4139秒。
经过5000次模拟退火后,虚拟骑手完赛时间降到了4102秒。可以观察到在这个过程中,骑手尝试从整体上调整功率策略,在上坡时增加功率,下坡时降低功率,最后成功节省完赛时间。
在接下来的20000次退火中,随着退火温度降低,随机化尺度L也跟着下降,意味着虚拟骑手会尝试在更小的尺度上优化功率策略,以适应崎岖不平的地形,最后将完赛时间降到了4046秒。
在40000次退火之后,虚拟骑手的功率策略已经达到了非常细致的程度,完赛时间也降到了4023秒。
完赛时间随退火次数增加而缩短:
我们再观察退火过程中速度曲线的变化:
似乎经过退火,速度曲线变得平稳了。我们对速度曲线做一个方差分析:
可以发现速度的方差确实随着功率策略的优化而降低,所以骑手在比赛过程中应该尽量保持速度平稳。而且Var(V)和T随退火次数的变化趋势几乎相同,说明在功率曲线的约束下ΔT和Var(V)是有某种确定的正相关关系的,当时我们认为可以通过泛函分析的方法进行研究,可惜时间不允许,故作罢。
那么虚拟骑手是如果保持速度平稳的呢?通过观察P-s曲线可以发现,主要策略是根据地面坡度调整功率输出,为了验证这一点,我们画40000次退火后功率P在坡度空间的分布:
可以看出功率策略在地面坡度空间有明显的趋势,我们做一个线性回归:
拟合式给出
这说明骑手在平地上应该以339W输出功率,而坡度每增加1°就应该增加3.6%的功率。
2021年比利时世锦赛的赛道几乎没有海拔变化,全程平地,使得前40000次退火几乎没有成效,完赛时间不减反增,说明在平地上对功率策略的整体调整作用不大,功率曲线满载已经是不错的策略。
而当退火次数达到100000次以上时优化效果开始显现:
虽然节省的时间不多,但是完赛时间呈现明显的下降趋势,随着进一步退火还可以更优化,但当时出于时间紧迫就没有跑更多点(200000次退火需要Matlab运行约3小时)。
为了研究虚拟骑手到底是在什么地方进行了优化,我们画0次退火和200000次退火的速度曲线:
其中橙色虚线表示急转弯带来的速度限制,骑手在该位置必须减速到指定数值才能避免被离心力甩出赛道。
放大两处急转弯处的图像:
可以观察到,优化前,骑手会正常速度行驶到弯道处,通过急刹车降低速度,以满足弯道限制;而优化后,骑手会提前减速节省体力,到弯道处刚好能够过弯,过弯后利用节省的体力大力加速,快速恢复速度。
为了验证这一点,我们画弯道附近的功率策略:
可以观察到虚拟骑手过弯时会提前300米左右开始减速,慢慢将功率降到30%以下,到达弯道时速度刚好能过弯,并且不用捏刹车。
所以,对于UCI这种较为平坦的赛道来说,主要的优化对象是过弯时的策略,虽然对结果的影响程度没有地势那么大,但还是自行车运动员在比赛过程中需要考虑的因素。
题目还要求自己设计一个赛道并求解,现在想来可以在里面设计不同曲率的弯道,来研究预减速距离、减速功率与弯道曲率的关系,但当时没考虑那么多,就随便设计了一个赛道,结论跟上面差不多。
还有其他各种细节省略ing...
最后是美赛本身的一点总结(ᐛ)
我们队三人都是第一次参加数学建模比赛,最后能够顺利解决问题,算得上是一次成功的参赛经历乐(๑¯◡¯๑)虽然赛后感觉经验这个东西还是很重要,尤其是时间规划上...论文一定要提前提前提前开始写!!!
不过最后总算是踩着点交上了(′▽`)比赛前也恶补了很多课外知识(指你系核心课什么也没有讲x),最后感谢两位超可爱超厉害队友啊啊啊o((>ω< ))o
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。