根据定义,表格为(TrainingPeaks):
训练压力平衡(TSB)或表格表示训练压力平衡。
表格(TSB)=昨天的体能(CTL)-昨天的疲劳(ATL)
https://help.trainingpeaks.com/hc/zh-CN/articles/204071764-Form-TSB-
@aprokop是的,应该使用所使用的数学模型。 公式在助手中
@thomaschampagne不确定我是否理解您的评论。 您是说已经进入了吗?
@aprokop是的。 提升健身模型=训练高峰模型
@thomaschampagne我不这么认为。 TrainingPeaks模型是
Form(day+1) = Fitness(day) - Fatigue(day)
似乎其他两个公式也不完全正确,应该是
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
我看我的TrainingPeaks曲线,主要的努力会显着影响同一天的“健身”和“疲劳”,以及第二天的“健身”。
yupp这也是我的观点:
@thomaschampagne我不这么认为。 TrainingPeaks模型是
形式(天+1)=健身(天)-疲劳(天)
好吧,我不明白。 我重新开了票。 感谢您的挖掘。 仅供参考代码在这里: https :
做公关对您来说是可能的,还是我自己处理?
从未使用过这种编程语言,但如果您认为它很简单,我可以尝试。 我想我主要关心的是受影响代码的范围,以及是否需要任何重组。
但请放心,我会这样做。 只需要您的帮助来测试和验证更改。
@aprokop您确定
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
我根据您的建议修复了代码(通过提交https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b)。 为了简化现有代码的实现,我实现了您的公式,如下所示:
Fitness(day) = Fitness(day-1) + (StressScore(day)-Fitness(day-1)) x ...
Fatigue(day) = Fatigue(day-1) + (StressScore(day)-Fatigue(day-1)) x ...
Form(day) = Fitness(day-1) - Fatigue(day-1)
@aprokop @ jayti74
测试版本: v6.6.0_stable_ec73ee0_2018-10-17-16-05.zip
谢谢你的帮助 :)
@thomaschampagne
您确定对此有100%的把握吗?
是的,没有。 是的,我确定这是错误的,因为它与TrainingPeaks不匹配,因为同一天的努力不会影响同一天的健身/疲劳。 当然有必要将StressScore(day)更改为StressScore(day + 1)。 但是,我不确定这是否是正确的公式。 有人可能会认为
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
也有道理(然后需要解决Fitness(天数+1))。 但是我认为这是一件好事。
提交正确实现建议的公式。 您可以将prevCtl
和朋友的更新移出if (isPreStartDay)
子句,但这是次要的。
我会在晚上回家时进行测试。
只是尝试了一下,它的表现就和预期的一样。 表格在第二天下降,而健身和疲劳在同一天上升。 所以,我认为现在一切都很好。
@aprokop感谢您的测试和审查! 因此,我们有2个公式:
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
-- or --
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
但是我认为第一个问题:)如果Fitness(day+1)
也是表达式的一部分,那么计算Fitness(day+1)
是很奇怪的...这就是我们要查找的。
如果我们解决表达式,我们有:
Fitness(day+1) = (Fitness(day) - k * StressScore(day+1)) /(1 - k) where k = exp(-1/42)
... 那有意义吗?!
有没有办法每天从TrainingPeaks导出csv数据? 还是从TrainingPeaks图形屏幕截图中获取更多信息?
在您的TrainingPeaks图屏幕截图上,红点是您需要努力的日子吗? 您是否确定健身和疲劳曲线在您努力的那一天会上升?
谢谢你的帮助 :)
@thomaschampagne我同意你的观点, Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
是一个奇怪的人。 我只提到它是因为我不确定100%。
有没有办法每天从TrainingPeaks导出csv数据? 还是从TrainingPeaks图形屏幕截图中获取更多信息?
这是一个好主意。 我相信这是有可能的,并且我过去已经做到了。 让我尝试获取最近的数据。
在您的TrainingPeaks图屏幕截图上,红点是您需要努力的日子吗? 您是否确定健身和疲劳曲线在您努力的那一天会上升?
是的,红色点是每天的TSS值,蓝色点是强度。
您是否确定健身和疲劳曲线在您努力的那一天会上升?
是。
好的,因此可以导出锻炼,但不能导出曲线值。 精细。 让我们测试一下。
让我们看一下最近的竞争(标记为-
非重要数据)。 数据必须从图形中获取,并且使用TrainingPeaks将其四舍五入为最接近的整数。
| | 赛前日| 比赛日| 比赛后
|-|-|-|-||
| TSS | -| 395 | -|
| 疲劳 54 | 102 | -|
| 健身| 61 | 69 | -|
| 表格| -| 8 | -33 |
所以:
总之,这些似乎是最好的选择:
Form(day) = Fitness(day-1) - Fatigue(day-1)
Fitness(day) = Fitness(day-1) + (StressScore(day)-Fitness(day-1)) x (1-exp(-1/42))
Fatigue(day) = Fatigue(day-1) + (StressScore(day)-Fatigue(day-1)) x (1-exp(-1/7))
PS我仍然不太明白为什么在2.中,我们只能得到99,而不是102。
看看GoldenCheetah :
double lte = (double)exp(-1.0/ltsDays_);
double ste = (double)exp(-1.0/stsDays_);
...
// LTS
if (day) lastLTS = lts_[day-1];
lts_[day] = (stress_[day] * (1.0 - lte)) + (lastLTS * lte);
// STS
if (day) lastSTS = sts_[day-1];
sts_[day] = (stress_[day] * (1.0 - ste)) + (lastSTS * ste);
也有这个。
所以,我认为我们很好。
@aprokop非常感谢您的深入分析! 清楚,明确!
最有用的评论
@aprokop非常感谢您的深入分析! 清楚,明确!