如何得出一个简单的递减收益方程?


25

那里有一个递减收益方程的公式。但是,这些通常涉及指数。还有什么其他方法可以得出这样的方程式?以下面的测试案例为例-一个农场生产10种食物,每生产10个农场,生产率下降5%。


1
如果您告诉我们为什么要避免使用指数,这可能会有所帮助。特别是,是否也将x ^ y形式的表达式(x提高到y的幂)(因为计算机通常至少对非整数y使用指数计算)?
Ilmari Karonen 2014年

7
“每生产十个农场,生产率下降5%。” 嗯,本质上是指数:y = 0.9 ^(floor(x / 10))。就像@IlmariKaronen询问的那样,指数有什么问题?
wchargin 2014年

1.很难解释的非开发人员(和一些开发商与指数的问题)2.我的印象是,它是昂贵的下
Extrakun

2
使用指数方程式绝对没有效率低下。我认为您正在考虑的是算法,其中数与输入大小(例如,要排序的数组的大小)相比呈指数增长。这称为“ O”,例如,您可能会说某个特定的算法(或函数)需要O(n)个步骤才能运行。步数呈指数增长的算法可以描述为以O(n平方)步为例。这与其中具有指数项的单个方程式完全不同。
Max Williams

1
我认为Extrakun可能会想到这种“昂贵的”:stackoverflow.com/questions/2940367/…。重申其他人在说什么:这并不昂贵。如果您对指数不满意,请搜索有关它们的易于理解的解释(也许可以更好地使用explained.com/articles/…),不要回避它们。
kristina 2014年

Answers:


30

为了制定收益递减方程,我会立即考虑分数。

1 / F图 这是一张图 y=1/F

y随着F变大,将变小。这将为您提供一个永远不会达到0的稳定下降。通过此转变,您可以对其进行变换以获得所需的曲线。使用大于0的数字将始终给出从不为 0的正输出。

老实说,我建议去WolframAlpha并放一些方程式,然后查看它绘制的图,看看它是否能提供所需的曲线。除此之外,请阅读线性二次方程式,以快速找出要在公式中更改的内容。这是因为通过方程式对图形进行建模是一个很大的话题,如果我能在这里完美地解释它,那么我会首先将该解释出售给一些数学老师。

基本上,对于线性图,请记住y=mx+cm是渐变,根据需要可以为正或为负,并且c是与截距的点y axisx是您的输入变量,y是您的输出。

y = mx + c 这是y=mx+c哪里m=1c=0

对于二次曲线图,它变得有点复杂,所以我会有点含糊,您必须自己仔细阅读具体内容。可汗学院是一个非常好的教学资源。它是一般形式y=ax²+bx+cc仍然是y截距,您可以对其进行调整以“提升”图形。ab这两种影响曲线类似,但程度不同。

y =-x²+ 2x + 10 这是y=-x²+2x+10。注意-x²,它使曲线反转。

基本上,试玩图表直到获得所需的内容,但是如果您想快速,干净地设计体验,我强烈建议您多读一些。基本方程式对游戏很重要,而且非常有趣。

其他要注意的是指数图和对数图,即和的图,根据转换y=e^xy=ln(x)它们会迅速增加和迅速减少。不仅如此,向量和转换也很有用,因为它们描述了您正在执行的“基础”图。


6
您在帖子中多次使用了“图论”;那完全是另外一回事。我认为OP寻找的东西更接近于建模。
Chaosed0 2014年

1
@ Chaosed0你完全正确,我derder。不过已删除,ta :)
Yann 2014年

+1,我玩了几场比赛,其中一些统计信息的影响基本上是1/x。显然,这样的曲线你永远要x等于零,但!
Brian S

1
实际上,我会推荐在WA上使用Desmos来设计功能。两个主要的原因是它是实时的并且可以操作。即,设置y = a^x,然后可以添加一个滑块a以使用该功能。您可以根据需要选择任意数量的对象。您甚至可以设置滑块动画。实际上,这很好。(相当于Mathematica的Manipulate。)
wchargin 2014年

1
Graph Toy(已经存在了几年)是尝试一些方程式的好工具。我用它所有的时间。
tigrou

20

收益递减=衍生品递减

  • 因为即使在更高的水平上您仍然希望获得一些回报,这意味着衍生产品应该为正数,否则建立更多的农场会降低粮食产量(如果考虑到物流和维持成本,这甚至是有道理的)
  • 它应渐近地趋近于零,如果接近非零值,则最终每个农场将在一定程度上不断增加
  • 取决于达到零的速度,您可以有上限或无限制的函数

那么,您需要做什么?选择一个符合上述条件的函数并将其集成。
此任务最简单的选择是g(t,n) = 1/(t+1)^nn=1标记不断增加的功能和有界功能之间的边界。
从0到x的g的整数就是您所需要的:f(x,n) = ((x+1)**(1-n) - 1)/(1-n)
这就是它寻找不同的样子n

在此处输入图片说明
在这里将其归一化为相同的最终值

在此处输入图片说明
通过更改指数,n您可以轻松调整平衡。
注意:此处的导数是每个农场的产量,而积分是多个农场的总产量


5

通常,线性方程式将从开始y = mx + b,其中b是您的起始值,mx也是随着x增量调整起始值的方式。

所以,你的公式的第一部分,b将是10因为你想要的农场在10食物开始。

y = mx + 10

接下来,您要调整每十个农场生产的食物的数量。因此,您将需要除以十来得到一个适用于每十个场的方程式(假设x / 10返回一个整数,即13 / 10 = 1

y = m * (x / 10) + 10.

因此,最后,我们需要弄清楚我们希望每个x / 10农场改变食物的方式。在您的情况下,您希望它减少0.5(10的5%),这是线性的。这样我们得到:

y = -0.5 * ( x / 10 ) + 10.

所以对于农场x = 5,我们得到5 / 10 = 0, 0 * -0.5 = 0, 0 + 10 = 10。对于农场,x = 11我们得到11 / 10 = 1, 1 * -0.5 = -0.5, -0.5 + 10 = 9.5;对于农场23,我们将得到9.0。

然后,您只需要计算所有农场的总食物量即可。

y = 0
for( x = 0; x < totalFarms; x++ )
{
    y += -5 * ( x / 10 ) + 10;
}

但是也许您将其降低了5%,但您希望它降低了先前值的5%。即,10, 10 * 0.95 = 9.5, 9.5 * 0.95 = 9.025(在这种情况下,我们减少的金额越来越少)。因此,让我们修改方程式。 5%是指数类型增加,指数公式为y = b*m^x

我们还有b = 10,我们需要做10除法。所以我们有y = 10*m^(x/10)m0.95,因为我们希望每次取95%的值。因此,对于农场的方程xy = 10*0.95^(x/10)


4

收益递减会线性吗?每个农场的产量=(1-(0.05 *(f / 10)))*生产率。这样得出的总产量(比率*农场数量)在f = 100时达到峰值。


嘿,谢谢,尽管我正在寻找得出方程式的一般原则(如您所见,数学不是我的强项)
Extrakun 2014年

2

您可能需要考虑一种匹配情况的算法解决方案。

就是说,考虑一下为什么您的游戏情况的收益会递减,并进行建模。

相同类型的多种设施的收益可能递减,因为它们可能依赖于其他资源或设施,或者导致瓶颈或其他限制情况,例如道路网,可用的工人,运输工具或淡水或电力或其他。

在理想情况下,一个农场每天可以生产10个食物,但每天也需要两个农夫小时。每天每种食物还需要一个淡水,而自己的水井每天最多只能提供5个水。其余的必须从邻近的溪流或河流中带走,或通过运输带入。将食物运送到需要使之有用的地方也可能是一个问题。等等,根据您要代表的内容删除一些内容或添加更多内容,但这可能是更有趣和有意义的原因,这会给其他游戏系统增加兴趣和价值,而不是基于不基于其他游戏元素的人工数学公式。


1

如果要让广义方程式混乱,可以使用余弦图:A * cos(Bx + C)+ D

但是将其修改为半个周期,因此它将包括在开始时的伪指数上升,然后是短暂的线性上升,直到最终收益递减点。唯一的问题是将需要创建一个无法逾越的天花板。因此,经过一定数量的农场后,您将看不到任何增加。

下图是30分钟跑步过程中步伐增加的图表,准备时进行的锻炼完全相同。这显然不是完美的,但是您可以解决这个问题以找到所需的内容。

用于确定收益递减的余弦曲线示例

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.