如何使用两个变量创建评分系统

时间:2015-08-20 15:47:07

标签: algorithm math theory

我有一个应用程序(Node / Angular),我正在尝试根据两个指标的整体性能对用户进行排名。有两个指标用于跟踪我们正在使用的用户如下:

  1. 生产的单位(范围在0 - 6000之间)
  2. 生产率= [生产单位] / [劳动时间](范围在0 - 100之间)
  3. 但是,通过这些变量中的任何一个明确地对用户进行排名都没有意义,因为它会产生一些奇怪的激励/行为。

    例如,可能会有很高的生产率,但是在短时间内通过非常努力的工作生产的单位总数非常低。或者,您可以拥有非常多的单位生产,但这可能是由于他们加班加点,因此能够生产比其他任何人更多的单位,因为他们有更长的工作时间,以及他们的生产率很低。

    有没有人有设计这些类型的评分系统的经验?你是怎么处理的?

3 个答案:

答案 0 :(得分:1)

首先,我建议将它们放在同一规模上。例如。将产生的单位除以60。

然后,如果您的权重相等,则有三种常见的简单选择:

  1. 添加分数

  2. 将分数相乘(等于添加每个分数)

  3. 取两个分数中的最小值

  4. 哪一种最好,取决于您希望它在多大程度上衡量综合效果。在您的情况下,我建议您将乘法和比例放在最终产品上。

    如果你想要复杂一点,权衡或玩弄奖励分数与联合分数的多少,你可以使用以下公式:

      

    V = alpha * log_b [产生的单位数/ 60] +(1-alpha)* log_b [生产率],

    其中alpha确定一个与另一个的权重,而对数函数的基数决定了联合成功的奖励程度。

答案 1 :(得分:0)

我做了一些非常相似的事情,我觉得将它们分成联盟或层级很有价值,例如使用以生产为基础的单位。

  • 新手= 100个单位制作
  • 初学者=生产500个单位
  • 高级=生产2000个单位
  • 专家=生产4000个单位

将其放入可用对象

var levels = [
    {id: 1, name: "Novice", minUnits: 100, maxUnits: 599 },
    {id: 2, name: "Beginner", minUnits: 500, maxUnits: 1999 },
    {id: 3, name: "Advanced", minUnits: 2000, maxUnits: 3999 },
    {id: 4, name: "Expert", minUnits: 4000, maxUnits: 6000 }
]

然后,您可以使用Rate of production乘以级别内的加权值,您可以确定这是什么。您可以使用这些值来使其变得如您想要的那样简单或容易。

答案 2 :(得分:0)

您可以与

结合使用
SCORE = 200/( K_1/x_1 + K_2/x_2 )

// x_1 : Score 1
// x_2 : Score 2
// K_1 : Maximum of Score 1
// K_2 : Maximum of Score 2

当除以零时当然要小心。如果x_1x_2为零,则为SCORE=0。如果x_1=K_1x_2=K_2SCORE=100(最大)

否则分数介于两者之间。如果x_1/K_1 = x_2/K_2 = zSCORE = 100*z

这会使得得分越低,以至于在提高两个分数中的一个时获得奖励(与两个场景中的最小分数不同),但不会提高两者的分数。