Im Moment scheint die Form als Differenz der Fitness und Müdigkeit des gleichen Tages berechnet zu werden. Es kann jedoch besser sein, sich auf die gestrige Fitness und Müdigkeit zu stützen. Dies ist natürlich umstritten. Ich kann nur diese beiden Punkte vorschlagen:
a) Es fühlt sich für mich subjektiv korrekter an, da die Trainingsermüdung am nächsten Tag stärker zu spüren ist
b) TrainingPeaks macht das (siehe hier , Abschnitt "Formular")
Form per Definition ist (TrainingPeaks):
Training Stress Balance (TSB) oder Form repräsentiert das Gleichgewicht von Trainingsstress.
Form (TSB) = Fitness von gestern (CTL) - Müdigkeit von gestern (ATL)
https://help.trainingpeaks.com/hc/en-us/articles/204071764-Form-TSB-
@aprokop Ja, es sollte mit dem verwendeten mathematischen Modell sein. Formeln sind im Helfer
@thomaschampagne Ich bin
@aprokop Ja. Fitnessmodell erhöhen = Modell der Trainingsspitzen
@ thomaschampagne Ich glaube nicht. Das TrainingPeaks-Modell ist
Form(day+1) = Fitness(day) - Fatigue(day)
Es scheint auch, dass die beiden anderen Formeln nicht genau richtig sind und sein sollten
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
Ich schaue auf meine TrainingPeaks-Kurve und große Anstrengungen wirken sich sowohl auf Fitness als auch auf Müdigkeit am selben Tag und auf Form am nächsten Tag erheblich aus.
yupp das ist auch mein Punkt:
@ thomaschampagne Ich glaube nicht. Das TrainingPeaks-Modell ist
Form (Tag + 1) = Fitness (Tag) - Müdigkeit (Tag)
Ok, ich habe es nicht verstanden. Ich habe das Ticket wieder geöffnet. Danke fürs Graben. Der FYI-Code ist hier: https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service.ts#24
Eine PR zu machen ist dir möglich oder ich kümmere mich selbst darum?
Ich habe nie mit dieser Programmiersprache gearbeitet, aber ich könnte es versuchen, wenn Sie denken, dass es einfach genug ist. Ich denke, mein Hauptanliegen ist der Umfang des betroffenen Codes und ob er eine Reorganisation erfordert.
@aprokop Der Gültigkeitsbereich sollte nur diese Methode sein: https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service
Aber keine Sorge, ich werde es tun. Benötigen Sie nur Ihre Hilfe, um Änderungen zu testen und zu validieren.
@aprokop Sind Sie sich bei 100% sicher, dass dies unten der
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
Ich habe den Code mit Ihren Empfehlungen korrigiert (über Commit https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b). Um die Implementierung in vorhandenen Code zu vereinfachen, habe ich Ihre Formeln wie folgt implementiert:
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
Test Build: v6.6.0_stable_ec73ee0_2018-10-17-16-05.zip
Danke für Ihre Hilfe :)
@ thomaschampagne
Sind Sie sich zu 100% sicher?
Ja und nein. Ja, ich bin sicher, dass es in dem Sinne falsch ist, dass es nicht mit TrainingPeaks übereinstimmt, da die Anstrengung am selben Tag die Fitness / Müdigkeit am selben Tag nicht beeinträchtigen würde. Es ist sicherlich notwendig, StressScore (Tag) in StressScore (Tag + 1) zu ändern. Ich bin mir jedoch nicht sicher, ob das die genaue Formel ist. Man könnte diese Formel wie denken
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
könnte auch Sinn machen (man müsste dann für Fitness lösen (Tag + 1)). Aber ich denke es ist gut so wie es ist.
Das Commit implementiert die vorgeschlagenen Formeln korrekt. Sie könnten Aktualisierungen von prevCtl
und Freunde von if (isPreStartDay)
-Klauseln entfernen, aber das ist geringfügig.
Ich werde es am Abend testen, wenn ich nach Hause komme.
Ich habe es gerade ausprobiert und es verhält sich wie erwartet. Die Form fiel am nächsten Tag, während Fitness und Müdigkeit am selben Tag zunahmen. Also, ich denke es ist jetzt alles gut.
@aprokop Danke für deine Tests und Bewertung! Wir haben also 2 Formeln:
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
-- or --
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Aber ich denke, wir haben ein Problem mit dem ersten :) Es ist seltsam, Fitness(day+1)
zu berechnen, wenn Fitness(day+1)
auch Teil des Ausdrucks ist ... Dies ist, was wir finden wollen.
Und wenn wir den Ausdruck lösen, haben wir:
Fitness(day+1) = (Fitness(day) - k * StressScore(day+1)) /(1 - k) where k = exp(-1/42)
... Ist das sinnvoll?!
Gibt es eine Möglichkeit, CSV-Daten Tag für Tag aus TrainingPeaks zu exportieren? Oder erhalten Sie weitere Informationen aus Ihrem TrainingPeaks-Diagramm-Screenshot?
Auf Ihrem TrainingPeaks-Diagramm-Screenshot sind rote Punkte ein Tag der Anstrengung? Bestätigen Sie, dass die Fitness- und Müdigkeitskurve am Tag Ihrer Bemühungen steigt?
Danke für Ihre Hilfe :)
@thomaschampagne Ich stimme dir zu, dass Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
eine seltsame ist. Ich habe es nur erwähnt, weil ich nicht 100% sicher bin.
Gibt es eine Möglichkeit, CSV-Daten Tag für Tag aus TrainingPeaks zu exportieren? Oder erhalten Sie weitere Informationen aus Ihrem TrainingPeaks-Diagramm-Screenshot?
Das ist eine wirklich gute Idee. Ich glaube, dass es möglich ist, und das habe ich in der Vergangenheit getan. Lassen Sie mich versuchen, die neuesten Daten zu erhalten.
Auf Ihrem TrainingPeaks-Diagramm-Screenshot sind rote Punkte ein Tag der Anstrengung? Bestätigen Sie, dass die Fitness- und Müdigkeitskurve am Tag Ihrer Bemühungen steigt?
Ja, rote Punkte sind die TSS-Werte für jeden Tag und blaue Punkte sind die Intensität.
Bestätigen Sie, dass die Fitness- und Müdigkeitskurve am Tag Ihrer Bemühungen steigt?
Ja.
OK, man kann also Workouts exportieren, aber nicht die Kurvenwerte. Fein. Lass es uns testen.
Schauen wir uns das letzte harte Rennen an (Markierung als -
unwichtige Daten). Die Daten mussten einem Diagramm entnommen werden und wurden von TrainingPeaks auf die nächste Ganzzahl gerundet.
| | Tag vor dem Rennen | Renntag | nach dem Renntag |
| - | - | - | - |
| TSS | - | 395 | - |
| Müdigkeit | 54 | 102 | - |
| Fitness | 61 | 69 | - |
| Formular | - | 8 | -33 |
Damit:
Zusammenfassend scheinen diese die beste Option zu sein:
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 Ich verstehe immer noch nicht ganz warum in 2. Wir bekommen nur 99 und nicht 102.
Wirf einen Blick auf
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);
Da ist auch das .
Ich denke wir sind gut.
@aprokop Vielen Dank für diese
Hilfreichster Kommentar
@aprokop Vielen Dank für diese