Saat ini, Formulir tampaknya dihitung sebagai selisih dari Kebugaran dan Kelelahan pada hari yang sama. Namun, mungkin lebih baik mendasarkannya pada Kebugaran dan Kelelahan kemarin. Ini bisa diperdebatkan, tentu saja. Saya hanya dapat menyarankan dua poin ini:
a) rasanya lebih tepat bagi saya secara subyektif, karena kelelahan pelatihan lebih dirasakan keesokan harinya
b) TrainingPeaks melakukan itu (lihat di sini , bagian "Formulir")
Bentuk menurut definisi adalah (TrainingPeaks):
Training Stress Balance (TSB) atau Bentuk Latihan merupakan keseimbangan stres.
Formulir (TSB) = Kebugaran Kemarin (CTL) - Kelelahan Kemarin (ATL)
https://help.trainingpeaks.com/hc/en-us/articles/204071764-Form-TSB-
@aprokop Ya, seharusnya dengan model matematika yang digunakan. Rumus ada di helper
@thomaschampagne Tidak yakin saya mengerti komentar Anda. Apakah Anda mengatakan itu sudah masuk?
@aprokop Ya. Elevate fitness model = Model puncak pelatihan
@ ThomasSampagne Saya rasa tidak. Model TrainingPeaks adalah
Form(day+1) = Fitness(day) - Fatigue(day)
Tampaknya juga dua rumus lainnya tidak tepat, dan seharusnya benar
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
Saya melihat kurva TrainingPeaks saya, dan upaya besar secara signifikan memengaruhi Kebugaran dan Kelelahan pada hari yang sama, serta Bentuk pada hari berikutnya.
yupp itu juga maksud saya:
@ ThomasSampagne Saya rasa tidak. Model TrainingPeaks adalah
Bentuk (hari + 1) = Kebugaran (hari) - Kelelahan (hari)
Ok saya tidak mengerti. Saya membuka kembali tiketnya. Terima kasih atas penggaliannya. FYI kode ada di sini: https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service.ts#L243
Membuat PR adalah sesuatu yang mungkin bagi Anda atau saya menanganinya sendiri?
Tidak pernah bekerja dengan bahasa pemrograman ini, tetapi saya dapat mencoba jika menurut Anda itu cukup mudah. Saya kira perhatian utama saya adalah cakupan kode yang terpengaruh, dan apakah itu memerlukan reorganisasi.
@aprokop Cakupan harus hanya metode itu https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service.ts#L226
Tapi jangan khawatir saya akan melakukannya. Hanya butuh bantuan Anda untuk menguji dan memvalidasi perubahan.
@aprokop Apakah Anda yakin 100% tentang ini di bawah?
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Fatigue(day+1) = Fatigue(day) + (StressScore(day+1)-Fatigue(day)) x ...
Saya memperbaiki kode dengan rekomendasi Anda (melalui commit https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b). Untuk menyederhanakan implementasi dalam kode yang ada, saya mengimplementasikan rumus Anda seperti ini:
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
Uji Bangun: v6.6.0_stable_ec73ee0_2018-10-17-16-05.zip
Terima kasih atas bantuan Anda :)
@tokopedia
Apakah Anda yakin 100% tentang ini di bawah?
Iya dan tidak. Ya, saya yakin itu salah dalam artian tidak cocok dengan TrainingPeaks karena upaya di hari yang sama tidak akan memengaruhi Fitness / Fatigue di hari yang sama. Tentunya perlu untuk mengubah StressScore (hari) menjadi StressScore (hari +1). Namun, saya tidak yakin apakah itu rumus yang tepat. Orang bisa mengira rumus itu seperti itu
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
bisa juga masuk akal (seseorang kemudian harus menyelesaikan untuk Kebugaran (hari + 1)). Tapi saya pikir itu bagus apa adanya.
Komit mengimplementasikan rumus yang disarankan dengan benar. Anda dapat memindahkan pembaruan prevCtl
dan teman dari if (isPreStartDay)
klausa, tapi itu kecil.
Saya akan mengujinya di malam hari ketika saya tiba di rumah.
Baru saja mencobanya, dan berfungsi seperti yang diharapkan. Bentuknya turun keesokan harinya, sementara kebugaran dan kelelahan naik pada hari yang sama. Jadi, saya pikir semuanya baik-baik saja sekarang.
@aprokop Terima kasih atas pengujian dan ulasan Anda! Jadi kami memiliki 2 rumus:
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
-- or --
Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day)) x ...
Tetapi saya pikir kami memiliki masalah dengan yang pertama :) Aneh menghitung Fitness(day+1)
jika Fitness(day+1)
juga merupakan bagian dari ekspresi ... Ini yang ingin kami temukan.
Dan jika kita memecahkan ekspresi, kita memiliki:
Fitness(day+1) = (Fitness(day) - k * StressScore(day+1)) /(1 - k) where k = exp(-1/42)
... Apakah itu masuk akal?!
Apakah ada cara untuk mengekspor data csv dari TrainingPeaks hari demi hari? Atau dapatkan info selengkapnya dari tangkapan layar grafik TrainingPeaks Anda?
Pada screenshot grafik TrainingPeaks Anda, titik merah adalah hari untuk berusaha? Apakah Anda mengonfirmasi kurva Kebugaran dan Kelelahan meningkat pada hari Anda berusaha?
Terima kasih atas bantuan Anda :)
@thomaschampagne Saya setuju dengan Anda bahwa Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...
adalah sesuatu yang aneh. Saya hanya menyebutkannya karena saya tidak 100% yakin.
Apakah ada cara untuk mengekspor data csv dari TrainingPeaks hari demi hari? Atau dapatkan info selengkapnya dari tangkapan layar grafik TrainingPeaks Anda?
Ini adalah ide yang benar-benar baik. Saya percaya itu mungkin, dan saya pernah melakukannya di masa lalu. Biarkan saya mencoba untuk mendapatkan data terbaru.
Pada screenshot grafik TrainingPeaks Anda, titik merah adalah hari untuk berusaha? Apakah Anda mengonfirmasi kurva Kebugaran dan Kelelahan meningkat pada hari Anda berusaha?
Ya, titik merah adalah nilai TSS setiap hari, dan titik biru adalah intensitasnya.
Apakah Anda mengonfirmasi kurva Kebugaran dan Kelelahan meningkat pada hari Anda berusaha?
Iya.
OK, jadi seseorang bisa mengekspor latihan tapi bukan nilai kurva. Baik. Mari kita uji.
Mari kita lihat perlombaan keras baru-baru ini (menandai sebagai -
data tidak penting). Data harus diambil dari grafik, dan dibulatkan ke bilangan bulat terdekat oleh TrainingPeaks.
| | sebelum hari perlombaan | hari perlombaan | setelah hari perlombaan |
| - | - | - | - |
| TSS | - | 395 | - |
| Kelelahan | 54 | 102 | - |
| Kebugaran | 61 | 69 | - |
| Formulir | - | 8 | -33 |
Begitu:
Singkatnya, ini sepertinya pilihan terbaik:
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 Saya masih belum mengerti mengapa di 2. kami hanya mendapatkan 99 dan bukan 102.
Melihat 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);
Ada juga ini .
Jadi, saya pikir kami baik-baik saja.
@aprokop Terima kasih banyak atas analisis mendalam ini! Jelas, tidak ambigu!
Komentar yang paling membantu
@aprokop Terima kasih banyak atas analisis mendalam ini! Jelas, tidak ambigu!