Elevate: يجب أن يعتمد اتجاه اللياقة البدنية "الشكل" على "اللياقة" و "التعب" أمس

تم إنشاؤها على ٢٣ أبريل ٢٠١٨  ·  18تعليقات  ·  مصدر: thomaschampagne/elevate

صف بيئتك

  • إصدار البرنامج المساعد: 6.1.2 مستقر
  • إصدار Chrome / Opera / Chromium: Chrome
  • إصدار نظام التشغيل: Mac OS

صف المشكلة:

في الوقت الحالي ، يبدو أن النموذج يتم حسابه على أنه الفرق في اللياقة البدنية والتعب في نفس اليوم. ومع ذلك ، قد يكون من الأفضل الاعتماد على اللياقة والإرهاق أمس. هذا أمر قابل للنقاش بالطبع. يمكنني اقتراح هاتين النقطتين فقط:
أ) أشعر أنه أكثر صوابًا بالنسبة لي بشكل شخصي ، حيث أشعر بتعب التدريب أكثر في اليوم التالي
ب) يقوم موقع TrainingPeaks بذلك (انظر هنا ، قسم "النموذج")

bug major

التعليق الأكثر فائدة

aprokop شكرًا جزيلاً على هذا التحليل العميق! إنه واضح لا لبس فيه!

ال 18 كومينتر

النموذج حسب التعريف هو (TrainingPeaks):
يمثل توازن الإجهاد التدريبي (TSB) أو النموذج توازن إجهاد التدريب.

Form (TSB) = لياقة الأمس (CTL) - تعب الأمس (ATL)

https://help.trainingpeaks.com/hc/en-us/articles/204071764-Form-TSB-

aprokop نعم يجب أن يتم ذلك مع النموذج الرياضي المستخدم. الصيغ في المساعد

thomaschampagne لست متأكدًا من فهمي لتعليقك. هل تقول أن هذا موجود بالفعل؟

aprokop نعم. رفع نموذج اللياقة = نموذج قمم التدريب

image

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 الخاص بي ، ويؤثر الجهد الكبير بشكل كبير على كل من اللياقة البدنية والتعب في نفس اليوم ، والشكل في اليوم التالي.

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

نعم هذه أيضًا وجهة نظري:

thomaschampagne لا أعتقد ذلك. نموذج TrainingPeaks هو

النموذج (يوم + 1) = لياقة (يوم) - تعب (يوم)

حسنًا ، لم أفهم. أعدت فتح التذكرة. شكرا على الحفر. رمز FYI موجود هنا: https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service.ts#L243

إجراء العلاقات العامة هو شيء ممكن بالنسبة لك أو أتعامل معه بنفسي؟

لم أعمل أبدًا مع لغة البرمجة هذه ، لكن يمكنني المحاولة إذا كنت تعتقد أنها سهلة بدرجة كافية. أعتقد أن شاغلي الرئيسي هو نطاق الكود المتأثر وما إذا كان يتطلب أي إعادة تنظيم.

aprokop يجب أن يكون النطاق هو تلك الطريقة فقط https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e844/plugin/app/src/app/fitness-trend/shared/services/fitness.service.

لكن لا تقلق سأفعل ذلك. فقط بحاجة لمساعدتكم لاختبار والتحقق من صحة التغييرات.

aprokop هل أنت متأكد من 100٪ حول هذا أدناه؟

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)

تضمين التغريدة

  • يمكنك أيضًا اختبار التصميم أدناه ومقارنته مع TrainingPeaks للتأكد من أن كل شيء على ما يرام دون الانحدار؟ (يتضمن الإصدار الالتزام https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b ofc)

بناء الاختبار: v6.6.0_stable_ec73ee0_2018-10-17-16-05.zip

شكرا لمساعدتك :)

تضمين التغريدة

هل أنت متأكد بنسبة 100٪ من هذا أدناه؟

نعم و لا. نعم ، أنا متأكد من أنها خاطئة بمعنى أنها لا تتطابق مع TrainingPeaks لأن الجهد في نفس اليوم لن يؤثر على اللياقة / التعب في نفس اليوم. بالتأكيد من الضروري تغيير StressScore (يوم) إلى StressScore (يوم + 1). ومع ذلك ، لست متأكدًا مما إذا كانت هذه هي الصيغة الدقيقة. يمكن للمرء أن يعتقد أن هذه الصيغة مثل

Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ...

يمكن أن يكون له معنى أيضًا (سيحتاج المرء بعد ذلك إلى حل اللياقة البدنية (يوم + 1)). لكنني أعتقد أنها جيدة كما هي.

الالتزام بتنفيذ الصيغ المقترحة بشكل صحيح. يمكنك نقل تحديثات prevCtl والأصدقاء من عبارات if (isPreStartDay) ، لكن هذا بسيط.

سأختبرها في المساء عندما أصل إلى المنزل.

لقد جربته للتو ، وسيتصرف كما هو متوقع. انخفض المستوى في اليوم
screenshot_20181017_202434

aprokop شكرا

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)

... هل هذا منطقي؟!

هل هناك طريقة لتصدير بيانات csv من TrainingPeaks يومًا بعد يوم؟ أو احصل على مزيد من المعلومات من لقطة شاشة الرسم البياني لـ TrainingPeaks؟

في لقطة شاشة الرسم البياني لـ TrainingPeaks ، هل النقاط الحمراء هي يوم الجهد (المجهود)؟ هل تؤكد أن منحنى اللياقة والإرهاق يرتفع في يوم مجهودك؟

شكرا لمساعدتك :)

thomaschampagne أتفق معك في أن Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ... هو أمر غريب. لقد ذكرت ذلك فقط لأنني لست متأكدًا بنسبة 100٪.

هل هناك طريقة لتصدير بيانات csv من TrainingPeaks يومًا بعد يوم؟ أو احصل على مزيد من المعلومات من لقطة شاشة الرسم البياني لـ TrainingPeaks؟

انها حقا فكرة جيدة. أعتقد أنه ممكن ، وقد فعلت ذلك في الماضي. اسمحوا لي أن أحاول الحصول على البيانات الحديثة.

في لقطة شاشة الرسم البياني لـ TrainingPeaks ، هل النقاط الحمراء هي يوم الجهد (المجهود)؟ هل تؤكد أن منحنى اللياقة والإرهاق يرتفع في يوم مجهودك؟

نعم ، النقاط الحمراء هي قيم TSS لكل يوم ، والنقاط الزرقاء هي الكثافة.

هل تؤكد أن منحنى اللياقة والإرهاق يرتفع في يوم مجهودك؟

نعم.

حسنًا ، لذلك يمكن للمرء تصدير التدريبات وليس قيم المنحنى. غرامة. لنختبره.

لنلقي نظرة على السباق الصعب الأخير (وضع علامة - بيانات غير مهمة). كان لابد من أخذ البيانات من رسم بياني ، وتم تقريبها إلى أقرب عدد صحيح بواسطة TrainingPeaks.

| | يوم ما قبل السباق | يوم السباق | بعد يوم السباق |
| - | - | - | - |
| TSS | - | 395 | - |
| التعب | 54 | 102 | - |
| لياقة | 61 | 69 | - |
| النموذج | - | 8 | -33 |

وبالتالي:

  1. التعب (اليوم) - اللياقة (اليوم) = 69-102 = 33 = النموذج (اليوم + 1) ، لذلك لدينا الصيغة الصحيحة للنموذج.
  2. التعب (يوم -1) + (TSS - التعب (يوم -1)) x ... = 54 + (395-54) × (1-e ** (- 1/7)) = 99 ، لذلك تقريبًا 102؟
  3. (التعب (يوم -1) + TSS (1-ك)) / (2-ك) = (54 + 395 (1-ك)) / (2-ك) = 94 ، لذا بعيدًا. (ك = إكسب (-1/7)). لقد أصلحت حسابات fomula هنا ، لأن الحساب الموجود في التعليق السابق خاطئ.
  4. اللياقة (يوم -1) + (TSS - لياقة (يوم -1) × ... = 61 + (395-61) × (1-e ** (- 1/42) = 69 ، لذلك هذا صحيح.
  5. (اللياقة (يوم -1) + TSS (1-K)) / (2-K) = (61 + 395 (1-K)) / (2-K) = 69 ، لذا فهي أيضًا مناسبة (هنا ، K) = exp (-1/42)).

باختصار ، تبدو هذه هي الخيار الأفضل:

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

ملاحظة: ما زلت لا أفهم تمامًا السبب في 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 شكرًا جزيلاً على هذا التحليل العميق! إنه واضح لا لبس فيه!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات