рдЕрднреА, рдлреЙрд░реНрдо рдХреА рдЧрдгрдирд╛ рдЙрд╕реА рджрд┐рди рдХреЗ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдХреЗ рдЕрдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд▓ рдХреА рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдкрд░ рдЗрд╕реЗ рдЖрдзрд╛рд░ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣рд╕ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЗрди рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ:
a) рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ рд╡рд┐рд╖рдпрдЧрдд рд░реВрдк рд╕реЗ, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдЕрдЧрд▓реЗ рджрд┐рди рдЕрдзрд┐рдХ рдердХрд╛рди рдорд╣рд╕реВрд╕ рд╣реЛрддреА рд╣реИ
b) рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, "рдлреЙрд░реНрдо" рдЕрдиреБрднрд╛рдЧ)
рдлреЙрд░реНрдо рдмрд╛рдп рдбреЗрдлрд┐рдирд┐рд╢рди (рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕):
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдирд╛рд╡ рд╕рдВрддреБрд▓рди (TSB) рдпрд╛ рдкреНрд░рдкрддреНрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рддрдирд╛рд╡ рдХреЗ рд╕рдВрддреБрд▓рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдлреЙрд░реНрдо (TSB) = рдХрд▓ рдХреА рдлрд┐рдЯрдиреЗрд╕ (CTL) - рдХрд▓ рдХреА рдердХрд╛рди (ATL)
https://help.trainingpeaks.com/hc/en-us/articles/204071764-Form-TSB-
@aprokop рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрдгрд┐рдд рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реВрддреНрд░рдзрд╛рд░ рд╕рд╣рд╛рдпрдХ рдореЗрдВ рд╣реИрдВ
@thomaschampagne рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреАред рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ?
@aprokop рд╣рд╛рдБред рдПрд▓реАрд╡реЗрдЯ рдлрд┐рдЯрдиреЗрд╕ рдореЙрдбрд▓ = рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢рд┐рдЦрд░ рдореЙрдбрд▓
@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 ...
рдореИрдВ рдЕрдкрдиреЗ рдЯреНрд░реЗрдирд┐рдВрдЧрдкреАрдХреНрд╕ рдХрд░реНрд╡ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рдореБрдЦ рдкреНрд░рдпрд╛рд╕ рдПрдХ рд╣реА рджрд┐рди рдореЗрдВ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рджрд┐рди рдлреЙрд░реНрдоред
рд╣рд╛рдБ, рдпрд╣ рднреА рдореЗрд░реА рдмрд╛рдд рд╣реИ:
@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
рдЯреЗрд╕реНрдЯ рдмрд┐рд▓реНрдб: 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)
рдХреНрд▓реЙрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рдорд┐рддреНрд░, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдореВрд▓реА рд╣реИред
рд╢рд╛рдо рдХреЛ рдЬрдм рдореИрдВ рдШрд░ рдЬрд╛рдКрдБрдЧрд╛, рддрдм рдореИрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ред
рдмрд╕ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛, рдФрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рджрд┐рди рдлреЙрд░реНрдо рдЧрд┐рд░рд╛, рдЬрдмрдХрд┐ рдлрд┐рдЯрдиреЗрд╕ рдФрд░ рдердХрд╛рди рдЙрд╕реА рджрд┐рди рдмрдврд╝ рдЧрдИред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред
@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 |
рдЗрд╕рд▓рд┐рдП:
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
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 рдЗрд╕ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрд╕рдВрджрд┐рдЧреНрдз рд╣реИ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@aprokop рдЗрд╕ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЕрд╕рдВрджрд┐рдЧреНрдз рд╣реИ!