参数评分函数或算法

时间:2017-10-13 13:13:43

标签: algorithm game-theory

我正试图想出一种基于整数个“点”达到“得分”的方法,该点可以使用少量(3-5?)的参数进行调整。优选地,在电子表格中合理地输入函数/计算以便由“设计者”(不是程序员或数学家)调整参数将是足够简单的。第一个点具有最大值,并且最终附加点具有固定或接近固定的值。从点值的初始斜率到最终斜率的过渡将是平滑。请参阅下面的示例形状。

  • 积分值始终为正整数(0分= 0分)
  • 在某些时候,曲线是线性的(或接近),所有其他点都有固定值
  • 优选地,参数对于外行人来说是可理解的,例如:“曲线的平滑度”,“第一点的值”,“点的附加值固定的位置”等。

对于参数,理想的例子是:

  • 第一点的价值:10
  • 点#的值:3是:5
  • 额外积分的最低值:0.75

曲线的精确形状不太重要,只要角落可以更光滑或更多锐利

这不适用于游戏,但更多具有多个组件的评级系统(其中一些可能使用此类比例)将被合并。

对于SO / SE来说,这似乎是一个非传统的问题。在我的职业生涯中,我已经完成了大部分财务软件,我希望有一些领域的智慧可以用于我可以利用的这类事情。

enter image description here

Prune解决方案的实施:

enter image description here

Google Sheet

1 个答案:

答案 0 :(得分:1)

参数:

  • 初始值(a)
  • 第二个值(b)
  • 最小值(z)

你的衰减率是b / a。从这里开始很简单:迭代你的值,在每一步应用衰变,直到你“钉住”最小值:

x[n] = max( z, a * (b/a)^n )
// Take the larger of the computed "decayed" value, 
//   and the specified minimum.

序列 x 是您的值列表。

如果希望整数达到某一点,也可以截断中间结果。只需将 floor 函数应用于每个计算值,但如果它太小,仍允许 z 覆盖它。

这够好吗?我知道衍生函数存在不连续性,如果最小值和衰减不能很好地对齐,这将是显而易见的。您可以使用相对衰减进行调整,将指数衰减曲线从y = 0转换为 z

base = z
diff = a-z
ratio = (b-z) / diff

x[n] = z + diff * ratio^n

在这种情况下,您不需要 max 函数,因为衰减的自然渐近线为0。