0

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

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

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

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

在不必几乎无条件循环的情况下,尽可能接近最终数量(但不超过)的最佳方法是什么?

4

2 回答 2

0

基于您的间接费用始终为非负且单调的假设,您知道

0 <= Quantity <= Final Amount/Item Cost

因此,二进制搜索算法应该可以完成这项工作。

于 2011-09-28T08:44:57.693 回答
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)
于 2011-09-28T08:46:08.777 回答