我在定义一个算法时会遇到一些问题,该算法会计算牙医的排名数。
假设我们有三位不同的牙医:
如果我们使用公式:
patients booked time with / totalpatients * 100
这不是计算排名的正确方法,因为我们将获得更高百分比的输出,牙医越好,但这是错误的。通过这样做,牙医将有一个排名:
但是,它应该是这样的:
我不知道制作的算法也会将患者数量作为排名计算的一个因素。
答案 0 :(得分:0)
如何根据患者人数和预约患者的百分比来定义什么是更好的牙医,这是非常武断的。
让我们调用 P 的患者人数,预约 A 的人数,以及确定牙医 f的“好”的功能。所以 f 将是 P 和 A 的函数: f(P,A)。
f 的一个组成部分确实可能是您已经计算过的: A / P 。
另一个组件必须是 P ,但我认为增加 P 对 f(P,A)的影响对于低 P ,1比高 P 要高得多,因此该分量不应该是线性函数。如果该组件的值介于0和1之间也是实用的,就像其他组件一样。
综合所有这些,我建议 f 的定义,它将给出0到1之间的数字:
f(P,A) = 1/3 * P/(10 + P) + 2/3 * A/P
对于不同的牙医,这导致:
1: 1/3 * 125/135 + 2/3 * 75/125 = 0.7086419753...
2: 1/3 * 5/15 + 2/3 * 4/5 = 0.6444444444...
3: 1/3 * 25/35 + 2/3 * 14/25 = 0.6114285714...
您可以使用公式中的常量因子,例如增加术语10
。或者您可以更改因子1/3和2/3,确保它们的总和为1。
这只是一种方法。其他方式无穷无尽......