Elevate: Tren kebugaran "Bentuk" harus didasarkan pada "Kebugaran" dan "Kelelahan" kemarin

Dibuat pada 23 Apr 2018  ·  18Komentar  ·  Sumber: thomaschampagne/elevate

Jelaskan lingkungan Anda

  • Versi plugin: 6.1.2 stabil
  • Versi Chrome / Opera / Chromium: Chrome
  • Versi OS: Mac OS

Jelaskan masalahnya:

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")

bug major

Komentar yang paling membantu

@aprokop Terima kasih banyak atas analisis mendalam ini! Jelas, tidak ambigu!

Semua 18 komentar

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

image

@ 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.

screen shot 2018-10-16 at 9 33 13 am

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

  • Anda juga dapat menguji build di bawah ini dan membandingkannya dengan TrainingPeaks Anda untuk memastikan semuanya baik-baik saja tanpa regresi? (Build termasuk commit https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b ofc)

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.
screenshot_20181017_202434

@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:

  1. Kelelahan (hari) - Kebugaran (hari) = 69 - 102 = 33 = Bentuk (hari + 1), jadi kita memiliki rumus yang benar untuk Formulir.
  2. Kelelahan (hari-1) + (TSS - Kelelahan (hari-1)) x ... = 54 + (395-54) x (1-e ** (- 1/7)) = 99, jadi kira-kira 102?
  3. (Kelelahan (hari-1) + TSS (1-k)) / (2-k) = (54 + 395 (1-k)) / (2-k) = 94, jadi jauh. (k = exp (-1/7)). Saya memperbaiki perhitungan fomula di sini, karena yang ada di komentar sebelumnya salah.
  4. Kebugaran (hari-1) + (TSS - Kebugaran (hari-1) x ... = 61 + (395-61) x (1-e ** (- 1/42) = 69, jadi itu benar.
  5. (Kebugaran (hari-1) + TSS (1-K)) / (2-K) = (61 + 395 (1-K)) / (2-K) = 69, jadi ini juga benar (di sini, K = exp (-1/42)).

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!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

MollyMooTM picture MollyMooTM  ·  16Komentar

owenhenley picture owenhenley  ·  7Komentar

luisgutz picture luisgutz  ·  21Komentar

Djaouws picture Djaouws  ·  6Komentar

harnbak picture harnbak  ·  3Komentar