Elevate: рдлрд┐рдЯрдиреЗрд╕ рдХрд╛ рдЪрд▓рди "рдлреЙрд░реНрдо" рдХрд▓ рдХреЗ "рдлрд┐рдЯрдиреЗрд╕" рдФрд░ "рдердХрд╛рди" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: thomaschampagne/elevate

рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ

  • рдкреНрд▓рдЧрдЗрди рд╕рдВрд╕реНрдХрд░рдг: 6.1.2 рд╕реНрдерд┐рд░
  • рдХреНрд░реЛрдо / рдУрдкреЗрд░рд╛ / рдХреНрд░реЛрдорд┐рдпрдо рд╕рдВрд╕реНрдХрд░рдг: рдХреНрд░реЛрдо
  • рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг: рдореИрдХ рдУрдПрд╕

рд╕рдорд╕реНрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдЗрдпреЗ:

рдЕрднреА, рдлреЙрд░реНрдо рдХреА рдЧрдгрдирд╛ рдЙрд╕реА рджрд┐рди рдХреЗ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдХреЗ рдЕрдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд▓ рдХреА рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдкрд░ рдЗрд╕реЗ рдЖрдзрд╛рд░ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣рд╕ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЗрди рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ:
a) рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ рд╡рд┐рд╖рдпрдЧрдд рд░реВрдк рд╕реЗ, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдЕрдЧрд▓реЗ рджрд┐рди рдЕрдзрд┐рдХ рдердХрд╛рди рдорд╣рд╕реВрд╕ рд╣реЛрддреА рд╣реИ
b) рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, "рдлреЙрд░реНрдо" рдЕрдиреБрднрд╛рдЧ)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@aprokop рдЗрд╕ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрд╕рдВрджрд┐рдЧреНрдз рд╣реИ!

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдлреЙрд░реНрдо рдмрд╛рдп рдбреЗрдлрд┐рдирд┐рд╢рди (рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕):
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдирд╛рд╡ рд╕рдВрддреБрд▓рди (TSB) рдпрд╛ рдкреНрд░рдкрддреНрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдирд╛рд╡ рдХреЗ рд╕рдВрддреБрд▓рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рдлреЙрд░реНрдо (TSB) = рдХрд▓ рдХреА рдлрд┐рдЯрдиреЗрд╕ (CTL) - рдХрд▓ рдХреА рдердХрд╛рди (ATL)

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

@aprokop рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрдгрд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реВрддреНрд░рдзрд╛рд░ рд╕рд╣рд╛рдпрдХ рдореЗрдВ рд╣реИрдВ

@thomaschampagne рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреАред рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ?

@aprokop рд╣рд╛рдБред рдПрд▓реАрд╡реЗрдЯ рдлрд┐рдЯрдиреЗрд╕ рдореЙрдбрд▓ = рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢рд┐рдЦрд░ рдореЙрдбрд▓

image

@thomaschampagne рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдореЙрдбрд▓ рд╣реИ

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

рдореИрдВ рдЕрдкрдиреЗ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдХрд░реНрд╡ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рдореБрдЦ рдкреНрд░рдпрд╛рд╕ рдПрдХ рд╣реА рджрд┐рди рдореЗрдВ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рдлреЙрд░реНрдоред

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

рд╣рд╛рдБ, рдпрд╣ рднреА рдореЗрд░реА рдмрд╛рдд рд╣реИ:

@thomaschampagne рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдореЙрдбрд▓ рд╣реИ

рдлреЙрд░реНрдо (рджрд┐рди + 1) = рдлрд┐рдЯрдиреЗрд╕ (рджрд┐рди) - рдердХрд╛рди (рджрд┐рди)

рдареАрдХ рд╣реИ рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдореИрдВрдиреЗ рдЯрд┐рдХрдЯ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ред рдЦреБрджрд╛рдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред FYI рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ: https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f0ba3dc0e4444/plugin/app/src/app/fitness-trend/s рдмрдиреЗ / fitnessservices

рдкреАрдЖрд░ рдмрдирд╛рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЦреБрдж рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХрднреА рднреА рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреЛрдб рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреБрдирд░реНрдЧрдарди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@aprokop рд╕реНрдХреЛрдк рдХреЗрд╡рд▓ рд╡рд╣ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд┐рдзрд┐ https://github.com/thomaschampagne/elevate/blob/990b5d0fc11113b2c4d120e6aec9f03dc0e844/plugin/app/src/app/fitness-send/saring/s рдмрдиреЗ рд░рд╣реЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ рдореИрдВ рдпрд╣ рдХрд░реВрдБрдЧрд╛ред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рдЦрдиреЗ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@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/ec73ee0c5a6d3c78662c41b94a4e090c70a15bbb)ред рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдлреЙрд░реНрдореВрд▓реЗ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛:

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

  • рдХреНрдпрд╛ рдЖрдк рдкреНрд░рддрд┐рдмрджреНрдз https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b рдкрд░ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ)
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдмрд┐рдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдареАрдХ рд╣реИ? (рдмрд┐рд▓реНрдб рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз https://github.com/thomaschampagne/elevate/commit/ec73ee0c5a6d3c78662c41b94a4e090c70a1572b ofc рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)

рдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдб: v6.6.0_stable_ec73ee0_2018-10-17-16-05.zip

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

@thomaschampagne

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ?

рд╣рд╛рдВ рдФрд░ рдирд╛ред рд╣рд╛рдВ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдЧрд▓рдд рд╣реИ рдХрд┐ рдпрд╣ рдЯреНрд░реЗрдирд┐рдВрдЧрдкрд┐рдХреНрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рджрд┐рди рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдлрд┐рдЯрдиреЗрд╕ / рдердХрд╛рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ StressScore (рджрд┐рди) рдХреЛ StressScore (рджрд┐рди + 1) рдореЗрдВ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдЯреАрдХ рд╕реВрддреНрд░ рд╣реИред рдЙрд╕ рдлреЙрд░реНрдореВрд▓реЗ рдХреЛ рдХреЛрдИ рд╕реЛрдЪ рд╕рдХрддрд╛ рдерд╛

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

рдпрд╣ рднреА рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рддреЛ рдлрд┐рдЯрдиреЗрд╕ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рджрд┐рди + 1))ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред

рдкреНрд░рддрд┐рдмрджреНрдз рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЧрдП рдлреЙрд░реНрдореВрд▓реЗ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдк prevCtl рдЕрдкрдбреЗрдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ if (isPreStartDay) рдХреНрд▓реЙрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рдорд┐рддреНрд░, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдореВрд▓реА рд╣реИред

рд╢рд╛рдо рдХреЛ рдЬрдм рдореИрдВ рдШрд░ рдЬрд╛рдКрдБрдЧрд╛, рддрдм рдореИрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ред

рдмрд╕ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛, рдФрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рджрд┐рди рдлреЙрд░реНрдо рдЧрд┐рд░рд╛, рдЬрдмрдХрд┐ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдЙрд╕реА рджрд┐рди рдмрдврд╝ рдЧрдИред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред
screenshot_20181017_202434

@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 рдЧреНрд░рд╛рдл рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдЖрдкрдХреЗ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдХреЗ рдЧреНрд░рд╛рдл рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░, рд▓рд╛рд▓ рдбреЙрдЯреНрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рди рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдлрд┐рдЯрдиреЗрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдердХрд╛рди рдХреА рдЕрд╡рд╕реНрдерд╛ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рди рдмрдврд╝ рдЬрд╛рддреА рд╣реИ?

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

@thomaschampagne рдореИрдВ Fitness(day+1) = Fitness(day) + (StressScore(day+1)-Fitness(day+1)) x ... рдПрдХ рдЕрдЬреАрдм рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред

рдХреНрдпрд╛ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреЗрдХреНрд╕ рд╕реЗ рджрд┐рди-рдкреНрд░рддрд┐рджрд┐рди рд╕реАрдПрд╕рд╡реА рдбреЗрдЯрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ? рдпрд╛ рдЕрдкрдиреЗ TrainingPeaks рдЧреНрд░рд╛рдл рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд╣рд╛рд▓рд┐рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рджреЗрдВред

рдЖрдкрдХреЗ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдХреЗ рдЧреНрд░рд╛рдл рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░, рд▓рд╛рд▓ рдбреЙрдЯреНрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рди рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдлрд┐рдЯрдиреЗрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдердХрд╛рди рдХреА рдЕрд╡рд╕реНрдерд╛ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рди рдмрдврд╝ рдЬрд╛рддреА рд╣реИ?

рд╣рд╛рдВ, рд▓рд╛рд▓ рдбреЙрдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП рдЯреАрдПрд╕рдПрд╕ рдХреЗ рдорд╛рди рд╣реИрдВ, рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рддреАрд╡реНрд░рддрд╛ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдлрд┐рдЯрдиреЗрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдердХрд╛рди рдХреА рдЕрд╡рд╕реНрдерд╛ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рди рдмрдврд╝ рдЬрд╛рддреА рд╣реИ?

рд╣рд╛рдБред

рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЖрдЙрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡рдХреНрд░ рдорд╛рди рдирд╣реАрдВред рдареАрдХред рдЖрдУ рд╣рдо рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

рд╣рд╛рд▓ рдХреА рдХрдард┐рди рджреМрдбрд╝ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ ( - рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд)ред рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЧреНрд░рд╛рдл рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдФрд░ рдпрд╣ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрдЯрддрдо рдкреВрд░реНрдгрд╛рдВрдХ рддрдХ рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

| | рдкреНрд░реА рд░реЗрд╕ рдбреЗ | рджреМрдбрд╝ рдХрд╛ рджрд┐рди | рджреМрдбрд╝ рдХреЗ рджрд┐рди рдХреЗ рдмрд╛рдж |
| - | - | - | - | - |
| рдЯреАрдПрд╕рдПрд╕ | - | 395 | - |
| рдердХрд╛рди | 54 | 102 | - |
| рдлрд┐рдЯрдиреЗрд╕ | 61 | 69 | - |
| рдлреЙрд░реНрдо | - | 8 | -33 |

рдЗрд╕рд▓рд┐рдП:

  1. рдердХрд╛рди (рджрд┐рди) - рдлрд┐рдЯрдиреЗрд╕ (рджрд┐рди) = 69 - 102 = 33 = рдлреЙрд░реНрдо (рджрд┐рди + 1), рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреЙрд░реНрдо рдХрд╛ рд╕рд╣реА рдлреЙрд░реНрдореВрд▓рд╛ рд╣реИред
  2. рдердХрд╛рди (рджрд┐рди -1) + (TSS - рдердХрд╛рди (рджрд┐рди -1)) x ... = 54 + (395-54) x (1-e ** (- 1/7)) = 99, рддреЛ рд▓рдЧрднрдЧ 102?
  3. (рдердХрд╛рди (рджрд┐рди -1) + TSS (1-k)) / (2-k) = (54 + 395 (1-k)) / (2-k) = 94, so offред (k = exp (-1/7))ред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдлреЛрдореБрд▓рд╛ рдЧрдгрдирд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдПрдХ рдЧрд▓рдд рд╣реИред
  4. рдлрд┐рдЯрдиреЗрд╕ (рджрд┐рди -1) + (рдЯреАрдПрд╕рдПрд╕ - рдлрд┐рдЯрдиреЗрд╕ (рджрд┐рди -1) x ... = 61 + (395-61) x (1-рдИ ** (- 1/42) = 69, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рд╣реИред
  5. (рдлрд┐рдЯрдиреЗрд╕ (рджрд┐рди -1) + рдЯреАрдПрд╕рдПрд╕ (1-рдХреЗ)) / (2-рдХреЗ) = (61 + 395 (1-рдХреЗ)) / (2-рдХреЗ) = 69, рдЗрд╕рд▓рд┐рдП рдпрд╣ рднреА рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдпрд╣рд╛рдВ, рдХреЗ = 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))

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 рдЗрд╕ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрд╕рдВрджрд┐рдЧреНрдз рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

charleswolf picture charleswolf  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

puzanart picture puzanart  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jycouet picture jycouet  ┬╖  34рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Djaouws picture Djaouws  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wolfpackt99 picture wolfpackt99  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ