- From: Garret Rieger <grieger@google.com>
- Date: Tue, 6 Oct 2020 16:30:29 -0700
- To: "w3c-webfonts-wg (public-webfonts-wg@w3.org)" <public-webfonts-wg@w3.org>
- Message-ID: <CAM=OCWYfHoXGczuHLYakKtGAdBZSxYCW3UrTzdYFaPOviQbWBg@mail.gmail.com>
Here's how the cost function as presented here <https://docs.google.com/document/d/1kx62tpy5hGIbHh6tHMAryon9Sgye--W_IsHTeCMlmEo/edit#heading=h.4fz1x8661i63> was derived: - Start with the logistic function (a sigmoid): M/ ( 1 + e^(-k(x - x_0))) - M is the maximum height of the function. - k scales the width of the function - and x_0 shifts the function left/right. We want a function that starts rising at x = T_z and hits it's maximum at T_m: - Width of the period it rises over is W = T_m - T_z - Scale k = K / W. Where K is a hand selected constant which controls the width. By dividing by W we normalize the scale against the width. A value of K = 11.5 was found to give a near maximum and minimum value at T_z and T_m. - x_0 = W/2 + T_z = T_m/2 - T_z/2 + T_z = T_m/2 + T_z/2 - This moves the function W/2 units to the right (the logistic function starts centered on x = 0) - And then an additional T_z to the right to add the initial period of zero cost. If you plug that all into M / (1 + e^(-k(x - x_0))) you get: M / ( 1 + e^(-11.5/(T_m-T_z) * ( x - T_m/2 - T_z/2))) There's a similar explanation in the actual implementation in code: https://github.com/w3c/PFE-analysis/blob/master/analysis/cost.py
Received on Tuesday, 6 October 2020 23:31:01 UTC