根据要获得的价格和金额查找最接近的数量

时间:2011-09-28 08:18:58

标签: math economics

我有一个小数学问题,我需要根据成本价格和最终金额来确定数量。

现在这在理论上很容易,因为它只是最终金额/实际成本=数量,但在我的情况下,实际成本会根据数量而变化。

数量=最终金额/(项目成本+间接费用),其中间接费用按比例计算。

一个例子 如果我想卖500美元卖羊,每只羊的基价是50美元,但卖一只羊的成本是5美元,所以一只羊的实际成本是55美元,但如果我卖2只羊那么销售成本为7美元,因此实际成本为107美元,依此类推。

在不必无条件循环的情况下,尽可能接近最终数量(但未结束)的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

基于您的间接费用总是非负且单调的假设,您知道

0 <= Quantity <= Final Amount/Item Cost

因此,binary search algorithm应该可以胜任。

答案 1 :(得分:0)

请注意,间接成本是销售数量的函数。这意味着您的等式采用易于迭代的形式。您对数量进行初步猜测,将其插入等式的右侧,并使用它来获得数量的新猜测。一旦数量稳定,您已达到固定点并可以停止。

对于在开销中具有规模经济性的卖羊的例子,我首先计算假设最小间接费用的绵羊数量。这可能是正确的,或者可能会高估。此过程所需的更新数量尚未提前清楚,但我希望快速收敛。

以下是我在Python中看起来像伪代码一样的样子:

import math

def overhead(n):
    # Not given in problem, so I can't give an implementation
    raise NotImplementedError("Sorry, don't know what this is")

def rhs(n, u, t):
    return math.floor(t / (u + overhead(n)))

def best_quantity(unit_cost, total_cost, min_overhead):
    prev_guess = 0
    current_guess = math.floor(total_cost / (unit_cost + min_overhead)) 
    while (current_guess != prev_guess):
        prev_guess = current_guess
        current_guess = rhs(current_guess, unit_cost, total_cost)
    return current_guess

print best_quantity(50.0, 500.0, 0.0)