【问题标题】:Searching for the best fit price for multiple customers [duplicate]为多个客户寻找最合适的价格[重复]
【发布时间】:2013-10-27 16:05:31
【问题描述】:

重述Comparing multiple price options for many customers algorithmically,几乎没有那么多废话。

我们有 1,000,000 名客户。 每种商品的销售成本可以表示为价格 A 或价格 B。

价格 A

价格 A 和价格 B 彼此之间不是线性关系。在某些情况下,B 是 2 倍,在某些情况下是 100 倍。

A 上所有客户的成本是

min( (sum(A)/count(A)) , 100 ) * count(A)

实际上,如果 A 上所有客户的平均成本小于 100,则将四舍五入到 100。

B没有这样的限制。

我想在他们的商品上花最少的钱。

如何最大化

cost=min( (sum(A)/count(A)) , 100 ) * count(A) + sum(B)

我一直认为这是双背包问题的一种形式,但我无法正确解决......

我很可能会在 Python 中解决这个问题,尽管我怀疑这很重要。

我已经通过为 x y z 分配分数并基于此进行过滤来进行手动分析,我对更多的计算解决方案感兴趣。

有什么推荐的方法吗?

【问题讨论】:

  • 原地编辑并关闭。

标签: python algorithm optimization statistics branch-and-bound


【解决方案1】:

每个客户都可以分配到 A 方或 B 方。如果我把最好的解决方案交给您,您会发现您无法通过更改任何单个客户的分配来改进它。鉴于此,有两种情况需要检查,如果我可以忽略边界情况:

1) 在最佳方案中,A 方客户的平均成本至少为 100,因此最低价格不生效。如果我将客户从 A 切换到 B,反之亦然,则成本会因该客户的 A 和 B 价格差异而变化。由于我有一个完美的解决方案,因此必须将每个客户分配到 A 或 B 成本较低的那个,这在您的情况下意味着每个人都去 A。

2) 每位客户的最低 100 费用在 A 方生效,因此从 A 和 B 更改客户或反之亦然相当于向他们收取 A 100 的成本。由于我有一个完美的解决方案,客户A 方必须是 B 价格至少 100 的客户,B 方必须是 B 价格在 100 或以下的客户。

这里唯一的问题是切换客户是否意味着最低 100 条生效或停止生效。在情况 (1) 中,如果有人切换到 B,即使没有最低 A 价格生效,价格也会上涨,所以这不会发生。在情况(2)中,如果 B 方客户切换到 A,这只会让事情变得更糟,因为他们的 B 价格是 100 或更低,所以他们的 A 价格必须是 100 或更低。 A 客户的 B 价格必须为 100 或更高。如果他们的 A 价格为 100 或更高,他们绝对应该留在 A,因为将他们移至 B 不能使最低 A 成本停止适用。如果他们的 A 价格

所以我认为你计算出两种可能性的成本 - 案例 1 是将所有东西分配给 A 的地方,案例 2 是将东西分配给 A 的地方,其中 B 的价格为 100 或更多。选择其中最便宜的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2016-06-28
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多