epsilon_value_calculators.go 989 B

12345678910111213141516171819202122232425262728293031323334
  1. package hostpool
  2. // --- Value Calculators -----------------
  3. import (
  4. "math"
  5. )
  6. // --- Definitions -----------------------
  7. type EpsilonValueCalculator interface {
  8. CalcValueFromAvgResponseTime(float64) float64
  9. }
  10. type LinearEpsilonValueCalculator struct{}
  11. type LogEpsilonValueCalculator struct{ LinearEpsilonValueCalculator }
  12. type PolynomialEpsilonValueCalculator struct {
  13. LinearEpsilonValueCalculator
  14. Exp float64 // the exponent to which we will raise the value to reweight
  15. }
  16. // -------- Methods -----------------------
  17. func (c *LinearEpsilonValueCalculator) CalcValueFromAvgResponseTime(v float64) float64 {
  18. return 1.0 / v
  19. }
  20. func (c *LogEpsilonValueCalculator) CalcValueFromAvgResponseTime(v float64) float64 {
  21. return math.Log(c.LinearEpsilonValueCalculator.CalcValueFromAvgResponseTime(v))
  22. }
  23. func (c *PolynomialEpsilonValueCalculator) CalcValueFromAvgResponseTime(v float64) float64 {
  24. return math.Pow(c.LinearEpsilonValueCalculator.CalcValueFromAvgResponseTime(v), c.Exp)
  25. }